Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

The Inverse Kinematics is returning an invalid result as you are not supplying a desired orientation for the pose. Without setting an orientation, the default Pose::Quaternion is a vector of all zeros [0,0,0,0], which is an invalid Quaternion. I would recommend either

  • read a bit on Quaternions in order to calculate your own

-or-

  • move Baxter's end effector into the desired orientation with respect to the base of the robot, check the arm's current Pose::Quaternion, and use that:

   $ rostopic echo -n1 /robot/limb/left/endpoint_state
    header: 
    ...
    pose: 
      position: 
        x: 0.529521061953
        y: 0.205000088025
        z: -0.287943031364
    orientation: 
        x: -0.229715175883
        y: 0.970497091367
        z: 0.00287481046527
        w: 0.0731988325182

Whether or not the latter method will work at an arbitrary Pose::Position is arm-configuration dependent.

The Inverse Kinematics is returning an invalid result as you are not supplying a desired orientation for the pose. Without setting an orientation, the default Pose::Quaternion is a vector of all zeros [0,0,0,0], which is an invalid Quaternion. I would recommend either

  • read a bit on Quaternions in order to calculate your own

-or-

  • move Baxter's end effector into the desired orientation with respect to the base of the robot, check the arm's current Pose::Quaternion, and use that:

   $ rostopic echo -n1 /robot/limb/left/endpoint_state
    header: 
    ...
    pose: 
      position: 
        x: 0.529521061953
        y: 0.205000088025
        z: -0.287943031364
    orientation: 
        x: -0.229715175883
        y: 0.970497091367
        z: 0.00287481046527
        w: 0.0731988325182

Whether or not the latter method will work at an arbitrary Pose::Position is arm-configuration dependent.