  Cartesian impedance control is a type of motion control strategy for robots
that improves safety in partially unknown environments by achieving a compliant
behavior of the robot with respect to its external forces. This compliant robot
behavior has the added benefit of allowing physical human guidance of the
robot. In this paper, we propose a C++ implementation of compliance control
valid for any torque-commanded robotic manipulator. The proposed controller
implements Cartesian impedance control to track a desired end-effector pose.
Additionally, joint impedance is projected in the nullspace of the Cartesian
robot motion to track a desired robot joint configuration without perturbing
the Cartesian motion of the robot. The proposed implementation also allows the
robot to apply desired forces and torques to its environment. Several safety
features such as filtering, rate limiting, and saturation are included in the
proposed implementation. The core functionalities are in a re-usable base
library and a Robot Operating System (ROS) ros_control integration is provided
on top of that. The implementation was tested with the KUKA LBR iiwa robot and
the Franka Emika Robot (Panda) both in simulation and with the physical robots.
