A Supplement to Design World - September 2020 www.designworldonline.com
How
we ported a project from ROS1 to ROS2
page 72
INSIDE:
• Five things ROS2 needs in 2020.....................60 • How ROS2 and AI can speed up robotics development......................................................64 • A history of the Robot Operating System ...68
ROBOT_REPORT_COVER_9-20_Vs2_ed.indd 57
9/12/20 8:23 AM
Editor’s Page
The Robot Operating System gets ready for prime time Not only is the Robot Operating System, or ROS, important for training developers, but it is also increasingly relevant to commercial robotics. Since 2007, the open-source platform has been part of academic programs and the basis for numerous autonomous mobile robots coming out of Willow Garage. Last year, Microso Corp. announced support for ROS in Windows 10, marking increasing industrial interest. In fact, more than half of commercial robots shipped in 2024, or over 915,000 units, will have at least one ROS package installed, according to ABI Research. The global market for ROS applications could expand at a compound annual growth rate (CAGR) of 9.2% om 2019 to 2027, reaching $438 million in 2027, predicts Transparency Market Research. Absolute Market Insights is similarly bullish, forecasting a CAGR of 8.7% om $203.99 million in 2018 to $430.92 million by 2027. More than 50 mobile and service robots now use ROS, noted Absolute Market Insights. It cited providers including ABB, FANUC, KUKA, iRobot, Omron Adept, and Yaskawa Motoman. ROS offerings to engineers are also growing. PickNik Inc. said earlier this year that the MoveIt 2 Beta of its open-source so ware works with ROS 2 for faster, more reactive planning through real-time control. This summer, ADLINK Technology Inc. announced partnerships with chipmakers Intel Corp. and NVIDIA Corp. for its ROScube controller for applications involving sensors, actuators, and artificial intelligence. Earlier this month, Clearpath Robotics Inc. extended ROS support to Boston Dynamics Inc.’s Spot quadruped robot, which is now commercially available. The companies said this will help developers take advantage of the robot’s capabilities and create innovative applications. In this month’s issue of The Robot Report, a supplement to Design World, we focus on how ROS is evolving. Ricardo Tellez, co-founder and CEO of The Construct, describes the history of ROS since two researchers at Stanford University got tired of “reinventing the wheel.” If you are planning to move om ROS 1 to ROS 2, be prepared, notes Lukasz Mitka. He explains the steps his team took at Husarion, which makes the ROSbot development platform. Also, see my conversation with Joe Speed, field chief technology officer at ADLINK, about how ROS 2 and AI could accelerate commercial robotics development. One of the benefits of community support is that there are always opportunities to improve ROS. Michael Ferguson, director of research and development at Cobalt Robotics, as well as an alumnus of Willow Garage and Fetch Robotics, discusses five things he would like to see added to ROS 2. Whether you are a student, a developer, or a robotics vendor, learn how ROS 2 can advance the state of robotics. RR Eugene Demaitre • Senior Editor The Robot Report edemaitre@wtwhmedia.com On Twitter @GeneD5
| Source: Husarion
58
September 2020
Editors_page_RR_9-20_Vs3_ed.indd 58
www.therobotreport.com
THE ROBOT REPORT
9/14/20 9:30 AM
THE
FAULHABER-MICROMO 8-20_DW.indd 59
9/12/20 8:19 AM
The Robot Report
Five
things ROS 2
needs in 2020 ROS 2 has many capabilities, but we need more examples and questions answered.
Michael Ferguson
I’ve been using ROS 2 quite a bit over the past several months. There aren’t too many real robots running the latest version of the Robot Operating System yet. We have a bit of a chickenand-egg problem where the tools are not yet fully ready for real robots, but until people start using ROS 2 on real robots, nobody knows the real pain points. There are many, many things that could be done in ROS 2. But there is limited time to implement them all, so we need to focus on those that enable robots and their developers to “survive.” I o en get asked if ROS 2 is “ready for prime time.” My answer for a long time was “No.” At this point, I’m going to upgrade it to “Maybe; depends on what you’re doing.” Here are five things that I think would make the answer “Hell, yes!” for most roboticists. I actually hope this artcle ages poorly and that all these things come to happen in ROS 2. 1. Automatic QoS for rviz, rcl2cli Quality of service (QoS) is probably the biggest change between ROS 1 and ROS 2. It’s also the one that causes the most headaches om what I can tell. The ROS 2 Foxy Fitzroy release adds a “--verbose” option to the “ros2 topic info” command, which is a huge step in the right direction. This lets you quickly diagnose when a publisher and subscriber are using incompatible QoS. rosbag2 got a huge upgrade in ROS 2 Foxy. It automatically determines the proper settings for QoS so that it always connects to the publisher you’re trying to record. Note: If multiple publishers are publishing to the same topic with different QoS it may not work -- but really, who does that? Now we need that feature in rviz2 and the command-line utilities (CLI). These are debugging tools, so they need to be able to “just work” in most scenarios.
60
September 2020
FiveThings_ROS_2_Needs_RR_9-20_Vs3_ed.indd 60
www.therobotreport.com
THE ROBOT REPORT
9/12/20 8:12 AM
Rviz motion-planning plugin for MoveIt.
Since most of the time you’re using rviz2 to connect to sensor data, which is often published with a non-default QoS (the sensor data profile), it’s absolutely bonkers that rviz uses the default QoS on everything (which is incompatible with sensor profile). Even something as simple as latched topics won’t work by default. This is not an easy ask. It will involve significant changes to rviz, as well as changes to lower-level packages like message_filters, but I’m pretty sure this is the single biggest bang-for-yourbuck improvement that will make ROS 2 work better for robot developers. 2. Documentation OK, I’m sounding like a broken record or the squeaky caster on your 8-year-old mobile manipulator, but this is really important. I’m
THE ROBOT REPORT
FiveThings_ROS_2_Needs_RR_9-20_Vs3_ed.indd 61
The Fetch mobile manipulator runs on ROS.
| Source:PickNik
| Source: Fetch Robotics
not just talking about the lack of tutorials here. One of the things that made ROS great for new developers from 2011 to 2014, when it experienced huge growth in the community, was a very polished and up-to-date wiki. If you wanted to find out about a package, you could go to wiki.ros.org/package_name, and the documentation was right there. If it wasn’t, you had a pretty good idea this package wasn’t ready for prime time. With ROS 2, we don’t have a centralized place for documentation yet, and I think that is holding the community growth back. There is also the issue of “user documentation.” Nearly everything for ROS 2 is written assuming an expert programming background -- even more so than ROS 1 documentation. Reading the source code is not how you’re supposed to learn how to run a ROS driver for a laser scanner.
www.therobotreport.com
September 2020
61
9/12/20 8:16 AM
The Robot Report Building out a community is superimportant. The best way to get a bug fixed is to find a developer who needs it fixed. I’ve only been using ROS 2 on and off for a couple of months, and in that time, I’ve fixed half a dozen bugs across multiple ROS 2 packages. I’ve even taken on maintaining the ROS 2 port of urg_ node and the related packages. 3. Subscriber connect callbacks Now we’ll jump into a super-technical issue -- but the impact is huge -especially for those doing perception, which is generally a big part of robotics. When creating a publisher in ROS 1, you could register a callback that would get called whenever a subscriber connected or disconnected. This feature doesn’t exist yet in ROS 2, but I think it is essential for real robotics systems. Here’s why: Robots can generate lots of sensor data, especially when you add processing pipelines into the mix. Sometimes you might need a high-resolution point cloud with color and depth information. Sometimes you need a low-res colorless point cloud. This is especially true when the robot system does multiple tasks. For instance, imagine a mobile manipulator robot. For navigating the environment, it wants that high frame rate, low-res point cloud for collision avoidance. When the mobile manipulator gets to the destination, it wants to switch to a high-res point cloud to decide what to grab. Sometimes you literally cannot be publishing all the data streams possible because it would overwhelm the hardware. For instance, saturating the USB bus if you were to pull depth and color and IR from most RGBD sensors at the same time. In ROS 1, you could create “lazy publishers” so that the creators of these intensive data types would only create and publish the data when someone was listening. They would be alerted to someone listening by the connect callback. The lack of lazy publishers throughout various drivers and the image_proc and depth_image_proc packages is a real challenge to building high-performance
62
September 2020
FiveThings_ROS_2_Needs_RR_9-20_Vs3_ed.indd 62
Eclipse Oxygen with ROS 2 and rviz2.
urg_node ROS wrapper.
| Source: ROS Index
| Source: GitHub.com
Steps to establishing a Publisher connection in ROS.
www.therobotreport.com
| Source: ROS Answers
THE ROBOT REPORT
9/12/20 8:16 AM
perception systems. When people ask me, “Is ROS 2 ready?” my first question these days is, “How much perception/ vision are you doing?” To be clear, workarounds are available in some cases. If you’re creating a publisher yourself, you can:
•
Create a loop that “polls” whether there are subscribers (using get_ subscription_count) as I did in the openni2_camera package.
•
Use parameters to dynamically reconfigure what is running. While this might work in some cases -- and may even be a preferred solution for some use cases -- it likely leads to a more brittle system.
•
Re-architect your system to never need lazy publishers by hard-coding exactly what you need for a given robot. While some of this is more likely to happen in a production environment, it doesn’t lend itself to code reuse and sharing, which was one of the major selling points of ROS 1.
• • •
How to unsubscribe om a topic? Why should we use destory_node in Python What Does set(node_plugins) actually do?
ROS 2 developers, please take note: There are lots of great features in this system, so please help your users learn to how to actually use them -- maybe they’ll even help contribute back. In the month that I took to write this post, a number of questions have been answered, so we’re already getting there! 5. Your robot on ROS 2 There’s probably a bunch of other bugs, issues, etc. hiding in the weeds. Your robot is probably not exactly the same as mine -- and your use cases are going to be different. We need more robots running ROS 2 to dig into things. The good news is you can install ROS 1 and ROS 2 on the same system and switch back and forth pretty easily. RR
WHAT DO YOU THINK? Connect and discuss this and other engineering design issues with thousands of professionals online
Note that I said, “If you’re creating a publisher yourself.” There are lots of packages that are widely relied on in ROS 1 whose ROS 2 ports are crippled or broken due to the lack of subscriber connect callbacks: • message_filters • image_transport • image_proc • depth_image_proc You can find more under “ROS 2 publisher callback on subscription match” on answers.ros.org. 4. Developer involvement I remember folks joking that ROS Answers was misnamed because there were no answers there, just questions. It’s actually not true -- unless you search for the ROS 2 tag. There are a lot of really good questions there, stuff that’s not anywhere in the documentation and is probably relevant to a large number of users. Here are a few examples: • Are rmw_serialize and deserialize thread safe?
THE ROBOT REPORT
FiveThings_ROS_2_Needs_RR_9-20_Vs3_ed.indd 63
About the author: Michael Ferguson is director of research and development at Cobalt Robotics, a leading provider of robotic security services in San Mateo, Calif. He was previously the chief technology officer of Fetch Robotics, leading the development of so ware and electronics for the Fetch and Freight robots. Ferguson began working with ROS in 2010 as a so ware engineer at Willow Garage. He was also co-founder of Unbounded Robotics, a spin-off of Willow Garage. To follow Ferguson’s musings on robotics, visit his Robot & Chisel blog.
www.therobotreport.com
September 2020
63
9/12/20 8:17 AM
The Robot Report
How ROS 2 can speed up robotics and AI development A new controller demonstrates how ROS 2 can help commercial robotics applications, says the field CTO of ADLINK.
Eugene Demaitre • Senior Editor • The Robot Report
Both startups and established technology companies are rushing to develop delivery robots, disinfection systems, and autonomous vehicles. To succeed, their engineering teams must maximize productivity amid pandemic and business constraints. New so ware and hardware platforms put artificial intelligence at the edge to facilitate robotics innovation and speed to market. For instance, ADLINK Technology Inc. said its Edge AI portfolio automates edge computing processes to ee developers om the need for advanced knowledge of data science and machine learning models.
The ROScube controller. | Source: ADLINK
In June, ADLINK released the ROScube-I, a new controller using Intel processors that it said supports a wide variety of sensors and actuators to enable faster, easier, and scalable development of open robotics applications.
64
September 2020
ROScube_RR_9-20_Vs4_ed.indd 64
www.therobotreport.com
THE ROBOT REPORT
9/11/20 1:54 PM
ROScube-I Starter Kit.
| Source: ADLINK
The Taiwan-headquartered company also launched the ROScube-X, which uses the NVIDIA Jetson AGX module for robotics applications requiring AI and minimal power consumption. Both controllers are built on ROS 2, the latest version of Open Robotics’ Robot Operating System. “The difference between autonomous machines such as an iRobot Roomba and an autonomous passenger vehicle is a matter of scale,� said Joe Speed, field chief technology officer at ADLINK. “It is a difference in the scale of the sensor suite, the in-vehicle compute, complexity, and risk.� “Many passenger-carrying programs are stalled because of the coronavirus, but AMRs [autonomous mobile robots], AGVs [automated guided vehicles], cleaning robots, and autonomous cargodelivery efforts are hugely accelerated,�
ROScube-I Starter Kit.
THE ROBOT REPORT
ROScube_RR_9-20_Vs4_ed.indd 65
he told The Robot Report. “There’s a 20x increase in robot orders in some cases, with companies accelerating two-year programs to delivery within six months.� Defining the edge and sharing machine vision R&D “We don’t use the mangled definition of ‘edge computing’ that mobile network operators use,� Speed said. “We’re not just talking about the edge of mobile networks; we’re moving compute to where sensors are and data is generated -- not the office or the data center. These controllers are for computer vision and robots in industries like aerospace and vehicle manufacturing.� “ADLINK’s technology and so ware partners enable things like optical inspection, hand-eye coordination for robots, and rugged industrial applications,� he said. “Cameras with
| Source: ADLINK
www.therobotreport.com
edge AI compute can be built right into the end of the robot arm.� “There are people doing a lot with computer vision with hardwareaccelerated machine learning for object detection and SLAM [simultaneous localization and mapping], but not enough of that work gets open-sourced and contributed upstream to ROS,� Speed noted. “With ROS, we have a solid amework to accept such work, and some university work is published. But not enough machine learning work is contributed back to ROS/ROS 2 Github repos for perception, navigation, etc.� “Intel has done well in ROS with its CPUs and OpenVINO, enabling the MoveIt path planner, and for perception, adding Movidius support for the RealSense cameras in ROS,� he said. “With its Keem Bay modules, Intel claims it has achieved Xavier-level performance on a fi h of the power budget.� “NVIDIA historically hasn’t done a lot of direct contributions to ROS, but I think that’s going to change with Jetson GPUs [graphics processing units] and contributions to ROS/ROS 2,� Speed said. ADLINK relies on global network “Unlike random box builders, ADLINK has so ware labs around the world,� said Speed. “We’re big contributors to ROS 2, along with Amazon Web Services [AWS], Bosch, iRobot, and Open Robotics, as well as contributing to the Eclipse Foundation Eclipse IoT and OpenADx and the Autoware Foundation’s open-source autonomous driving for ROS/ROS 2.� “ADLINK has 1,800 people and its own factories,� he added. “We do a lot of manufacturing with Intel and NVIDIA, as well as NXP and Qualcomm.� Speed said he expects big hardware and middleware players to increasingly support ROS. “Arm recently adopted the Eclipse Cyclone DDS [Data Distribution Service] ROS middleware and plans to work on profiling, optimization, and building in its TrustZone hardware security into its DDS Security,� he said. “Eclipse Cyclone DDS is popular Tier 1 middleware built into ROS 2 and Autoware. It is easy to use, quite small, very fast, and extremely efficient and reliable.� “It can move data using half as many
September 2020
65
9/11/20 1:54 PM
The Robot Report CPU cycles — this has implications for the battery life of mobile robots,” said Speed. “Its open-source contributions have come om many developers, including ones at ADLINK, Rover Robotics, Ekumen, Canonical, and AWS.” ROS 2 is designed for commercial developers ROS was widely viewed as not robust enough for commercial applications, but the Foxy Fitzroy build presents new opportunities, Speed said. “A lot of people may have tried ROS in the past and didn’t like it,” he acknowledged. “ROS ‘classic’ was very much perceived as a tool for academics, so companies would harden it and add to it as they built their own products on it. They didn’t advertise it, but many things like Cruise Automation were originally built on ROS.” “It’s not obvious to outsiders, but ROS 2 has a heavy investment om big technology corporations,” said Speed. “There are dozens of contributing engineers at AWS, Samsung, LG, and others contributing daily. Most are not roboticists but are systems architects, so ware engineers, and testing and QA [quality assurance] people with serious
| Source: ADLINK
skills. This is why we’re seeing such rapid and constant improvements in the ease, performance, and reliability of ROS 2.” “We knew what is needed for ROS 2. It has to be fault tolerant, real-time, and functionally safe,” he said. “The ROS community re-architected ROS to be built on DDS, which is used by industry, the military, and aerospace. ADLINK-contributed DDS is in every Fujitsu Internet backbone fiber switch,
the ship-defense systems of 18 navies, autonomous vehicles, and industrial and farming robots.” “By building robots on a solid foundation with open-source middleware, we can all get to autonomy faster,” Speed claimed. “Engineers can get to bigger, heavier things that move faster, with more valuable cargo including people.” “If you were on the fence about trying
Robotics collaborations for good “There is a multiyear program to automate Changi
#AccesibleOlli is an autonomous shuttlebus applying edge IoT to transportation. | Source: ADLINK
66
September 2020
ROScube_RR_9-20_Vs4_ed.indd 66
General Hospital in Singapore,” Speed said. “It’s a heterogenous environment in which robots must integrate with hospital systems and multiple robots. A robot can summon an elevator, roll into it, and make way for another robot. These robots are already sharing space with humans, doing everything om resupply to bedside care, all working together.” “ADLINK got me to join in large part because of its support for assistive technologies,” he recalled. “My first effort upon joining ADLINK was delivering #AccessibleOlli, an open-source, self-driving bus for elderly and disabled. This was a #tech4good community effort with contributions om MIT, Princeton, AARP, IBM, the Mayo Clinic, and many more.” “My team of P-TECH kids chose Stevie Wonder as their design persona,” said Speed. “So it was pretty great when our iend Mike May brought Stevie Wonder to experience what my kids had designed for him.” www.therobotreport.com
THE ROBOT REPORT
9/15/20 9:19 AM
open robotics or ROS 2, now is the time with Foxy,” he said. “This release has the contributions of 115 engineers. If you look at the development and testing for this open-source release, it would have been an $8 million commercial software effort.” “I challenge you to find more than 10 robotics startups that are not using ROS or ROS 2. Most are using it,” said Speed. “ROS is coming to robot arms, too. Trajekt Sports has developed a robot that can accurately replicate any baseball pitch thrown in a MLB game -- everything from curveballs to 105+ mph fastballs.” Pandemic accelerates robotics demand “While autonomous passenger vehicle programs have slowed a bit or are stalled, delivery robot programs have sped up,” said Speed. “For example, Damien Declercq at Spring Mobility told me how at Neolix has seen a 20x increase in delivery robot orders in 90 days because of COVID-19. The trends remain the same, but the pandemic has changed the timelines, elongating some and compressing others.” “I have friends at Box Robotics in Philadelphia who have 36 years of experience in warehouse robots,” he said. “They say COVID-19 has not only accelerated the shift from retail stores to e-commerce, but it has also put a real strain on warehouses and supply chains.” “We’re working with Ouster and SICK on using ROS 2 perception to make a warehouse vehicle drive twice as fast safely. This would save 30% of the cost and get more throughput,” Speed said. “Most things move at 2 m/sec. but really at 1 to 1.5 m/sec., but they should really be able to move the speed of a human or forklift at 5 m/sec.” “Box Robotics, ADLINK, and AWS RoboMaker are working with Ouster and SICK on using ROS 2 perception to make autonomous warehouse vehicles drive twice as fast safely,” said Speed. “This would save 30% of the cost and get more throughput. Most autonomous things in warehouses move at 1 to 1.5 m/sec., compared with a human-driven forklift at 5 m/sec.” ADLINK’s customers include a major aerospace manufacturer that requires any robots that it buys to support ROS,
THE ROBOT REPORT
ROScube_RR_9-20_Vs4_ed.indd 67
A robot that can replicate any MLB pitch.
| Source: Trajekt Sports
Speed said. “ROS Industrial is starting to be built into the procurement requirements of big manufacturers,” he said. ADLINK is also working with providers of autonomous delivery, AMRs, and selfdriving vehicles, but Speed declined to name any partners. “With the Autoware Foundation developing support for autonomous cargo delivery, a robot could pick up parts in one building of a car factory and navigate onto a street and into another building to deliver parts to the manufacturing line at the moment they’re needed,” he said. “This combines indoor and outdoor navigation and operating in areas with other robots and humans.” RR
WHAT DO YOU THINK? Connect and discuss this and other engineering design issues with thousands of professionals online
www.therobotreport.com
September 2020
67
9/15/20 9:20 AM
The Robot Report
A history of the
Robot Operating System
ROS has gone from being a personal research project to an open-source enabler of commercial robotics development.
Ricardo Tellez • The Construct
The Robot Operating System, or ROS, is now very popular among roboticists. Researchers, hobbyists, and even robotics companies are using it, promoting it, and supporting it. However, it was not always like that. Do you know the history of ROS? In the early days, ROS was an unknown, only used by a bunch of robotics eaks. How did ROS reach its current state as a robotics standard? Let’s take a look at the evolution of ROS.
| Source: The Construct
The Stanford Period ROS started as a personal project of Keenan Wyrobek and Eric Berger while they were at Stanford University, as an attempt to remove the reinventing-the-wheel situation om which robotics was suffering. Those two guys were worried about the most common problems of robotics at the time: • Too much time dedicated to re-implementing the so ware in astructure required to build complex robotics algorithms (basically, drivers to the sensors and actuators, and communications between different programs inside the same robot) • Too little time dedicated to actually building intelligent robotics programs that were based on that in astructure Even inside the same organization, the re-invention of the drivers and communication systems was re-implemented for each new project. This situation was beautifully expressed by
68
September 2020
History_RR_9-20_Vs4_ed.indd 68
www.therobotreport.com
THE ROBOT REPORT
9/11/20 1:57 PM
Most of the time spent in robotics was developing the wheel. | Source: Wyrobek and Berger
Wyrobek and Berger in one of their slides used to pitch investors. In order to attack that problem, Wyrobek and Berger in 2006 created a program called the Stanford Personal Robotics Program, with the aim to build a framework that allowed processes to communicate with each other, plus some tools to help create code on top of that. All that framework was supposed to be used to create code for a robot they also would build, the Personal Robot, as a testbed and example to others. They would build 10 of those robots and provide them to universities so that they could develop software based on their framework. NOTE: People more versed in ROS will recognize in those the precursors of ROScomm libraries and the Rviz, rqt_tools and the like of current modern ROS distributions. Also, the Personal Robot was the precursor of the famous PR2 robot. Similar frameworks at the time The idea of such a system for robotics was not new. Actually, there were some other related projects already available for the robotics community: Player/ Stage, one of the most famous in the line of open source, and URBI in the line of proprietary systems. Even Open-R, the system developed
THE ROBOT REPORT
History_RR_9-20_Vs4_ed.indd 69
by Sony which powered the early Aibo robots of 1999, was a system created to prevent that problem. It’s a shame that Sony canceled that project, as it could have become the leader by now. Ironically, Sony recently launched a new version of the Aibo robot that runs ROS inside! Finally, another similar system developed in Europe was YARP. One of the leaders of the Player/Stage research project was Brian Gerkey, who later went to Willow Garage to develop ROS and is now the CEO of Open Robotics, the company currently behind the development of ROS. On its side, URBI was a professional
system led by Jean-Christoph Baillie. It worked very well, but it could not compete with the free-ness of ROS. That is an important point to discuss: URBI was at least as good as ROS. I used it for many research tasks while doing my Ph.D., such as code from 2005 to make Aibo walk, dance, and do some other tricks using neural networks. But URBI failed when competing with ROS. The software platform had as many tools for debugging and as much documentation as ROS. So why did it fail against ROS? The fastest readers will jump to the point that URBI was not free. Actually, it was quite expensive. Was the price what killed URBI? I don’t think so. In my opinion, what killed URBI was the lack of community. It takes some time to build a community, but once you have it, it acts like changing gears. URBI could not build a community because it relied on a paid fee. That made it so the only people who could buy it were those accessing the framework. That limits the amount of community you can create. It is true that ROS was free. But that is not the reason -- many products that are free fail. The reason is that they built a community. Being free was just a strategy to build that community. Switching gears While at Stanford, Wyrobek and Berger received $50,000 of funding and used it to build a PR robot and a demo of what their actual project was. However, they
| Source: The Construct
www.therobotreport.com
September 2020
69
9/11/20 1:58 PM
The Robot Report realized that in order to build a really universal system and to provide those robots to the research groups, they would need additional funding. So they started to pitch investors. At some point around 2008, Wyrobek and Berger met with Scott Hassan, investor and the founder of Willow Garage, a research center with a focus on robotics products. Hassan found their idea so interesting that he decided to fund it and start a Personal Robotics Program inside Willow Garage with them. The Robot Operating System was born, and the PR2 robot with it. The ROS project became so important that all the other projects of Willow Garage were discarded, and it concentrated only on the development and spread of ROS.
technical questions about ROS. 3. In 2010, it built 11 PR2 robots and provided them to 11 universities for robotics software development using ROS, following Wyrobek and Berger’s original idea. At that point, the PR2 robot was for sale, so anybody in the world could buy one -- if they had enough money. 4. The first edition of the ROSCON was in 2012. ROSCON became the official yearly conference for ROS developers. 5. Simulation started to become very important. More precisely, 3D simulation. That is why the team decided to incorporate Gazebo, the 3D robotics simulator from the Player/Stage project, into ROS. Gazebo became the default 3D simulator for ROS.
Willow Garage takes the lead ROS was developed at Willow Garage for around six years, until Willow Garage shut down in 2014. During that time, many advancements in the project were made. It was this push during the “Willow time” that skyrocketed its popularity. It was also during that time that I acknowledged its existence (I started with ROS C-turtle in 2010) and decided to switch from Player/Stage to ROS, even if I was in love with Player/Stage. In 2009, the first distribution of ROS was released: ROS Mango Tango, also called ROS 0.4. As you can see, the name of the first release had nothing to do with the current naming convention for reasons unknown to this author. The 1.0 release of that distribution was launched almost a year later. From that point, the ROS team decided to name of the distributions after turtle types. Hence, the following distributions, by release date: • Box Turtle, in 2010 • ROS C-Turtle, in 2010 • Diamond Back, in 2011 • ROS Electric Emys, in 2011 • ROS Fuerte Turtle, in 2012 • ROS Groovy Galapagos, in 2012
As ROS was evolving, all the metrics for ROS were skyrocketing: the number of repositories, the number of packages provided, and, of course, the numbers of universities using it and companies putting it into their products. Another important event that increased the size of the ROS community was Willow Garage’s 2011 release of Turtlebot, the most famous robot for ROS developers. Even if PR2 was the intended robot for testing and developing with ROS, its complexity and high price made it non-viable for most researchers. Instead, the Turtlebot was a simple and cheap robot that allowed anybody to experiment with the basics of robotics and ROS. It quickly became a big hit, and it is used even today in its Turtlebot 2 and Turtlebot 3 versions. In 2013, Willow Garage “announced” that it would dissolve that year. I
Around that time, other events also happened: 1. In 2009, they built a second version of the Personal Robot, the PR2 2. Willow Garage launched ROS Answers, the channel to answer
70
September 2020
History_RR_9-20_Vs4_ed.indd 70
| Source: Willow Garage
remember when we received the news that Willow Garage was closing. I was working at Pal Robotics, and we were all very worried. What would happen with ROS? After all, we had changed a lot of our code to work with ROS. We removed previous libraries like Karto. Karto is software for robot navigation and is free now. But at that time, we had to pay for a license to use it as the main SLAM and path-planning algorithms of our robots. The idea was that the newly created Open Source Robotics Foundation (OSRF) would take the lead of ROS development. Many of Willow Garage’s employees were
| Source: Willow Garage
www.therobotreport.com
THE ROBOT REPORT
9/11/20 1:59 PM
absorbed by Suitable Technologies, a spinoff that ironically doesn’t use ROS for its products. The customer support for all the PR2 robots was absorbed by another important company, Clearpath Robotics. Under the Open Source Robotics Foundation umbrella Under the new legal structure of the OSRF, ROS continued to develop and release new distributions, including the following. • ROS Hydro Medusa, in 2013 • ROS Indigo Igloo, in 2014 • ROS Jade Turtle, in 2015 • ROS Kinetic Kame, in 2016 • ROS Lunar Loggerhead, in 2017 • ROS Melodic Morenia, in 2018 The reports created a er each year are publicly available here under the tag “ROS Metrics.” Having reached this point, it is important to state that the last distribution of ROS was released this year. ROS Noetic is based on Python 3 instead of Python 2 as all the previous ones were. No more ROS 1 distributions will be released, and the full development has been taken for ROS 2. ROS 2.0 Around 2015, the deficiencies of ROS for commercial products were manifesting very clearly. Companies cited the roscore as a single point of failure, a lack of security, and no real-time support as reasons for not supporting ROS in their products. If ROS was to become the standard for robotics, it clearly had to reach the industrial sector with a stronger voice than that of the few pioneer companies already shipping ROS in their products. In order to overcome the objections, the OSRF took the effort to create ROS 2.0. It had already reached its fourth distribution in June 2020 with the release of Dashing Diademata.
• Open Robotics recently opened a new facility in Singapore and established a collaboration with the government there for development. • Local ROS conferences have been launched, including ROSCON France and ROSCON Japan. • In the past few months, big players like Amazon, Google, and Microso have started to show interest in the system with support for ROS. That is definitely a sign that ROS is in better health than ever and that it has a bright future. Sure, many problems will arise, such as the problem of creating a last ROS 1 distribution based on Python 3, but I’m 100% sure that the ROS community, will solve them and build on top of them. I expect a long and strong life for ROS. #GoROS! ROS is the most mature, open-source robotics project in the world. So if you are planning to get into robotics, you need to master it. In my blog, we’ll look at the challenges of learning ROS, which is complex and takes time. We’ve also built a ROS online academy to help you learn how to optimize your time. RR
About the author: Ricardo Tellez is CEO and co-founder of The Construct, a company that provides Web development tools for programming, testing and deploying robots using ROS. Previously, he worked at Pal Robotics developing so ware systems for humanoid robots. Tellez is also an instructor at the University of LaSalle Barcelona, where he teaches ROS, and he has written four books on the subject. In addition, Tellez delivers a weekly ee ROS Live Class on his YouTube channel.
Recent movements in the ROS ecosystem • In 2017, the Open Source Robotics Foundation changed its name to Open Robotics, in order to become more of a company than a foundation, even if the foundation branch still exists/.
THE ROBOT REPORT
History_RR_9-20_Vs4_ed.indd 71
www.therobotreport.com
September 2020
71
9/11/20 2:00 PM
The Robot Report
How we ported a
-res):
project from
ROS 1 to ROS 2 Porting this project from ROS 1 to ROS 2 was quite challenging due to the variety of tools and components used. Lukasz Mitka
At Husarion, we have developed an open-source graphical user interface for managing autonomous mobile robot destinations. It is Web browser-based and allows a user to set a single destination or a set of destinations as a sequence or loop. Everything was packed under a user-friendly and intuitive GUI and out-of-the-box experience without the need to write a single line of code. The project is named Route Admin Panel, or RAP for short. It was initially created for ROS 1 and was successfully tested with Kinetic and Melodic. RAP is a pre-installed Web user interface on ROSbot 2.0 providing a very handy way to start using the robot with no coding involved. Although it was developed using ROSbot, you can use RAP with the following: • Gazebo simulator with ROSbot model or other model of your choice • AWS RoboMaker • Install RAP on any mobile robot
72
September 2020
Porting_RR_9-20_Vs4_ed.indd 72
www.therobotreport.com
THE ROBOT REPORT
9/12/20 8:03 AM
| Source: Husarion
The Robot Operating System community has increased its efforts around ROS 2 development. That and questions from our users convinced us to provide a dedicated ROS 2 image for ROSbot. It comes with ROS Dashing with all desktop tools. The communication middleware of our choice is Cyclone DDS, as we consider it stable and effective. Moreover, from a developer perspective, we find its documentation to be complete and comprehensive. Images are prepared for ARM architecture, with ASUS TinkerBoard as a supported device and Intel architecture with UpBoard as a supported device. We decided that because the default software is also a showcase for ROSbot capabilities, it will be RAP, and thus it needed to be ported to ROS 2. Here are the experiences we gathered and challenges we faced during the process.
THE ROBOT REPORT
Porting_RR_9-20_Vs4_ed.indd 73
Architecture RAP is a nodejs application, which consists of a back-end server and front-end Web browser app. Communication between the server and the browser is ROS-agnostic, and we are using JSON structure for this part. This means that there is no need to make any changes in the browser app, and the user experience will stay the same. Translation to ROS messages is handled on the server side, RAP for ROS 1 is using rosnodejs for interfacing between ROS and server. There is no rosnodejs for ROS 2. The replacement package is rosnodejs, and it provides roughly the same functionality with interfaces adjusted to ROS 2. RAP is subscribing TF messages to update ROSbot position on a map and Image with map through CompressedImage transport plug-in. Furthermore, ROS 1 used /move_base action application programming interface (API), which was replaced with nav2 stack.
www.therobotreport.com  
September 2020
73
9/12/20 8:04 AM
The Robot Report We tested it with NodeJS Version 10.18. Porting process Knowing the architecture, we can determine that main change is to replace rosnodejs with rclnodejs. Many interfaces in both libraries are the same, so switching TF topic was mostly a matter of replacing the library name and reformatting messages. We encountered the first significant issue while switching Image topic. In order to save the bandwidth, map is transferred to browser as a PNG compressed image. In ROS 1, there was a dedicated node that subscribed /map topic with nav_msgs/OccupancyGrid message type and republished it on the /map_img topic with use of image_transport plugin. The server side subscribed the CompressedImage from image_transport and transferred it directly to browser app. For ROS 2, it was necessary to implement node for conversion of nav_msgs/OccupancyGrid to sensor_msgs/CompressedImage. This process is described in section Map to image converter. Also, there was an issue with parameter declaration for CompressedImage transport plugin. The parameter declaration issue is described in CompressedImage transport plugin issue. The most breaking change was setting the destination for navigation stack, as it was redesigned in ROS 2. Details of switching to navigation2 stack are in Path planning and destination setting.
| Source: Husarion
74
September 2020
Porting_RR_9-20_Vs4_ed.indd 74
ROSbot unboxing.
| Source: Husarion
Map to image converter Node for converting nav_ msgs::msg::OccupancyGrid to sensor_ msgs::msg::Image was rewritten for ROS 2 compliance. Task for this node is pretty straightforward, subscribe /map topic, convert occupancy grid into image and publish it. First, initialize subscriber to /map topic: map_sub_ = this>create_subscription<nav_ msgs::msg::OccupancyGrid>(“/map”, 1, std:: bind(&MapAsImageProvider::mapUpdate, this, std::placeholders::_1)); Initialize /map_image publisher as ImageTransport plugin: image_transport_ = new image_transport: :ImageTransport(static_cast<rclcpp::Node::S haredPtr>(this)); image_transport_publisher_full_ = image_transport_->advertise(“/map_ image”, 1, true); Then, in subscriber callback function, process the map and publish it as an image: tmp_image_data = *cv_img_full_. toImageMsg(); image_transport_ publisher_full_.publish(tmp_image_data); When initializing image transport, there is no possibility to choose image format or compression ratio. The plugins are loaded at runtime when node is launched, exact configuration depends on image transport plugins available in the system.
www.therobotreport.com
CompressedImage transport plugin issue RAP is subscribing map image as CompressedImage with PNG compression. Image_transport_plugins does support PNG compression, but in the first try, it was constantly publishing as JPEG, which is the default format, even when format: png parameter was set. It turned out that since Dashing, the parameter declaration had changed as described in documentation. Unfortunately, the declaration API was not implemented in the ROS 2 branch of image_transport_plugins. We have prepared a forked repository with required changes, and the corresponding PR is pending. Parameter declaration So how are parameters declared now? We will discuss it on compression format example: rcl_interfaces::msg::ParameterDescriptor format_description; format_description. name = “format”; format_description.type=rcl_interfaces::ms g::ParameterType::PARAMETER_STRING; format_description.description = “Compression method”; format_description. read_only = false; format_description. additional_constraints = “Supported values: [jpeg, png]”; config_.format = node->declare_ parameter(“format”, kDefaultFormat, format_description); We begin with ParameterDescriptor structure, which will contain all relevant
THE ROBOT REPORT
9/12/20 8:08 AM
information regarding a parameter that we want to set: rcl_interfaces::msg::ParameterDescriptor format_description; Set a name for the parameter. This is a string that identifies the parameter; the same name is to be used when setting value for the parameter, such as in parameters .yaml file. format_description.name = “format”; Choose the parameter data type. It could be one of the following:
• PARAMETER_NOT_SET • PARAMETER_BOOL • PARAMETER_INTEGER • PARAMETER_DOUBLE • PARAMETER_STRING • PARAMETER_BYTE_ARRAY • PARAMETER_BOOL_ARRAY • PARAMETER_INTEGER_ARRAY • PARAMETER_DOUBLE_ARRAY • PARAMETER_STRING_ARRAY`
| Source: Husarion format_description.type = rcl_interfaces::ms g::ParameterType::PARAMETER_STRING; Provide the parameter description. This should explain what could be set or how the parameter affects node operation. format_description.description = “Compression method”; Determine if the value can be changed
after it has been initialized, if true, the value will not be overwritten. format_description.read_only = false; Describe the parameter constraints. ParameterDescriptor provides floating_ point_range and integer_range fields that can be used to limit numeric values set in parameter.
A NEW VIRTUAL EXPERIENCE FROM ROBOTICS BUSINESS REVIEW!
Fostering Innovation, Expanding Opportunities, Building a Community
FEATURING:
Speaker Presentations
Live Discussions
Follow-up Q&As w/ presenters
robobusiness.com
THE ROBOT REPORT
Porting_RR_9-20_Vs4_ed.indd 75
www.therobotreport.com
September 2020
75
9/12/20 8:09 AM
The Robot Report In our case, they do not apply because we are using string parameters. For the purpose of determining possible values, we can use the additional_constraints field. This should be plain-English description of constraints that cannot be expressed with the available constraints. format_description.additional_constraints = “Supported values: [jpeg, png]”; Finally, declare the parameter: config_.format = node->declare_ parameter(“format”, kDefaultFormat, format_description); Return value of declare_parameter method is parameter resulting value. If, at runtime, the user has provided an initial value, then it will be set in this method, otherwise the given default_value will be set. Path planning and destination setting Path planning in ROS 2 was almost redesigned om scratch. This allows it to implement new workflows while keeping functionality. For more details on the implementation, please refer to Navigation 2 docs. Although the changes are fundamental, they refer mainly to navigation stack internal issues. When using Rviz, default settings allow us to set destination for ROSbot and drive toward it smoothly. Setting the destination and monitoring its progress is available via the actions interface. Their implementation changed greatly starting om the basic concepts. In ROS 1, actions are implemented as a separate library, while in ROS 2, they should be included in client library. When we started the process of porting RAP to ROS 2, rclnodejs did not have support for actions interface. We decided to make our own implementation of actions interface and eventually created a pull request. During our development, the other team was concurrently working on the same functionality. The status as of this article is that rclnodejs has implementation of actions available for ROS 2 Eloquent. Since we want RAP to be compatible with ROS Dashing, we will keep with our custom fork.
76
September 2020
Porting_RR_9-20_Vs4_ed.indd 76
As defined in actions design, their support is already implemented in rcl library. To add actions support in rclnodejs, it is required to add appropriate language bindings between JavaScript in rclnodejs and C in rcl. Also, according classes to process actions needs to be implemented. The last thing to do is to provide a data type generator for actions. Every ROS message, service, or action is defined in .msg, .srv, or .action accordingly. Each of them can also be defined with use of universal.idl file. Both methods are not directly usable in Node.js, so they need to be converted to according JavaScript classes prior to usage. Furthermore, actions must be converted during the installation on user machine to provide support for user-defined actions. Conclusion Porting the project om ROS 1 to ROS 2 was quite challenging due to variety of tools and components used. It was also as much valuable experience, which is why we decided to share it. We have discussed usage of image_ transport plugin, parameter declaration and integration of Node.js library with ROS 2 interface. RAP is an open-source project, and code for ROS 1 and ROS 2 is available as separate branches on GitHub. I hope that the description of our experiences during porting om ROS 1 to ROS 2 will be helpful for the ROS community. RR
WHAT DO YOU THINK? Connect and discuss this and other engineering design issues with thousands of professionals online
About the author: Lukasz Mitka is a graduate of AGH University of Science and Technology in Krakow, Poland. He is passionate about robotics and works mainly with mobile robots. Husarion provides hardware, so ware, and connectivity for building autonomous robots based on ROS and ROS 2.
www.therobotreport.com
THE ROBOT REPORT
9/12/20 8:09 AM
PUT DIRTY WORK INTO HANDS THAT NEVER GET TIRED.
Free your workers to do more productive jobs, while improving your system’s performance. Find the best ways to automate tedious tasks at www.intelligrated.com/ready.
© 2020 Honeywell Intelligrated. All rights reserved.
Honeywell Integrated 3-20_RR.indd 77 12073 HON-INT-Robotics-DirtyWork_9x10-875.indd 1
9/14/20 3:33 7:39 PM AM 2/14/20
Robotics Robotics
Fully Integrated Speed Controller, within 6.2 mm The FAULHABER BXT Flat brushless DC servo motor family has grown; now available in all sizes with a diametercompliant, integrated speed controller. With an additional attachment length of just 6.2 mm, the combination of the BXT H motors with the integrated speed controller is the ideal solution for space-confined applications, particularly if speeds need to be controlled precisely, and high torques are also required. The default factory pre-configuration, along with the Motion Manager software allows for quick and easy commissioning of the system. Typical applications are medical devices, pumps, hand-held instruments, optics systems, and robotics & end-effectors.
FAULHABER MICROMO www.faulhaber.com 14881 Evergreen Ave Clearwater, FL 33760 USA
800-807-9166
Honeywell IntelligratedÂŽ Robotic Solutions By leveraging advanced robotic technology with extensive material handling experience, warehouse automation solutions from Honeywell Robotics provide the speed, accuracy and efficiency to satisfy a broad and growing range of operational requirements. Innovative designs, simulation tools that predict performance before installation, application expertise and committed support ensure maximum dependability and round-the-clock productivity. Robotic solutions also relieve workers of some of the most arduous, repetitive and injury-prone tasks, freeing up limited labor for more rewarding, higher-value jobs. Best of all, Honeywell Robotics solutions can be leveraged as part of larger integrated systems, backed by proven integration and support capabilities. Honeywell Intelligrated is recognized by the Robotic Industries Association (RIA) as a Certified Robot Integrator, with more than a quarter-century of experience providing single-source robotic solutions for high-performance distribution and manufacturing operations. From system concepting, simulation, fabrication and integration to installation and commissioning, training and ongoing support, each solution is approached with a comprehensive lifecycle view to maximize the value of your system.
78
September 2020
Robotic Tips 9-20_Vs1.indd 78
www.therobotreport.com
Honeywell Intelligrated 1.866.936.7300
www.intelligrated.com
THE ROBOT REPORT
9/11/20 2:10 PM