I'm introducing rtui: TUI tool for ROS

Hi everyone.

I created rtui (GitHub - eduidl/rtui), a tool which enbales you to trace nodes or topics according to the relationship such as publication or subscriptions.

Demo movie is folloing.

demo-2022-07-10_20.56.15

45 Likes

That looks pretty sweet. I find the RQT tools to be unstable, yet I never find time to make a tool like this. Well done.

I’m having issues installing it - python is notoriously difficult with versioning, and since I’m running ROS2 in a container, I would like this to work in the same container. It’s a little bit of a hassle. I don’t, for instance, have pipx installed, nor do I seem to have the right version of python to install via pip. Could I request a simpler installation process?

It seems the python version is ensured to work for poetry users to 3.8. Works well on ubuntu 20 (python 3.8.10) but not for humble, rolling etc. which run 3.10.4. Could be set to >3.8 instead

Nice tool. I will have to check it out. Having a demo movie is an excellent way of communicating it’s purpose.

This looks handy and reminds me of a tool based on rosbridge (thus having a webbrowser GUI). Having a TUI is definitely more helpful.

How is it supposed to be run with Melodic? If I launch it via Python 3, it won’t be able to use the Python 2 Melodic libraries, or will it?

Also, you can have a look at the awesome GitHub - hatchbed/log_view: log_view provides a ncurses based terminal GUI for viewing and filtering published ROS log messages. which uses ncurses and managed to package the tool as a pretty standard ROS package.

Thank you for your comment!

I plan to publish as a PyPI package, but is that not enough?

Thank you for your comment!

It seems the python version is ensured to work for poetry users to 3.8 . Works well on ubuntu 20 (python 3.8.10) but not for humble, rolling etc. which run 3.10.4. Could be set to >3.8 instead

Specified version in pyproject.toml is ^3.8, which also includes 3.9, 3.10 or etc., does not?
Python 4 doesn’t exist yet, so I don’t care.

For the most convenient installation that people will be familiar with releasing it into the ROS distros on the ROS buildfarm is generally the recommended path. Then everyone can apt-get install it with the rest of their packages.

ROS 2 supports pure python packages.

You can look at some of the examples such as minimal_publisher in python which becomes the debian package ros-humble-examples-rclpy-minimal-publisher or galactic, foxy etc.

ros2 pkg create --build-type ament_python will do a lot of the boilerplate you need to help set it up.

After you have the package ready you can then use the bloom release tool:

http://docs.ros.org/en/rolling/How-To-Guides/Releasing-a-ROS-2-package-with-bloom.html?highlight=bloom

For ROS 1 there are a few more steps and you need to wrap it in CMake. Which isn’t too hard but I’d suggest starting with ROS 2.

3 Likes

You’re totally right, I check again the caret requirements and it should work fine. My bad :sweat_smile:

1 Like

Excited to check this out! I’ve thought about a similar project. Somewhat related, I have really enjoyed using fzf to integrate fuzzy searching with larger ROS systems, as shown below. Would be interesting to incorporate into this project.

The two demos below are a topic search and echo function, and a node search and node info function.

Peek 2022-07-17 19-13

The functions I am using are here, but I would love to build on them more.

Very similar to the ros-blessed tool we created a while back: Ros-blessed: "curses" based ROS toolbox for the console. I like your use of frames though.

Nice! I also made something similar for myself :smile: GitHub - tonynajjar/ros2-aliases: Collection of functions and aliases for ROS2 development.

This thread has shown the high demand for better ROS debugging tools

2 Likes

Super interesting to see what you guys have come up with. The ROS2 CLI tools have always stricken me as very moddable but extremely underdeveloped. Does anyone have anything for working with action servers from the CLI? Also interested in param tools.