03/21/21 - SW/FW Standards

03/21/21

Notes

  • Position
    • SW always sends absolute position in radians
    • Joint ranges (TODO: figure these out for all the joints)
      • Turntable
        • -90 to +90 (0 is the middle)
      • Shoulder linear actuator
        • 0 to max + value
      • Elbow
        • TBD
      • Wrist
        • 0 = parallel to forearm (for pitch and roll)
    • URDF determines default positions + directions (cw / ccw)
      • Backburner: move this somewhere shared between sw/fw
    • All absolute encoders track joint position
    • Continuous motion joints (range is -inf to + inf)
      • Wrist roll
      • Gimbal pan
        • Backburner: report continuous position (eg. >360 degree positions)
      • Want to be able to move x many rotations
  • Velocity
    • SW sends velocity in rad/s
    • Directions follow position directions
  • Current
    • Amps
  • Force
    • Newtons
  • Need to calibrate relative encoders to determine range
    • Do not allow these commands until calibration complete
    • Have calibrate commands (don't calibrate on startup)
    • Wrist calibration sequence
      • Rotate until middle limit switch is triggered (is either 0 position or some known offset) (roll)
      • Run both motors at same speed until top limit is reached (pitch)
      • Run both motors at same speed until bottom limit is reached (pitch)
  • Differential control (wrist)
    • SW sends motor commands
  • Everything else
    • SW sends joint commands
  • Reset command
    • PID
      • Doesn't reset gains, resets accumulator
    • Encoders
      • Relative
        • Reset count to 0
      • Absolute
        • Don't reset position to 0
  • TODO
    • Keep FW in joint space for now, but
    • We should eventually move everything to motor space (no more joint space)
      • FW needs to convert between motor and joint (sensors live here) space
    • Get ranges of motion from mech