[PYTHON] Let's find out about ROS (Robot Operating System)

Many people who are interested in image recognition or machine learning are also interested in 3D measurement. Furthermore, controlling something may be useful as related knowledge. Therefore, I am investigating ROS for the purpose of learning technologies in peripheral fields. ROS (Robot Operating System), as the name implies, is a useful environment for realizing Robot. However, as mentioned in this article, the libraries used in ROS are useful in fields such as image recognition and 3D measurement, without having to build a robot. What I felt while researching ROS is that standardization by open source is progressing in the fields of robots and control as well. It seems that there is a change from the time when the image relations covered all the libraries in-house (or in the organization to which they belong) to the age of OpenCV data structures and libraries. When I was making my own library to read and write BMP files, I couldn't go beyond a certain level. Unshared source code and data structures have died and are the same as they weren't. I think that the program to be controlled will eventually become the same library as if it did not exist if it was in the style of the organization to which it belongs. Above all, the data format is an important asset. In the days when I was making numerical calculation libraries in C language (including myself) with reference to books, the style of handling matrices in those libraries was not constant. I saw a lot of code that declared the size of the array with macro constants in advance. In C language, the standardization of complex numbers was delayed, and there was a weakness that linear algebra was not standardized. In today's era, such code has become code whose quality is not guaranteed, and which does not benefit from multi-core or GPU.   Data format is an important asset. The library will accumulate according to the useful data format. When the libraries are complete, the libraries with compatible interfaces and the higher-level functions that utilize those libraries will be available. In Python, numpy is such a data format. Many libraries such as scipy, cv2 and scikit-learn are growing on that data format. I will. A language like Cython is also created because it is a standard data format, providing a framework for efficiently using numpy from C / C ++, or implementing it efficiently using C / C ++. It has become. All of this is due to the standardization of useful data formats. It seems that these changes are caused by ROS. With the standardization of control mechanisms by ROS and the fact that the machine learning framework is on the same ground, one person can write code for both control and machine learning. By doing so, you will be able to realize ideas that were previously difficult to implement.

The introduction of ROS seems to make us clearly aware of the unique story of each device and the control problem considered in the common framework of robot operation. Check out the ROS example to see if your development can be achieved naturally within the framework of ROS. With ROS, you can use both C ++ and Python.   It was also introduced in the tutorial session at the 2016 Image Sensing Symposium. SSII2016 Tutorial: Robot Software Development with ROS SlideShare Development of robot software by ROS

tf: Coordinate conversion, frame creation pcl: Point cloud library OpenCV: Image recognition library usb_cam: Connection with USB camera There are many libraries such as.

Several Reasons to Use ROS for Autonomous Robot Development http://myenigma.hatenablog.com/entry/20130208/1360324464


The easiest way to use tf in the world Study of coordinate conversion package "tf" Tf, tf2 complete understanding


Using USB Camera with Raspberry Pi + ROS


[Series "Let's touch PCL!" Part 1] Overview of 3D point cloud processing library "Point Cloud Library"

[Introduction to PCL] About Point Cloud Library


ROS installation

Installing ROS Indigo on Ubuntu 1. Install ROS

Installing ROS Indigo Installing ROS (Robot Operating System) Latest version to install ROS indigo on jessie of RaspberryPi2

Instructions on how to install ROS on Jetson

http://wiki.ros.org/NvidiaJetsonTK1

Try installing ROS (Robot Operating System) on Raspberry Pi 2

http://karaage.hatenadiary.jp/entry/2015/09/25/073000

Install ROS on Raspberry Pi 3

http://ishi.main.jp/ros/ros_rpi3.html

Install ROS on a board using Zynq

Xillybus and ROS on Ubuntu14.04 on Zybo Part 4: Settings on Zybo ~ Installing ROS

I think ROS will become popular as a standard framework in the field of robot control. At that time, the point is how comfortable ROS works with the embedded CPU. Various IOs are important in the field of control. FPGAs have a high degree of design freedom for these various IOs. GPUs can speed up parallel computing, but they don't give you more freedom for various IOs. There is a possibility that a multi-core CPU and FPGA can be combined to create a system with a high degree of freedom and low power consumption.

Let's run ROS with FPGA

BeagleBone Black BeagleBone Black (BBB)

Install ubuntu on BeagleBone Black

