Likewise, it is transported from the personal public number Nao (id:qrobotics).
Objective
Put a first year of Ros Industrial clip video .
Ros has been released for eight years and is very popular in foreign research institutions. At present, the Southwest Research Institute led by several big guys began to try to use Ros in industrial robots, the above video is the first anniversary of the progress of the Ros-i project.
To illustrate what Ros is, I'll start with what Ros is, why I use Ros, and how to use Ros in three ways.
From this year's "Robot Vision and Application" course I made courseware
What is it
Ros is an abbreviation for Robot Operating System, originally a robotics project at Stanford University, which was later developed by Willow Garage Company, currently by OSRF (Open Source Robotics Foundation, Inc. maintains an open source project.
1, the first is an operating system
According to the Wikipedia definition, OS is System software this manages computer hardware and software resources and provides common services for Computer programs. This means that the operating system is used to manage the computer hardware and software resources, and provide some common services of the system software. Ros, too, claims to be an OS.
Computer OS vs. robotic OS
As shown, the computer's operating system encapsulates the computer hardware, and the application runs above the operating system, regardless of the type of hardware the computer is specifically applied to. This can greatly improve the efficiency of software development (otherwise everyone can only write a compilation).
In the same way, Ros is the hardware of the robot packaging, different robots, different sensors, in the ROS can be expressed in the same manner (topic, etc.), for the upper application (motion planning, etc.) call.
2, is a cross-platform modular software communication mechanism
The concept of node for Ros represents an application in which nodes are connected by pre-defined messages (Topic), Services (service), and actions (action).
Distribution characteristics of ROS
Features of three communication modes
The advantages and disadvantages of three kinds of communication methods can be viewed on the table, because many modular programming tools have similar functions, here is not specifically expanded.
Based on this modular communication mechanism, developers can easily replace and update certain modules within the system, or replace individual Ros modules with their own nodes, which is well suited to algorithmic development.
In addition, Ros can be used across platforms, on different computers, different operating systems, without programming languages, and on different robots.
3, is a series of open source tools
Several ROS tools: Upper left Rqt_plot, upper right rqt_graph, lower left Rviz, lower right TF
As shown, Ros provides developers with a range of very useful tools that can greatly improve the efficiency of our development.
Rqt_plot: Can draw the numerical curve of the current arbitrary topic in real time;
rqt_graph: Can draw out the connection state between each node, and the topic that is being used;
TF: TF is a shorthand for transform, which allows us to know in real time the posture of each linkage coordinate system and to find the relative position of two coordinate systems.
Rviz: Super powerful 3D visualization tool, can display robot model, 3D movie, all kinds of text icon, also can be very convenient two times development;
Display of robot models, 3D point clouds, object models, etc. in Rviz
Easy interaction is also possible in Rviz.
In addition, Ros has a lot of other useful open source tools waiting for you to explore.
4, is a series of most advanced algorithms
Ros contains many advanced open source projects for robotics
In addition to Ros, there are many very good open-source projects in the world, but Ros is gradually embracing them in their one by one. For example:
PS: I and several other developers of ROS are also working to integrate LINUXCNC into Ros
Orocos: This open source project focuses on the design of the robot's underlying controller, including KDL, Bayesian filtering, real-time control and other functions used to calculate the kinematic numerical solution of a series manipulator.
Openrave: This is the most popular platform for motion planning before Ros, and Ros has absorbed the functions of Ikfast (Computational series Manipulator kinematic analytic solution).
Player: An excellent two-dimensional simulation platform that can be used for simulation of planar mobile robots, which can now be used directly in Ros.
OpenCV: The famous open-source project for Machine Vision, Ros provides the Cv_bridge to convert OpenCV images to and from the Ros picture format.
Ompl: Now the most famous sport planning open source project has become a part of Moveit.
Visp: An open source visual servo project that has been perfectly integrated with Ros.
Gazebo: An excellent open-source simulation platform, can achieve dynamic simulation, sensor simulation, etc., has also been absorbed by Ros.
Lower left corner gazebo, lower right corner Rviz
Of course, in addition to absorbing other excellent open source projects, Ros has developed many very good projects and libraries.
ORK: An object recognition and posture estimation open Source Library, including Linemod and other algorithms, but the actual use of the effect is not ideal.
Linemod Recognition effect
PCL: An open source point cloud processing Library, originally developed from Ros, was later made a single PCL project for non-ROS users, because it was so popular.
gmapping: This is actually in the Openslam project inherited (later development and change large), the use of gmapping can achieve laser-based SLAM, quickly set up a two-dimensional indoor map.
Gmapping building a two-dimensional map
Localization: based on the extended Kalman filter (EKF) and the non-trace Kalman filter (UKF), the robot localization algorithm can fuse the positioning information of various sensors to obtain accurate positioning effect.
Robot_localization
Navigation: A mobile robot path planning module based on Dijkstra, A * algorithm (global Planner) and dynamic window method DWA (local planner) enables robot navigation on a two-dimensional map.
Navigation
Moveit: This is the module that focuses on the motion planning of the mobile robot arm, which is described in detail the next time you get started with the exercise program.
Moveit Movement planning for UR5
Of course, in addition to these most advanced algorithms, Ros also have a variety of robots, sensor drivers and other content.
5, is one of the most active robot development Communication Platform
Personally, that should be the most important point. In addition to Ros, there is now a need for other projects to replace or partially replace the Ros function: Openrave motion planning, v-rep simulation. But the community of these projects is far from Ros active.
The Ros version is regularly updated, the main modules have dedicated maintenance, the answer area is active, the mail lists is also very active, the developers are very enthusiastic about sharing. If you go deep into the Ros community, you can learn a lot of things.
Why
first of all, people who have used industrial robots must know that the development systems of different industrial robots are not the same, teaching and programming methods are different, an engineer skilled in using Motoman will probably not use the Kuka robotic arm. Even the same robot, due to the firmware version of the replacement, may also cause the program is incompatible (I have encountered this problem on ur). This greatly affects the popularization of the robot.
Left: Different robot's teaching device; right: UR firmware version incompatible
In this way, Ros can be used in a unified manner to encapsulate the robot (URDF model + robot driver), the user only need to write the application in the Ros, do not care about the robot control mode. If all robots are used in this way, then robots will be more widely used (the requirements for system integrators will be reduced).
second , more and more robotic manufacturers are now experimenting with Ros, including four families of robots that occupy the largest industrial market share and a variety of popular research robots, even as Rethink Baxter, which can only be controlled using ROS. If you do not study the Ros, you may face the problem of not using the robot.
Robots that use Ros
Moreover , the robot is a complex and highly involved subject, from the bottom up including mechanical design, motor control, sensors, trajectory planning, kinematics and Dynamics, motion planning, machine vision, positioning and navigation, machine learning, advanced intelligence and so on. It is impossible for a graduate student to master all fields in a few years.
For a graduate who does an upper-level program, it often takes a very long time to build an experimental system without ROS, which greatly squeezes the time it takes to actually invent new knowledge. For example, when I do motion planning, we must first complete the kinematics of the manipulator, object recognition algorithm, collision detection algorithm and so on can start to do motion planning. The wheel will be made by a professional who makes wheels.
So, for researchers, Ros can help you quickly build a robotic software system, and its modular design allows you to easily replace one of the modules with your own algorithm, allowing you to focus on your own research points.
finally , the Ros can help you quickly build prototypes for startups or people who compete. Prototypes come out and naturally have an advantage over people who have only a design manual.
To prevent the suspicion of advertising, the example of entrepreneurship is not said, take our last year to participate in a business competition. Our group of four people in less than two months to complete the following this supermarket shopping robot hardware and software design and production, features include obstacle avoidance, anti-fall, personnel follow, Bluetooth correction (tracking the person), gesture recognition, automatic commodity pricing, automatic Payment .
Well, my public number Nao (Qrobotics) 's Avatar was designed for this project.
Last year's work in a pioneering competition Marketbot
How is it
There are a lot of answers to this, but learning this stuff can only be practiced on your own, and I'll just give a few tips from my point of view.
first of all , it is essential to understand the basic architecture and development methods of ROS. I personally strongly recommend to see the ROS official online tutorial ros/tutorials beginner level (see several times), while fully using the ROS community Ros answers and various modules of the mail Lists, many of the basic problems may have encountered before.
secondly , after understanding the basic structure and development mode of ROS, we can focus on the parts that we care about. As a mobile robot classmate to see navigation tutorial, do object recognition to see Ork tutorial, do exercise planning to see Moveit tutorial. This step is best to be practiced hand with the actual robot (if not, use gazebo emulation). Because some modules of the tutorial is not clear (such as Moveit), must be more practice, or even to see some of the source, first ensure that you will use ROS to achieve some functions.
For the connection between Ros and the actual robot, it is recommended that you take a closer look at the tutorials (or Ros_control) of the action (writing a robot-driven package), URDF (Robot profile). For example, I wrote the Urdf file for the sda5f robot and modified the action in the Motoman_driver to control the movement of the dual-arm robot in the ROS environment using Moveit programming.
sda5f dual-arm robot and its URDF model
finally , it is the advanced stage. I would like to stress that "Ros is just a tool " and that you can do slam with Ros doesn't mean you can do slam. For their own research content, must sink the heart to see the teaching materials and the paper, to understand the principle behind each algorithm, know how to adjust the algorithm parameters, how to improve the algorithm, finally can write some part of the code, and replace the corresponding modules of ROS (such as their own writing kinematics inverse solution instead of KDL, etc.).
To do research, communication is very important. If you improve a ROS algorithm, it's best to communicate with the original author of the package, merge your changes into the original project, and improve the level of your package with the communication. Of course, if you have questions about the algorithm, you can consult the author directly, and the contributors in Ros are mostly willing to share and communicate.
Of course, before asking someone, make sure you are fully acquainted with the official tutorials, rather than sending a bunch of compilation errors to others and asking what's going on. The art of questioning is really very important, sometimes not the other side is not willing to communicate with you, but the other side is unwilling to take you through tutorials.
End
Many people are arguing whether Ros should be used, whether Ros should be used on products, and whether Ros should be used in industry. But from my personal point of view, Ros is a great tool for the development and research of the Upper algorithm of service robot, and it can greatly accelerate the building process of the experimental platform as an academic research.
There are questions and comments welcome you to leave a message directly below.
Note: All pictures with the public number "Qrobotics" watermark are copyrighted by myself, without permission, not reproduced. "
Welcome to scan the QR code below follow my public number Nao (id:qrobotics), the blog will be a week later than the public to push.
Robotic Operating Systems Ros | About the article