This project implements a simple ROS 2 listener, derived from Writing a simple publisher and subscriber (Python).
The differences to this template project are:
- ROS 2 runtime functions are provided by the
ros2-base
snap, which must be preinstalled on the ctrlX. - The project files are packed into a snap.
See also:
- Canonical Snapcraft - Deploying robotics applications
- Canonical - How to build a snap using ROS 2 Humble
- The directory structure is according colcon packages.
- In
setup.py
andsetup.cfg
the colcon package is defined. - The one and only Python script is
main_minimal_subscriber.py
, stored in the directorysrc/listener/listener/
- It contains the main function and a class
MinimalSubscriber
, derived fromrclpy.node.Node
snap/snapcraft.yaml
defines which files are packed into the snap.
To build a snap run
./build-snap-amd64.sh
The script contains following build steps:
-
Build the colcon package:
colcon build
-
Clean the snapcraft helper directories:
snapcraft clean --destructive-mode
-
Update helper directories and build the snap:
snapcraft --destructive-mode
Hint: To keep the project simple the arm64-cross-build is not supported.
Following snaps must already be installed:
ros2-base
ros2-simple-talker
Install the created snap on a ctrlX OS.
It listens at the ROS 2 topic MinimalPublisher
.
The output can be checked with:
sudo snap logs -f ros2-simple-listener
With following command you can combine the build, installation and test steps - here the target is a ctrlX COREvirtual with port forwarding.
../../../public/scripts/build-upload-log-snap.sh -PF
SPDX-FileCopyrightText: Copyright (c) 2023 Bosch Rexroth AG
https://www.boschrexroth.com/en/dc/imprint/
SPDX-License-Identifier: Apache-2.0