End-effector pose didn't match with target pose that control robot by InverseKinematicsSolver

Hi All,

I use InverseKinematicsSolver to control the robot to the target pose and use franka.end_effector.get_local_pose() to get the current end-effector pose after render 20 times.
I expected the current end-effector pose will very close to the target pose that I gave to the controller because there is no obstacle there. However, they have about 1.5-3 cm shift.
One reason I guess make these two poses different is that they use different reference frames.
Is anyone know how to make them use the same reference frames?
Or that is normal when use InverseKinematicsSolver?


The way I create my controller:

self.controller = InverseKinematicsSolver(
    'inv_kinematics_controller',
    robot_prim_path=self.end_effector.prim_path,
    end_effector_frame_name="panda_rightfinger")

Move robot by the controller:

franka.controller.forward(
    target_end_effector_position=position,
    target_end_effector_orientation=quat)
franka.apply_action(actuation)

Get current pose

position, quat = franka.end_effector.get_local_pose()

The target end effector position and orientation passed to the ik solver are in the world frame and the end effector pose you are getting is in the local frame (i.e: wrt the parent prim) so they are expected to be different. You should be using franka.end_effector.get_world_pose().

Let us know if you have further questions.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.