Introduction
This document will define ALL of the data structures which will be transmitted between the three robot software subsystems (Robot, GUI/DS, Vision).
We no longer use JSON
Sadly, we gave up on JSON because none of the libs we tried worked exceedingly well for the cRIO and the PandaBoard. We have transitioned to a home-made serialization/deserialization system. It can represent data in both a binary and text form. Though this requires a bit more bug testing on our part, this approach allows us to use textual serialization while debugging, and binary serialization when deploying production code. So, we get efficiency when we need it, and ease-of-troubleshooting when we need it. Yay.
Pandaboard to Robot
| Field | Type |
| target angle theta (yaw) | double |
| target angle gamma (pitch) | double |
| shooting speed | double |
Robot to Drivers' Station
| Field | | Type |
| Operator Control ? | | bool |
| Vision Control ? | 0 | bool |
| Hang lift | 1 | bool |
| Cam Forward | 2 | bool |
| Cam Reverse | 3 | bool |
| Hopper | 4 | bool |
| Spatula | 5 | bool |
| Launcher kicker | 6 | bool |
| Encoder: Left | | int |
| Encoder: Right | | int |
| Gyro Angle | | double |
| Joystick: 1: X | | double |
| Joystick: 1: Y | | double |
| Joystick: 2: X | | double |
| Joystick: 2: Y | | double |
| Drivetrain Straight P | 7 | double |
| Drivetrain Straight I | 8 | double |
| Drivetrain Straight D | 9 | double |
| Drivetrain Turn P | 10 | double |
| Drivetrain Turn I | 11 | double |
| Drivetrain Turn D | 12 | double |
| Launcher P | 13 | double |
| Launcher I | 14 | double |
| Launcher D | 15 | double |
| Launcher power | | double |
| Launcher Angle | | double |
| Drivetrain power: L | | double |
| Drivetrain power: R | | double |