You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Conception/drake-master/planning/unimplemented_collision_che...

69 lines
2.4 KiB

#pragma once
#include <memory>
#include <optional>
#include <string>
#include <vector>
#include "drake/planning/collision_checker.h"
#include "drake/planning/collision_checker_params.h"
namespace drake {
namespace planning {
/** A concrete collision checker implementation that throws an exception for
every virtual function hook. This might be useful for unit testing or for
deriving your own collision checker without providing for the full suite of
operations. */
class UnimplementedCollisionChecker : public CollisionChecker {
public:
/** Constructs a checker.
@param supports_parallel_checking will serve as the return value of the
CollisionChecker::SupportsParallelChecking() function. */
UnimplementedCollisionChecker(CollisionCheckerParams params,
bool supports_parallel_checking);
/** @name Does not allow copy, move, or assignment. */
/** @{ */
// N.B. The copy constructor is protected for use in implementing Clone().
UnimplementedCollisionChecker(UnimplementedCollisionChecker&&) = delete;
UnimplementedCollisionChecker& operator=(
const UnimplementedCollisionChecker&) = delete;
UnimplementedCollisionChecker& operator=(UnimplementedCollisionChecker&&) =
delete;
/** @} */
~UnimplementedCollisionChecker();
protected:
// To support Clone(), allow copying (but not move nor assign).
UnimplementedCollisionChecker(const UnimplementedCollisionChecker&);
std::unique_ptr<CollisionChecker> DoClone() const override;
void DoUpdateContextPositions(
CollisionCheckerContext* model_context) const override;
bool DoCheckContextConfigCollisionFree(
const CollisionCheckerContext&) const override;
std::optional<geometry::GeometryId> DoAddCollisionShapeToBody(
const std::string& group_name, const multibody::Body<double>& bodyA,
const geometry::Shape& shape,
const math::RigidTransform<double>& X_AG) override;
void DoRemoveAddedGeometries(
const std::vector<CollisionChecker::AddedShape>& shapes) override;
RobotClearance DoCalcContextRobotClearance(const CollisionCheckerContext&,
double) const override;
std::vector<RobotCollisionType> DoClassifyContextBodyCollisions(
const CollisionCheckerContext&) const override;
int DoMaxContextNumDistances(const CollisionCheckerContext&) const override;
};
} // namespace planning
} // namespace drake