pacman-project / pacman-demo

PaCMan workspace
1 stars 1 forks source link

Pisa soft hand driver #18

Open marekkopicki opened 9 years ago

marekkopicki commented 9 years ago

I have uploaded the driver - compiles in Windows and Linux, but has to be tested. Still without kinematics, synergy model and appropriate model of a body.

maximeadjigble commented 9 years ago

Ok, I will take care of the kinematics and test it as well

marekkopicki commented 9 years ago

Maxime, any progress with kinematics?

maximeadjigble commented 9 years ago

Marek, you told me on monday that you were going to take care of the driver!

marekkopicki commented 9 years ago

Driver in general, yes, but kinematics I have no capacity right now.

maximeadjigble commented 9 years ago

Ok I take care of it

marekkopicki commented 9 years ago

Guys, do you have CAD drawings of the hand? Possibly with kinematics description.

carlosjoserg commented 9 years ago

First of all, check if you already have it with the hand documents/CDs, since I was told customers are given this when they buy the hand. Then, in the natural machine motion initiative site, you have v0.1 freely available (it's not the one you have there, but can help).

My suggestion is to go with the URDF model given here soft_hand_description, so we will have the same models in Golem and ROS. In the file, you will find a macro for the kinematics of a finger at the top, then a macro for the thumb, and at the bottom, a macro for the full hand with the anchor transforms for all fingers and thumb, with some parts depending whether it is a right or a left hand. Unfortunatley, we don't have more documentation about this, however, I think that the XML tags and names are self-descriptive. If you have any doubts, let me know.

marekkopicki commented 9 years ago

Thanks Carlos. As far as I can see it, each joint with gears can be modelled by 2 twists with the same angular velocity and zero pitch. Other joints are easy. I can update golem::Joint to allow more than one twist per joint, then all kinematics can be specified in xml, without writing any code. Maxime, have you done anything about kinematics already?

carlosjoserg commented 9 years ago

That is correct.

maximeadjigble commented 9 years ago

Hey Marek, I am on it I have just finish reading the twist part for the kinematic in the book and I am creating the kinematic and the simulation driver. I don't think that it will be ready tomorrow cause I can t work on it tomorrow. I will finish it over weekend and Monday it should be ready

marekkopicki commented 9 years ago

OK thanks, but I will update some parts of the Pisa hand driver and golem::Joint and golem::Chain anyway. This is because there are specific requirements regarding the driver interface and behaviour we have not discuss yet. We will talk about it tomorrow.

marekkopicki commented 9 years ago

I have updated multiple twists per joint feature. I am working now on a new driver and simulator structure, it should be ready today.

marekkopicki commented 9 years ago

A new PISA softhand driver and simulator uploaded. IMO most of ugly work is done. TODO list:

1) Kinematics, however now it is easy - just edit a few lines in xml configs (the current are from DLR hand) - GolemDevicePISASoftHand.xml and GolemDevicePISASoftHandSim.xml. Create two twists per joint - i.e. two sections

2) Bounds or geometry of the hand (the current are from DLR hand).

3) Replace "a test synergy" with the real one - see golem::PISASoftHand::getSynergyMap(). Possibly load it from a resource file.

maximeadjigble commented 9 years ago

Great! I will update the different part today

maximeadjigble commented 9 years ago

@carlosjoserg How do you compute the synergies for the PISA Hand in ROS, I have seen that you have the synergy vectors in the urdf file. Is there a simple way of doing it?

maximeadjigble commented 9 years ago

@carlosjoserg I need to get the rotation matrix to position all the fingers. Which Euler angle convention is ROS using? Could you generate the rotation matrix for the base of all the fingers?

carlosjoserg commented 9 years ago

@maximeadjigble

For now, in there, there is a synergy joint that can take values in [0,1], and the rest mimic this value with a ratio specified by the synergy vector. So, I adjusted the vector to have a reasonable close/open motion. These values (synergy joint range and synergy vector) must match the real one, which I still have to do in order to keep simulation and real scenarios as close as possible. The way to do it is: for the first one, to look at the motor/encoder configuration, and for the vector, to look into the pulley radius. However, for simulation, you can replicate what's in there for now.

For the rotation matrix, you can use this python script, it will give you the correct rotation according to the ROS convention: https://github.com/ros/geometry/blob/indigo-devel/tf/src/tf/transformations.py

marekkopicki commented 9 years ago

@maximeadjigble

Have you sorted out the thumb kinematics already? We have to make sure that the Golem kinematics is equivalent to the kinematics from ROS, including the joints' scale factor. In the meantime, you could upload your test version of kinematics and the hand geometry - it looks good as it is!

maximeadjigble commented 9 years ago

Hi Marek, I am going to finish it today + the synergies

marekkopicki commented 9 years ago

Thanks Maxime! I have implemented "synergy vector", i.e. simple linear mapping synergy -> joint angles, compatible with the ROS driver. Only thumb kinematics is missing + it would be good to perform a final test of the real hand.

maximeadjigble commented 9 years ago

@marekkopicki @carlosjoserg, I have updated Golem with the right configuration of the bodies for the thumb which were not overlapping, but, there is still the transformation for the thumb which is missing. @carlosjoserg I am using the script that you sent but there is 24 possible euler angle configuration that can be used to generate the rotation matrix and i don't really want to go through all of them. Is it possible that we have a look together?

carlosjoserg commented 9 years ago

No, I should have pointed this link before as well: http://wiki.ros.org/urdf/XML/joint Take a look at the rpy tag, so it is euler_matrix(roll, pitch, yaw) without axes, i.e. the default 'sxyz'.

maximeadjigble commented 9 years ago

Last question @carlosjoserg because I would like to make it right. Could you make me a small schematic even using paint of the configuration of your axis (base and thumb base axis), that is the only bit of information that i am missing

carlosjoserg commented 9 years ago

Let me know if this works: axes

(left hand at left, and right hand at right)

carlosjoserg commented 9 years ago

I assume https://github.com/pacman-project/Golem/commit/81edeb48efcc8a0d45cf6d19d04554109f187c3b closes the issue, so I'm doing it.

Tip: you can use commit messages to close issues automatically, see this

marekkopicki commented 9 years ago

Thanks guys! We still have to test it with the robot in both Windows & Linux (just in case), but there is a progress, no doubt :)

carlosjoserg commented 9 years ago

Hi guys,

I'm reopening the issue since I recently realized that there was an error in the kinematic mount of the right thumb, proximal joint. Besides, there are more than one versions of the hand. I don't know which you got in the end, you can readily notice by the palm.

If it is like in the figure above (small), check https://github.com/CentroEPiaggio/pisa-iit-soft-hand/commit/882391ad204fa7d15eafdf03574b413f3dc01a26

If the palm is larger, then check thum kinematics, as well as updated mounting frames.

Let me know if you have further questions.