Robotics StackExchange | Archived questions

Planning with path constraints

Dear all,

It's been quite sometime that I've been dealing with the issue of planning a path for a manipulator while keeping its gripper parallel to the ground using Moveit!. As I set some path constraints to fix the orientation of the gripper, Moveit would no longer be able to generate the right trajectory and it spits out "Fail: ABORTED: No motion plan found. No execution attempted."

I went through lots of googling and tried whatever I found but none of them worked. It seems there are also other people dealing with the same problem but no one has mentioned a solution for it yet. I was wondering if anybody could help me over this. Is there any way to achieve this using Moveit? The manipulator that I'm working with is Franka Emika.

Thanks in advance.


Update:

The only way which came to my mind for fixing the gripper's orientation while moving was using

geometry_msgs::PoseStamped target_pose;
moveit_msgs::OrientationConstraint ocm;
ocm.link_name = "gripper";
ocm.header.frame_id = "base_link";
ocm.orientation.x = -0.0000;
ocm.orientation.y = -0.0000;
ocm.orientation.z = 0.718;
ocm.orientation.w = 0.696;
moveit_msgs::Constraints test_constraints;
test_constraints.orientation_constraints.push_back(ocm);
group.setPathConstraints(test_constraints);
moveit::planning_interface::MoveGroupInterface::Plan move_plan;
group.setPoseTarget(target_pose0);
success = group.plan(move_plan
group.move();

However, this results in no plan being generated. Everything works fine without setting constraints, but Moveit! would stop generating motion plans as soon as I set any constraints.

The same problem has been mentioned in this post as well: https://answers.ros.org/question/271489/path-constraints-not-keeping-end-effector-in-fixed-configuration-move/

I was reading through this google forum also, but it didn't help. https://groups.google.com/forum/#!topic/moveit-users/-ZkAMG-1DQ4

I also tried increasing the planning time and changing the values for the constraints as well, since I thought that I might put wrong values for the constraints which would result in no plan to be found, but none of them worked.

I appreciate if any anybody has any solution for this. Thanks

Asked by Hamed on 2019-08-02 09:03:04 UTC

Comments

through lots of googling and tried whatever I found

What have you found? Can you please post links to these questions?

none of them worked

What does this mean?

there are also other people dealing with the same problem

Again, please post links. All of this will help people with answering your question and avoid suggesting things that you've already tried.

Asked by jayess on 2019-08-02 12:22:37 UTC

Thanks for the reply @jayess! The only way which came to my mind for fixing the gripper's orientation while moving was using

geometry_msgs::PoseStamped target_pose;
moveit_msgs::OrientationConstraint ocm;
ocm.link_name = "gripper";
ocm.header.frame_id = "base_link";
ocm.orientation.x = -0.0000;
ocm.orientation.y = -0.0000;
ocm.orientation.z = 0.718;
ocm.orientation.w = 0.696;
moveit_msgs::Constraints test_constraints;
test_constraints.orientation_constraints.push_back(ocm);
group.setPathConstraints(test_constraints);
moveit::planning_interface::MoveGroupInterface::Plan move_plan;
group.setPoseTarget(target_pose0);
success = group.plan(move_plan
group.move();

However, this results in no plan being generated. Everything works fine without setting constraints, but Moveit! would stop generating motion plans as soon as I set any constraints.

The same problem has been mentioned in this post as well: https://answers.ros.org/ques

Asked by Hamed on 2019-08-02 14:14:35 UTC

Which constraints are you trying? What are the errors you receive? Please give more detail than "none of them worked".

Asked by fvd on 2020-03-02 07:25:49 UTC

the orientation quaternion is not normalized to 1. if you square x,y,z,w and add them its equal to 0.99994. i was having similar issue. to validate your rest of code try setting either x,y,z,w to 1 and remaining values to 0. if your code works then it means you need to put exact quaternion value and not rounded off ones.

Asked by mat_bil on 2020-09-25 16:01:02 UTC

Answers