A ROS2-based software library for inverse dynamics computation
Vincenzo Petrone, Enrico Ferrentino, Pasquale Chiacchio
TL;DR
The paper addresses computing joint torques $\boldsymbol{\tau}$ from motion commands using the inverse dynamics equation $ \mathbf{H}(\mathbf{q}) \ddot{\mathbf{q}} + \mathbf{C}(\mathbf{q}, \dot{\mathbf{q}})\dot{\mathbf{q}} + \mathbf{f}(\dot{\mathbf{q}}) + \mathbf{g}(\mathbf{q}) = \boldsymbol{\tau}$. It proposes a ROS2-based software library with an abstract interface InverseDynamicsSolver and three concrete plugins: a KDL-based simulator solver and real-robot solvers for UR10 and Franka, all configured via URDF/xacro and gravity parameters. The approach is validated through simulations in Gazebo and experiments on UR10 and Franka, showing close agreement between measured and computed torques, demonstrating the platform's applicability to planning, control, and real-time simulation. Future work includes incorporating payload effects and adding a Pinocchio-based solver, as well as integrating the solver into model-based controllers.
Abstract
Inverse dynamics computation is a critical component in robot control, planning and simulation, enabling the calculation of joint torques required to achieve a desired motion. This paper presents a ROS2-based software library designed to solve the inverse dynamics problem for robotic systems. The library is built around an abstract class with three concrete implementations: one for simulated robots and two for real UR10 and Franka robots. This contribution aims to provide a flexible, extensible, robot-agnostic solution to inverse dynamics, suitable for both simulation and real-world scenarios involving planning and control applications. The related software is available at https://github.com/unisa-acg/inverse-dynamics-solver/tree/rap.
