markers and services which appear/disapear depending on some function calls
I am facing an issue with markers and services which appear/disapear depending on some function calls
Here is the setup
I have a node which is calling two classes:
ros::NodeHandle nh;
// create a costmap
costmap_2d_ros_ = new costmap_2d::Costmap2DROS("global_costmap", tfl_);
// Create a planner
planner_ = new hector_exploration_planner::HectorExplorationPlanner();
// Initialize the planner with the appropriate namespace
planner_->initialize("hector_exploration_planner",costmap_2d_ros_);
//setup parameters
setParams();
params_.nh_ = nh;
// create a service to explore frontiers + quadtree + Astar
exploration_plan_service_server_ = nh.advertiseService("get_exploration_path", &SimpleExplorationPlanner::explorationServiceCallback, this);
exploration_plan_pub_ = nh.advertise<nav_msgs::Path>("exploration_path", 2);
// exploration planner with RRT
nbvp::nbvPlanner<Eigen::Matrix<double, 4, 1> > rrt_planner("nbvplanner", planner_, params_);
When I call planner_->initialize(), I create some markers:
// initialize parameters
ros::NodeHandle private_nh_("~/" + name);
//ros::NodeHandle nh;
visualization_pub_ = private_nh_.advertise<visualization_msgs::Marker>("visualization_marker", 1);
visualization_astar_pub_ = private_nh_.advertise<visualization_msgs::Marker>("visualization_astar_marker", 1);
visualization_astar2_pub_ = private_nh_.advertise<visualization_msgs::Marker>("visualization_astar_goal_marker", 1);
The class nbvp::nbvPlanner when it is called creates a marker and advertize a service (nh is passed by the node) :
params_.inspectionPath_ = params.nh_.advertise<visualization_msgs::Marker>("inspectionPath", 1000);
plannerService_ = params.nh_.advertiseService("nbvplanner", &nbvp::nbvPlanner<stateVec>::plannerCallback, this);
Now here is what happens:
when I do not call nbvp::nbvPlanner (marked as a comment), I can see on RVIZ the three makers published by planner_ everything work as expected.
BUT when I call nbvPlanner, two thinks (I did not expect) happen:
- the makers from planner_ do not appear anyomore on rviz
- the service created by nbvPlanner does not show up when I do a "rosservice list" BUT the marker "inspectionPath" is visible on RVIZ
I read and read again the documentation regarding ros nodeHandle and others but I still do not understand why such behavior. I miss something, for sure, but I do not have any clue. Does somebody out there can tell me what mistake i made?
Thank you
I am running ROS Kinetic on Ubuntu 16.04