ros-curses
is a command line interface for debugging live ROS applications. It is based on ncurses. This project was prompted by the frustration of the author in repeatedly running successive commands like rostopic info ...
, rosnode info -q ...
, etc.
Despite the fact that this tool interfaces with ROS, the number of dependencies are quite light. In addition to ncurses
we also use xmlrpc for ROS querying. To install all required dependencies run the following (or equivalent on your OS):
apt install cmake libxmlrpcpp-dev libncurses-dev libyaml-cpp-dev
That's it! To build, run the following:
# build the package
mkdir build -p && cd build
cmake .. && make
# install, if desired
sudo make install
Several executables are also provided for more convenient offline inspection. One script (save-state
) will dump the current ROS state to a YAML file for future inspection.
# will error out if no ROS instance is detected
./save-state FILENAME
Then, that state can be interactively analyzed offline at your leisure via load-state
, which will open the full curses
GUI loaded with the state saved in the YAML.
./load-state FILENAME
Run the executable via ros-curses
(or ./ros-curses
if not installed). The GUI should appear, and, if you have a live ROS instance running show something like the following:
There's also a demo
which runs with a Mock ROS server as a backend. This highlights the ability of ros-curses
to capture dynamic state changes, like a roscore
dying or ROS parameter deletion.
Currently only ROS1 is supported. I've architected things to make adding a ROS2 parser somewhat easy, but some fundamental changes will be needed for representing the computational graph.