From kuka's website at youbot inverse kinematic :
The input data is a 6D-Pose consisting
of the x-y-z coordinates and the
roll-pitch-yaw orientation of the
gripper
So if you know the coordinates of the center of your object you can find the roll
, pitch
and yaw
required to face it and just specify it in the input.
EDIT as response to your comment :
do 6-D pose means that if the end effector move to a certain coordinate, it has 6 solution?
No, it means that the pose is not only { x; y; z}
(3-D
) but it's { x; y; z; roll; pitch; yaw}
(6-D
).
but how do I find the roll pitch and yaw required from the coordinate I put
If you want to find the orientation required to face the object you need the coordinates of your object and your end effector frame coordinates. You will need to do some steps :
- Using the transformation of arm link 1 to arm link 4 that you've calculated, you have to convert the object coordinates from your global frame to the end_effector frame.
- Once you have the object coordinates in end effector frame, you need to convert them from carthesian to spherical (you can have the conversion formulas here to have coordinates as
{ z; theta; phi}
. theta
being the angle around z
axis and phi
the angle around x
axis). - Assuming that it's the direction of the
x
axis of your end effector frame that determine what your end effector faces : You know that if the end effector is facing the object then theta = 0
and phi=pi/2
. You also know that phi
and theta
are the same as respectively roll
and theta
(you don't need the pitch). - Just by calculating the spherical coordinates you directly find the
roll
and yaw
that needs to be applied to properly set the end effector, so just by substracting those roll
and yaw
to the roll
and yaw
calculated at step 1
, you get the roll
, pitch
and yaw
required in the input data of your inverse kinematic code.