Skip to content

Status texts, params, and tooltips#18

Open
trexgerratt wants to merge 6 commits intoArduPilot:mainfrom
trexgerratt:statusTexts_params_and_tooltips
Open

Status texts, params, and tooltips#18
trexgerratt wants to merge 6 commits intoArduPilot:mainfrom
trexgerratt:statusTexts_params_and_tooltips

Conversation

@trexgerratt
Copy link

The main goal here is to get this plugin on par with the .ulog plugin. I set out to create a window to display status_text messages and autopilot parameters. While building on a Mac M2, I ran into a number of issues that I think are caused by trying to run this against the newly available .dmg release from https://github.com/facontidavide/PlotJuggler/releases/tag/3.15.0. The main issue is it seems we're no longer able to create external dialogs unless the plugin was compiled with PlotJuggler? (like the .ulog plugin). That's my best guess anyways.

Because of these issues, I had to make changes to CMakeLists and I found some other creative ways to display the information I wanted without creating a new dialog like is done with the .ulog plugin. The biggest regression I'm aware of is when loading large log files, we no longer get a little loading bar dialog. That was causing segfaults for me.

Feature List:

  • Autopilot parameter parsing: A new time series showing parameter values and default values
  • Message log: Shows all the status_texts and the time they came in (relative to the first message in the log, which is the default behavior for all the timeseries in PlotJuggler)
  • Message timeline: A plot that helps correlate when status_texts came through. The y axis value maps to the status message index in the Message log
  • RCOU and RCO2 function label: pulls the parameter values of SERVOx_FUNCTION and labels it next to the series field name
  • Message Field tooltips: During the build, a header file is created from any log message .xmls in the LogMessageDescriptions directory. I included the most recent Copter.xml and Plane.xml, but they can be updated anytime with the latest versions from https://autotest.ardupilot.org/LogMessages/. After updating those files, clean and rebuild to pull in the newest descriptions.
  • Updated ReadMe with some pain points for building. Might be specific to my setup, might be specific to MacOS, might be specific for building against the released .dmgs, not really sure. Just wanted to put some helpful hint out in case others have issues.

Full disclosure, a lot of the changes were done with the help of AI. It could definitely use a once-over (Especially the CMakeLists... I'm sure AI went a bit overboard on the number of changes to that file).
I put in some effort to clean it up, but I got it working good enough for my use case, and then decided to be done. After an embarrassing number of hours on these features, I don't care to put more time into it right now, but figured I should at least make these changes public in case someone else wants to push it further.

…ease

- required disabling the progress bar when loading a file, couldn't get
  the official build to allow external plugins to open new dialogs.
- initial work on status_text and parameter series
- add labels for configured RCOU functions
@trexgerratt trexgerratt changed the title Status texts params and tooltips Status texts, params, and tooltips Jan 24, 2026
@Georacer Georacer self-requested a review January 25, 2026 16:26
@Georacer
Copy link
Contributor

Hello! Thanks a lot for your effort!

I'll definitely give it a go, but just in case I hit problems, could you also post some pictures to peak our interest?

It's a bit unfortunate that we're losing the progress bar of the loader. In the bigger files, this will look as if the program is stuck.
I'm a bit torn: On one hand it results on unresponsive UI, on the other hand we get so many nice features.

@trexgerratt
Copy link
Author

New Parameters, Message Timeline, and Message Log Series:
image



Viewing parameters with their default values:
image


Plotting the message timeline and comparing it to the message log:
image


Message Field Tooltips:
image


Annotating the servo channel with the configured function:
image

I agree, the progress bar is really annoying. I'm confident someone smarter than me could figure out what's going on. (I'm still suspicious it's an issue with adding the plugin to the precompiled .dmg rather than building it myself, but I haven't tested it. It seems any time I tried to create any dialog/window it crashed. Would be good to have someone recreate and confirm.
In my tests with a fairly large log, it didn't make the UI unresponsive long enough for me to worry about it. But I'm sure there's always a bigger log out there, and less capable machines that would make it a bigger problem.

As I mentioned, I got this to a pretty decent point for my needs, I actually envision this PR as a 85% solution, where someone with more experience could polish it up and get it across the finish line better than I could.

@Georacer
Copy link
Contributor

These are very cool! You should now be able to search for a parameter value right on the messages list!

The one thing that definitely needs addressing is appending the servo function on the RCO channels. This will always be breaking saved layouts, so it has to be placed behind a compiler ifdef, much like we do for the units.
It would be super if you could do that, but if not, I'll do it when I get some time.

@trexgerratt
Copy link
Author

Ah that's a really good point. I didn't think of saved layouts. I initially added them as tooltips (which would make it work), but I found it really nice to have the function name included on the plot in the legend.

In fact we could potentially put the units in the tooltip as well so we don't have to worry about the units vs non-units stuff.

I wonder if that is a way to just make the layouts a little less strict somehow for both of these cases.

@Georacer
Copy link
Contributor

I kind of like how the units print on the legend. It makes any screencaptured diagrams clearer to read.

But I don't see why we wouldn't want the units on the tooltips in either case!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants