For the past couple of months, I’ve been working on a software project, and it’s now in a stage where I would like to open it up to the community both so that other teams can benefit from using it and so that members of the VEX community can participate in the development of new features and improvements to my application.
One of the tools that I have thought, for a while now, would really help streamline the coding and debugging process is a serial plotter. The serial monitor that is integrated into PROS and VEXCode is a great tool for getting debugging output and helping to solve code-related issues; however, in some cases, the best tool for the job is to be able to graph output from the Cortex/Brain in order to visualize robot performance. Furthermore, graphically representing robot data is a great way to test and document improvements to code in tuning of control loops, monitoring robot position, monitoring temperature, etc. Of course, it’s not terribly difficult to graph data from your robot right now-- saving data to an SD card and using graphing software yields great results; however, I thought that a dedicated serial monitor with a permanent serial connection to the V5 Brain would streamline the process and greatly increase efficiency.
About two months ago, I started writing a simply python script that would connect to the V5 brain through a serial connection and monitor data being outputted from the brain to graph using graphing tools through python. Originally, I had planned to make a quick and simple program that my team and I could use to help us both test and document our robot’s performance, but I soon started thinking that this would be a useful tool to release to a wider audience. I spent a while developing a graphical interface and packaging the application into windows executable files (so users don’t need to have python installed on their machine). I am publishing the first release of this program on GitHub today.
You can read all the specifics of the V5 Serial Plotter program and view instructions for download and use here: ReadMe Link
You can access source code as well as the released executable files here: Repo Link
You can view and download the first release of the program here: June 2020 Release
As this is the first release of the program, there is a lot of room for improvement. I am excited to hear what suggestions the VEX Community has for the program and/or what additional features you would like to see in future updates. Of course, members of the VEX Community are encouraged to open issues for bugs and theoretical features, as well as participate in the development of this application.
I’m assuming that this is Windows-only becuse of the requirement to run a .exe file. In the future, is there a possibility that we will see a version that is mac compatible?
The packaging tool that I used to freeze my Python script into a .exe file, cx_Freeze, is capable of creating mac-compatible executables, and I wanted to release a Mac compatible version within the first release; however, I ended up running into a whole host of issues freezing the Windows version and haven’t had a chance to attempt the same process for Mac yet. Sorry
If you would like to open an issue with the included feature-request template or take the provided source files and attempt to freeze the executables on your own machine, I readily welcome that.
Yes, if you already have python installed and have the required packages then running the python script in a python shell is the most efficient way. Please keep in mind that the program hasn’t been tested in a Mac environment yet.
The file to run is Source_Code/plotter.py. Setup.py is the script used for freezing the application. A list of the packages required to run the script is:
tkinter
time (should be default with python distribution)
sys (default)
serial/pySerial
matplotlib
mpl_toolkits (should install with matplotlib)
os (default)
webbrowser (I can’t remember if this one is default)
All of these packages are easily installed using pip
Thanks! I got it to work! Just a follow up. Does this only work if the usb is connected into the brain becuase I have tried running the program usb connected to the controller and I don’t think it recognizes the program becuase it never says “Start commeand recieved. Starting collection” when I plug it into the controller and the timeout timer keeps going. It does recognize the port though and doesn’t say “Bad stream error”. When I plug into the brain a graph is produced.
The plotter will be able to graph anything that the PROS or VEXCode terminal can display. If your configuration and code on the Brain is able to produce an output on the PROS or VEXCode terminal, then the plotter application will work.
That being said, I have never tried to use the plotter or the PROS terminal using the wireless uploading setup, so I’m guessing that the wireless uploading configuration is not capable of data transfer at a high enough rate to display to the PROS terminal.