Class CollisionDetector


  • public class CollisionDetector
    extends ProximityCalculatorCollision
    The CollisionDetector implements an efficient way of checking a
    complete frame tree for collisions.

    It relies on a BroadPhaseDetector to do initial filtering which removes obviously not
    colliding frame pairs.

    After the filtering the remaining frame pairs are tested for collision using an
    CollisionStrategy which is a narrow phase collision detector.

    The collision detector does not dictate a specific detection
    strategy or algorithm, instead it relies on the CollisionStrategy interface for
    the actual collision checking between two frames.

    Note: The collision detector is not thread safe and as such should not be used by multiple
    threads at a time.
    • Constructor Detail

      • CollisionDetector

        public CollisionDetector​(long cPtr,
                                 boolean cMemoryOwn)
      • CollisionDetector

        public CollisionDetector​(WorkCellPtr workcell)
        Collision detector for a workcell with only broad-phase collision checking.

        The default collision setup stored in the workcell is used for
        broad phase collision filtering as a static filter list.

        Notice that no narrow phase checking is performed.
        If broad-phase filter returns any frame-pairs, this will be taken as a collision.

        Parameters:
        workcell - [in] the workcell.
      • CollisionDetector

        public CollisionDetector​(WorkCellPtr workcell,
                                 CollisionStrategyPtr strategy)
        Collision detector for a workcell.

        The collision detector is initialized with the strategy .
        Notice that the collision detector will create and store models inside the strategy .

        The default collision setup stored in the workcell is used for
        broad phase collision filtering as a static filter list.

        Parameters:
        workcell - [in] the workcell.
        strategy - [in/out] the strategy for narrow-phase checking. The strategy will have
        models added to it.
      • CollisionDetector

        public CollisionDetector​(WorkCellPtr workcell,
                                 CollisionStrategyPtr strategy,
                                 ProximityFilterStrategyPtr filter)
        Collision detector for a workcell.
        Collision checking is done for the provided collision setup alone.

        Parameters:
        workcell - [in] the workcell.
        strategy - [in/out] the strategy for narrow-phase checking. The strategy will have
        models added to it.
        filter - [in] proximity filter used to cull or filter frame-pairs that are obviously
        not colliding
    • Method Detail

      • inCollision

        public boolean inCollision​(State state,
                                   CollisionDetector.CollisionDetectorQueryResult result,
                                   boolean stopAtFirstContact)
        Check the workcell for collisions.

        Parameters:
        state - [in] The state for which to check for collisions.
        result - [out] If non-NULL, the pairs of colliding frames are
        inserted in result.
        stopAtFirstContact - [in] If result is non-NULL and
        stopAtFirstContact is true, then only the first colliding pair is
        inserted in result. By default all colliding pairs are inserted.

        Returns:
        true if a collision is detected; false otherwise.
      • inCollision

        public boolean inCollision​(State state,
                                   CollisionDetector.CollisionDetectorQueryResult result)
        Check the workcell for collisions.

        Parameters:
        state - [in] The state for which to check for collisions.
        result - [out] If non-NULL, the pairs of colliding frames are
        inserted in result.


        Returns:
        true if a collision is detected; false otherwise.
      • inCollision

        public boolean inCollision​(State state)
        Check the workcell for collisions.

        Parameters:
        state - [in] The state for which to check for collisions.



        Returns:
        true if a collision is detected; false otherwise.
      • inCollision

        public boolean inCollision​(State state,
                                   ProximityData data)
        Check the workcell for collisions.
        Parameters:
        state - [in] The state for which to check for collisions.
        data - [in/out] Defines parameters for the collision check, the results and also
        enables caching inbetween calls to incollision
        Returns:
        true if a collision is detected; false otherwise.
      • inCollision

        public boolean inCollision​(State state,
                                   FramePairVector result,
                                   boolean stopAtFirstContact)
        Check the workcell for collisions.

        Parameters:
        state - [in] The state for which to check for collisions.
        result - [out] Where to store pairs of colliding frames.
        stopAtFirstContact - [in] If result is non-NULL and
        stopAtFirstContact is true, then only the first colliding pair is
        inserted in result. By default all colliding pairs are inserted.

        Returns:
        true if a collision is detected; false otherwise.
      • inCollision

        public boolean inCollision​(State state,
                                   FramePairVector result)
        Check the workcell for collisions.

        Parameters:
        state - [in] The state for which to check for collisions.
        result - [out] Where to store pairs of colliding frames.


        Returns:
        true if a collision is detected; false otherwise.
      • getCollisionStrategy

        public CollisionStrategyPtr getCollisionStrategy()
        Get the narrow-phase collision strategy.
        Returns:
        the strategy if set, otherwise NULL.
      • addGeometry

        public boolean addGeometry​(FramePtr frame,
                                   GeometryPtr geometry)
        Add Geometry associated to frame

        The current shape of the geometry is copied, hence later changes to geometry has no
        effect

        Overrides:
        addGeometry in class ProximityCalculatorCollision
        Parameters:
        frame - [in] Frame to associate geometry to
        geometry - [in] Geometry to add
        Returns:
        true if succesful, otherwise false
      • removeGeometry

        public void removeGeometry​(FramePtr frame,
                                   GeometryPtr geometry)
        Removes geometry from CollisionDetector

        The id of the geometry is used to match the collision model to the geometry.

        Overrides:
        removeGeometry in class ProximityCalculatorCollision
        Parameters:
        frame - [in] The frame which has the geometry associated
        geometry - [in] Geometry with the id to be removed
      • removeGeometry

        public void removeGeometry​(FramePtr frame,
                                   java.lang.String geometryId)
        Removes geometry from CollisionDetector

        The geometryId is used to match the collision model to the geometry.

        Overrides:
        removeGeometry in class ProximityCalculatorCollision
        Parameters:
        frame - [in] The frame which has the geometry associated
        geometryId - [in] Id of geometry to be removed
      • hasGeometry

        public boolean hasGeometry​(FramePtr frame,
                                   java.lang.String geometryId)
        Returns whether frame has an associated geometry with geometryId.
        Overrides:
        hasGeometry in class ProximityCalculatorCollision
        Parameters:
        frame - [in] Frame in question
        geometryId - [in] Id of the geometry
      • getGeometry

        public GeometryPtr getGeometry​(FramePtr frame,
                                       java.lang.String geometryId)
        Get the geometry from its ID
        Overrides:
        getGeometry in class ProximityCalculatorCollision
        Parameters:
        frame - [in] the frame of the geometry
        geometryId - [in] the ID of the geometry
        Returns:
        Pointer to the geometry