Investigate the installation of ROS on the Armadillo board (Atmark Techno).

The Armadillo Goes Mapping (This is a robot named Armadillo) http://www.showusyoursensors.com/2010/11/armadillo-goes-mapping.html


Robots Using ROS http://www.ros.org/news/robots/mobile-robots/

The following article by Willow Garage, which is related to the development of ROS, is interesting. Seeds sown by robot "PARC" "Willow Garage" (1/4)

["ROS Programming"](https://www.amazon.co.jp/ROS%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F % E3% 83% B3% E3% 82% B0-% E9% 8A% AD-% E9% A3% 9B / dp / 4627853416 / ref = sr_1_1? Ie = UTF8 & qid = 1471110172 & sr = 8-1 & keywords = ROS)

["Robot programming starting with ROS-" Framework "for free robots (IO BOOKS)"](https://www.amazon.co.jp/ROS%E3%81%A7%E3%81%AF% E3% 81% 98% E3% 82% 81% E3% 82% 8B% E3% 83% AD% E3% 83% 9C% E3% 83% 83% E3% 83% 88% E3% 83% 97% E3% 83% AD% E3% 82% B0% E3% 83% A9% E3% 83% 9F% E3% 83% B3% E3% 82% B0% E2% 80% 95% E3% 83% 95% E3% 83% AA% E3% 83% BC% E3% 81% AE% E3% 83% AD% E3% 83% 9C% E3% 83% 83% E3% 83% 88% E7% 94% A8% E3% 80% 8C% E3% 83% 95% E3% 83% AC% E3% 83% BC% E3% 83% A0% E3% 83% AF% E3% 83% BC% E3% 82% AF% E3% 80% 8D-I% E3% 83% BBO-BOOKS-% E5% B0% 8F% E5% 80% 89-% E5% B4% 87 / dp / 4777519015 / ref = sr_1_2? Ie = UTF8 & qid = 1471110172 & sr = 8-2 & keywords = ROS)

Let's do basic development of ROS

Note:

Then, when the library is standardized, you will be asked, "Do you have a job to do?" Some libraries are not easy to use properly. Development experience and usage experience in that field will be useful even if the library is standardized. If the library is a company-specific library, it is easy for the individual's experience to be overwhelmed when changing departments. When the library is standardized, it will soon be available to departments with different personal experiences.

It's not always easy for everyone to use the library properly, if you try 3D measurement yourself or let someone else do it. Depending on the actual condition of the object, lighting, and camera conditions, the result of 3D measurement can easily become a situation where the error is too large. Systems that use ROS are likely to be influenced by various factors in the real space. Therefore, proper use of them will continue to require some insight (know-how).

When the library was standardized, I think it was "yes" to the question "Do you have a job to do?" If libraries are standardized and jobs are lost, companies that publish various libraries (including source code) will lose their jobs. Means However, in reality, we are profiting from publishing the code and developing examples of how to use it effectively.

After trial and error by early developers, those who use open source with advanced algorithms and libraries should be able to do more than the early developers achieved, depending on how deeply they understand themselves. .. Therefore, when developing a robot equivalent to Asimo, it should be possible to develop it in a much shorter time than the effort required to develop Asimo. I think the main point in that case is how well the developers understand the algorithms and libraries. We are in an era where we can make good things by receiving the results organized in this way and understanding their know-how, even if one engineer can understand the contents.

Search for Robot Operating System on Youtube


The article How to code a drone using image recognition used ROS.

The following article by Willow Garage, which is related to the development of ROS, is interesting. Seeds sown by robot "PARC" "Willow Garage" (1/4)

Robots Using ROS http://www.ros.org/news/robots/mobile-robots/

ROS Study Note # 9 Stereo Camera and Calibration (https://www.e-consystems.com/jp/3D-USB-stereo-camera-jp.asp)

[Stereo camera for 3D vision and robot vision applications!]

(https://jp.ids-imaging.com/ensenso-stereo-3d-camera.html)

Create TurtleReal2

From Azumino Forest> Use ROS (Robot Operating System)

There are study sessions as follows.

ROS Study Group

http://wiki.ros.org/ja/Support

Project OpenReroc to realize a robot using FPGA as a platform with FPGA x ROS

Recommended Posts

Let's find out about ROS (Robot Operating System)
Find out about launching Anaconda Prompt
Find out about Cinema 4D's Python environment