ROS2 Console Tools

Hello Dears,

I have been working on some ‘commander style’ TUI tools lately - out of necessity as we only have SSH connections to our research platforms - to facilitate remote diagnostics and increase our development team’s :hugs: happiness factor …

ROS2 Console Tools covers topic monitoring, parameter inspection and setting, services, actions, diagnostics, transformations and URDF inspection - neatly tied together by a Node Commander launcher.

Each tool can be run independently as well of course. The topic monitor spawns visualization utils for a small set of message types ( Image, LaserScan, OccupancyGrid, IMU, Joystick, etc… ) Capabilities are easily expandable.

The shared TUI infrastructure looks at terminal capabilites and supports color / mono ANSI and ASCII modes and allows customization of style through a configuration file.

Under the same infrastructure there is another set of tools - which I have extracted from ROS2 Console Tools and now lives in a separate repository - the SystemD Commander. ( We are using systemD to launch our nodes and journal to manage the log rotations. )

SystemD Commander let’s us browse service units, inspect details, start/stop/restart/reload units, edit unit files, and jump into logs; We can look at journal entries with live refresh, priority filtering, text filtering, namespace selection, and detail popups.

Without covering everything, here are some of my favorite features in no particular order:

Node Commander - of course - nodes on the left pane, all their params, topics, service, logs grouped into collapsable/expandable folders. You can select a group or a single service/topic and it will call the appropriate tool with the selection as filter.

If you select just Topics, you can monitor all IO on a single node. The monitor has stall detection and statistics built in. Here I have introduced a bit of disturbance to show off how that looks like:

Topic detail viewer let’s you collapse grouped data fields, or plot individual data points:

If the monitored message type has a supported visualization tool then F2 will launch that:

LaserScan looks like this:

Raw mono image looks like this ( it follows terminal resolution and you can zoom in ):

OccupancyGrid:

Joystick:

IMU:

The Parameter Commander groups parameters by their namespace into folders:

Log viewer is also searchable, supports node and log level filtering:

If the source files are available on the reported path, then it let’s you inspect where exactly that log line has been emitted from ( syntax highlighting needs a bit more work ):

TF Monitor shows freshness and one can select a pair of links to see the transformation itself live:

URDF Inspector is also searchable, folds the structure and shows syntax highlighted blocks:

We are quite happy with it, I hope some of you too will find it useful. :heart_suit:

Feel free to fork / raise issues / create PR. As always, all comments are welcome.

m.

2 Likes

This looks great, I will certainly try it out! Having a tool somewhere in the middle between rviz and ssh ros2 topic echo is certainly going to make tinkering so much more pleasant!

By the way, could you please add a license to the systemd repo? iirc without a license, the legal interpretation is more or less “you can’t use this”

Done. Apache 2 it is. :slight_smile:

1 Like