Deploying robotics applications

Improved robotics software management

When deploying robotics devices, you encounter several barriers to package, deploy, and maintain your software stack. Robotics 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.

But developing this infrastructure can be difficult and distract you from your business goals. It also comes with overhead costs and long-term maintenance commitments.

  • 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 are the perfect solution for all of these challenges. Snaps are containers that bundle an application and all its dependencies, offering roboticists:

  • Containerised solution: A 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

Snapcraft comes with native integrations through plugins and extensions dedicated to both ROS and ROS 2; developed and maintained by Canonical.

Follow the step-by-step instructions below to create your first ROS snap.

Get started now

ROS 1

ROS applications Learn how to create a ROS snap for your application
catkin Use the Catkin plugin to generate your ROS1 package
catkin-tools Use the Catkin plugin to compile your ROS package
ROS extension ROS extension helps you snap ROS applications. It comes along with caktin or catkin-tools plugins, adds the ROS APT package repository and sets a build and run-time environment.

ROS 2

ROS 2 applications Learn how to create a ROS 2 snap for your application
colcon Use the Colcon plugin to build your ROS 2 package
ROS 2 Foxy extension ROS 2 Foxy extension helps you snap ROS 2 applications. It comes along with the colcon plugin, adds the ROS 2 APT package repository and sets a build and run-time environment.
ROS 2 Humble extension ROS 2 Humble extension helps you snap ROS 2 applications. It comes along with the colcon plugin, adds the ROS 2 APT package repository and sets a build and run-time environment.
ROS 2 shared memory Learn about ROS 2 shared-memory in snaps

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

Last updated 16 days ago.