Xarm7 Admittance Control

Check out the video of our custom admittance controller (aka impedance / hybrid motion-force control) for the xArm7! https://imgur.com/a/DalVSru

Background:
Admittance control is a way of controlling a robot so that it simulates a spring. This is important for applications which need to make contact with an uncertain environment. Imagine getting a robot to plug in a USB. With pure position control, a programmer needs to exactly localize the pose of the port, and the plug, or else insertion will fail and damage may result as the robot jams the USB in at the wrong angle. However, if the robot is simulating a virtual spring, the geometry of the environment will actually help counteract any localization error and helps to steer the USB into the slot.

Implementation:
We use the 6-axis force torque sensor sold by UFactory together with the xArm7. Although the xArm API provides an impedance control mode, it does not currently allow for damping and it is not clear how it works together with other control objectives we desire (like keeping elbow up). For this reason, we implement the controller in C++ and interface with the xArm7 via set_servo_j commands at around 400 Hz.

Thanks to the UFactory team for making a great piece of hardware!

1 Like

Hi Mark,

Thank you for sharing, it looks cool.
Strictly speaking, what we provide is the admittance mode(mode 1). We adjust the position of the xArm in real-time according to the data returned by the 6-axis FT sensor, actually it is position control mode.

Currently (B)damping is reserved, give zeros by default, we will evaluate if we can allow this parameter in the future.

Best regards,
Minna