Go to the documentation of this file.00001 #include "my_map_checker_alg_node.h"
00002 
00003 
00004 MyMapCheckerAlgNode::MyMapCheckerAlgNode(void) :
00005   algorithm_base::IriBaseAlgorithm<MyMapCheckerAlgorithm>()
00006 {
00007   
00008   this->loop_rate_ = 0.1;
00009         this->public_node_handle_.getParam("force_map_path", force_map_path_);
00010         cout << "path = " << force_map_path_ << endl;
00011         if ( !pred_.read_force_map(  force_map_path_.c_str() ) )
00012         {
00013                 ROS_WARN("Could not read map force file !!!");
00014         }
00015         pred_.get_map_params( min_x_, max_x_, min_y_, max_y_, resolution_, map_number_x_, map_number_y_);
00016 
00017   
00018   this->force_map_publisher_ = this->public_node_handle_.advertise<visualization_msgs::MarkerArray>("force_map", 100);
00019   
00020   
00021   
00022   
00023   
00024   
00025   
00026   
00027   
00028   
00029         force_marker_.ns =  "force_map";
00030         force_marker_.type = visualization_msgs::Marker::ARROW;
00031         force_marker_.action = visualization_msgs::Marker::ADD;
00032         force_marker_.lifetime = ros::Duration(10.0f);
00033         force_marker_.scale.x = 0.1;
00034         force_marker_.scale.y = 0.15;
00035         force_marker_.color.a = 1.0;
00036         force_marker_.color.r = 0.0;
00037         force_marker_.color.g = 0.0;
00038         force_marker_.color.b = 1.0;
00039         force_marker_.header.frame_id = "/map";
00040 
00041         obstacle_marker_.ns =  "force_map";
00042         obstacle_marker_.type = visualization_msgs::Marker::CUBE;
00043         obstacle_marker_.action = visualization_msgs::Marker::ADD;
00044         obstacle_marker_.lifetime = ros::Duration(10.0f);
00045         obstacle_marker_.scale.x = 0.2;
00046         obstacle_marker_.scale.y = 0.2;
00047         obstacle_marker_.scale.z = 0.2;
00048         obstacle_marker_.color.a = 1.0;
00049         obstacle_marker_.color.r = 1.0;
00050         obstacle_marker_.color.g = 0.0;
00051         obstacle_marker_.color.b = 0.0;
00052         obstacle_marker_.header.frame_id = "/map";
00053 
00054 }
00055 
00056 MyMapCheckerAlgNode::~MyMapCheckerAlgNode(void)
00057 {
00058   
00059 }
00060 
00061 void MyMapCheckerAlgNode::mainNodeThread(void)
00062 {
00063   
00064   
00065 
00066         geometry_msgs::Point ros_point;
00067         Sforce map_force;
00068         force_marker_.header.stamp = ros::Time::now();
00069         MarkerArray_msg_.markers.clear();
00070 
00071 
00072         for(unsigned int i = 0; i< map_number_x_; i+=3)
00073         {
00074                 for(unsigned int j = 0; j< map_number_y_; j+=3)
00075                 {
00076                         
00077                         force_marker_.points.clear();
00078                         force_marker_.id = i * map_number_x_ + j;
00079                         ros_point.x = min_x_ + i * resolution_;
00080                         ros_point.y = min_y_ + j * resolution_;
00081                         force_marker_.points.push_back(  ros_point  );
00082                         map_force = pred_.get_force_map(ros_point.x , ros_point.y);
00083                         ros_point.x += 0.1*map_force.fx;
00084                         ros_point.y += 0.1*map_force.fy;
00085                         force_marker_.points.push_back(  ros_point  );
00086                         MarkerArray_msg_.markers.push_back(  force_marker_  );
00087                         
00088                         
00089 
00090 
00091 
00092 
00093 
00094 
00095 
00096 
00097 
00098                 }
00099         }
00100 
00101 
00102 
00103 
00104 
00105 
00106 
00107 
00108 
00109 
00110 
00111 
00112   
00113   
00114   
00115 
00116   
00117   this->force_map_publisher_.publish(this->MarkerArray_msg_);
00118 
00119 }
00120 
00121 
00122 
00123 
00124 
00125 
00126 
00127 
00128 
00129 void MyMapCheckerAlgNode::node_config_update(Config &config, uint32_t level)
00130 {
00131   this->alg_.lock();
00132         force_map_path_ = config.force_map_path;
00133   this->alg_.unlock();
00134 }
00135 
00136 void MyMapCheckerAlgNode::addNodeDiagnostics(void)
00137 {
00138 }
00139 
00140 
00141 int main(int argc,char *argv[])
00142 {
00143   return algorithm_base::main<MyMapCheckerAlgNode>(argc, argv, "my_map_checker_alg_node");
00144 }