Closed HugeKangroo closed 4 months ago
The URDF limits should be respected, so I’m not sure what’s happening with your URDF model. Do you have a link to the URDF?
With the manual setting I see two possib issues. 1. Klampt has the quirk that fixed base robots have DOF 0 always fixed at 0. You are fixing DOF 6 at 0, which I assume is the end effector roll link. You should also make sure that your start and goal configuration follow this convention. 2. It looks like you are using degrees in some places? Klampt always assumes radians.
The URDF limits should be respected, so I’m not sure what’s happening with your URDF model. Do you have a link to the URDF?
With the manual setting I see two possib issues. 1. Klampt has the quirk that fixed base robots have DOF 0 always fixed at 0. You are fixing DOF 6 at 0, which I assume is the end effector roll link. You should also make sure that your start and goal configuration follow this convention. 2. It looks like you are using degrees in some places? Klampt always assumes radians.
Thank you for your reply.
Here is my URDF file: https://github.com/HugeKangroo/motion_planning/blob/master/fanuc_m20id35_support/urdf/fanuc_m20id35_klampt.urdf
If I do not set the joint limits using setJointLimits, there will be a valid path from the start to the end. However, if I set the joint limits from the URDF or to the range of -pi to pi, the planner says no feasible path was found.
Here is a link to my code: https://github.com/HugeKangroo/motion_planning/blob/master/MotionPlanning.py
Ah, this is because the URDF file has set these joints to continuous rotation joints, and Klamp't doesn't un-set them to normal joints if you set joint limits. So something is going wrong when you have a combination of continuous rotation + joint limits -- because it's normalizing spin joints to [0,2pi], and using geodesic interpolation. The best thing to do would be to change the URDF to have joints of the "revolute" type.
Thank you for your response. I will try to modify the URDF
Hello, I have imported a Fanuc robot from an URDF file and noticed that the joint limits have not been loaded. I manually read limits and set the limits by code like:
the joint limits from joint_1 to joint_6(in degree) are :
then I tried to run a motion planning but can not find a valid path. However if I does not use the setJointLimits(), I will get a path from the start point to end point:
As you can see, some joint has exceed the limits but in a valid range. What should I do to get path in the limit ranges?