kinematics_interface_pinocchio

Pinocchio-based implementation of ros2_control kinematics interface

README

kinematics_interface_pinocchio

License ROS Humble ROS Jazzy ROS Rolling

A Pinocchio-based ROS 2 Kinematics Interface plugin. This can serve as a drop-in replacement for the default KDL plugin in ROS 2, offering a different backend for forward and inverse kinematics.


Overview

This package provides:

  • A Pinocchio-based implementation of the kinematics_interface for ROS 2.

  • The same plugin interface as the default KDL plugin (kinematics_interface_kdl).

  • A path to potentially better performance (to be benchmarked) and additional features enabled by Pinocchio.

Installation

You can install this package directly from your ROS 2 distribution’s repositories:

sudo apt-get update
sudo apt-get install ros-${ROS_DISTRO}-kinematics-interface-pinocchio

Alternatively, you can clone this repository into your ROS workspace and build from source (requires pinocchio to be installed/built).


Build Status

ROS Distro

Build Status

Humble

Build and Test (ROS 2 Humble)

Jazzy

Build and Test (ROS 2 Jazzy)

Rolling

Build and Test (ROS 2 Rolling)


Usage

To use this plugin in place of the default KDL plugin:

  1. Update your ROS 2 package dependencies to include kinematics_interface_pinocchio.

  2. In your configuration or launch files, specify the Pinocchio plugin shared library instead of kinematics_interface_kdl.

An example snippet:

<!-- Example usage in a ROS 2 controller configuration -->
<plugin>kinematics_interface_pinocchio/KinematicsInterfacePinocchio</plugin>

TODO

  • [x] Replicate KDL implementations and capabilities with Pinocchio

  • [x] Package as a ROS 2 plugin usable in place of kinematics_interface_kdl

  • [ ] Benchmark and compare performance

  • [ ] Allow arbitrary frames to be used as base (currently uses the model’s root joint)

  • [ ] Add support for floating-base robots

  • [ ] Add support for continuous joints and other composite joints supported by Pinocchio


License

This project is licensed under the Apache 2.0 License. See the LICENSE file for details.


Contributions welcome!