sidfaber
on 13 July 2020
Please note that this blog post has out technical information that may no longer be correct. For latest updated documentation about robotics in Canonical please visit https://ubuntu.com/robotics/docs.
Robotics@Canonical puts a strong focus on the migration from ROS to ROS 2. ROS 2 benefits from many improvements, especially robot security. Our goal is to make it easy for you to transition to ROS 2, whether you’re completely new to ROS or a seasoned engineer retooling for a new environment. Your new platform should be secure-by-default, and we expect you’ll need to pivot between different environments as you migrate from ROS to ROS 2.
Along the way we’ve encountered some friction points, some mild surprises, and some opportunities to better leverage existing tools. Whenever that happened we tried to fix them and share our experiences so you didn’t run into the same problems! This has resulted in blog posts and videos in three key focus areas: getting started with ROS 2, software development in ROS 2, and building snaps for ROS. Let’s recap some of our recent output.
Getting Started with ROS 2
As ROS 2 enters the mainstream, an ever increasing population of technologists need to understand ROS. We’ve been publishing content for the experienced professional that’s new to ROS 2 using both traditional blog posts as well as short how-to videos:
- An introduction to the ROS 2 Command Line Interface
- A how-to guide for Installing ROS in an LXD Container on your Ubuntu workstation, and an associated video
- Some help on how to feel at home in a LXD container by importing all your custom configurations
- A tutorial on discovering and calling Services in ROS 2
- Some notes for ROS users as Python 2 hits EOL
- A video guide on installing Ubuntu 20.04 on a Raspberry Pi followed by an installation of ROS 2 Foxy Fitzroy
- A similar video guide for installing Ubuntu 18.04 on a Raspberry Pi followed by an installation of ROS 2 Dashing Diademata
- A video introduction to Turtlesim, the “Hello, World” of ROS
While you can expect our video series to continue exploring aspects of ROS 2 for now, we would love to hear your opinion about them. Do you like the format? Do you find them useful? What other ROS related content would you like to see?
Software Development in ROS 2
If you’re a seasoned ROS engineer we want to make it easy for you to continue developing in ROS 2. Here are some resources we hope will make you more productive:
- Hints on extending the ROS 2 Command Line Interface
- Understanding the difference between components and plugins in ROS 2
- Defining required nodes in a ROS 2 launch file
- ROS Development with LXD
- Working with GitHub Actions for ROS 2 Continuous Integration
- Using a linter with ROS 2 as you build your code
- Using a linter with ROS 2 as part of your test suite
ROS 2 Snaps
Snaps are great for encapsulating dependencies, sandboxing software, and being able to update the software on deployed robots without needing to host any infrastructure. They’re also the ideal add on for both security and maintainability of your robot, so we’ve published a handful of hints to get you started with ROS Snaps:
- Keep your enterprise ROS robots up-to-date with snaps
- Building ROS 2 snaps with Colcon
- Building ROS 2 Eloquent Snaps
- Speeding up your ROS snap builds
- How to structure and build a TurtleBot3 snap (in two parts): part 1 setting up configuration and launch files, and part 2 building the snap itself.
What’s next?
Keep up-to-date on the robotics team’s publications with our State of Robotics Newsletters. We’d also really like to hear from you. There’s much, much more to the ROS infrastructure, is there anything in particular that might help you migrate to ROS 2? What do you need for that secure, robust robot? Drop us a line and let us know!