The useful test was not the one that showed the controller behaving perfectly. It was the one where the wrist felt fine until a slow direction change, then quietly announced that the friction model was doing less work than I thought.

A few notes for the next pass:

  • Log commanded torque, measured position, and filtered velocity together.
  • Keep the low-speed sweep boring and repeatable.
  • Record the setup before changing gains.
test:
  sweep: slow
  axis: wrist_pitch
  save: torque_position_velocity.csv

There is probably a better name for the current compensation term. There is definitely a better plot.