-
Notifications
You must be signed in to change notification settings - Fork 35
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Symmetry in iCubGenova04 #4
Comments
CC @traversaro |
Hello @georgwi, Similarly, the joint axis and link origins are computed automatically, and depending on the axis that has been used to define the joint in the Mechanism model, we can have small differences between the left side and the right side. In this case anyway, we usually check that the origin of the joint is "shifted" along the joint axis and that the mass parameters of the child link (like CoM position) are "shifted" accordingly. Since you say that there are some issues with the walking simulations we will check the model. Generating a symmetric model is possible. One possibility is to create a symmetric Mechanism model and then run the generation script, but this might take some time. Maybe @traversaro can suggest other solutions. If you already have the list it would be nice if you can send it to us, so we can check the inconsistencies. Otherwise, we will proceed anyway with the check. Thanks! |
A quick check of the sdf. Seems that the origin shift is along the y axis:
|
Hey Luca! Here is an example of the non-symmetric walk: It is not very obvious but the robot stretches the left leg a little more during the gait. I have not confirmed that this is indeed caused by the model. But that is my best guess since there is nothing else that I think of that was non-symmetrical.Excluding mass differences of less then 10g and joint translation differences of less then 1mm the list of discrepancies are:
It seems like there are no mass differences that exceed 10g. We can ignore this issue for now since you said this is expected on your side and I do not think it will influence out simulation results much. |
Thanks @georgwi for the check on the masses and joints origins! Concerning the URDF, @traversaro has already implemented a test to check the transform in the "zero configuration". Probably we can also add the tests with different joint angles. q(0,0,0,0,20,20)Transform from
Transform from
q(0,0,-40,-35,20,20)Transform from
Transform from
q(45,30,-40,-35,20,20)Transform from
Transform from
|
The test mentioned by @fiorisi are the one in https://github.com/robotology-playground/icub-model-generator/blob/master/tests/icub-model-test.cpp#L321 . |
I have loaded the sdf in simulation and tried recreating your test. The transformations from the sole to the pelvis indeed match pretty well for left and right. If I check for some other part of the leg (e.g. the knee joint position) they do not match though. Here is an image that shows that the knee joint positions are not at the same position in the leg (the red arrows pointing out of the shin are the x-axes of the knee joint frames). The same goes for the ankles where the left ankle frame seems to be shifted forward in the foot. Here is an idea that could explain why we have trouble and you do not: if you offset a joint along its own axis and then "undo" that offset in the transform to the next joint your end effector position does not change. However the joint position might move. E.g. if you have a joint at the origin rotating around the x axis and an end effector attached with an offset of Is this thought experiment correct @traversaro @fiorisi? We do use joint frames (esp. the ankle frame) for some things throughout the controller so that might be the issue. If this is indeed the case we have two options:
|
Yes @georgwi you are correct, we checked only the end-effector, but if you use also the "intermediate" frames, then the "shift" of the joints origins along the joint axes is a problem. |
@georgwi the new iCubGenova04 model is ready. We did some preliminary tests to check the correctness of the model and seems to be accurate. |
Hey @fiorisi I found during the symmetry check that for the |
Hello @georgwi, we are happy that the new model has solved the simulation issues. |
Hi @fiorisi and @gabrielenava!
When running simulations I noticed that the robot was not moving symmetrically. After looking into why this was the case I found that the model is not mirrored left to right. I am not sure if this was done on purpose to better reflect the real hardware and if this affects other iCub models also.
More specifically, I found that the same bodies for left and right arms and legs have different masses and different joint offsets. Here are two examples from the urdf:
My question is: is this expected or wanted?
If so, would it be much work to provide a symmetric model for simulations?
If not, do you plan of fixing this? In that case I can give you a full list of inconsistencies that I found.
Thanks for the feedback!
The text was updated successfully, but these errors were encountered: