My (popular? effective? nifty? eponymous?) annotation-based Shuffleboard adapter/logging framework, Oblog, has been updated for 2023! If you’re participating in the 2023 WPILib beta, you will find a new release that should work with the latest beta release.
In case you haven’t used Oblog, reasons to try it include:
Concise annotation-based API with almost no code footprint
Automatically-populated Shuffleboard tabs/layouts/sublayouts modeled directly after your robot code’s object tree
Highly performant (all the costly reflections are performed at boot)
Headache-free databinding to consume settable dashboard values in robot code
Automatic integration with WPILib datalogging via NetworkTables
In short, Oblog makes adding an in-code value to your telemetry as simple as:
@Log // The magic happens here!
double someRobotVariable;
As always, feedback and suggestions are welcome. However, please note: we are nearing the end of Oblog’s lifecycle and continued support after 2023 is not guaranteed. My intent remains to eventually implement the core of Oblog’s functionality as part of a modern replacement for the Sendable class, and I am unlikely to write any more major features for Oblog. I will, however, still accept/merge feature additions in the form of pull requests.
Using Oblog to send data from the robot to the dashboard is totally fine, but you just need to be careful if you’re receiving data from a dashboard. Data from NetworkTables needs to be isolated and handled as an “input” in AdvantageKit, just like a physical sensor. If the data isn’t routed through AdvantageKit, it won’t be available in replay and the guarantee of having the same outputs in sim is broken. AdvantageKit has some built-in classes for dashboard inputs (docs), but any config data coming from Oblog would need to be isolated to an IO layer.
Of course, using AdvantageScope (the viewer application) with Oblog won’t cause any issues because it doesn’t affect the robot code.