gazebo-yarp-plugins icon indicating copy to clipboard operation
gazebo-yarp-plugins copied to clipboard

skin emulation

Open matejhof opened this issue 11 years ago • 49 comments

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

matejhof avatar Jan 21 '14 14:01 matejhof

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 .

traversaro avatar Jan 21 '14 15:01 traversaro

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

traversaro avatar Apr 04 '14 07:04 traversaro

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.

matejhof avatar Feb 13 '15 17:02 matejhof

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

traversaro avatar Feb 13 '15 17:02 traversaro

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 .

traversaro avatar Feb 13 '15 17:02 traversaro

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

traversaro avatar Feb 13 '15 18:02 traversaro

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.

robertocalandra avatar Feb 16 '15 13:02 robertocalandra

:+1: @robertocalandra I think that also @jeljaik could be interested in collaborating but definitively not before the IROS deadline.

iron76 avatar Feb 16 '15 13:02 iron76

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!

matejhof avatar Feb 16 '15 14:02 matejhof

@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.

traversaro avatar Feb 16 '15 15:02 traversaro

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."

matejhof avatar Feb 16 '15 21:02 matejhof

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

robertocalandra avatar Apr 21 '15 13:04 robertocalandra

Nice work! Do you think you can ask the student the extra bit of work required to upload it to github/robotology?

lornat75 avatar Apr 21 '15 16:04 lornat75

I will ask, but since the project is over it is up to them :)

edit: I asked them.

robertocalandra avatar Apr 22 '15 12:04 robertocalandra

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?

matejhof avatar May 14 '15 12:05 matejhof

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!

randaz81 avatar Feb 11 '16 20:02 randaz81

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

robertocalandra avatar Feb 12 '16 10:02 robertocalandra

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?

matejhof avatar Jun 15 '16 13:06 matejhof

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?

emilio-cartoni avatar Mar 30 '17 07:03 emilio-cartoni

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.

traversaro avatar Mar 30 '17 08:03 traversaro

@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.

emilio-cartoni avatar Jul 03 '17 09:07 emilio-cartoni

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 :)

robertocalandra avatar Jul 03 '17 19:07 robertocalandra

Thanks Roberto! :+1:

emilio-cartoni avatar Jul 06 '17 09:07 emilio-cartoni

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?

matejhof avatar Jul 17 '17 10:07 matejhof

I vaguely remember that it was slower then real-time, but it was long time ago so I don't remember any other detail.

robertocalandra avatar Jul 18 '17 18:07 robertocalandra

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.

tfietzek avatar Apr 20 '20 15:04 tfietzek

Hi @torstenfol ! As far as I know there is no plugin to simulate the iCub skin out of the box in Gazebo.

traversaro avatar Apr 20 '20 15:04 traversaro

man, this was a really old issue!!

alecive avatar Apr 20 '20 21:04 alecive

CC @martinj8649 @matejhof

DanielePucci avatar Apr 20 '20 21:04 DanielePucci

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

traversaro avatar Apr 20 '20 22:04 traversaro