Closed diegoferigo closed 4 years ago
Unfortunately the iCub model, being autogenerated from the CAD file, has a peculiar kinematic tree that breaks the rule I reported above:
Keep in mind that collisions are disabled by default between parent-child links of a joint.
In order to ensure proper self collision handling, I had to resort to bitmask (luckily implemented in ignitionrobotics/ign-physics#116 and https://github.com/ignitionrobotics/ign-gazebo/pull/160). It would have been easier if also the category_bitmask
would be supported, but I managed to find a workaround playing with the masks.
I am a bit ashamed for the quality of the following script, but I will post it anyway. It's quite messy and can be much (much!) improved, but it fulfils its purpose for the time being:
Keep in mind that collisions are disabled by default between parent-child links of a joint.
Images in Gazebo Classic
![front](https://user-images.githubusercontent.com/469199/84760502-6b7e9800-afc8-11ea-980a-83ccf80b3652.jpeg) ![side](https://user-images.githubusercontent.com/469199/84760503-6c172e80-afc8-11ea-9131-36327d151123.jpeg) ![detail](https://user-images.githubusercontent.com/469199/84760496-6ae60180-afc8-11ea-98d5-1dcaf5ae70f5.jpeg)I tried to run the following code in Ignition Gazebo (it requires
gym_pushrecovery
that is not yet open source):and it seems working fine (requires https://github.com/robotology/gym-ignition/pull/212). However, contact detection is not optimal. Check in the gif below:
1) Feets are tipping and sometimes one foot get lost 2) When the base touches ground, all other contact disappear and then they come back again
This is a problem with DART's contact detection algorithm, we cannot do much here. I cc also @chapulina and @azeey for reference.