Today, I finally got a chance to download Shuffleboard and play around with it for a bit. Really happy with how it looks! I may have missed it, but I cannot find any graph widget. Does one exist or is one in the works? It would be great to have a widget that supports multiple line plots where with an interface that allows programmers to specify (x,y) points for each line in the plot (as opposed to the implicit time used in the SmartDashboard lineplot). One sample use case being visually seeing how well the robot is following a motion profile for tuning the feed-forward terms. If such as widget does not exist, I will look into implementing one, but I’d prefer to not go through the hassle if it already exists or one is in the works.
I put together an issue on github for this.
Keep an eye out for updates
Responding on Github, but just wanted to follow up here:
This is definitely a major priority for us and something we’re working on actively. We have a currently in-progress pull request for it at https://github.com/wpilibsuite/shuffleboard/pull/206 and it’s the next big priority for us after the two things we’re currently working on (moving/removing widgets in layouts + fixing some stuff with the plugin API).
We definitely understand how useful of a widget this is and it’s a big priority for us—just some technical glitches keeping it from this first release.
I’m excited about shuffleboard, and in particular its record/playback features. Graphing would be cool too.
I understand the team is working hard and the software isn’t even pre-release yet - but is there a synopsis/writeup on how to hook it into data?
The main way to get data into shuffleboard is NetworkTables—we’re working on parity with the current SmartDashboard, and we’re only a few widgets off. There are NetworkTables libraries and bindings for tons of different languages, so that’s probably going to be the easiest way to get started.
The system itself is extensible though, and you can theoretically write plugins for any type of data source. There isn’t any documentation for that though yet, and so far the only source types we have are NetworkTables and CameraServer. I can give you pointers to source files if you were thinking of writing a plugin though!
I am thinking about writing a plugin; how did you know??
It will probably be CSV, just so someone can import spreadsheet data to test a display.
I saw a graph widget was added to ‘master’ recently. By using SmartDashboard.putNumberArray the graph can display multiple line plots.
This is great! It can accomplish my original request of tracking a motion profile by sending an array of two values, the first being the position from the motion profile and the second being the position measured from the robot’s sensors (similar for velocity and acceleration).
One note. The time (x-axis) is implicit. That is to say, it is kept under the hood in shuffleboard without ability to set it from the robot code. Are there plans to open this up in the future?
A couple ideas:
- Have an option in ‘Edit Widget Properties’ to select one the the array members represent the time (x-axis more generally).
- Have two kinds of graphs for arrays. The first being what exists currently, the second being one which reads the array two elements at a time as (x,y) points plot1_x, plot1_y, plot2_x, plot2_y, etc… ]. Ignore trailing number if array size in odd. Provide a button in the ‘Edit Widget Properties’ to toggle between the two modes.
No immediate use case comes to mind where I would need this, but having more control of the graph seems important. Just my 2 cents. Thanks for all the work you have done on this!
Did you need a live robot to generate these?
No. You can graph any number or number array source. It works if you’re connected to OutlineViewer (or any other NetworkTable server), or for numbers from other sources like a recording file or a custom data source like what you mentioned in an earlier post.
Shuffleboard was designed with modularity as a core goal, so widgets have no idea where their data is coming from.
Cool. I’ve only browsed the source, yet plan to do a bit of work over the Thanksgiving break. This info helps quite a bit, thanks!