Robot Cartesian impedance controller based on the ros2_control framework and Pinocchio. Default branch distro: Jazzy
The ros2_impedance_controller is meant to be a robot-agnostic, fully ROS2 ecosystem impedance controller, with diagnostics for researchers.
-
Clone this repo;
-
Install build dependencies with:
rosdep install --from-paths src -y --ignore-src
By making a slight modification to your URDF, you can use the impedance controller with any rigid-body leg or manipulator. Check the URDF section in the documentation to understand how and why adequate your robot description to use with the available controllers. For a quick first try with Gazebo Harmonic, consider using my robot descriptions in ros2_descriptions, and my simulation settings in robot_impedance_lab.
According to the classical impedance definitions, the controller input is the end-effector pose and its derivatives. For easy standardization, this input type is the kinematic_pose_msgs. The package robot_impedance_analyzer can be used for control analysis with single-axis parametric inputs such as step, sine and square waves, PRBS and others.
Check controllers.yaml to see how you can configure the available controllers.
Available impedance controllers:
| Controller | Description |
|---|---|
| CartesianController | Hogan's classical impedance control law with inertia shaping (optional) |
| BasicCartesianController | PD impedance + gravity compensation (optional) |
| MPCIController | Model Predictive Cartesian Impedance Control with taskspace dynamics cost function |
The Model Predictive Cartesian Impedance Controller (MPCIC) uses qpOASES to solve the QP problem.
Warning
MPCIC is in development phase.
Clone and checkout the tag:
git clone https://github.com/coin-or/qpOASES.git
cd qpOASES && git checkout releases/3.2.2Build and install:
mkdir build && cd build
cmake .. -D CMAKE_CXX_FLAGS="-fPIC"
make
sudo make installThe controllers implement Hogan's classical impedance control law, following the notation from the book Cartesian Impedance Control of Redundant and Flexible-Joint Robots, Ott, C., 2008. Please check the documentation for further details.