QFRCDashboard 2024-25

QFRCDashboard: 2024/25

QFRCDashboard (mirror) is a reliable, high-performance, low-footprint, fully FOSS dashboard software as an alternative to Shuffleboard or Elastic.

The initial thread contains lots of information on the initial beta of QFRCDashboard. However, since then, many major updates have been released, far too many to count. Here are a few of the key updates:

  • True theming support & better overall look & feel
  • Drag & Drop
  • New Widgets
    • Graphs
    • FMSInfo
    • Command Activation
    • Swerve
  • Switch tabs based on an NT key
  • Dramatic performance & QoL improvements
    • Field2d fixes
    • More performant overall
    • CameraView performance & reconnection behavior
    • StringChooser reconnect behavior; forces previous choice onto the robot upon redeploy/reboot
    • No updating of items not in view
  • Significant reduction in crashes
    • Various internal refactors fixed crashes and improved usability
  • Tested Windows (setup, portable) & macOS (.app) builds

Key Features

Here is a quick refresher on the key features that separate QFRCDashboard from other alternatives.

Performance

QFRCDashboard is incredibly performant. It’s been designed from day one to have the smallest possible CPU, RAM, and network footprints.

  • Written in the high-performance language, C++
  • Painting of widgets is done on a deferred, nonrestrictive basis
  • NT updates are done as-needed, not periodically

Widgets

QFRCDashboard contains numerous additional widgets alongside the most useful found in Shuffleboard. Some have extra features too.

  • Enum widget: change color based on a string value
  • Bool/enum widgets have customizable shape options
  • Swerve view
  • Field2d has customizable robot size
  • Powerful, customizable graphs w/ CSV export & multi-value support

UI/UX

QFRCDashboard was never designed with UI eye-candy in mind, but steps have been taken to ensure it is as functional as possible while being non-intrusive. The user experience is designed to be simple without compromising on powerful features.

Planned Updates

QFRCDashboard is in a 100% serviceable and usable state; as a driver I ran with QFRCDashboard for all of our events last year.

However, it would be downright blasphemous to claim it’s complete or perfect. Here are some updates that are planned in the near future

  • QML Rewrite
    • This will take a long while, but will dramatically improve the smoothness, look & feel of the application
  • Documentation on usage
  • Improved UX
  • Documentation on creating custom widgets

Note that due to the nature of a QML rewrite, this will take priority and the latter two features inherently rely on this being completed first.

Unfortunately, this will take a long time, as I have a significantly less niche project (mirror) in the works.

Regardless, I can promise you that QFRCDashboard’s rewrite will be complete by the time Week 1 rolls around. Check out OpenFitnessPal in the meantime, and know that QFRCDashboard is perfectly usable in its current state.

I’m super glad to continue development of QFRCDashboard for the coming years, and I would be remiss to not give a massive thanks to the incredible people at Team 6032 for taking me in with open arms and a willingness to help with my development efforts of QFRCDashboard and other FRC-related projects, including a scouting app (mirror) and a Phoenix 6-like API for MCs, swerve, etc (mirror). More on those two will come in separate posts down the line; stay tuned.

P.S. due to some odd git log-smashing shenanigans the commit history is janked up. I’ll do my best to get that fixed soon.

8 Likes

The QML Rewrite progressed significantly quicker than I expected it to. Things are going very well and I would guess, conservatively that this should be ready by November.

QML also makes several things easier and has allowed me to implement even more neat features so far, including:

  • Even more optimized topic propagation
  • Smooth drag & drop animation
  • Side widget menu a la Shuffleboard, with a smooth animation
  • Improved widget menu
  • Constantly-updating widget menu

With this in mind, the QML rewrite will see many new features as a result, including, but not limited to:

  • Drag & Drop from the menu directly
  • Switch widget types on the fly
  • Improved Sendables
  • Improved widget config menu
  • Dramatically improved performance
  • Dramatically improved CameraView and StringChooser experience
  • Overall QoL improvements

Hopefully, this rewrite makes the old version look like a joke in comparison. (And, well, maybe the other dashboards too.)

2 Likes

It’s done, but I need some help!

The QML rewrite is effectively feature-complete as of its original plans. Some features have been removed due to high maintenance load relative to their lack of usefulness, including:

  • Graphs
  • Swerve Widget

As outlined in the previous posts, many new quality-of-life features have been completed.

  • Drag & Drop from the side widget menu directly
  • Side menus for CameraServer & NetworkTables
  • Change widget types at-will
  • Improved enum & sendable widgets
  • Much improved widget config menu
  • Better performance & less resource usage
  • StringChooser is much easier to work with
    Overall, the dashboard experience has been dramatically improved and smoothed out, making it much easier to use from the driver perspective while keeping the same performance.

However, I, as a developer, simply can’t test everyone’s use case, and there are certainly bugs that are unaccounted for based on situations I myself have never encountered. Plus, I’ve only really tested in simulation, so things like the CameraViews are almost entirely untested.

I would appreciate help on this! I encourage anyone who may have interest in QFRCDashboard to help beta-test this rewrite, provide feedback, and find any bugs that need squashing.

You can find the relevant builds in the PR (Direct link to artifacts).

2 Likes

Definitely a good idea to remove the Swerve widget for now. There is a huge push for struct support which AdvantageScope now requires. I will be updating YAGSL soon to follow that format and hopefully create a new telemetry class in the process. I love your dashboard! Thanks for all of your work!