Dynamic reconfigure C++ boost::bind error
Hello everyone, I am working on ROS kinetic on Ubuntu 16.04. Today I have decided to implement the dynamic reconfigure in my node ROS in order to tune some parameters by dynamically change them instead than running each time my code to different values. I have followed the easy ROS tutorial in order to understand the basic functioning and now I'm trying to implement it in my code.
Basically I have my main file which is called main_ground_plan_fit.cpp:
#include <ros/ros.h>
#include "groundPlanFit.cpp"
int main(int argc, char **argv)
{
ros::init(argc, argv, "ground_plan_fit");
dynamic_reconfigure::Server<ground_plan_fit::ParametersConfig> server;
dynamic_reconfigure::Server<ground_plan_fit::ParametersConfig>::CallbackType f;
f = boost::bind(&ground_plan_fit::groundPlanFit::parametersCallback, _1, _2);
server.setCallback(f);
ros::NodeHandle node;
ros::NodeHandle priv_nh("~");
ground_plan_fit::groundPlanFit class_object(node,priv_nh);
ros::spin();
return 0;
}
The other file is the one including all my node functionalities including the node handler and the aforementioned callback to the parameters configurator which is called groundPlanFit.cpp:
// Includes and defines`
namespace ground_plan_fit{
groundPlanFit::groundPlanFit(ros::NodeHandle ndoe, ros::NodeHandle private_nh){
// Get parameters, publishers and subscriber definition with callback invocation
}
void groundPlanFit::parametersCallback(ground_plan_fit::ParametersConfig &config, uint32_t level) {
ROS_INFO("Reconfigure Request: %d %f",
config.int_param, config.double_param);
}
}
Th problem is that when I try to compile I receive the error hereafter that I'm not understanding correctly:
In file included from /usr/include/boost/bind.hpp:22:0,
from /opt/ros/kinetic/include/ros/publisher.h:35,
from /opt/ros/kinetic/include/ros/node_handle.h:32,
from /opt/ros/kinetic/include/ros/ros.h:45,
from /home/sivalab/lidar_perception/stage/perception_certitude/src/ground_plan_fit/src/main_ground_plan_fit.cpp:1:
/usr/include/boost/bind/bind.hpp: In instantiation of ‘struct boost::_bi::result_traits<boost::_bi::unspecified, void (ground_plan_fit::groundPlanFit::*)(ground_plan_fit::ParametersConfig&, unsigned int)>’:
/usr/include/boost/bind/bind.hpp:883:48: required from ‘class boost::_bi::bind_t<boost::_bi::unspecified, void (ground_plan_fit::groundPlanFit::*)(ground_plan_fit::ParametersConfig&, unsigned int), boost::_bi::list2<boost::arg<1>, boost::arg<2> > >’
/home/sivalab/lidar_perception/stage/perception_certitude/src/ground_plan_fit/src/main_ground_plan_fit.cpp:11:78: required from here
/usr/include/boost/bind/bind.hpp:69:37: error: ‘void (ground_plan_fit::groundPlanFit::*)(ground_plan_fit::ParametersConfig&, unsigned int)’ is not a class, struct, or union type
typedef typename F::result_type type;
^
In file included from /usr/include/boost/function/detail/maybe_include.hpp:23:0,
from /usr/include/boost/function/detail/function_iterate.hpp:14,
from /usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp:57,
from /usr/include/boost/function.hpp:64,
from /opt/ros/kinetic/include/ros/forwards.h:40,
from /opt/ros/kinetic/include/ros/common.h:37,
from /opt/ros/kinetic/include/ros/ros.h:43,
from /home/sivalab/lidar_perception/stage/perception_certitude/src/ground_plan_fit/src/main_ground_plan_fit.cpp:1:
/usr/include/boost/function/function_template.hpp: In instantiation of ‘static void boost::detail::function::void_function_obj_invoker2<FunctionObj, R, T0, T1>::invoke(boost::detail::function::function_buffer&, T0, T1) [with FunctionObj = boost::_bi::bind_t<boost::_bi::unspecified, void (ground_plan_fit::groundPlanFit::*)(ground_plan_fit::ParametersConfig&, unsigned int), boost::_bi::list2<boost::arg<1>, boost::arg<2> > >; R = void; T0 = ground_plan_fit::ParametersConfig& ...