Don’t like the look of the LabVIEW dashboard? Frustrated with dashboard examples not working how you want? Confused on how to pack packets for the provided dashboard? Want to customize the dashboard to better fit your needs and strategy or show more relevant information without having to mess around with the LabVIEW one?
I’m developing my own dashboard software that I plan to release to all FIRST teams once I have a stable beta out. My goal is to have it out in a few weeks from now in time for the last third of build season or so. Current features include:
Written in C++ with optional DirectX support. That means it runs fast, and it runs with a small footprint on your computer.
Customization made easy. For those of you who have ever worked with Microsoft Publisher, Visual Studio, or any other drag-and-drop designer, imagine this: Select a control type. Drag it onto your screen. Move it, resize it, and drag it just like you might with an image or text box in Word or Publisher. Set properties like appearance and behaviors. Then just drag and drop the control’s data source onto a visual representation of the packet to tell the control where in incoming packets to get its data from.
A plethora of built-in controls. Meters, gauges, on/off lights, numeric printouts, video feed (using the webcam), direction indicators, battery power meters, and the list continues. Everything you see on the LabVIEW dashboard and a little more. Each control will have multiple appearances the user can select from, and while they will come with default color values, all colors in any control will be changeable by the user.
Fast swap. Want multiple dashboards, such as one for debugging and one for competition? Every dashboard you make can be saved to a file and loaded back, settings and all.
Fullscreen mode for maximum readability.
Full networking support. The dashboard receives data exactly like the official LabVIEW one. You don’t have to change a thing in your robot code.
Full video support from the provided webcam system. Again, no changes to your robot code. Additionally, you can add controls over the top of the video with transparent backgrounds to act as overlays and show data such as a distance readout provided by an ultrasonic sensor.
I’m wondering how many teams out there would be interested in something like this, and what additional features they want to see. Feedback is greatly appreciated.
Fantastic! We would LOVE to use your C++ custom configurable Dashboard. We are trying to stay in C++ for all of our FRC coding. We had been thinking we would try and dive in and do a C++ port ourselves, but we weren’t sure how hard that would be, and from your description, it sounds time-consuming indeed.
Anyway, we’ll watch for your C++ customizable Dashboard. Will you post it here to Chief Delphi? Wish we could have it earlier than the last third of build season, but we know how long software takes, and our team greatly appreciates your efforts!
I’ll be sure to. Your support is greatly appreciated.
Let me clarify to everyone that while this is being written in C++, it is completely independant of robot code. It will work with a robot running in LabVIEW, C++, or Java, since they all communicate to the dashboard in the same way.
Again, I’m wide open for any additional features you guys want. This is for the FIRST community, not just my team, and I want to meet the needs all of you have.
Design. I know where I want to go with it and I’m pumping out code as fast as I can, but it’s not in a usable state right now. As soon as more of it comes together, expect some screenshots.
Awesome. I am also going to be working on a new camera class and video server and a dashboard to display the video. Should all be up by tomorrow. However, the dashboard won’t be in C++ to increase development time (obviously).
Something like this would be amazing. I find it very frustrating that if I want to use the dashboard I’m forced to use LabView if I want to customize the dashboard or understand how it works.
The designer mode is 90% done. Features that are done and working
Change any color on any control, along with all other properties of the control in a fully working properties bar.
Snap-to-alignment control movement (if a control is within a few pixels of being lined up with another, it will snap into alignment and a line is drawn between the two controls to show you that they are aligned. This system works just like the one in Visual Studio, if you’ve ever used it).
Ability to multi-select controls and move them all at once.
Holding shift while resizing locks the aspect ratio of the control.
I still have to:
Add a menu for the designer.
Add a few scroll bars.
Save/load ability. All properties of each control are already stored in structs. All I have to do is iterate through all controls on the form and save the structs to a file (and do the opposite for loading).
Create my UI element that binds each control to a part of the packet.
Use these bindings to update the controls during run mode.
Right now the only implemented control is a meter. However, I’m using an Object-oriented design, and most of the code for the meter is common to all controls and is contained in a base class from which all the other controls can be derived.
Would you guys like some screenshots and the code I have so far?
Awesome! I’ll be giving this thing a spin as soon as I can!
On a secondary note, are you planning any functionality to process data inputs before being displayed? Our current dashboard needs a bit of calculation before it can be displayed on the classmate and I wouldn’t want to tie up processing time on the cRIO