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 |