rosmon
rosmon copied to clipboard
Proposed node action: "Mute all except"
I'm really liking the rosmon workflow compared to roslaunch, especially with the search (#97 ).
I do find myself often performing the Global action F9, followed by selecting a node and unmuting it, to keep track of the progress of output from that particular node only.
I think it would be useful to have a node action which mutes all other nodes and unmutes the selected one exclusively.
Thoughts?
https://github.com/hatchbed/log_view has this function (Ctrl-N). It is super useful. Once this feature is implemented, rosmon could even provide features like Tab/Alt-Tab for viewing output of just the node that is selected, and automatically cycling between them.
Generally, I think that some convergence between log_view and rosmon would be super useful.
The general problem with functionality like this is that it requires redrawing the screen to be useful. If you use Tab to cycle between nodes, then you would like to see previous log messages as well - not just new ones from this point on. But rosmon never redraws the entire screen, and that is for a good reason: We would have to switch to an ncurses-like experience, which breaks scrolling and mouse selection features of the terminal emulator. For example, we would have to use "alternate" mode, which is basically a second screen with disabled scrolling, and exit alternate mode when rosmon exits -> you cannot see the log anymore. That breaks user expectations - I often first stop a launch and then look at the log messages in detail.
I actually use a dedicated not-yet-released tool for viewing /rosout
, which supports filtering, integrates into rqt
, but looks like a console. By splitting node launching and log viewing into different tools, we can have the best of two worlds: rosmon helps with process monitoring and debugging launch configurations in quick iterations, while specialized log viewers can help with long-time monitoring of the entire system.
And: my usual impulse when I can't see the output of one interesting node because other nodes are spamming log messages everywhere is to fix these offending nodes - that pays off more in the long term ;)
Sorry for the long post. If anyone wants to implement a simple "mute all except" action which just toggles the existing mute flags, I'm open for PRs :)
One example of such a log-viewer is swri_console.
Not affiliated to them, just might be of interest to folks following this thread.