Introduction to ROS
ROS is an open source meta-operating system for robots. It provides the services that an operating system should have, including hardware abstraction, low-level device control, implementation of common functions, messaging between processes, and package management. It also provides the tools and library functions needed to obtain, compile, write, and run code across computers.
The "graph" of the ROS runtime is a loosely coupled point-to-point process network based on the ROS communication infrastructure. ROS implements several different communication methods, including services based on synchronous RPC-style communication, topics based on asynchronous streaming data, and parameter servers for data storage.
ROS is not a real-time framework, but ROS can be embedded in real-time programs. Willow Garage's PR2 robot uses a system called pr2_etherCAT to send or receive ROS messages in real time. ROS can also be seamlessly integrated with the Orocos real-time toolkit.
Design goals and features of ROS
Many people ask "What is the difference between ROS and other robotics software platforms?" This is a difficult question to answer. Because ROS is not a framework that integrates most functions or features. In fact, the main goal of ROS is to support code reuse for robotics research and development. ROS is a framework of distributed processes (i.e. nodes) that are packaged in packages and function packages that are easy to share and distribute.
ROS also supports a federated system similar to a code repository, which also enables collaboration and distribution of projects. This design allows the development and implementation of a project to be completely independent of decisions (not limited by ROS) from the file system to the user interface. At the same time, all projects can be integrated with the basic tools of ROS.
In order to support the main goal of sharing and collaboration, the ROS framework has several other characteristics:
Lean: ROS is designed to be as lean as possible so that code written for ROS can be used with other robotics software frameworks. A corollary to this is that ROS can be easily integrated with other robotics software platforms: ROS has been integrated with OpenRAVE, Orocos and Player.
ROS-insensitive libraries: The preferred development model of ROS is written in clean library functions that do not depend on ROS.
Language independence: The ROS framework can be easily implemented in any modern programming language. ROS has implemented Python version, C++ version and Lisp version. It also has Java and Lua version experimental libraries.
- Loose coupling: The function modules in ROS are encapsulated in independent function packages or meta-function packages for easy sharing. The modules in the function package run as nodes and use ROS standard IO as the interface. Developers do not need to pay attention to the internal implementation of the module. As long as they understand the interface rules, they can reuse it, realizing point-to-point loose coupling connection between modules
- Convenient testing: ROS has a built-in unit/integration test framework called rostest, which can easily install or uninstall test modules.
- Scalable: ROS can be applied to large runtime systems and large development processes.
- Free and open source: many developers and many function packages
Why use ROS
Through ROS, we can realize the simulation control of the robot arm in a virtual environment.
We will use the rviz platform to realize the visualization of the robot arm and use a variety of methods to operate our robot arm; through the moveit platform to plan and execute the robot arm's action path, we can achieve the effect of free control of the robot arm.
In the next chapter, we will learn how to control our products through the platform in ros.