I am trying to grasp some objects on a table and place them to some other location using my own dual arm manipulator. Grasping/Picking has been discussed in the openrave examples and works very well. However, i am having trouble with placing objects to locations.
1) I tried changing the XYZ of transformation matrix and call IKtransform6D. However, it gives solution sometimes but not always. The reason i know is that i am constraining the orientation of objects in all directions but we can place object in any angle in Z direction. For example a mug can be placed in any orientation for Z direction on table but my transformation matrix is forcing it to be in the same orientation.
2) I also tried IKTranslation3D but ofcourse with that X and Y orientation also changes.
3) I tried looping with dot product of rotation matrix along Z direction and original rotation matrix but then of course i get solution but the placing position changes.
My question is that there are some Adhoc ways to do this but what is the best way to place objects if you know the XYZ position of placement and the orientation along object;s Z direction does not matter. eg a plate or a mug.
My robot has 7DOF in each manipulator. So, i have 1 redundant DOF. I create the Ikinematics database for a manipulator without considering a free joint.
After that i call for the grasp database for grasping a mug for which inverse kinematics solution exists.
1) I ask for the ikinematics module to grasp the mug.
2) I grab it and save the Transformation Matrix. 'Tgoal'.
3) Now, in order to place it to a different location, i change the X,Y,Z positions and call for ikinematics for new 'Tgoal' with new position description.
4) I get the solution for a few times but not always, which is logical as i am constraining the position and orientation. Also, i have to make sure that the grasp are similar at both positions, which is further constraining it.
I can use inverse reachability but i dont want my robot to move and what simple manipulation. I want to do it in a more natural way than adhoc methods.
Can any of you guys who have done manipulation in OpenRave guide me in this regard.
Also, is there a way to make it less constraint, like removing constraint of z direction orientation of the object, so that it does get more inverse kinematics solutions and robot moves in a more natural ways.