Physics

Physics

Simumatik uses a physics engine so it is possible to describe the collision shapes and dynamics of the components. In addition, the engine allows some extra features such as raycasting (useful to model sensors) or force application (blow effect). It is very important to remember that components can be static (mass=0) or dynamic (mass>0). Static components won’t move even if they detect a collision.

Inertial

Use default values and modify the mass when necessary. The mass value should be between 0.05 and 1. Try to avoid big mass differences (x2-3) between connected links and even consider the components with which it will interact.

Components can have one or more links, allowing to build multibody components which should be connected using joints, such as robots. Unlike other platforms, Simumatik allows connecting links forming a loop. Tru to reduce the amount of links as much as possible, for example, adding more than one degree of freedom to a joint.

Joint

Explain when to use joints vs visuals (TODO)

  • Axis: Fixed joints and several degrees of freedom

  • Limits: Effort and velocity

  • Joint_motor: (TODO)

  • Joint_sensor: (TODO)

Collisions Shape

Collisions are handled with collision shapes that are separate from the 3D-model. As with the 3D-mesh, the collision shape should be kept as simple as possible for performance reasons. It is possible to use the 3D-mesh as a collision model, but it is preferred to use specific shapes.

  • Try to approximate the collision with one or several basic geometries found in Simumatik

  • If the shape can be approximated with a convex shape, use the simplest GLB as possible and activate the as_convex_hull flag.

  • Another approach is to use a GLB that is split in parts that are already optimized (basic geometries or simple convex shapes)

  • Finally, the most expensive is to use any glb and activate as_triangle_mesh (but works just for static objects). Be careful with shapes with a big amount of triangles.

Sensor

It is possible to use the physics engine to create raycasts and detect nearby components to model sensors. It is recommended to reduce the amount of rays as much as possible and define the collision_tag as specific as possible to narrow the potential detecting components.

Locker

This element allows attaching another link to the actual link when it is detected by the raycasts. It is a useful and computationally cheap way to implement grippers for example.