feat(task): Add ManipulabilityTask for maximizing robot manipulability#185
Conversation
…r python versions
|
Thank you @danielsanjosepro for this PR. The manipulability task looks like a great addition, and examples and video are particularly helpful 👍 This message to let you know that reviewing this PR is on my radar. I'll wrap up a release for v4.1.0 with your previous additions, then we can include the new task in a release of its own, like v4.2.0. |
stephane-caron
left a comment
There was a problem hiding this comment.
This PR is in an excellent state 🤩 I only have one suggestion regarding documenting and checking the revolute-joint assumption in the task constructor. Other review comments are minor nits.
Co-authored-by: Stéphane Caron <[email protected]>
Co-authored-by: Stéphane Caron <[email protected]>
Co-authored-by: Stéphane Caron <[email protected]>
Co-authored-by: Stéphane Caron <[email protected]>
Co-authored-by: Stéphane Caron <[email protected]>
…gly and add a test for it
|
I added the revolute joint test (and a test for it) and went through the other comments thanks for the extensive review :) |
stephane-caron
left a comment
There was a problem hiding this comment.
LGTM. Thank you for this high-quality contribution to the library 👍
Summary
This PR adds a new
ManipulabilityTaskthat maximizes the manipulability of a robot manipulator. Higher manipulability means the robot can "move more easily" in all directions, avoiding singular configurations.This add a controller similar to the MMC of Jesse Haviland and Peter Corke [1]: https://jhavl.github.io/mmc/
The task minimizes:
...where$J_m$ is the manipulability jacobian and $\dot{m}_\text{desired}$ is the desired change of manipulability rate (larger values make the controller more agressive).
This definition diverges from Haviland's [1] but follows a more pink-like standard.
What is included:
New task:
"position","orientation", or custom.)New examples:
planar_2dof_manipulability.py): A simple planar robot arm with interactive Viser sliders to tune manipulability rate and damping in real-time.2026-02-24.15-37-13.mp4
arm_panda_manipulability_comparison.py): Side-by-side comparison of two Panda arms tracking the same target - one with ManipulabilityTask (full opacity) and one without (gray, 50% opacity).2026-02-24.15-42-35.mp4
Limitations:
References / Related Work
[1] Behavior similar to the MMC controller (Manipulability Motion Control) by Haviland and Corke
[2] Similar to PlaCo's manipulability regularization