[ROS] Introduction to Robot Operating System

[ROS] Introduction to Robot Operating System

ROS introduction

ROS is the abbreviation of Robot Operating Syetem. ROS started in 2007 and developed ROS with the support of the Stanford AI Robot Project of Stanford University Artificial Intelligence Laboratory. Since the first version of ROS Box Turtle released on March 2, 2010 (as of August 2018), there have been 12 versions. The three long-term support versions, and the corresponding three LTS versions of Ubuntu are as follows:

  1. An open source secondary OS with Linux kernel, similar to Android system.
  2. Is a robot development framework. Loosely coupled point-to-point process network based on communication foundation, multi-node distribution
  3. ROS is not a real-time framework, but it can be embedded in real-time programs.
  4. Provide RPC service, Topic topic, ParaSrv parameter server, drive management, inter-process message transmission, program package management, and provide various software function packages.
  5. Sensors, actuators, and algorithms are separated, and various topics can be recorded and replayed, and the actuators can be tested in the simulator.

It can be said that ROS = communication mechanism + development tools + application functions + ecosystem. At present, many robots have been embedded in the ROS system. For example, the Kung Fu tea robot led by Hu Chunxu, a well-known domestic boss, is equipped with the ros system. Many well-known domestic companies are also investing in research and development in this area.
Insert picture description here

Why learn ROS

The primary design goal of ROS is to increase the code reuse rate in the field of robotics research and development. ROS is a distributed processing framework (aka Nodes). This allows executable files to be designed individually and loosely coupled at runtime. These processes can be encapsulated into packages and stacks for easy sharing and distribution. ROS also supports a joint system of code libraries. So that collaboration can also be distributed. This design from the file system level to the community level makes it possible to independently determine development and implementation work. All the above functions can be realized by the basic tools of ROS.
In the development process, when we hope to increase the complexity of the robot a little bit, we will find another issue that needs to be considered, inter-process communication. When we use Windows + RTX, the inter-process communication uses the shared memory provided by RTX, but the slower image processing processes write data to the shared memory, and the decision-making and motion control processes read data. Shared memory is obviously not a good communication method, so I won't discuss it here. ROS uses a very good communication architecture and is a foundation of the entire ROS framework (whether it is for basic concepts such as topic, service, plugin, and actionlib
in ROS or functional packages such as rviz and navigation package.) And, ROS is Developers provide a series of efficient development tools, which can greatly improve the development efficiency of researchers.

  1. The rqt toolbox can draw the value curve of Topic, the connection status between each node, and the Topic being used, etc., and can also perform functions such as specified parameter adjustment;
  2. TF: TF is the abbreviation of Transform. Using it, we can know the pose of each link coordinate system in real time, and we can also find the relative position of the two coordinate systems;
  3. Rviz: Super powerful 3D visualization tool that can display robot models, 3D movies, various text icons, and it is also very convenient for secondary development;

In addition to ROS itself, there are already many excellent open source robotics projects in the world, but ROS is gradually including them in its own category, so you can easily use these open source projects in ROS:

  1. OROCOS: This open source project mainly focuses on the design of the robot's underlying controller, including KDL, Bayesian filtering, real-time control and other functions for calculating the kinematics of the tandem manipulator.
  2. OpenRave: This is the platform that most people use for motion planning before ROS. ROS has already absorbed the functions such as ikfast (calculation of kinematics analysis of tandem robotic arms).
  3. Player: An excellent two-dimensional simulation platform that can be used for the simulation of planar mobile robots. It can now be used directly in ROS.
  4. OpenCV: The famous machine vision open source project, ROS provides cv_bridge, which can convert OpenCV pictures and ROS picture formats.
  5. OMPL: Now the most famous motion planning open source project has become a part of MoveIt.
  6. Visp: An open source visual servo project that has been perfectly integrated with ROS.
  7. Gazebo: An excellent open source simulation platform that can realize dynamic simulation, sensor simulation, etc. It has also been absorbed by ROS.

Of course, in addition to absorbing other excellent open source projects, ROS itself has also developed many excellent projects and libraries.

  1. ORK: An open source library for object recognition and pose estimation, including algorithms such as LineMod, but the actual use effect is not too ideal. The figure below is the recognition effect of LineMod;
  2. PCL: An open source point cloud processing library originally developed from ROS. Later, due to its popularity, in order to make it available to non-ROS users, it was a separate PCL project;
  3. Gmapping: This is actually inherited from the OpenSlam project (later development and changes are large). Using gmapping can realize laser-based SLAM and quickly build indoor two-dimensional maps. The following figure is gmapping to create two-dimensional maps;
  4. Localization: Robot localization algorithm based on extended Kalman filter (EKF) and unscented Kalman filter (UKF), which can fuse the localization information of various sensors to obtain a more accurate localization effect;
  5. Navigation: A mobile robot path planning module based on Dijkstra, A* algorithm (global planner) and dynamic window method DWA (local planner), which can realize robot navigation on a two-dimensional map;
  6. MoveIt: This is a module that focuses on the motion planning of the mobile robot arm, motion planning.

How to learn ROS

It is quite difficult to master ROS in depth, especially when you are a novice in the embedded field, it is even more difficult. The learning path of ROS is not only the knowledge of ROS, but also C++ and python languages. , Even in-depth problems such as robotics, deep learning, Linux operating system, etc. will be encountered. In short, learning ROS is not as simple as learning MCU. Before learning ROS, you need to be psychologically prepared to face other aspects of knowledge.
Generally, a certain knowledge of Linux system, C++ or python is required before getting started, and the road after that is to start with the core concepts of ROS, such as several core communication mechanisms, key toolkits, etc., if you want to better master the use of ROS, Need to learn the above-mentioned projects and libraries.
ROS learning cannot be completed overnight. I will continue to publish notes about ROS learning. If there is anything wrong, please correct me.

Guess you like

Origin blog.csdn.net/qq_39502099/article/details/113326412