Data Flow Standards - olinrobotics/gravl GitHub Wiki
This page describes at how all platforms and high-level software are standardized in the way they handle information. This is important for code re-usability between platforms
TODO: Add standard limits to each of the topics
Standard Command Topics
cmd_vel
- All commands sent here are sent directly to the platform (i.e. the platform will move if it physically can). These are ackermann commands for most of our platformscmd_twist
- All commands sent here are sent directly tocmd_vel
. This is the equivalent topic ofcmd_vel
except it takes in twist commands. Each platform should have something akin to a "convert to ackermann" node to account for each platform's irregularities./cmd_hitch
- All commands sent here are sent directly to the platform. This is the equivalent ofcmd_vel
for the hitch. It takes the form of a geometry_msgs/Pose message where the z data is used for the height of the blade off the floor/state
- Changes the state of the tractor/state_controller/cmd_activate
- Whether the tractor is currently active or not/state_controller/cmd_behavior_array
- All movement commands by high-level should be sent through here. The state controller will sort through the messages and send the appropriate hitch messages tocmd_hitch
. Messages will only be sent if the message matches the current state or if it has a higher priority than the current state./state_controller/cmd_behavior_twist
- All movement commands by high-level should be sent through here. The state controller will sort through the messages and send the appropriate twist messages tocmd_twist
. Messages will only be sent if the message matches the current state or if it has a higher priority than the current state./state_controller/cmd_state
- All state-changing commands should be sent through here. The state controller will sort through the commands and send the appropriate current state to/state
Standard Data Topics
/imu/data
/gps/fix
/odometry/filtered
Platform
Each platform should have a bringup.launch
file that initializes all sensors and sends all data inputs and outputs to the correct topics. Some notable things include:
- State-related setup
- Teleop
- Mainstate
- Sensors
- GPS
- Lidar
- IMU
Each platform should also have it's own firmware that is loaded on the platform to convert from the standard commands to platform-specific commands