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
00037 #ifndef PLANNING_ENVIRONMENT_MODELS_COLLISION_MODELS_
00038 #define PLANNING_ENVIRONMENT_MODELS_COLLISION_MODELS_
00039
00040 #include "planning_environment/models/robot_models.h"
00041 #include <collision_space/environment.h>
00042 #include <motion_planning_msgs/OrderedCollisionOperations.h>
00043
00044 namespace planning_environment
00045 {
00046
00049 class CollisionModels : public RobotModels
00050 {
00051 public:
00052
00053 CollisionModels(const std::string &description, double scale, double padd) : RobotModels(description), scale_(scale), padd_(padd)
00054 {
00055 loadCollision(group_link_union_);
00056 }
00057
00058 CollisionModels(const std::string &description, const std::vector<std::string> &links, double scale, double padd) : RobotModels(description), scale_(scale), padd_(padd)
00059 {
00060 loadCollision(links);
00061 }
00062
00063 CollisionModels(const std::string &description) : RobotModels(description)
00064 {
00065 loadParams();
00066 loadCollision(group_link_union_);
00067 }
00068
00069 CollisionModels(const std::string &description, const std::vector<std::string> &links) : RobotModels(description)
00070 {
00071 loadParams();
00072 loadCollision(links);
00073 }
00074
00075 virtual ~CollisionModels(void)
00076 {
00077 }
00078
00080 virtual void reload(void)
00081 {
00082 RobotModels::reload();
00083 ode_collision_model_.reset();
00084
00085 loadCollision(group_link_union_);
00086 }
00087
00089 const boost::shared_ptr<collision_space::EnvironmentModel> &getODECollisionModel(void) const
00090 {
00091 return ode_collision_model_;
00092 }
00093
00095
00096
00097
00098
00099
00101 double getScale(void)
00102 {
00103 return scale_;
00104 }
00105
00107 double getPadding(void)
00108 {
00109 return padd_;
00110 }
00111
00112 void getDefaultOrderedCollisionOperations(std::vector<motion_planning_msgs::CollisionOperation> &self_collision)
00113 {
00114 self_collision = default_collision_operations_;
00115 }
00116
00117 protected:
00118
00119 void loadParams();
00120 void loadCollision(const std::vector<std::string> &links);
00121 void setupModel(boost::shared_ptr<collision_space::EnvironmentModel> &model, const std::vector<std::string> &links);
00122
00123 boost::shared_ptr<collision_space::EnvironmentModel> ode_collision_model_;
00124
00125
00126 double scale_;
00127 double padd_;
00128 std::vector<double> boundingPlanes_;
00129 std::vector<motion_planning_msgs::CollisionOperation> default_collision_operations_;
00130 };
00131
00132
00133 }
00134
00135 #endif
00136