Go to the documentation of this file.00001
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
00038
00039 #include <ros/ros.h>
00040 #include <octomap_server/OctomapServer.h>
00041
00042 #define USAGE "\nUSAGE: octomap_server <map.[bt|ot]>\n" \
00043 " map.bt: inital octomap 3D map file to read\n"
00044
00045 using namespace octomap_server;
00046
00047 int main(int argc, char** argv){
00048 ros::init(argc, argv, "octomap_server");
00049 const ros::NodeHandle& private_nh = ros::NodeHandle("~");
00050 std::string mapFilename(""), mapFilenameParam("");
00051
00052 if (argc > 2 || (argc == 2 && std::string(argv[1]) == "-h")){
00053 ROS_ERROR("%s", USAGE);
00054 exit(-1);
00055 }
00056
00057 OctomapServer server;
00058 ros::spinOnce();
00059
00060 if (argc == 2){
00061 mapFilename = std::string(argv[1]);
00062 }
00063
00064 if (private_nh.getParam("map_file", mapFilenameParam)) {
00065 if (mapFilename != "") {
00066 ROS_WARN("map_file is specified by the argument '%s' and rosparam '%s'. now loads '%s'", mapFilename.c_str(), mapFilenameParam.c_str(), mapFilename.c_str());
00067 } else {
00068 mapFilename = mapFilenameParam;
00069 }
00070 }
00071
00072 if (mapFilename != "") {
00073 if (!server.openFile(mapFilename)){
00074 ROS_ERROR("Could not open file %s", mapFilename.c_str());
00075 exit(1);
00076 }
00077 }
00078
00079 try{
00080 ros::spin();
00081 }catch(std::runtime_error& e){
00082 ROS_ERROR("octomap_server exception: %s", e.what());
00083 return -1;
00084 }
00085
00086 return 0;
00087 }