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 platforms
  • cmd_twist - All commands sent here are sent directly to cmd_vel. This is the equivalent topic of cmd_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 of cmd_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 to cmd_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 to cmd_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