MotionGen.plan_single() - specifying joint range constraints? #376
Unanswered
parth-emancro
asked this question in
Software Q&A
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
I'm trying to use
MotionGen.plan_single()
to plan from our platform’s 7 DOF robot arm's start joint angles to a Cartesian goal ee pose.To avoid cable-twisting, we needed constraints on joint angles to be close to preferred JointState’s already collected. Using a restricted joint-angle range in the URDF greatly reduced the fraction of successful cartesian plans.
Issue: We get about 40mm median cartesian error using the below method to incorporate the constraints, since
MotionGen.plan_single()
doesn’t directly take joint angle range-constraints.IKSolver.solve_single()
(50-200 return seeds)MotionGen.plan_single_js()
The cspace error from IKSolver is on the order of 0.01-0.05 radians as per get_unique_solutions() from the IKResult object.
When comparing the goal
Pose
we query above, with the last JointState we get from the plan_single_js() trajectory passed through Curobo’s forward kinematic model, the cartesian error is 1e-6However this same error is median 41mm when compared to the cartesian goal pose we request over a ROS message which we convert to a Curobo
Pose
in a callback.I believe this is not a frame transform error given
MotionGen.plan_single()
withhigh_precision=True
. Since we can’t pass in preferred joint states constraints we can’t use this directly.Statically changing our robot arm URDF joints to have restricted limits results in the planning success rate dropping from 0.99-1.0 (with our IK solutions method), to 0.75 [
plan_single()
] even with 15 retries on failure.Questions -
A. Is there another way to achieve these joint-state constraints while having a higher success rate with plan_single()?
B. Is there a way to get `MotionGen.plan_single() to try out n-number of IK seeds internally?
C. Ideas on the resultant end-to-end cartesian error given IKSolver seems to think internally that the solutions it generates have very low error.?
Beta Was this translation helpful? Give feedback.
All reactions