Shifting End Effector Origin

hi!

I understand that the kinematics model is based on the end effector origin being at the center of gripper. I am working on application in which I want to shift that to a different location (a few cm on top of the gripper’s tip and to the right).

i.e. when I run inverse_kinematics, I am trying to get joint angles needed for that part to be at the desired location, instead of the gripper center.

thank you!

1 Like

Hi Will,

You can directly modify the kinematic model on the source file. In your case, the last link is defined here (for the right hand): https://github.com/pollen-robotics/reachy/blob/master/software/reachy/parts/hand.py#L241

2 Likes

Hi Pierre,

Thank you for your reply. The link you provided took me to the line where the link-translation is. If i understand correctly i need to modify these three numbers (link-translation parameters) to where i want my origin to be. What i still dont understand is that i dont want to fixate the end effector rotation matrix as long as it reaches the desired point. However when running inverse_kinematics i am forced to provide it with the end effector rotation.

Thank you again!

Yes, exactly.

To do that you need to change slightly the way the inverse kinematics is working. Basically, it works by iteration on the forward until it reaches a solution that close enough to your target. The error distance used to the target is considering both the euclidian distance and the rotation. You can write your own error distance that only takes into consideration the euclidian distance and it should behave as you expect.
This can be done here by imply using the position distance and not the rotation distance: : https://github.com/pollen-robotics/reachy/blob/master/software/reachy/parts/kinematic.py#L134