00001 00002 /* 00003 * CollisionCheck.h 00004 * 00005 * Created on: Jan 18, 2012 00006 * Author: hess 00007 */ 00008 00009 #ifndef COLLISIONCHECK_H_ 00010 #define COLLISIONCHECK_H_ 00011 00012 #include <ros/ros.h> 00013 #include <vector> 00014 #include <string> 00015 #include <Eigen/Core> 00016 #include <arm_navigation_msgs/PlanningScene.h> 00017 #include <visualization_msgs/MarkerArray.h> 00018 #include <planning_environment/models/collision_models.h> 00019 using namespace std; 00020 00021 class CollisionCheck { 00022 00023 public: 00024 CollisionCheck(ros::NodeHandle& nh); 00025 ~CollisionCheck(); 00026 bool requestPlanningScene(); 00027 bool checkArmJointState(const std::vector<double>& arm_state, const std::string arm); 00028 bool checkJointStateRight(const std::vector<double>& arm_state); 00029 bool checkJointStateLeft(const std::vector<double>& arm_state); 00030 00031 //private: 00032 ros::NodeHandle nh_; 00033 bool planning_scene_avail_; 00034 visualization_msgs::MarkerArray arr; 00035 arm_navigation_msgs::PlanningScene scene_; 00036 ros::Publisher vis_marker_array_publisher_; 00037 ros::ServiceClient get_planning_scene_client_; 00038 planning_environment::CollisionModels* collision_models_; 00039 planning_models::KinematicState* state_; 00040 std::vector<std::string> left_arm_names; 00041 std::vector<std::string> left_joint_names; 00042 std::vector<std::string> right_arm_names; 00043 std::vector<std::string> right_joint_names; 00044 00045 }; 00046 00047 00048 00049 #endif /* COLLISIONCHECK_H_ */