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