It provides a name-based key/value table, synchronized automatically over the network, and supports boolean, double, string, array, and raw datatypes.
#FRC WPILIB SMARTDASHBOARD GRAPH DRIVER#
I’m not sure why NetworkTables does not fit the bill for both of your needs, at least in terms of passing data to the driver station.
I’m also looking at implementing a C++/Java WPILib data logging framework for next season, so this thread is definitely of interest to me. Note: I’m the author of the ntcore library used for WPILib C++/Java NetworkTables since the 2016 season. It’s also really easy to write your own visualization tool if you want, and there’s even a utility to “play back” a log file in actual time (or slowed down/sped up), so you can look at all your visualization tools. You can also use lcm-spy to view in real time values and graphs for all the numbers and strings. If lcm-logger is running (it can run either locally, or on a networked computer), it will record the data. In your robot code, on each iteration, you can put your data into the LCM type you’ve written and call lcm_broadcast. Then, you run lcm-gen, and tell it what language you’re using, and generates code for the language to let you interface with the type. Types can contain the standard integer/floating point types, strings, multidimensional arrays, and other types.
You set it up by defining LCM datatypes in. I’ve never used it for FRC, but I’ve used it on an ARM based Linux board before with no trouble. It’s kind of like the ROS messaging stuff, but it’s way faster, easier to use/setup, and much more lightweight. In the past, I’ve used to log hundreds of floating point values at 2 kHz. It’s a message passing library that also works fantastically well for logging data with the built in lcm-logger software. I highly recommend using LCM ( ) for logging.