Robotics applications

Challenges of robotics software management

When deploying robotics devices, you encounter several barriers to the packaging, deployment, and maintenance of your 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.

Snaps are a tailored solution for robotics software management

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

  • Containerised 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 robots’ 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 build 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.

ROS deployment solution

The snap ecosystem considers ROS and ROS 2 as first-class citizens. Snapcraft comes with native integrations through plugins and extensions dedicated to both ROS and ROS 2; developed and maintained 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 Catkin plugin to generate your ROS1 package
catkin-tools Catkin plugin to compile your ROS package
ROS extension ROS Noetic extension for core20

ROS 2

ROS 2 applications Learn how to create a ROS 2 snap for your application
colcon Colcon plugin to build your ROS 2 package
ROS 2 extension ROS 2 Foxy & Humble extensions for core20

Others

ROS FAQ & troubleshooting FAQ & troubleshooting about snap and ROS integration
ROS snap with GitHub Actions Build and Publish a ROS Snap with GitHub Actions