Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #ifndef MOVEIT_COLLISION_DETECTION_COLLISION_WORLD_
00038 #define MOVEIT_COLLISION_DETECTION_COLLISION_WORLD_
00039
00040 #include <boost/utility.hpp>
00041
00042 #include <moveit/collision_detection/collision_matrix.h>
00043 #include <moveit/collision_detection/collision_robot.h>
00044 #include <moveit/collision_detection/world.h>
00045
00047 namespace collision_detection
00048 {
00049
00053 class CollisionWorld : private boost::noncopyable
00054 {
00055 public:
00056
00057 CollisionWorld();
00058
00059 explicit CollisionWorld(const WorldPtr& world);
00060
00063 CollisionWorld(const CollisionWorld &other, const WorldPtr& world);
00064
00065 virtual ~CollisionWorld()
00066 {
00067 }
00068
00069
00070
00071
00072
00078 virtual void checkCollision(const CollisionRequest &req,
00079 CollisionResult &res,
00080 const CollisionRobot &robot,
00081 const robot_state::RobotState &state) const;
00082
00089 virtual void checkCollision(const CollisionRequest &req,
00090 CollisionResult &res,
00091 const CollisionRobot &robot,
00092 const robot_state::RobotState &state,
00093 const AllowedCollisionMatrix &acm) const;
00094
00102 virtual void checkCollision(const CollisionRequest &req,
00103 CollisionResult &res,
00104 const CollisionRobot &robot,
00105 const robot_state::RobotState &state1,
00106 const robot_state::RobotState &state2) const;
00107
00116 virtual void checkCollision(const CollisionRequest &req,
00117 CollisionResult &res,
00118 const CollisionRobot &robot,
00119 const robot_state::RobotState &state1,
00120 const robot_state::RobotState &state2,
00121 const AllowedCollisionMatrix &acm) const;
00122
00130 virtual void checkRobotCollision(const CollisionRequest &req,
00131 CollisionResult &res,
00132 const CollisionRobot &robot,
00133 const robot_state::RobotState &state) const = 0;
00134
00142 virtual void checkRobotCollision(const CollisionRequest &req,
00143 CollisionResult &res,
00144 const CollisionRobot &robot,
00145 const robot_state::RobotState &state,
00146 const AllowedCollisionMatrix &acm) const = 0;
00147
00155 virtual void checkRobotCollision(const CollisionRequest &req,
00156 CollisionResult &res,
00157 const CollisionRobot &robot,
00158 const robot_state::RobotState &state1,
00159 const robot_state::RobotState &state2) const = 0;
00160
00169 virtual void checkRobotCollision(const CollisionRequest &req,
00170 CollisionResult &res,
00171 const CollisionRobot &robot,
00172 const robot_state::RobotState &state1,
00173 const robot_state::RobotState &state2,
00174 const AllowedCollisionMatrix &acm) const = 0;
00175
00182 virtual void checkWorldCollision(const CollisionRequest &req,
00183 CollisionResult &res,
00184 const CollisionWorld &other_world) const = 0;
00185
00192 virtual void checkWorldCollision(const CollisionRequest &req,
00193 CollisionResult &res,
00194 const CollisionWorld &other_world,
00195 const AllowedCollisionMatrix &acm) const = 0;
00196
00200 virtual double distanceRobot(const CollisionRobot &robot,
00201 const robot_state::RobotState &state) const = 0;
00202
00207 virtual double distanceRobot(const CollisionRobot &robot,
00208 const robot_state::RobotState &state,
00209 const AllowedCollisionMatrix &acm) const = 0;
00210
00212 virtual double distanceWorld(const CollisionWorld &world) const = 0;
00213
00215 virtual double distanceWorld(const CollisionWorld &world,
00216 const AllowedCollisionMatrix &acm) const = 0;
00220 virtual void setWorld(const WorldPtr& world);
00221
00223 const WorldPtr& getWorld()
00224 {
00225 return world_;
00226 }
00227
00229 const WorldConstPtr& getWorld() const
00230 {
00231 return world_const_;
00232 }
00233
00234 typedef World::ObjectPtr ObjectPtr;
00235 typedef World::ObjectConstPtr ObjectConstPtr;
00236
00237 private:
00238 WorldPtr world_;
00239 WorldConstPtr world_const_;
00240 };
00241
00242 typedef boost::shared_ptr<CollisionWorld> CollisionWorldPtr;
00243 typedef boost::shared_ptr<const CollisionWorld> CollisionWorldConstPtr;
00244 }
00245
00246 #endif