Robotics applications

When deploying robotics devices, you encounter several barriers for the packaging, deployment, and maintenance of our software stack. Robots software should benefit from a controlled and stable environment, with the same portability and reliability as any other software application. Having a production-grade update infrastructure is mandatory to stay up to date on bug fixes, new releases, and security fixes. Developing your infrastructure would take you away from your goal, with overhead costs and long term maintenance of such infrastructure. Deploying software on your robots should be easy, even if your software relies on hundreds of dependencies and your robots are in different locations; it should be easy to deploy, secure, and maintain your software stack.

Snaps make the perfect solution for all of these challenges. Snaps are containers that bundle an application and all its dependencies, offering roboticists:

  • Container solution: Snaps bundle all your dependencies and assets in one package, making your application installable on dozens of Linux distributions and across distro versions. You won’t even have to install anything else on your robot operating system, no dependencies, not even ROS if you are using it.
  • Strict confinement: Snaps are designed to be secure and isolated from the underlying system and other applications, with dedicated interfaces to access the host machine.
  • CI/CD integration: The creation of snaps can be integrated into your CI pipeline, making the updates effortless.
  • OTA and delta updates: Snaps can update automatically and transactionally, making sure the device is never broken.
  • Multi-architecture: Snaps come with a multi-architecture feature, allowing you to define your snap package for multiple architectures.
  • Managing updates: Snaps can be updated automatically or you can control the update options (update hours, update holds, update history). It also comes with multiple release channels for role-based access controls and application versioning.
  • Reduce boot time: You can configure a snap application as a daemon, so it starts automatically at boot.

Snap is an optimised packaging solution for ROS 1 and ROS 2 applications, with increased performance on build time and run time. Thus, snapcraft comes with plugins and extensions dedicated to ROS 1 and ROS 2, and are long term supported by Canonical.

You will find easy to follow step-by-step instructions to create your first ROS snap in the index below.

Get started now

ROS 1

ros-applications Learn how to create a ROS1 snap embedding ROS and your package
catkin-plugin Catkin plugin to generate your ROS1 package
catkin-tools plugin Catkin plugin to compile your ROS1 package
ROS1 extension ROS1 Noetic extension for core20 to add Noetic APT repository

ROS 2

ros2-applications Learn how to create a ROS2 snap embedding ROS2 and your package
colcon plugin Colcon plugin to generate your ROS2 package
ROS2 extension ROS2 Foxy extension for core20 to add Noetic APT repository

Others

ROS-FAQ-troubleshooting FAQ and troubleshooting about Snap and ROS integration

Last updated 2 months ago.