ROS 1 extension¶
The ROS 1 extension, referred to internally as ros1-noetic
, helps fill in common
settings for software built with the ROS Noetic Ninjemys libraries.
This extension requires Snapcraft 7.3 or higher, and is supported with the core20 base.
Included parts¶
The extension adds its own part to the project, which pulls in the ROS build packages.
Included parts
ros1-noetic-extension:
build-packages:
- ros-noetic-catkin
plugin: make
source: $SNAPCRAFT_EXTENSIONS_DIR/ros1
Included build environment variables¶
For the main part of the project, the extension sets the following build environment variables.
Included build environment variables
build-environment:
- ROS_VERSION: "1"
- ROS_DISTRO: noetic
Included runtime environment settings¶
For all apps that use the extension, it initializes a runtime environment required by
ROS before launching the app, similar to sourcing the typical ROS setup.sh
or
local_setup.sh
.
Included runtime environment settings
command-chain:
- snap/command-chain/ros1-launch
environment:
PYTHONPATH: $SNAP/opt/ros/noetic/lib/python3.8/site-packages:$SNAP/usr/lib/python3/dist-packages:${PYTHONPATH}
ROS_DISTRO: noetic
ROS_VERSION: "1"
Included package repositories¶
The extension adds the ROS APT package repository to the build-time configuration for the snap, which installs the necessary GPG key.
Included package repositories
package-repositories:
- components:
- main
formats:
- deb
key-id: C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
key-server: keyserver.ubuntu.com
suites:
- focal
type: apt
url: http://packages.ros.org/ros/ubuntu
Example expanded project file¶
Here is an example of the result of a project file that uses the ROS 1 extension. It demonstrates the added plugs, packages, variables, and layouts that the content extensions add to the project file immediately prior to build.
This example contains the difference between the original file and the output of the snapcraft expand-extensions command. Some of the text has been altered for ease of reading.
The file is based on the ros2-talker-listener project.