I am starting to develop robotics project which involves simulation (and maybe real world programs) of soft-body dynamics (for food processing) and clothes/garment handling (for textile industry or home service robots). It is known that soft-body dynamics and garment handling are two less explored areas of robotics and simulation, therefore I hope to make some development of (contribution to) projects that are involved. The following projects are involed:

  • Bullet physics engine - for dynamics
  • Gazebo - simulation environment
  • ROS - robot OS, I hope to use Universal Robot UR5 or UR10 arms and some grippers (not decided yet)
  • Orocos - for control algorithms

Initially I hope use "ROS INDIGO IGLOO PREINSTALLED VIRTUAL MACHINE" (from nootrix.com), but apparently I will have to make updates to the Bullet, Gazeboo, add new ROS stacks and so on.

The question is - how to organize such project? E.g. If I am updating Bullet physics engine with the new soft-body dynamics algorithm then what executable (so) files should I produce and where to put them into virtual machine? The similar question can be asked if I need to update Gazebo.

There seems to be incredibly large number of files. Is it right to change only some of them.

Sorry about such questions, but the sofware stack seems to be more complex than the robotics itself.


2 Answers 2


As far as I know, soft body simulation is not currently supported in Gazebo. See https://bitbucket.org/osrf/gazebo/issues/1422/soft-body-supoort-in-gazebo and http://answers.gazebosim.org/question/5129/status-of-bullets-soft-body-dynamics-integration/ .


You are right, it is a lot of files to deal with...

ROS, among other things, is a convention for developing large software systems. They say Robot Operating System but what they mean is Robot Software Build, Packaging, and Network Transparent Interprocess Communication System. RSBPNTICS does not roll off the tongue though...

ROS is not the best build and packaging system but it's got a decent amount of documentation and it's got 'robot' in the name. Read the ROS docs, do the tutorials, and after a little while you will start learning how to make small changes to large systems of software.

The basic process is that you grab the source code for the library or process that you want to modify and build it. You replace the system version with your version (there are lots of ways to do this, but what you don't do is delete the system version). And then you make the changes you want to the source code. Most source code libraries are managed with version control software like git or subversion and you will have the opportunity to use them to contribute your changes back to the original authors.

Understand that it will take learning and practice to develop enough experience where things start making sense. In the mean time, make friends with people that already have some experience to learn from and help you out along the way.

If you have time to look around at other things for a little bit before starting, check out rock-robotics, another robot software build & packaging system. Rock is arguably more closely integrated with Orocos. There are also several other frameworks devoted to robotics that you will find with a little searching.

You are correct in your assesment that the software stack is more complex than the robotics. But this is only because of the stack you've chosen. Depending on what exactly you are doing, it might be quicker and easier to just write it all from scratch.

I recommend against using a virtual machine unless you have to. It just adds a layer of stuff to deal with. Installing ROS on a machine, even building ROS from source, is easy enough. Ubuntu 14.04 for ROS Indigo. I prefer developing on a faster moving distro and use Archlinux where ROS is well supported via the AUR repository.

A comment on your list of tools... I don't think you've found the right simulation combination yet.

Bullet (a video game physics simulator by Sony where looks and speed are more important than accuracy) is not something I'd use. Bullet does have soft body support but check the equations and integration functions for accuracy before you use it.

As you look for a suitable simulator to build on, take a look at simbody. I don't think it has what you need but it is some of the most beautifully organized and commented code I've seen. Use it for inspiration.

Gazebo is only a (nice and useful) wrapper that actually prevents a lot of features of the underlying simulators to be used. Don't be afraid to use the simulators without gazebo.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.