Terminal-first helper tools for ROS 2.
ros2 topic graphic /scan
ros2 topic graphic /camera/image_raw --fps 10
ros2 topic graphic /joint_statesThe ros2_helper package ships graphic, a terminal viewer for common sensor
topics. The ROS 2 CLI plugin is intentionally thin and delegates rendering to
the C++ executable ros2-helper-graphic.
sensor_msgs/msg/Imagesensor_msgs/msg/CompressedImagesensor_msgs/msg/LaserScansensor_msgs/msg/JointState
After this package is released through the ROS build farm for Jazzy:
sudo apt update
sudo apt install ros-jazzy-ros2-helper
source /opt/ros/jazzy/setup.bashThe apt package name follows the official ROS convention:
ros-$ROS_DISTRO-ros2-helper.
Until the ROS build farm release is available, build from a ROS 2 workspace:
source /opt/ros/$ROS_DISTRO/setup.bash
colcon build --packages-select ros2_helper
source install/setup.bashIf this package is not in a workspace yet:
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git clone https://github.com/codevilot/ros2-helper.git
cd ~/ros2_ws
source /opt/ros/$ROS_DISTRO/setup.bash
colcon build --packages-select ros2_helper
source install/setup.bashDocker is for reproducible development, testing, and demos. It does not replace
the official ROS APT installation path; production and user installation should
use sudo apt install ros-jazzy-ros2-helper once the package is released.
Build the Jazzy source-build image:
docker build -f docker/Dockerfile.jazzy -t ros2-helper:jazzy .Run an interactive container:
docker run --rm -it ros2-helper:jazzyRun a focused graphic demo:
docker run --rm -it ros2-helper:jazzy ros2 topic graphic /scan --fps 10Run the interactive helper shell:
docker run --rm -it ros2-helper:jazzy ros2 tuiOpen the helper shell directly on the node page:
docker run --rm -it ros2-helper:jazzy ros2 tui nodeFor an automatic smoke test:
docker run --rm ros2-helper:jazzy timeout 8 ros2 topic graphic /scan --fps 10The interactive shell sources ROS and the workspace setup files automatically. You can also source them explicitly:
source /opt/ros/jazzy/setup.bash
source /ws/install/setup.bash
ros2 topic graphic --helpAdvanced: test with a mock publisher in one shell:
ros2 run ros2_helper ros2-helper-graphic-mockup scanThen run the graphic viewer in another container shell:
ros2 topic graphic /scan --fps 10See Docker Testing for type-specific commands.
Open the interactive helper shell:
ros2 tuiOpen it directly on a first page:
ros2 tui topic
ros2 tui service
ros2 tui nodeInside ros2 tui, short commands route to the normal ROS 2 CLI:
topic
service
node
graphic /scan --fps 10
exit
View a laser scan:
ros2 topic graphic /scan --fps 10View a raw image topic:
ros2 topic graphic /camera/image_raw --fps 10View a compressed image topic:
ros2 topic graphic /camera/image_raw/compressed --fps 10View joint states:
ros2 topic graphic /joint_states --fps 10If the topic is not active yet, the viewer waits instead of exiting. A waiting message is printed every 10 seconds.
The C++ executable remains available directly:
ros2 run ros2_helper ros2-helper-graphic /scan --fps 10Use the built-in mock publishers for local testing.
Raw image:
ros2 run ros2_helper ros2-helper-graphic-mockup image
ros2 topic graphic /camera/image_rawCompressed image:
ros2 run ros2_helper ros2-helper-graphic-mockup compressed_image
ros2 topic graphic /camera/image_raw/compressedLaser scan:
ros2 run ros2_helper ros2-helper-graphic-mockup scan
ros2 topic graphic /scan --fps 10Joint state:
ros2 run ros2_helper ros2-helper-graphic-mockup joint_states
ros2 topic graphic /joint_statesMock publishers accept --topic and --hz:
ros2 run ros2_helper ros2-helper-graphic-mockup scan --topic /debug_scan --hz 5After building from source:
colcon build --packages-select ros2_helper
source install/setup.bash
ros2 topic --help
ros2 topic graphic --helpThen test with a mock publisher:
ros2 run ros2_helper ros2-helper-graphic-mockup scan
ros2 topic graphic /scan --fps 10chafa is required for terminal image rendering. The package declares:
<exec_depend>chafa</exec_depend>ros2 topic graphic: completeros2 tui: initial interactive helper shellplot: plannedexplain: plannedtf doctor: planned
Fast DDS shared-memory transport can emit noisy RTPS_TRANSPORT_SHM messages on
some machines. The executables default FASTDDS_BUILTIN_TRANSPORTS to UDPv4
unless the variable is already set by the user.
- Confirm the package is
ros2_helperand the version is0.1.3. - Confirm
<exec_depend>chafa</exec_depend>resolves through rosdep. - Commit the release-prep changes with
git commit -am "Prepare ros2_helper 0.1.3 release". - Create an annotated tag with
git tag -a v0.1.3 -m "ros2_helper 0.1.3". - Run
bloom-release --rosdistro jazzy .... - Wait for the rosdistro release PR to merge.
- Confirm the build farm completed and the apt repository synced.
- Test
sudo apt install ros-jazzy-ros2-helper.