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!