Custom message publishers for testing rewire dynamic mappings.
Demonstrates how rewire can visualize arbitrary ROS 2 message types through JSON5 mapping configuration, without requiring built-in converter support.
| Topic | Type | Rerun archetypes |
|---|---|---|
/motor/status |
custom_mappings/MotorStatus |
Scalars, TextLog |
/detections |
custom_mappings/Detections |
Points3D, Scalars |
/rigidbodies |
custom_mappings/RigidBodies |
InstancePoses3D, Points3D, Scalars |
/gps |
custom_mappings/GpsReading |
GeoPoints |
/force |
custom_mappings/ForceVector |
Arrows3D, Scalars |
/detections_2d |
custom_mappings/Detections2D |
Points2D, Scalars |
/bounding_boxes_2d |
custom_mappings/BoundingBoxes2D |
Boxes2D |
/bounding_boxes_3d |
custom_mappings/BoundingBoxes3D |
Boxes3D |
/trajectory |
custom_mappings/Trajectory |
LineStrips3D |
Requires pixi.
pixi installThis project uses pixi-build-ros to build the
custom_mappings ROS package as a conda dependency. The ros-jazzy-custom-mappings (or
ros-humble-custom-mappings) package is built from source and installed into the pixi environment
automatically.
| Environment | ROS Distro |
|---|---|
default / jazzy |
Jazzy |
humble |
Humble |
kilted |
Kilted |
lyrical |
Lyrical |
pixi run appIn a separate terminal, run rewire to visualize in Rerun:
pixi run vizapp runs the custom message publisher. viz runs rewire record with
config/rewire.json5 (all topics except /rosout and /parameter_events)
and custom type mappings from config/mappings.json5.
Custom mappings go through --mappings (a JSON5 array of entries). The separate --config flag
expects a bridge config file (a JSON5 object with topics, output, zenoh, ... keys), so pointing
it at mappings.json5 fails with expected opening brace at line 1 column 1.
Add -e <env> to pick a ROS 2 distro other than the default (jazzy):
pixi run -e humble app
pixi run -e kilted app
pixi run -e lyrical appAfter modifying the C++ package in custom_mappings/, reinstall the local package:
pixi reinstall ros-jazzy-custom-mappingsThe publisher node cycles synthetic data for every custom message type defined under
custom_mappings/msg/. Each type is mapped to one or more Rerun archetypes in
config/mappings.json5 (scalars, points, boxes, geo points, arrows, line strips, text logs).