The ROS Noetic Content Sharing extensions

These extensions help you snap ROS applications for the Noetic Ninjemys distribution using the content-sharing feature.

Note that this set of extensions are based on the ros1-noetic extension. Therefore, they are applied on top of the ros1-noetic extension. See ros1-noetic for more information.

:information_source: This extension requires Snapcraft 8.x+.

How to use it

Add extensions: [ ros1-noetic-<metapackage> ] to the application definition in your snapcraft.yaml file, where ‘<metapackage>’ is one and only one of:

  • ros-core
  • ros-base
  • robot
  • desktop

For instance, extensions: [ ros-noetic-ros-core ].

See the ROS applications documentation for a complete tutorial on how to use this extension.

apps:
  catkin-ros1-run:
    command: roslaunch listener talk_and_listen.launch
    plugs: [network, network-bind]
    extensions: [ros1-noetic-robot]
    ...

What it does for the build-time environment

  • Everything the ros1-noetic extension does.
  • Adds a content plug mounting the provider snap content at $SNAP/opt/ros/underlay_ws and defines a default provider.
  • Sets the CMAKE_SYSTEM_PREFIX_PATH variable to point at the mounted system path.
  • Adds the build snap providing the build-time equivalent of the default content-sharing provider snap to ros-build-snaps.

This implies that you can avoid declaring as build-packages all the ROS packages that are found inside the ROS metapackage with the name corresponding to the extension used above.

What it does for the run-time environment

  • Everything the ros1-noetic extension does.
  • Expands the runtime environment required by ROS th include the ROS workspace provided by the content-sharing snap. Similar to the typical chaining of ROS workspaces.

Further reading

  • For a usage example of this extension, please visit: ros-applications.
  • For a complete picture of what this extension does, add it to your app definition and run snapcraft expand-extensions.

:information_source: Snapcraft extensions enable snap developers to easily incorporate a set of common requirements into a snap. See Snapcraft extensions for further details.