Part 1 - exercise: Add additional application to the snap
This exercise requires having followed the part 1.
Let’s do a little exercise. Right now, our talker-listener only has one application. How about you add another one? Having the ROS 2 topic tools inside our snap would be great for some introspection.
Assignment
Modify the snapcraft.yaml
file:
- Add a new app entry for ros2topic
- Add the corresponding dependencies
Build and install the new snap.
Outcome
By the end of this exercise, you will have a new command available:
ros2-talker-listener.ros2topic hz /chatter
- Note that the ROS 2 topic tools are only going to work with message types that are included in the snap.
Solution
The solution
- Add
ros2topic
as astage-package
to have it available at run time:
parts:
ros-demos:
plugin: colcon
source: https://github.com/ros2/demos.git
source-branch: humble
source-subdir: demo_nodes_cpp
- stage-packages: [ros-humble-ros2launch]
+ stage-packages: [ros-humble-ros2launch, ros-humble-ros2topic]
We add our dependency (ros-humble-ros2topic
) to the stage-packages
list. Stage-packages
are packages that are required to run the part. Here we decided to add our dependency to our already existing ros-demos
part for simplicity. Alternatively, we could have created an additional empty part simply to add our stage-packages
dependency.
- Add an additional app:
apps:
ros2-talker-listener:
command: opt/ros/humble/bin/ros2 launch talker-listener talker_listener.launch.py
daemon: simple
plugs: [network, network-bind]
extensions: [ros2-humble]
+ ros2topic:
+ command: opt/ros/humble/bin/ros2 topic
+ plugs: [network, network-bind]
+ extensions: [ros2-humble]
We added another application entry to our snap. We kept the plugs and extensions and simply exposed the ros2 topic
command.
- Build and install the new snap:
snapcraft
sudo snap install ros2-talker-listener_0.1_*.snap --dangerous
Make sure everything works:
$ ros2-talker-listener.ros2topic hz /chatter
average rate: 1.000 min: 0.999s max: 1.000s std dev: 0.00049s window: 3