We've been trying to use piperlib's MIT impedance mode on a Piper arm and the motors don't physically respond despite set_target() being called successfully.
What we tried
422+ calls to set_target() — cmd_joints differ from actual by ~1° but motors don't track
Kp = 2.5 and Kp = 15, with gravity_compensation=True and False
Clean boot: power cycle arm, fresh CAN, piperlib only (no piper_sdk first)
ControllerConfig with piper_description.urdf (correct 500g gripper mass)
What works
piper_sdk native MIT mode (JointMitCtrl + MotionCtrl_2 0xAD) — arm holds position fine
Suspicion
piperlib may require the firmware to be in a specific mode (STANDBY?) before init.
Our firmware comes up in CAN_CTRL from prior piper_sdk usage, and disable_arm() in piperlib hangs / times out trying to transition.
Question
What firmware version are you running, and is there a specific init sequence needed before PiperController.start()?
We've been trying to use piperlib's MIT impedance mode on a Piper arm and the motors don't physically respond despite set_target() being called successfully.
What we tried
422+ calls to set_target() — cmd_joints differ from actual by ~1° but motors don't track
Kp = 2.5 and Kp = 15, with gravity_compensation=True and False
Clean boot: power cycle arm, fresh CAN, piperlib only (no piper_sdk first)
ControllerConfig with piper_description.urdf (correct 500g gripper mass)
What works
piper_sdk native MIT mode (JointMitCtrl + MotionCtrl_2 0xAD) — arm holds position fine
Suspicion
piperlib may require the firmware to be in a specific mode (STANDBY?) before init.
Our firmware comes up in CAN_CTRL from prior piper_sdk usage, and disable_arm() in piperlib hangs / times out trying to transition.
Question
What firmware version are you running, and is there a specific init sequence needed before PiperController.start()?