XC/XL330 Compliant/"Position Learn" Mode Arm Settings?

I’m using a combination of XC/XL330 servos (v50 firmware) for a robot with two arms, I’m trying to configure a compliant mode so that I can manually move the arms around to record positions.

At the minute I’m setting the servos to current position mode and changing the goal current on each to a value where it can support itself. In my code I set the mode fine, the arms hold position as expected. If I try to backdrive them by hand, they move with some resistance and then move back, also as expected.

I’ve tried to have a loop that gets the current position and then sets it to the same value, hoping that this would have the robot maintain position, but it slowly drifts down with gravity.

This feels like it should be a fairly common usecase for these servos in robot arms, can anyone point me towards an example or give some tips to get this working please?

It seems that the setting is necessary so that the position value does not change according to gravity.
Try operating mode of X330 as current control mode.
If you compensate for the gravity value by setting the current value, you can stay in the manually moved position.

Hi Baris,

To confirm, that’s current mode rather than current position mode? I’ll have a look, thanks :slight_smile:


Yes, it is Current Control Mode.
Position Control Mode or Current-based Position Control Mode is difficult to use for gravity compensation because it continuously follows the position value.

1 Like