-
Notifications
You must be signed in to change notification settings - Fork 2
How this project works
Using this app to make your autos shouldn't put you at a disadvantage. Everything that runs with the auto needs to be fast. If something needs time to process it should be frontloaded to robot boot.
A clunky interface that takes hours to learn is not acceptable. Ideally anyone should be able to open the GUI and intuitively understand what is happening without having to read a manual.
It needs to be easy to create and test changes. Small changes should take seconds -- not minutes to complete.
All the data that this app uses is stored in json. (See Set up the GUI to find where your files are stored)
When uploading autos to the robot we simply serialize the json and upload to the robot as a String. The robot deserializes the string and saves the auto to be run next.
The json files that the GUI creates are saved in the deploy folder of the robot code. See more details here. The code on the robot then searches for these json files and then loads them as autos that can be run. The autos can then be added to the SmartDashboard/Shuffleboard or any other solution that you use.
The json file that is saved is also used to recreate the GUI state once it is reopened. Note for the Trajectory Autonomous Step, both the Trajectory States and point list are saved. The GUI will completely ignore the Trajectory States. The trajectory states are only used on the robot side to determine what path the robot drives.
This means that you cannot change the robot constraints on the robot side as it will not have any effect on the pre-determined trajectory that is saved on the file. If you want to edit those settings you must do so in the config of this app.
The GUI is a LibGDX project. LibGDX is a game development library which is perfect for our use case. It gives us the flexibility to be able to do basically everything we want, without being too hard to use.
If you want to learn more about libGDX you can do so here.