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)
- Turntable
- 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
- Relative
- PID
- 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