ros2_console_tools is a terminal-first toolbox for ROS 2 runtime inspection, visualization, and operator workflows.
Current package release: 1.5.3.
Build the package:
colcon build --packages-select ros2_console_tools
source install/setup.bashLaunch a tool:
ros2 run ros2_console_tools node_commander
ros2 run ros2_console_tools topic_monitor| Binary | Purpose | Highlights |
|---|---|---|
node_commander |
Browse the live ROS 2 graph. | Node list, graph interface details, parameter service reachability, launcher hub for other ROS tools. |
parameter_commander |
Inspect and edit parameters on a selected node. | Namespace-folded parameter tree, scalar and array editing, descriptor and constraint display. |
topic_monitor |
Inspect topics and monitor live traffic. | Rate and bandwidth stats, decoded message view, topic search, braille-capable numeric plots, embedded visualizers for map, image, joystick, IMU, and LaserScan topics. |
service_commander |
Inspect and call ROS 2 services. | Generic introspection-based request/response view, scalar request editing, interactive calls. |
action_commander |
Inspect ROS 2 actions. | Protocol endpoint breakdown, server/client node lists, action graph visibility. |
log_viewer |
Read /rosout in the terminal. |
Source filtering, severity filtering, text filter, detail popup, local source-code inspection when paths are available. |
diagnostics_viewer |
Monitor /diagnostics and /diagnostics_agg. |
Status list, severity filtering, key/value detail view, search. |
tf_monitor |
Inspect the live TF tree. | Transform freshness, stale highlighting, relative transform popup between selected frames. |
urdf_inspector |
Inspect robot_description. |
Tree view of links and joints, details pane, XML inspection popup with syntax highlighting. |
| Binary | Purpose | Highlights |
|---|---|---|
map_viewer |
Render nav_msgs/msg/OccupancyGrid in the terminal. |
Rotated map rendering, costmap-style block default, braille Unicode mode, legend and monochrome controls. |
image_viewer |
Render sensor_msgs/msg/Image in the terminal. |
Fast mono shade default, optional color and braille modes, zoom, pan, invert, frame freeze. |
joy_viewer |
Visualize sensor_msgs/msg/Joy in the terminal. |
Axis bars, button states, generic stick pads, frame freeze. |
imu_viewer |
Visualize sensor_msgs/msg/Imu in the terminal. |
Angular velocity and acceleration bars, orientation readout, orientation-derived tilt, covariance state. |
laser_scan_viewer |
Visualize sensor_msgs/msg/LaserScan in the terminal. |
Braille top-down polar scan plot on Unicode terminals, point-glyph mode, range zoom, invalid range markers, frame freeze. |
Most tools share the same ncurses foundation and keybinding style:
F10: exitEsc: back or close the current popupEnter: inspect, open, or focus the selected itemAlt+S: incremental search where list search is supportedF4: refresh the current scopeAlt+T: toggle the embedded terminal pane where available
The exact action keys vary by tool, but the overall interaction model is intentionally consistent across the package.
Most tools follow the same structure:
- public header:
include/ros2_console_tools/<tool>.hpp - backend implementation:
src/<tool>_backend.cpp - screen/controller:
src/<tool>_screen.cpp - thin executable wrapper:
src/<tool>.cpp
Shared TUI infrastructure lives in:
That shared layer provides:
- ncurses session setup and teardown
- theme and color roles
- status and help bars
- popup help bars
- layout helpers
- incremental search helpers
- an embedded PTY-backed terminal pane
ROS-backed tools use rclcpp::Node backends for subscriptions, clients, graph queries, and cached runtime state.
node_commanderis the main ROS entry point and launcher hub.topic_monitorcan openmap_viewerfor occupancy grids,image_viewerfor image topics,joy_viewerfor joystick topics,imu_viewerfor IMU topics, andlaser_scan_viewerfor LaserScan topics.
service_commanderis currently strongest for scalar request editing; richer structured editing still needs dedicated UI work.action_commanderis currently inspection-focused and does not yet provide full interactive goal execution.
- Added shared Unicode braille rendering helpers for terminal visualizations.
- Added braille render modes for
map_viewer,laser_scan_viewer,image_viewer, and numeric plots intopic_monitor. - Kept
map_vieweron costmap-style block rendering by default, with braille available through render mode switching. - Changed
image_viewerAutomode to prefer fast mono shade rendering on Unicode terminals. - Added
image_viewercolor decoding for RGB/BGR/RGBA/BGRA/YUY2 streams and aCtoggle for optional colorized rendering. - Preserved existing ASCII and block/point glyph modes as selectable fallbacks.
