Go to the documentation of this file.00001
00060
00061
00062
00063
00064 #include <ros/ros.h>
00065 #include <actionlib/client/simple_action_client.h>
00066 #include <actionlib/client/terminal_state.h>
00067
00068
00069 #include <cob_3d_mapping_msgs/SetPointMap.h>
00070
00071
00072 #include <pcl/io/pcd_io.h>
00073 #include <pcl/point_types.h>
00074 #include <pcl/conversions.h>
00075 #include <pcl_conversions/pcl_conversions.h>
00076
00077
00078 int main (int argc, char **argv)
00079 {
00080 if(argc<1) {
00081 ROS_ERROR("Please specify path to map file\nrosrun cob_env_model set_point_map myfile.pcd");
00082 return -1;
00083 }
00084 ros::init(argc, argv, "set_point_map");
00085
00086 ros::NodeHandle nh;
00087
00088 ROS_INFO("Waiting for service server to start.");
00089
00090 ros::service::waitForService("/point_map/set_map");
00091
00092 ROS_INFO("Server started, sending map.");
00093
00094
00095 cob_3d_mapping_msgs::SetPointMapRequest req;
00096
00097 pcl::PointCloud<pcl::PointXYZRGB> map;
00098 if(pcl::io::loadPCDFile(argv[1], map)!=0) {
00099 ROS_ERROR("Couldn't open pcd file. Sorry.");
00100 return -1;
00101 }
00102
00103 pcl::PCLPointCloud2 map2;
00104 pcl::toPCLPointCloud2(map, map2);
00105 sensor_msgs::PointCloud2 cloud_msg;
00106 pcl_conversions::fromPCL(map2, cloud_msg);
00107
00108 req.map.header.frame_id ="/map";
00109 cob_3d_mapping_msgs::SetPointMapResponse resp;
00110
00111 if (ros::service::call("/point_map/set_map", req,resp))
00112 {
00113 ROS_INFO("Service call finished.");
00114 }
00115 else
00116 ROS_INFO("[set point map]: Service call failed.");
00117
00118 return 0;
00119 }
00120