Class ObstacleGeometry
Defined in File pf_obstacle_geometry.hpp
Inheritance Relationships
Derived Types
public pfield::BoxGeometry(Class BoxGeometry)public pfield::CapsuleGeometry(Class CapsuleGeometry)public pfield::CylinderGeometry(Class CylinderGeometry)public pfield::EllipsoidGeometry(Class EllipsoidGeometry)public pfield::MeshGeometry(Class MeshGeometry)public pfield::SphereGeometry(Class SphereGeometry)
Class Documentation
-
class ObstacleGeometry
Abstract base class for obstacle geometry.
Each concrete subclass fully describes one obstacle shape (Sphere, Box, Cylinder, Ellipsoid, Capsule, Mesh) and implements the geometry-specific operations needed by PotentialFieldObstacle: signed-distance / normal computation, half-dimension queries, Coal shape construction, and control- point generation.
All operations that depend on the world-frame obstacle pose (position + orientation) are passed in as parameters so that the geometry object remains pose-independent and can be reused after a pose update.
Subclassed by pfield::BoxGeometry, pfield::CapsuleGeometry, pfield::CylinderGeometry, pfield::EllipsoidGeometry, pfield::MeshGeometry, pfield::SphereGeometry
Public Functions
-
virtual ~ObstacleGeometry() = default
-
virtual ObstacleType getType() const = 0
Returns the ObstacleType discriminator for this geometry.
-
virtual std::vector<double> asVector() const = 0
Returns a vector of the geometry’s defining parameters.
The vector layout is type-specific: Sphere → {radius} Box → {length, width, height} Cylinder → {radius, height} Ellipsoid → {semi_x, semi_y, semi_z} Capsule → {radius, height} Mesh → {length, width, height} (bounding-box dims or zeros)
-
virtual Eigen::Vector3d halfDimensions(const Eigen::Vector3d &meshScale) const = 0
Returns the half-dimensions of the obstacle’s axis-aligned bounding box.
Used for broad-phase influence-zone checks.
- Parameters:
meshScale – Scale of the mesh resource (used only by MeshGeometry; ignored by all other types).
-
virtual void computeSignedDistanceAndNormal(const Eigen::Vector3d &localPoint, const Eigen::Quaterniond &obstacleOrientation, double &signedDistance, Eigen::Vector3d &normal) const = 0
Computes the signed distance and outward surface normal from a point expressed in the obstacle’s local frame.
The caller is responsible for transforming the world-frame query point into the obstacle’s local frame before calling this method.
- Parameters:
localPoint – [in] Query point in the obstacle’s local frame.
obstacleOrientation – [in] World-frame orientation of the obstacle (quaternion), used to rotate the computed normal back to world coordinates.
signedDistance – [out] Signed distance to the obstacle surface (negative if inside, positive if outside).
normal – [out] Outward unit normal in world coordinates at the closest surface point.
-
virtual std::shared_ptr<coal::CollisionGeometry> buildCoalGeometry(const Eigen::Vector3d &obstaclePosition, const Eigen::Quaterniond &obstacleOrientation, coal::Transform3s &coalTransform) const = 0
Builds the Coal collision geometry for this obstacle.
The returned shared_ptr is used to construct a coal::CollisionObject. The caller is responsible for supplying the correct world-frame transform.
- Parameters:
obstaclePosition – World-frame position of the obstacle origin.
obstacleOrientation – World-frame orientation of the obstacle.
coalTransform – [out] The Coal transform that should be passed to coal::CollisionObject together with the returned geometry. For most types this equals the obstacle pose, but OBB-fitted shapes (Box, Capsule) may shift and rotate it to the OBB center.
- Returns:
Shared pointer to the Coal collision geometry.
-
virtual coal::Transform3s computeUpdatedCoalTransform(const Eigen::Vector3d &obstaclePosition, const Eigen::Quaterniond &obstacleOrientation) const = 0
Computes the world-frame Coal transform to use when updating a cached collision object’s pose.
For most types this simply encodes (obstaclePosition, obstacleOrientation). OBB-fitted types (Box, Capsule) adjust for the centroid offset and PCA rotation baked into the Coal object at construction time.
- Parameters:
obstaclePosition – New world-frame position of the obstacle.
obstacleOrientation – New world-frame orientation of the obstacle.
- Returns:
The Coal transform to apply to the cached collision object.
-
virtual bool operator==(const ObstacleGeometry &other) const = 0
Equality comparison — only types with the same concrete class and parameters are equal.
-
inline bool operator!=(const ObstacleGeometry &other) const
-
virtual std::unique_ptr<ObstacleGeometry> clone() const = 0
Deep-copy factory, so PotentialFieldObstacle can clone its geometry.
Protected Functions
-
ObstacleGeometry() = default
-
ObstacleGeometry(const ObstacleGeometry&) = default
-
ObstacleGeometry &operator=(const ObstacleGeometry&) = default
-
virtual ~ObstacleGeometry() = default