Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Multiple OMPL constraints are not possible with 6-DOF arms #2614

Open
medvedevigorek opened this issue Dec 15, 2023 · 3 comments
Open

Multiple OMPL constraints are not possible with 6-DOF arms #2614

medvedevigorek opened this issue Dec 15, 2023 · 3 comments
Assignees
Labels
bug Something isn't working persistent Allows issues to remain open without automatic stalling and closing. stale Inactive issues and PRs are marked as stale and may be closed automatically.

Comments

@medvedevigorek
Copy link
Contributor

Description

Having 2 path constraints with OMPL constrained state space lead to Space is over constrained! exception and as the result failed motion planning.

[moveit_cpp_tutorial-4] [ERROR] [1702624020.869948730] [moveit.ros_planning.planning_pipeline]: Exception caught: ompl::base::Constraint(): Space is over constrained!'

This was discovered with UR5e robotic arm while exactly the same logic works with Panda arm (the one used in the examples).

Note using either one of the same path constraints at a time works fine with both arms.

Your environment

  • ROS Distro: Iron
  • OS Version: Ubuntu 22.04
  • Source or Binary build? Source
  • If binary, which release version?
  • If source, which branch? tag 2.8.0
  • Which RMW (Fast DDS or Cyclone DDS)? Default RMW in Iron

Steps to reproduce

We have modified MoveItCpp example to use OMPL constraints, defined 2 path constraints and tested with UR5e and Panda arms.

Expected behaviour

The planning should not fail with the exception but complete with either solution found or not.

Actual behaviour

Planning fails with Space is over constrained! exception

Backtrace or Console output

@medvedevigorek medvedevigorek added the bug Something isn't working label Dec 15, 2023
@medvedevigorek
Copy link
Contributor Author

Here is some additional things we came across after a quick look into the issue:

  • ompl::base::Constraint takes ambient dimension as well as dimension of function output and calculates manifold dimension by subtracting function dimension from ambient dimension. As defined here
  • ompl_interace::BaseConstraint uses 3 as function dimenstion (here and here)
  • The ambient dimension is defined as number of joints in Joint Model Group, so for Panda arm it's going to be 7, for UR5 - 6
  • So for a single constraint the manifold dimension of Panda arm is 4 and UR5 arm is 3
  • With multiple constraints ompl::base::ConstraintIntersection keeps subtracting constraint's manifold dimension and Space is over constrained! exception is thrown once manifold dimension comes to 0.

The above makes it clear that current implementation can support only 7+ DoF arms for more than one OMPL constraint.

And this brings the following questions:

  • (a) Is ambient dimension set correctly? Should it be set to (arm_DoF * space_DoF) instead of just arm_DoF?
  • (b) If ambient dimension is set correctly then does it mean that constraining both position and orientation must be done as a single OMPL constraint and cannot be combined together as it's currently implemented?
  • (c) Is the actual problem lies somewhere else?

I am not that familiar with OMPL constraints but it looks to me that the ambient dimension must be set to a product of total number of links that can be constrained and number of DoF of the space. So for 6-DoF arm it will be 36 assuming there is exactly one link per joint.

Looking for thoughts/comments on the above. Thanks!

Copy link

This issue is being labeled as stale because it has been open 45 days with no activity. It will be automatically closed after another 45 days without follow-ups.

@github-actions github-actions bot added the stale Inactive issues and PRs are marked as stale and may be closed automatically. label Jan 30, 2024
@henningkayser henningkayser self-assigned this Feb 6, 2024
@github-actions github-actions bot removed the stale Inactive issues and PRs are marked as stale and may be closed automatically. label Feb 7, 2024
@henningkayser henningkayser moved this to 🆕 New in MoveIt Feb 27, 2024
Copy link

This issue is being labeled as stale because it has been open 45 days with no activity. It will be automatically closed after another 45 days without follow-ups.

@github-actions github-actions bot added the stale Inactive issues and PRs are marked as stale and may be closed automatically. label Mar 25, 2024
@sjahr sjahr added the persistent Allows issues to remain open without automatic stalling and closing. label Mar 25, 2024
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
bug Something isn't working persistent Allows issues to remain open without automatic stalling and closing. stale Inactive issues and PRs are marked as stale and may be closed automatically.
Projects
None yet
Development

No branches or pull requests

3 participants