Improve robot controllers

Issue #20 wontfix
Adam Conkey created an issue

Want to try to replace the use of KDL with DART for kinematics and dynamics computations. There are a number of motivating reasons:

  1. DART computes gravity and other dynamics compensation torques based on kinematic trees, while KDL computes them on kinematic chains. This is a problem as we generally have trees, which means if a chain is used, it leaves out a non-trivial number of links in computing compensation torques. You can of course create multiple chains and combine them, but this greatly complicates things and makes a lot of room for mistakes.
  2. Getting rid of chains means we can stop having to treat hand kinematics/dynamics differently when it is attached to an arm. For example, right now the allegro interface has a hack to change the chain indices when it’s attached to an arm. Also getting link poses by name should greatly simplify things over having to maintain many kinematic solvers for each chain and referencing them by index. In short, all of these functions should become much more transparent and simpler to use.
  3. We already use DART as the physics engine in Gazebo. Using their kinematics/dynamics library can allow us to more seamlessly integrate with the Gazebo-DART integration, especially if we need to write new plugins.
  4. DART is more actively developed and better documented than KDL. DART also has a nice forum that the developers are quite responsive to and have already provided some very helpful advice to us.

This is a substantial effort that affects this package, ll4ma_robot_interface, ll4ma_robot_control, and possibly lwr_hardware. We should create DART branches for the Gazebo, interface, and control packages, and do a full port of them to DART to test it in Gazebo. If it proves effective for better control and/or simplifies our infrastructure, then we can consider moving the KDL version of these packages to their own branch, and make the DART versions the master.

We can figure out later what to do with our client code that interfaces with DART. My inclination is to repurpose this package and rename it to ll4ma_dartsim (to also disambiguate from DART tracker and various other DART incarnations). We can restructure it a bit to maintain the ability to create a standalone simulation environment (outside of Gazebo), but its focus can be on providing simple functions to do kinematics/dynamics computations in DART.

Comments (2)

  1. Adam Conkey reporter

    Some progress was made on this on the described packages, but this is no longer a relevant issue since most of those packages aren't going to be maintained. We don't really have a need for custom control interfaces in other simulators (e.g. Isaac Gym or Drake) and the real robots also are relying more on the company-provided controllers.

  2. Log in to comment