Ask Your Question

Revision history [back]

Depending on the fidelity you want to achieve and the link shapes of your robot, this might be hard to completely automate. I´d recommend giving either Blender or Meshlab a shot. Both allow generating convex hulls for meshes very easily. These generally have a much lower poly count than the original meshes and you can easily simplify them some more after convexification using Meshlab´s simplification filters. Using convex hull, you´ll always overestimate the colliding volume, which gives you a safety margin (but also can result in a reduction of collision-free workspace size if the convex hulls add too much volume). The arms and legs of this 3D printable Atlas model are an example of using convex hulls of the original (much more complicated) geometry.

The other viable option is specifying the collision geometry manually using primitives such as boxes and cylinders, but that is a much more involved manual process for most practical robot systems.

That´s the two practical approaches I performed so far at least, but I´m also interested in other ideas, so keep the answers coming ;)

Depending on the fidelity you want to achieve and the link shapes of your robot, this might be hard to completely automate. I´d recommend giving either Blender or Meshlab a shot. Both allow generating convex hulls for meshes very easily. These generally have a much lower poly count than the original meshes and you can easily simplify them some more after convexification using Meshlab´s simplification filters. Using convex hull, you´ll always overestimate the colliding volume, which gives you a safety margin (but also can result in a reduction of collision-free workspace size if the convex hulls add too much volume). The arms and legs of this 3D printable Atlas model are an example of using convex hulls of the original (much more complicated) geometry.

The other viable option is specifying the collision geometry manually using primitives such as boxes and cylinders, but that is a much more involved manual process for most practical robot systems.

That´s the two practical approaches I performed used so far at least, but I´m also interested in other ideas, so keep the answers coming ;)