SmartDashboard video

The SmartDashboard is intended to be a really cool tool for debugging and monitoring your programs output. There’s a video of it being used for displaying robot data, status, and other things here:

Although it’s being used from a Java program, the same methods work in C++. To use them, get an instance of the SmartDashboard class using:

SmartDashboard *sd = SmartDashboard::GetInstance();

Then you can call the methods like this:



Everything else in the video is language agnostic.

I hope this helps.



This is such a great improvement to the control system… Being able to view our encoder speeds and status of switches makes debugging a million times easier.

We’ve got a speedometer and some booleans loaded up and once we figured out we had to put the team number in the dash, they all worked like a champ. Thank you!!!

-Dan Roswell
FRC Team 2370 Mentor

Great videos. Thanks Brad!

The video is a great demo of some of the SmartDashboard features. I would love to see the next in the SmartDashboard demo video series cover PID tuning using the SendablePIDController. We are attempting this but ran into a problem where we typed in a new value for the P constant in the SmartDashboard PID widget and then hit the [ENTER] key, which of course immediately disabled our robot. It looks as if in your video you also inadvertently disabled your robot by hitting [ENTER]. I’m reading through the forums but haven’t yet seen any other discussions on this that help me understand how we can enter data (not just a mouse click) on the SmartDashboard without hitting the [ENTER] key on the driver station. Any suggestions?

Another really, really useful SmartDashboard demo video would be a demonstration of an image targeting extension where the results are communicated back to the robot.

Brad, I’d love to see a demonstration of how to display processed images on the smart dashboard if it’s possible.

Or how about a sample video on how to proceess vision on the ds and send the data back to the robot?

Also, I think I saw OpenCV being installed with the smart dashboard, why and are there vision capibiliteis that we should know about?

Just some ideas, the smart dashboard video was awesome! :slight_smile:

Would it be possible to display an image on the SmartDashboard that was processed on the cRio? Would be nice to have a method like SmartDashboard.putImage(“MyProcessedImage”, myImage).

Right now we are processing the image on the cRio, saving it to the cRio and then using ftp to get the image and look at it. I’ve been toying with just automating this… push a button on the SmartDashboard, get the image using ftp and displaying it using a custom widget. Anyone done anything like this?

We have been saving the processed images on the cRIO as well. But we ran into several problems. If we did processing using the HSL color space, binImage->Write will fault. If we used RGB color space, the images were saved but they are all black. Is there a trick to save these images and are viewable? It would be wonderful if we can stream the processed images to either the Dashboard or the SmartDashboard. But looking at the current SmartDashboard support, I don’t see any.

Try saving as PNG or BMP instead of JPEG.

Do you mean binImage->Write("/convexImage.bmp")? I saw the other thread suggesting that. So I was assuming that the Write function is writing the file in BMP or PNG file format. So at one point, I renamed the convexImage.jpg to convexImage.bmp and tried to open it that way. It was still black. However, I did not try doing binImage->Write("/convexImage.bmp") in the code. May be I should try that in case the ImaqWriteFile function actually looks at the file extension and decided to do something different.

Yes indeed - the extension you put in the filename for the Write() function actually implies to that function what format it should write the image in. We found this out by experimentation and had luck getting from black JPEGs to useful BMPs.


I do very much agree with this. The only reason I really want to use a custom dashboard is because I need to debug my vision tracking code.