How to Interpret Target Poses?

740 views
Skip to first unread message

David Altemir

unread,
Mar 20, 2014, 7:11:49 PM3/20/14
to moveit...@googlegroups.com
Just a basic question ...

I have a 6-DOF arm that I've divided into two move groups: "robot_arm_group" for all the links and joints starting from the "base_link" to the "wrist_z" link; and an "end_effector_group" for all the end effector links and joints starting with the "wrist_z" link.  

Right now, I'm just trying to move the arm to a specified location by setting a target pose goal for the "robot_arm_group".  My question is what exactly is the target pose goal specifying?  My understanding was that the {x,y,z} target pose position was specifying a location for the origin of the end link of the move group (in this case, for the "wrist_z" link) and the {x,y,z,w} target orientation was specifying the orientation of the "wrist_z" link coordinate frame relative to the "base_link" reference frame (i.e., "the world").  

Can someone please confirm that I understand this correctly? 



Acorn Pooley

unread,
Mar 21, 2014, 2:52:25 PM3/21/14
to David Altemir, moveit...@googlegroups.com
You are correct that the pose position and orientation is for the last link in the chain -- the wrist_z link.

The pose is relative to the "planning frame" (PlanningScene::getPlanningFrame()) also known as the "model frame" (RobotModel::getModelFrame()).  This is the parent frame of the virtual joint specified in the SRDF.  If your virtual joint transform is the identity matrix (it usually is unless you did something to change it) then the model frame and the base_link will be at the same pose (which you can think of as "the world" if your robot's base is stationary).

You can see all these frames in rviz using the TF display (and, for example, confirm that the base_link and your model frame are at the same pose).

-Acorn


From: moveit...@googlegroups.com [moveit...@googlegroups.com] on behalf of David Altemir [david....@gmail.com]
Sent: Thursday, March 20, 2014 4:11 PM
To: moveit...@googlegroups.com
Subject: How to Interpret Target Poses?

Sachin Chitta

unread,
Mar 21, 2014, 2:54:33 PM3/21/14
to Acorn Pooley, David Altemir, moveit...@googlegroups.com
To add to Acorn's answer, when using the move_group interface, you can figure out these frames programmatically:

The getPoseReferenceFrame() function tells you which frame all those poses are specified in (usually this will be the same as the model frame that Acorn is mentioning but you do have the ability to set it to be a different frame as well). The getEndEffectorLink() function tells you which link the target pose that you are setting is for.

Sachin

David Altemir

unread,
Mar 21, 2014, 9:41:15 PM3/21/14
to moveit...@googlegroups.com, David Altemir
Thanks, Acorn and Sachin, for the excellent responses.  I have the following  virtual joint definition:

        <virtual_joint name="root_joint" type="fixed" parent_frame="odom" child_link="base_link" />

But it looks like the end joint is oriented relative to the end joint frame and not the "world" frame.  Is "odom" the right frame to specify as the parent_frame of the virtual joint?  I want the arm's base_link to be fixed to the world.
Reply all
Reply to author
Forward
0 new messages