![]() |
Tesseract 0.28.4
|
Tesseract supports primitive shapes, meshes, convex hulls, signed distance fields, and octrees for collision and visualization.
The tesseract_geometry package provides the geometry types used throughout Tesseract for both visualization and collision checking. Each geometry type can be attached to links in the scene graph and is used by the collision system.
Tesseract provides a comprehensive set of geometry types:
Analytically-defined shapes with exact representations:
| Shape | Description | Parameters |
|---|---|---|
| Box | Axis-aligned rectangular prism | width (x), height (y), depth (z) |
| Sphere | Perfect sphere | radius |
| Cylinder | Circular cylinder | radius, length |
| Cone | Circular cone | radius, length |
| Capsule | Cylinder with hemispherical end caps | radius, length |
| Plane | Infinite half-space | normal (a, b, c), offset (d) |
A volumetric, implicit geometry: the signed distance to a surface (negative inside) sampled on a regular axis-aligned grid over a local-frame domain. The grid is stored in a backend-neutral form (domain, per-axis dimensions, and the sampled distances); each collision backend transcodes it into its own native representation when the geometry is added to a contact manager — the Bullet discrete backend builds a btMiniSDF blob for btSdfCollisionShape. It enables true concave volumetric contact and signed-distance/gradient queries, and is the canonical way to use a distance field. Create one in-process from any distance function (analytic, sensor-fused, or a sampler wrapping another library such as OpenVDB) — discretized lazily on demand, or up front with the discrete factory — or load a serialized VDB FloatGrid. VDB import currently accepts one FloatGrid with an axis-aligned, uniform transform.
Note: Only the Bullet discrete collision backend consumes a Signed Distance Field — it is concave, so it is not supported by FCL or the continuous/cast managers. This is distinct from the Gazebo "SDF" Simulation Description Format.
Volumetric representation using an octree data structure. Useful for representing point cloud data (e.g., from depth cameras) as collision geometry.
Octree cells can be represented as different shapes:
Octree::SubType::BOX — Each cell is a boxOctree::SubType::SPHERE_INSIDE — Each cell is an inscribed sphereOctree::SubType::SPHERE_OUTSIDE — Each cell is a circumscribed sphereTip: Prune the octree before creating the Tesseract octree shape to simplify the collision geometry.
See the Creating Geometries Example for complete code demonstrating how to create each geometry type programmatically.
For loading meshes from files, see the mesh parsing utilities in the scene_graph package.
Geometry objects are assigned to links through Visual and Collision elements:
A key difference from MoveIt is how mesh files with multiple shapes are handled:
This is particularly important for complex parts where a single convex hull would be a poor approximation, but multiple convex hulls (one per sub-mesh) provide much better coverage.