{"id":1362,"date":"2018-10-19T02:10:47","date_gmt":"2018-10-19T01:10:47","guid":{"rendered":"https:\/\/rosetta.vn\/short\/?p=1362"},"modified":"2018-10-25T15:45:33","modified_gmt":"2018-10-25T14:45:33","slug":"15-reasons-to-use-the-robot-operating-system-ros-into-robotics","status":"publish","type":"post","link":"https:\/\/rosetta.vn\/short\/2018\/10\/19\/15-reasons-to-use-the-robot-operating-system-ros-into-robotics\/","title":{"rendered":"15+ Reasons To Use The Robot Operating System (ROS) | Into Robotics"},"content":{"rendered":"<blockquote><p>You have complete freedom to decide what components you use to assemble a robot. If choosing the ingredients of a robot looks more like a playground, the hard part comes when, in one way or another, all these elements have to communicate. But just making them communicate is not enough to make your robot move and make something useful. You have to control all the elements. You need a conductor to put the bits in the right place and hold the rhythm together. You need ROS.<\/p>\n<div id=\"attachment_11609\" class=\"wp-caption aligncenter\">\n<p><img decoding=\"async\" loading=\"lazy\" class=\"lazy size-full wp-image-11609 lazy-loaded\" src=\"https:\/\/i0.wp.com\/rosetta.vn\/short\/wp-content\/uploads\/sites\/3\/2018\/10\/C1vL-1MXUAERoha-1.jpg?resize=700%2C442&#038;ssl=1\" alt=\"\" width=\"700\" height=\"442\" data-recalc-dims=\"1\" \/><\/p>\n<p class=\"wp-caption-text\">ROS Robots<\/p>\n<\/div>\n<p>In this post, I did a collection of more than 15 reasons why to use ROS. Below, I have explored from compatible tools to more insights such as its flexibility in controlling things.<\/p>\n<ul>\n<li>The robots love Linux. ROS as well.<\/li>\n<\/ul>\n<p>Most of the robots in the world (including here the robots built at home by hobbyists) are running Linux. So, this is the line where the ROS\u2019s engineers focused their efforts.<\/p>\n<p>ROS is not actually an operating system. Its name \u2013 Robot Operating System \u2013 creates confusion and misleading the user. But strictly speaking, it is a collection of software libraries and tools used by the roboticists to develop applications.<\/p>\n<p>And because is not an operating system, ROS is running on a true operating system. ROS uses the OS\u2019s processes management system, user interface, file system and programming utilities. The most used operating system is Linux, followed by Mac OS X and somewhat recently there are some steps forward to make it Windows compatible.<\/p>\n<ul>\n<li>Made for all<\/li>\n<\/ul>\n<p>Do you want to control a robot by using a PS3 controller? Or to build a self-driving robot? ROS is the center of all these applications and not only.<\/p>\n<p>The ROS has\u00a0<a href=\"http:\/\/www.ros.org\/browse\/list.php\">packages<\/a>\u00a0for a wide range of applications and hardware. From packages to create a map to localization system to machine vision and to gesture sensors.<\/p>\n<p>Otherwise, if you don\u2019t find what you need, you can develop and add to ROS your own package.<\/p>\n<ul>\n<li>Something may fail, but not everything<\/li>\n<\/ul>\n<p>Every component of the robot is connected by a distributed message system. If one element crashes, your whole system doesn\u2019t crash. This approach makes the system robust and able to perform its functions despite internal and external perturbations.<\/p>\n<p>For example, if a sensor or an arm motor stop working, ROS manage the crash and makes things easier for the robot to continue doing things.<\/p>\n<ul>\n<li>Doesn\u2019t matter if everything is different<\/li>\n<\/ul>\n<p>The ROS message passing system is designed to work with different components and subsystems that probably running different programming languages.<\/p>\n<p>This system makes things communicate in a more efficient way than APIs.<\/p>\n<ul>\n<li>Concurrent resource handling<\/li>\n<\/ul>\n<p>Any large robotics application is a multithreading system. ROS has the ability to manage large multi-threaded systems. It simplifies the whole process by ensuring that your threads are publishing and subscribing to messages.<\/p>\n<ul>\n<li>Integration with open source projects<\/li>\n<\/ul>\n<p>ROS can be\u00a0<a href=\"http:\/\/www.ros.org\/integration\/\">integrated<\/a>\u00a0with other popular open-source projects. You want to simulate a robot, you use Gazebo.<\/p>\n<p>Do you need the computer vision algorithms and utilities of OpenCV? ROS integrate the things and provides all of these.<\/p>\n<p>The Point Cloud Library is a library focused on the manipulation and processing of three-dimensional data and depth images. You can use it also with ROS.<\/p>\n<p>Do you want to use ROS in manufacturing automation and robotics? ROS-Industrial is another open-source project compatible ROS and designed to extend the advanced capabilities of ROS for industrial robots.<\/p>\n<ul>\n<li>Everything is modular<\/li>\n<\/ul>\n<p>So, you need a system able to control the components of a robot from a PC. An ROS system is comprised of a number of independent nodes that communicates each other using messages.<\/p>\n<p>To make you an idea what is a node and what is a message, think of a sensor\u2019s driver as a node and sensor\u2019s data as a stream of messages. The messages could be consumed by any other node from the system. These can feed filters, loggers, and applications such as pathfinding, position, etc. Moreover, the nodes in ROS can be on multiple computers and different architecture. You can have an Arduino that publishes messages, a Raspberry Pi as the subscriber and a smartphone for driving motors.<\/p>\n<p>This approach of the modularity makes ROS really flexible and adaptable to any environment and the needs of the user.<\/p>\n<ul>\n<li>ROS is on Raspberry Pi<\/li>\n<\/ul>\n<p>ROS is developed to run on different machines with different cores. The official Raspberry Pi operating system is a version of Debian, which is not supported by ROS. But there are other Raspberry Pi compatible Linux distro supported by ROS. These are: Fuerte, Groovy, Hydro, Indigo, and Kinetic.<\/p>\n<ul>\n<li>Sensors. A lot of sensors.<\/li>\n<\/ul>\n<p>You need sensors, a lot of sensors, to build an intelligent robot. On\u00a0<a href=\"http:\/\/wiki.ros.org\/Sensors\">ROS Wiki<\/a>\u00a0are several robotics sensors compatible ROS. Some of these sensors are supported by official ROS packages, but the majority of them are supported by the ROS community.<\/p>\n<ul>\n<li>LEGO EV3 just become more powerful with ROS<\/li>\n<\/ul>\n<p>The LEGO Mindstorms EV3 robots just become much more powerful with ROS. The ROS framework runs on the EV3 Yocto Image.<\/p>\n<ul>\n<li>You use additional tools and libraries<\/li>\n<\/ul>\n<p>On the\u00a0<a href=\"http:\/\/wiki.ros.org\/Tools\">Wiki<\/a>\u00a0is available a series of tools and libraries compatible with ROS. All of them makes your work easier while building, writing and running code on different computers.<\/p>\n<ul>\n<li>ROSComponents make things easier and simpler for the customers<\/li>\n<\/ul>\n<p>Almost all the robots and components in the market support ROS, but it is difficult to fit the product with the right ROS version. The\u00a0<a href=\"https:\/\/www.roscomponents.com\/en\/\">ROSComponents<\/a>\u00a0concept has the purpose to make things easier and simpler for customers. All these robots and components are well documented and you will know how to install and configure each of them.<\/p>\n<ul>\n<li>Maintained by many people<\/li>\n<\/ul>\n<p>ROS is an open-source framework that takes all the advantages of a community knowledge. This openness makes it immensely successful among roboticists that build new products and services.<\/p>\n<ul>\n<li>ROS is the main core of a growing community<\/li>\n<\/ul>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>The total line count is over 14 million lines of code<\/li>\n<li>There have been 2477 authors<\/li>\n<li>And 181509 commits<\/li>\n<li>Averaging 73.3 commits per author<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p>These are just the most recent numbers of the growing\u00a0<a href=\"http:\/\/www.ros.org\/news\/2016\/12\/celebrating-9-years-of-ros.html\">community<\/a>around ROS.<\/p>\n<ul>\n<li>You can use it with C++ and Python<\/li>\n<\/ul>\n<p>C++ is faster than Python. At least for ROS. The main programming language is the general-purpose programming language C++. Otherwise, you are free to experiment with the ROS framework modern programming languages like Python and in a limited way with Java.<\/p>\n<ul>\n<li>ROS-Industrial was set up to provide key benefits for industry<\/li>\n<\/ul>\n<p><div class=\"jetpack-video-wrapper\"><span class=\"embed-youtube\" style=\"text-align:center; display: block;\"><iframe class=\"youtube-player\" width=\"750\" height=\"422\" src=\"https:\/\/www.youtube.com\/embed\/Ek8GKqmJ7n0?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=en-US&#038;autohide=2&#038;wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation\"><\/iframe><\/span><\/div><br \/>\nSince 2007 when the framework was released, the ROS community has grown with at least two digits year after year. The growing popularity has brought various special interest groups for specific applications. One of these groups is the\u00a0<a href=\"http:\/\/rosindustrial.org\/\">ROS-Industrial Consortium<\/a>.<\/p>\n<p>ROS-I is a software library based on ROS and designed to integrate the power and flexibility of ROS in the industrial area. It is a software library for industrial robot arms.<\/p>\n<p>Because the interest to use ROS in the manufacturing field is quite high, ROS-I is supported by the largest robot arms manufacturers such as ABB and Yaskawa.<\/p>\n<ul>\n<li>Sell ROS robots without any licence fee<\/li>\n<\/ul>\n<p>Each package in the ROS framework has a specific license and you can quickly identify if a specific package meets your licensing needs.<\/p>\n<p>Otherwise, ROS has permissive licenses. All the code is open-source so anyone can modify or add new functionalities. ROS encourage you to put it in your product without any license fee.<\/p>\n<ul>\n<li>It is a really good software-based simulation<\/li>\n<\/ul>\n<p>Think about you want to build a new mobile robot \u2013 maybe a lawnmower robot. You have the idea, but where do you start with the software? You have to detect obstacles, map the environment, plan paths and much more.<\/p>\n<p>If you use ROS, you can take the advantage and use all these things that already exists in it.<\/p>\n<p>Another advantage is the simulation of the robot. You can use an open-source robot simulation project called Gazebo to visualize your robot in its environment.<\/p>\n<ul>\n<li>Concurrency, inter-communication and extensibility<\/li>\n<\/ul>\n<p>Even split second lag can result in a disaster for your robot. So you need an operate system capable for real-time processes.<\/p>\n<p>ROS provides you with the architecture to achieve concurrency, inter-communication, and extensibility for robotics processes.<\/p>\n<p><strong>References:<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/www.thedisruptory.com\/2016\/01\/inside-the-robot-operating-system-the-robotics-industry-and-the-open-source-robotics-foundation\/\">Inside the Robot Operating System, the robotics industry and the Open Source Robotics Foundation<\/a><\/li>\n<li><a href=\"http:\/\/wiki.ros.org\/ROS\/Introduction\">Introduction<\/a><\/li>\n<li><a href=\"https:\/\/alecive.github.io\/blog\/2016\/02\/08\/ROS-concepts\/\">ROS concepts<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/uscrs-art\/uscrs-art\/wiki\/ROS-Tutorial-4.-ROS-Overview:-Nodes,-Messages-and-Services\">ROS Tutorial 4. ROS Overview: Nodes, Messages and Services<\/a><\/li>\n<li><a href=\"https:\/\/www.quora.com\/Why-is-Robot-Operating-System-ROS-preferred\">Why is Robot Operating System (ROS) preferred?<\/a><\/li>\n<\/ul>\n<\/blockquote>\n<p>Source: <em><a href=\"https:\/\/www.intorobotics.com\/15-reasons-to-use-the-robot-operating-system-ros\/\">15+ Reasons To Use The Robot Operating System (ROS) | Into Robotics<\/a><\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>You have complete freedom to decide what components you use to assemble a robot. If choosing the ingredients of a robot looks more like a playground, the hard part comes when, in one way or another, all these elements have<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false},"categories":[30,215],"tags":[182,949,442,948],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p8jhJx-lY","_links":{"self":[{"href":"https:\/\/rosetta.vn\/short\/wp-json\/wp\/v2\/posts\/1362"}],"collection":[{"href":"https:\/\/rosetta.vn\/short\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rosetta.vn\/short\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rosetta.vn\/short\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/rosetta.vn\/short\/wp-json\/wp\/v2\/comments?post=1362"}],"version-history":[{"count":2,"href":"https:\/\/rosetta.vn\/short\/wp-json\/wp\/v2\/posts\/1362\/revisions"}],"predecessor-version":[{"id":1397,"href":"https:\/\/rosetta.vn\/short\/wp-json\/wp\/v2\/posts\/1362\/revisions\/1397"}],"wp:attachment":[{"href":"https:\/\/rosetta.vn\/short\/wp-json\/wp\/v2\/media?parent=1362"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rosetta.vn\/short\/wp-json\/wp\/v2\/categories?post=1362"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rosetta.vn\/short\/wp-json\/wp\/v2\/tags?post=1362"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}