0
$\begingroup$

Rosanswers logo

Whenever I try to construct a KinematicModel with my urdf, planning_environment throws the error:

"Root transform has no multi dof joint config"

My launch file attempts to launch the planning_environment environment_server, and includes multi_dof_joints.yaml, but it doesn't appear they're working correctly.

Which joint should be the multi dof joint? Or, is there some other problem of which I'm not aware?

EDIT: My biggest confusion on this arises from the following in KinematicModel:

Constructor passes in urdf, then: const urdf::Link *root = model.getRoot().get(); root_ = buildRecursive(NULL, root, multi_dof_configs);

The first line in build recursive: JointModel *joint = constructJointModel(link->parent_joint.get(), link, multi_dof_configs); This passes the model root in as "link".

In constructJointModel(const urdf::Joint *urdf_joint, const urdf::Link *child_link, const std::vector& multi_dof_configs): "link" is passed in as the child_link, which is compared against all the multi-dof child_frame_ids.

Doesn't this mean that in order for this to work, my model root must be listed as a child_frame_id in my multi_dof_joints.yaml?


Originally posted by seanarm on ROS Answers with karma: 753 on 2011-09-19

Post score: 1


Original comments

Comment by egiljones on 2011-09-20:
Your model root must be the child_frame_id - if it's not you'll get an error. The parent_frame_id should either be your model_root, or an odometric frame.

Comment by seanarm on 2011-09-20:
Diamondback. I'm doing this outside the arm navigation stack-- just trying to get environment server running with the correct joints/links/etc. I think the wizard is only for electric, right? I'll edit the question with a little more info on my problem.

Comment by egiljones on 2011-09-19:
What version of planning_environment are you using - electric or diamondback? Did you run the arm navigation wizard? In general the parent_frame_id should be your odometric frame if you are planning to move your base. If not, you can just make it the first link in your urdf.

Comment by seanarm on 2011-09-19:
I "fixed" the issue, but something is not quite right about the way KinematicModel interacts with my urdf. In my multi_dof_joints, I changed the child_frame_id of each of my joints to "world". The parent_frame_id is "baseLink". That doesn't sound right.

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

Your model root must be the child_frame_id - if it's not you'll get an error. The parent_frame_id should either be your model_root, or an odometric frame. - egiljones


Originally posted by Wim with karma: 2915 on 2011-10-17

This answer was ACCEPTED on the original site

Post score: 0

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.