| Crates.io | ros2_tui |
| lib.rs | ros2_tui |
| version | 0.1.4 |
| created_at | 2025-09-20 17:04:42.773328+00 |
| updated_at | 2025-11-29 14:59:01.684544+00 |
| description | A Terminal User Interface (TUI) for monitoring and managing ROS2 topics and parameters |
| homepage | https://github.com/Tillbeemelmanns/ros2_tui |
| repository | https://github.com/Tillbeemelmanns/ros2_tui |
| max_upload_size | |
| id | 1847979 |
| size | 316,019 |
A powerful Terminal User Interface (TUI) for monitoring and managing ROS2 topics and parameters in real-time.
ros2 topic and ros2 param commands available in your shellpip install ros2-tui
cargo install ros2_tui
git clone https://github.com/TillBeemelmanns/topics.git
cd topics/topics
cargo build --release
The binaries topics and params will be available at target/release/.
topics)ros2 topic hz / delay# Start monitoring with default settings
topics
# Custom refresh rate (topics list updates every 5 seconds by default)
topics --refresh 10
Toggling a row with Enter starts Hz/Delay measurement. Unwatched topics stay lightweight, ensuring responsive navigation even with hundreds of topics.
↑/↓ or j/k move between topics; ←/→ or h/l collapse and expand namespacesEnter toggles watching on the focused topic or expands/collapses a groupTab toggles the current group; c collapses/expands all groups at onces toggles simulation time when measuring delay metricsF4 opens live search with auto-expansion; Space, r, or F5 refresh immediatelyq, Esc, or Ctrl+C quit; --verbose writes detailed logs to topics_debug.log--refresh <SECONDS> – Topic list refresh cadence (default: 5)--detail-refresh <SECONDS> – Legacy detail polling interval (still accepted)--no-initial-fetch – Skip the initial ros2 topic list call--help, --version – Standard metadata flagsros2 topic list -v, ros2 topic hz, and ros2 topic delay streaming without blocking the UIparams)ros2 param list hierarchies# Parameter dashboard with 5 second refresh
params
# Faster poll rate for parameters
params --refresh 2
The app groups dotted parameter names into expandable namespaces so large graphs stay navigable. Value edits, dumps, and loads run through the ROS2 CLI and report their outcome inline.
↑/↓ or j/k move through nodes and parameters; ←/→ or h/l collapse/expand namespaces? opens the help overlay; F4 enters search mode with persistent filteringSpace, r, or F5 refresh on demand; Esc exits dialogs, cancels search, or quitss edits the selected parameter (array values are normalised for ROS2 compatibility)d dumps the current node to YAML via ros2 param dumpCtrl+l loads YAML into the active node using ros2 param load--refresh <SECONDS> – Parameter polling cadence (default: 5)--no-initial-fetch – Skip the initial ros2 param list scan--verbose / -v – Emit detailed logs to params_debug.log--help, --version – Standard metadata flagsros2 param list, building a ParamTree that mirrors node hierarchiescargo build --release
cargo test
cargo check
Check formatting
cargo fmt --all -- --check
Lint code
cargo clippy --all-targets --all-features -- -D warnings
Configure Git once so the bundled pre-push hook runs before release pushes:
git config core.hooksPath .githooks
When you push a tag such as v0.3.0, the hook calls scripts/check-release-version.sh and verifies the tag matches the Cargo.toml version. The push is rejected if they diverge, keeping release tags in sync with the crate metadata.
| Tool | Language | Dependencies | Features | Performance |
|---|---|---|---|---|
| topics | Rust | ros2 CLI only | TUI, Real-time metrics | ⚡ Fast |
| params | Rust | ros2 CLI only | TUI, Parameter management | ⚡ Fast |
| rqt_topic | Python | Full ROS2 + Qt | GUI, Rich features | 🐌 Heavy |
| ros2 topic | Python | Full ROS2 | CLI only | 🚀 Fast but limited |
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.