Package Summary

Tags No category tags.
Version 1.0.0
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/unisa-acg/inverse-dynamics-solver.git
VCS Type git
VCS Version humble
Last Updated 2025-04-13
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

A library implementing an inverse dynamics solver for serial manipulators.

Additional Links

Maintainers

  • Enrico Ferrentino

Authors

  • Vincenzo Petrone

inverse_dynamics_solver

This package provides a superclass for a generic inverse dynamics solver.

"Inverse dynamics solver block scheme"

Given a dynamic model in the form H(q) * ddq + C(q,dq) * dq + f(dq) + g(q) = tau, this library can return the following values:

  • getInertiaMatrix(q) returns the inertia matrix H(q), as a function of joint positions q;
  • getCoriolisVector(q) returns the Coriolis and centrifugal effects vector C(q,dq) * dq, as a function of joint positions q and velocities dq;
  • getGravityVector(q) returns the gravity vector g(q), as a function of joint positions q;
  • getFrictionVector(dq) returns the possibly nonlinear friction vector f(dq), as a function of joint velocities dq;
  • getDynamicParameters(q, dq) returns the tuple (H(q), C(q,dq), g(q));
  • getTorques(q, dq, ddq) returns H(q) * ddq + C(q,dq) * dq + g(q).

Please check the InverseDynamicsSolver class for more information.

Usage

The solver must be initialized before usage, via the initialize() method. This method accepts a NodeParametersInterface through which the configuration parameters must be passed under the correct namespace, together with the robot_description (in string format) the dynamics shall be solved for. Please refer to the method documentation for more information.

Configuration

The solver can be (optionally) configured with parameters, to pass via the node parameters interface. The necessity and effectiveness of these parameters depend on the specific implementation. For the time being, only the KDL based solver is affected by this configuration. Thus, please refer to the related documentation for an example on how these parameters are configured.

Demo

Demos and tests are available with concrete implementations of this library: please check InverseDynamicsSolverKDL, InverseDynamicsSolverUR10 or InverseDynamicsSolverFrankaInria.

Evaluate the solver

You can evaluate the solver computing the torques corresponding to a sequence of sensor_msgs/msg/JointState messages by launching the evaluate_solver demo. Please refer to the launch files in kdl_inverse_dynamics_solver (available for both the UR10 and Franka Emika Panda (FER) robots), ur10_inverse_dynamics_solver or franka_inria_inverse_dynamics_solver to see how this demo can be configured with different plugins.

Visualize the results

Run the plot_joint_state Python script to assess the performance of the solver, i.e. the comparison between ground truth (GT) and computed torques, where the GT torques are retrieved from the measured joint states, as mentioned above:

ros2 run inverse_dynamics_solver plot_joint_state.py -b BAG_FILES [BAG_FILES ...] -o OUTPUT_DIR

For additional information, run

ros2 run inverse_dynamics_solver plot_joint_state.py -h

CHANGELOG

Changelog for package inverse_dynamics_solver

1.0.0 (2025-04-13)

  • [FIX] Update missing dependencies in demo to include plugins to read bag files with sqlite3
  • [REF] Rename .h files to .hpp files
  • Merge pull request #2 from unisa-acg/humble Set repo URL, rename test launch files, document CO reproducibility
  • [MAK] Add repo URL
  • Contributors: Enrico Ferrentino, Vincenzo Petrone

0.1.1 (2025-04-03)

  • [MAK] Create CHANGELOG files
  • [MAK] Commit for release
  • Contributors: Vincenzo Petrone

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged inverse_dynamics_solver at Robotics Stack Exchange

No version for distro jazzy. Known supported distros are highlighted in the buttons above.
No version for distro rolling. Known supported distros are highlighted in the buttons above.
No version for distro noetic. Known supported distros are highlighted in the buttons above.
No version for distro ardent. Known supported distros are highlighted in the buttons above.
No version for distro bouncy. Known supported distros are highlighted in the buttons above.
No version for distro crystal. Known supported distros are highlighted in the buttons above.
No version for distro eloquent. Known supported distros are highlighted in the buttons above.
No version for distro dashing. Known supported distros are highlighted in the buttons above.
No version for distro galactic. Known supported distros are highlighted in the buttons above.
No version for distro foxy. Known supported distros are highlighted in the buttons above.
No version for distro iron. Known supported distros are highlighted in the buttons above.
No version for distro lunar. Known supported distros are highlighted in the buttons above.
No version for distro jade. Known supported distros are highlighted in the buttons above.
No version for distro indigo. Known supported distros are highlighted in the buttons above.
No version for distro hydro. Known supported distros are highlighted in the buttons above.
No version for distro kinetic. Known supported distros are highlighted in the buttons above.
No version for distro melodic. Known supported distros are highlighted in the buttons above.