Task and Joint Space Dual-Arm Compliant Control
Alexander L. Mitchell, Tobit Flatscher, Ingmar Posner
TL;DR
The paper addresses safe, compliant manipulation with friction-prone rigid robots by introducing a real-time open-source impedance controller that seamlessly blends joint-space and task-space compliance. It formulates a composite torque objective with a model-free friction observer, enabling smooth transitions between compliance modes and robust end-effector tracking. The approach is implemented on the dual-arm Frank platform with Kinova Gen3 arms, integrated with ROS tools, and supports high-frequency trajectory streaming for learning-based, planning-based, or teleoperation workflows. The results demonstrate precise pin-insertion capability and strong safety by maintaining task performance under external disturbances, underscoring the practical impact for delicate manipulation and human-robot interaction.
Abstract
Robots that interact with humans or perform delicate manipulation tasks must exhibit compliance. However, most commercial manipulators are rigid and suffer from significant friction, limiting end-effector tracking accuracy in torque-controlled modes. To address this, we present a real-time, open-source impedance controller that smoothly interpolates between joint-space and task-space compliance. This hybrid approach ensures safe interaction and precise task execution, such as sub-centimetre pin insertions. We deploy our controller on Frank, a dual-arm platform with two Kinova Gen3 arms, and compensate for modelled friction dynamics using a model-free observer. The system is real-time capable and integrates with standard ROS tools like MoveIt!. It also supports high-frequency trajectory streaming, enabling closed-loop execution of trajectories generated by learning-based methods, optimal control, or teleoperation. Our results demonstrate robust tracking and compliant behaviour even under high-friction conditions. The complete system is available open-source at https://github.com/applied-ai-lab/compliant_controllers.
