gazebo-yarp-plugins
gazebo-yarp-plugins copied to clipboard
skin emulation
Hi everyone, as I'm working on the iCub "self-touch" project, I was not so happy to see the icubSim going through his body without colliding. I decided to change that, created a branch of the simulator and redefined the collision spaces. At the moment, I have a version that collides, I read out the coordinates, map them into a local reference frame of a respective skin part and emulate a skinEvent / skinContact port (/skinManager/skin_events:o), not the raw /icub/skin/... My thing is still not working with the covers though, as they have no bodies and mass in icubSim.
Anyway, I just discussed with Silvio the state of affairs in the gazebo - it seems that much of this functionality could come quite easily there - adding a contact sensor to individual body parts and reading the coordinates. For now, I just wanted to make you aware that there would be interest to have a skin emulation there and that some of the code I developed for icubSim could be ported to gazebo too. Please do keep me updated on developments in this direction.
Thanks! Matej Hoffmann
Just adding pointers to some materials needed if someone want to tackle this issue:
- a tutorial on how to adding a contact sensor plugin to Gazebo: http://gazebosim.org/wiki/Tutorials/1.9/sensors/contact .
The SkinSim [1] framework can be of interest for proper skin simulation, even if it simulates skin at physical level, while I guess we are more interested in simulating it an higher level.
[1] : http://spring.mae.cuhk.edu.hk/~cmdl/activity/201406_ICRA%20Soft%20robot%20workshop/SkinSim_uta.pdf
We should keep an eye on this one: http://gazebosim.org/haptix Nice hands with tactile and proprioceptive sensors. So far only proprietary, for the DARPA Haptix challenge, but maybe they will make it available one day.
The models of the hands are proprietary , but the software is opensource.
In particular the implementation of the tactile sensors is available in the HaptixControlPlugin
, available in the handsim
package:
- https://bitbucket.org/osrf/handsim/src/b641e22241cc78745b90049df3420a93d5f0aed5/include/handsim/HaptixControlPlugin.hh?at=default
- https://bitbucket.org/osrf/handsim/src/b641e22241cc78745b90049df3420a93d5f0aed5/src/HaptixControlPlugin.cc?at=default
Just checked, and apparently for the Haptix project they just merged an interesting feature in Gazebo: https://bitbucket.org/osrf/gazebo/pull-request/1413/allow-multiple-contact-sensors-per-link/diff https://bitbucket.org/osrf/gazebo/issue/960 , namely the support for multiple contact sensor for link .
This would definitely simplify the implementation of the gazebo_yarp_skin
plugin a lot, even for simulation at taxel level.
I personally don't have the time at the moment for looking into it. Anyway, if anyone is interested in this feature and willing to work on it I will be happy to share knowledge and know how. cc @robotology/codyco-developers @MoritzN89 @robertocalandra
We currently have some ongoing effort (together with @MoritzN89) to create a plugin for gazebo/yarp that simulate the skin (see https://github.com/robotology/icub-main/issues/93). So far the results are positive and we can simulate contacts on the whole upper-body skin (with a simple linear activation function).
I would generally be interested in collaborating about this topic as I think that it is an important feature also within the CoDyCo project. Anyway, we aim to publish a first release of our code for the end of March.
:+1: @robertocalandra I think that also @jeljaik could be interested in collaborating but definitively not before the IROS deadline.
Hi @robertocalandra, as is probably apparent from this thread, I'm also keen on this enhancement. Recently, I added the first version of such enhancement to the old icubSim: http://eris.liralab.it/wiki/Simulator_README#TOUCH_SENSORS: see Whole-body skin emulation section. I also provided emulation of the standard skin ports, such that we can use the existing Guis. Illustration videos are here: https://www.dropbox.com/sh/vw3y6jum6wfbmhk/AAA2PM4YmSAfC_fIRt4cPRMba?dl=0 But the resolution is minimal - so far whole skin parts get activated.
Anyway, we are looking forward to your progress and please let us know if we can help!
@robertocalandra Really cool. Even if it is in primitive form, the easy way to avoid integration problems in the future is to directly develop your plugin in the gazebo-yarp-plugins
repo (perhaps in a new branch). If there are integration problems it is much easier to catch them at early development phases, while fixing them in a finished software can be much more cumbersome.
If you agree, I can add you and @MoritzN89 to this repo (i.e. to get writing access to the repo). When the plugin will be ready, we can merge it in the master branch.
Following up on the HAPTIX and Silvio's post, someone apparently well informed about the project, Nate Koenig, replied to my post in ROS Robot Skin Special Interest Group (https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!forum/ros-sig-robot-skin) with the following info: " There are plans to make this available. You can install and run everything right now, with the caveat that you'll have to install from source.
Here are the dependencies: a. https://bitbucket.org/osrf/gazebo (default branch) b. https://bitbucket.org/osrf/handsim (default branch, plus the open pull requests) c. https://bitbucket.org/osrf/haptix-comm (default branch) d. https://bitbucket.org/ignitionrobotics/ign-transport (default branch)
Tutorials: http://gazebosim.org/haptix/tutorials Debians should be generated mid to late next week. Enjoy, and feedback is most welcome."
Hi all, a brief follow up. The student project is now terminated and at http://www.ausy.tu-darmstadt.de/Research/SkinGazeboYarpPlugin you can find the code developed and the final report. We currently do not plan further work in this direction (mostly due to lack of manpower) but I believe that in the long term it would be a very important development for the iCub community to have a fully functional and realistic skin simulation. Cheers
Nice work! Do you think you can ask the student the extra bit of work required to upload it to github/robotology?
I will ask, but since the project is over it is up to them :)
edit: I asked them.
In the meantime, I made some progress in skin emulation in the old iCub Simulator, best illustrated by this video: link (Employing doubleTouch code by @alecive) Note that this is not more than emulation - collisions are physically (in ODE physics) detected with the skin covers as as whole (e.g. 1 for whole forearm). Then using the coordinates of the collision and doing the coordinate transformations to link FoR, they can then be compared with taxel positions in the real robot. Because this is subject to different inaccuracies, we did a rough "tesselation" only, giving a resolution of roughly min. 2 triangles activated. See the Simulator readme for instructions how to use it.
The "emulation infrastructure" that opens the skin and skin_event ports can be partly reused if the taxels were implemented physically like in the Darmstadt solution. Btw., the method of @MoritzN89 / @robertocalandra , was performing fast enough? Are there any visualizations available?
Uhm, this issues seems a bit starving... :spaghetti: What is the current status of this issue? Having the skin emulation on gazebo would be awesome!
Hi @randaz81,
Sorry, but on my side things are completely blocked: I currently do not have any time to push this topic any further. The code is available online (http://www.ausy.tu-darmstadt.de/Research/SkinGazeboYarpPlugin) so if you find any volunteer he/she might continue from there.
Best
With the help of a student, the skin emulation on the old icubSim
is completed (part of icub-main
already, see video) for the hands and forearms with a roughly 2-triangle resolution.
It would be nice to have this in gazebo too - either with "physical" sensors or emulated from the collision coordinates. Maybe we can sit down on this once at the IFI day or so with @traversaro and @randaz81?
Dear all, our lab in Rome would be very much interested in having the skin functionality in Gazebo for our GOAL-Robots project. Are there any updates or plans to implement the skin in the near future?
Hi @emilio-cartoni , currently there is no one at IIT actively working on this feature. If you are interested in working on this, we would be happy to give you indications about possible way on how to implement this feature.
@robertocalandra Dear Roberto, we would like to continue your work so that we can add the hand skin as well. I see that in the code downloaded from http://www.ausy.tu-darmstadt.de/Research/SkinGazeboYarpPlugin there is no licence file. How would you like your work to be acknowledged? If you upload it to GitHub we could officially fork it from there; then, when it's ready for the gazebo-yarp-plugins repository I'll ask IIT for a pull request.
Uploaded here: https://github.com/robertocalandra/icub-gazebo-skin I think that a normal citation to the github repo is sufficient, alternatively you could cite the final report of the project linked in the repository.
Anyway, best of luck with the project :)
Thanks Roberto! :+1:
Hello @robertocalandra , we're also trying along these lines with @martinj8649 (even though now primarily for Nao in Gazebo), but are experiencing quite a slowdown when many sensors are used (e.g., 10 and more). Do you recall if your students could run reasonably fast on a normal laptop or what was it like? Is there a video of the system in operation?
I vaguely remember that it was slower then real-time, but it was long time ago so I don't remember any other detail.
Hello, what is the current state of the development of a skin emulation? Is there a working plugin for the full right arm? This would be very interesting for us in Chemnitz.
Hi @torstenfol ! As far as I know there is no plugin to simulate the iCub skin out of the box in Gazebo.
man, this was a really old issue!!
CC @martinj8649 @matejhof
man, this was a really old issue!!
Recently during a meeting a lab member that will not be mentioned commented an issue in this repo I was explaining by simply saying: "Interesting. When you opened that issue, I was still in high school." :D