Hi @girishkumar.kannan
Thanks for your advices!
Now I can run my service server and action without problems.
After a long time of searching I found how create a action_client with OOP and this made me doubt.
I try to create a action_client and a publisher<cmd_vel> subscriber to advance and follow the wall meanwhile the action_server sends the feedback (current_distance)
#include <mantain_distance_cpp/robot.hpp>
#include <ros/ros.h>
#include <actionlib/client/simple_action_client.h>
using namespace actionlib_tutorials;
typedef actionlib::SimpleActionClient<odom_record_cpp::OdomRecordAction> Client;
class ActionClient
{
public:
ActionClient() : ac("client_record", true)
{
ROS_INFO("Waiting for action server to start.");
ac.waitForServer();
ROS_INFO("Action server started, sending goal.");
}
void ac_start()
{
odom_record_cpp::OdomRecordGoal goal;
// Need boost::bind to pass in the 'this' pointer
ac.sendGoal(goal,
boost::bind(&ActionClient::doneCb, this, _1, _2),
Client::SimpleActiveCallback(),
Client::SimpleFeedbackCallback());
}
void doneCb(
const actionlib::SimpleClientGoalState &state,
const odom_record_cpp::OdomRecordResultConstPtr &result) {
ROS_INFO("[State Result]: %s", state.toString().c_str());
ROS_INFO("The Action has been completed");
// ros::shutdown();
}
private:
Client ac;
};
int main (int argc, char **argv)
{
ros::init(argc, argv, "Test_OdomRecord_Client");
ActionClient my_node;
my_node.ac_start();
ros::spin();
return 0;
}
Example: actionlib_tutorials/Tutorials/Writing a Callback Based Simple Action Client - ROS Wiki
I’m trying to compile and returns an error that I don’t understand
user:~/catkin_ws$ catkin_make --only-pkg-with-deps mantain_distance_cpp
Base path: /home/user/catkin_ws
Source space: /home/user/catkin_ws/src
Build space: /home/user/catkin_ws/build
Devel space: /home/user/catkin_ws/devel
Install space: /home/user/catkin_ws/install
Whitelisted packages: find_wall_cpp, mantain_distance_cpp
####
#### Running command: "make cmake_check_build_system" in "/home/user/catkin_ws/build"
####
####
#### Running command: "make -j8 -l8" in "/home/user/catkin_ws/build"
####
[ 0%] Built target _find_wall_cpp_generate_messages_check_deps_FindWall
[ 0%] Built target rosgraph_msgs_generate_messages_py[ 0%] Built target rosgraph_msgs_generate_messages_eus
[ 0%] Built target roscpp_generate_messages_lisp
[ 0%] Built target roscpp_generate_messages_nodejs
[ 0%] Built target roscpp_generate_messages_py
[ 0%] Built target rosgraph_msgs_generate_messages_nodejs[ 0%] Built target rosgraph_msgs_generate_messages_lisp
[ 0%] Built target roscpp_generate_messages_eus
[ 0%] Built target roscpp_generate_messages_cpp
[ 0%] Built target sensor_msgs_generate_messages_cpp
[ 0%] Built target geometry_msgs_generate_messages_lisp
[ 0%] Built target nav_msgs_generate_messages_lisp
[ 0%] Built target nav_msgs_generate_messages_cpp
[ 0%] Built target sensor_msgs_generate_messages_lisp
[ 0%] Built target sensor_msgs_generate_messages_nodejs
[ 0%] Built target odom_record_cpp_generate_messages_nodejs
[ 0%] Built target nav_msgs_generate_messages_eus
[ 0%] Built target actionlib_msgs_generate_messages_lisp
[ 0%] Built target odom_record_cpp_generate_messages_lisp
[ 0%] Built target geometry_msgs_generate_messages_eus
[ 0%] Built target odom_record_cpp_generate_messages_py
[ 0%] Built target odom_record_cpp_generate_messages_eus
[ 0%] Built target geometry_msgs_generate_messages_cpp
[ 0%] Built target geometry_msgs_generate_messages_nodejs
[ 0%] Built target nav_msgs_generate_messages_nodejs
[ 0%] Built target actionlib_msgs_generate_messages_eus
[ 0%] Built target sensor_msgs_generate_messages_py
[ 0%] Built target geometry_msgs_generate_messages_py
[ 0%] Built target nav_msgs_generate_messages_py
[ 0%] Built target odom_record_cpp_generate_messages_cpp
[ 0%] Built target actionlib_msgs_generate_messages_py
[ 0%] Built target actionlib_generate_messages_cpp
[ 0%] Built target actionlib_msgs_generate_messages_cpp
[ 0%] Built target actionlib_generate_messages_eus
[ 0%] Built target actionlib_generate_messages_lisp
[ 0%] Built target sensor_msgs_generate_messages_eus
[ 0%] Built target actionlib_generate_messages_nodejs
[ 0%] Built target actionlib_msgs_generate_messages_nodejs
[ 0%] Built target actionlib_generate_messages_py
[ 7%] Building CXX object mantain_distance_cpp/CMakeFiles/mantain_distance_cpp.dir/src/robot.cpp.o
In file included from /usr/include/boost/function/detail/maybe_include.hpp:15,
from /usr/include/boost/function/detail/function_iterate.hpp:14,
from /usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp:48,
from /usr/include/boost/function.hpp:71,
from /opt/ros/noetic/include/ros/forwards.h:40,
from /opt/ros/noetic/include/ros/service_client.h:31,
from /home/user/catkin_ws/src/mantain_distance_cpp/include/mantain_distance_cpp/robot.hpp:2,
from /home/user/catkin_ws/src/mantain_distance_cpp/src/robot.cpp:1:
/usr/include/boost/function/function_template.hpp: In instantiation of 'void boost::function0<R>::assign_to(Functor) [with Functor = void (RobotClass::*)(); R = void]':
/usr/include/boost/function/function_template.hpp:720:7: required from 'boost::function0<R>::function0(Functor, typename boost::enable_if_<(! boost::is_integral<Functor>::value), int>::type) [with Functor = void (RobotClass::*)(); R = void; typename boost::enable_if_<(! boost::is_integral<Functor>::value), int>::type = int]'
/usr/include/boost/function/function_template.hpp:1068:16: required from 'boost::function<R()>::function(Functor, typename boost::enable_if_<(! boost::is_integral<Functor>::value), int>::type) [with Functor = void (RobotClass::*)(); R = void; typename boost::enable_if_<(! boost::is_integral<Functor>::value), int>::type = int]'
/home/user/catkin_ws/src/mantain_distance_cpp/src/robot.cpp:72:42: required from here
/usr/include/boost/function/function_template.hpp:921:9: error: no class template named 'apply' in 'struct boost::detail::function::get_invoker0<boost::detail::function::member_ptr_tag>'
921 | handler_type;
| ^~~~~~~~~~~~
In file included from /usr/include/boost/function/detail/maybe_include.hpp:29,
from /usr/include/boost/function/detail/function_iterate.hpp:14,
from /usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp:58,
from /usr/include/boost/function.hpp:71,
from /opt/ros/noetic/include/ros/forwards.h:40,
from /opt/ros/noetic/include/ros/service_client.h:31,
from /home/user/catkin_ws/src/mantain_distance_cpp/include/mantain_distance_cpp/robot.hpp:2,
from /home/user/catkin_ws/src/mantain_distance_cpp/src/robot.cpp:1:
/usr/include/boost/function/function_template.hpp: In instantiation of 'static void boost::detail::function::function_void_mem_invoker2<MemberPtr, R, T0, T1>::invoke(boost::detail::function::function_buffer&, T0, T1) [with MemberPtr = void (RobotClass::*)(const actionlib::SimpleClientGoalState&, const boost::shared_ptr<const odom_record_cpp::OdomRecordResult_<std::allocator<void> > >&); R = void; T0 = const actionlib::SimpleClientGoalState&; T1 = const boost::shared_ptr<const odom_record_cpp::OdomRecordResult_<std::allocator<void> > >&]':
/usr/include/boost/function/function_template.hpp:931:38: required from 'void boost::function2<R, T1, T2>::assign_to(Functor) [with Functor = void (RobotClass::*)(const actionlib::SimpleClientGoalState&, const boost::shared_ptr<const odom_record_cpp::OdomRecordResult_<std::allocator<void> > >&); R = void; T0 = const actionlib::SimpleClientGoalState&; T1 = const boost::shared_ptr<const odom_record_cpp::OdomRecordResult_<std::allocator<void> > >&]'
/usr/include/boost/function/function_template.hpp:720:7: required from 'boost::function2<R, T1, T2>::function2(Functor, typename boost::enable_if_<(! boost::is_integral<Functor>::value), int>::type) [with Functor = void (RobotClass::*)(const actionlib::SimpleClientGoalState&, const boost::shared_ptr<const odom_record_cpp::OdomRecordResult_<std::allocator<void> > >&); R = void; T0 = const actionlib::SimpleClientGoalState&; T1 = const boost::shared_ptr<const odom_record_cpp::OdomRecordResult_<std::allocator<void> > >&; typename boost::enable_if_<(! boost::is_integral<Functor>::value), int>::type = int]'
/usr/include/boost/function/function_template.hpp:1068:16: required from 'boost::function<R(T0, T1)>::function(Functor, typename boost::enable_if_<(! boost::is_integral<Functor>::value), int>::type) [with Functor = void (RobotClass::*)(const actionlib::SimpleClientGoalState&, const boost::shared_ptr<const odom_record_cpp::OdomRecordResult_<std::allocator<void> > >&); R = void; T0 = const actionlib::SimpleClientGoalState&; T1 = const boost::shared_ptr<const odom_record_cpp::OdomRecordResult_<std::allocator<void> > >&; typename boost::enable_if_<(! boost::is_integral<Functor>::value), int>::type = int]'
/home/user/catkin_ws/src/mantain_distance_cpp/src/robot.cpp:72:42: required from here
/usr/include/boost/function/function_template.hpp:230:11: error: no match for call to '(boost::_mfi::mf2<void, RobotClass, const actionlib::SimpleClientGoalState&, const boost::shared_ptr<const odom_record_cpp::OdomRecordResult_<std::allocator<void> > >&>) (const actionlib::SimpleClientGoalState&, const boost::shared_ptr<const odom_record_cpp::OdomRecordResult_<std::allocator<void> > >&)'
230 | BOOST_FUNCTION_RETURN(boost::mem_fn(*f)(BOOST_FUNCTION_ARGS));
| ^~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/boost/bind/mem_fn.hpp:215,
from /usr/include/boost/mem_fn.hpp:22,
from /usr/include/boost/function/detail/prologue.hpp:18,
from /usr/include/boost/function.hpp:30,
from /opt/ros/noetic/include/ros/forwards.h:40,
from /opt/ros/noetic/include/ros/service_client.h:31,
from /home/user/catkin_ws/src/mantain_distance_cpp/include/mantain_distance_cpp/robot.hpp:2,
from /home/user/catkin_ws/src/mantain_distance_cpp/src/robot.cpp:1:
/usr/include/boost/bind/mem_fn_template.hpp:278:7: note: candidate: 'R boost::_mfi::mf2<R, T, A1, A2>::operator()(T*, A1, A2) const [with R = void; T = RobotClass; A1 = const actionlib::SimpleClientGoalState&; A2 = const boost::shared_ptr<const odom_record_cpp::OdomRecordResult_<std::allocator<void> > >&]'
278 | R operator()(T * p, A1 a1, A2 a2) const
| ^~~~~~~~
/usr/include/boost/bind/mem_fn_template.hpp:278:7: note: candidate expects 3 arguments, 2 provided
/usr/include/boost/bind/mem_fn_template.hpp:283:25: note: candidate: 'template<class U> R boost::_mfi::mf2<R, T, A1, A2>::operator()(U&, A1, A2) const [with U = U; R = void; T = RobotClass; A1 = const actionlib::SimpleClientGoalState&; A2 = const boost::shared_ptr<const odom_record_cpp::OdomRecordResult_<std::allocator<void> > >&]'
283 | template<class U> R operator()(U & u, A1 a1, A2 a2) const
| ^~~~~~~~
/usr/include/boost/bind/mem_fn_template.hpp:283:25: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/function/detail/maybe_include.hpp:29,
from /usr/include/boost/function/detail/function_iterate.hpp:14,
from /usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp:58,
from /usr/include/boost/function.hpp:71,
from /opt/ros/noetic/include/ros/forwards.h:40,
from /opt/ros/noetic/include/ros/service_client.h:31,
from /home/user/catkin_ws/src/mantain_distance_cpp/include/mantain_distance_cpp/robot.hpp:2,
from /home/user/catkin_ws/src/mantain_distance_cpp/src/robot.cpp:1:
/usr/include/boost/function/function_template.hpp:230:11: note: candidate expects 3 arguments, 2 provided
230 | BOOST_FUNCTION_RETURN(boost::mem_fn(*f)(BOOST_FUNCTION_ARGS));
| ^~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/boost/bind/mem_fn.hpp:215,
from /usr/include/boost/mem_fn.hpp:22,
from /usr/include/boost/function/detail/prologue.hpp:18,
from /usr/include/boost/function.hpp:30,
from /opt/ros/noetic/include/ros/forwards.h:40,
from /opt/ros/noetic/include/ros/service_client.h:31,
from /home/user/catkin_ws/src/mantain_distance_cpp/include/mantain_distance_cpp/robot.hpp:2,
from /home/user/catkin_ws/src/mantain_distance_cpp/src/robot.cpp:1:
/usr/include/boost/bind/mem_fn_template.hpp:291:25: note: candidate: 'template<class U> R boost::_mfi::mf2<R, T, A1, A2>::operator()(const U&, A1, A2) const [with U = U; R = void; T = RobotClass; A1 = const actionlib::SimpleClientGoalState&; A2 = const boost::shared_ptr<const odom_record_cpp::OdomRecordResult_<std::allocator<void> > >&]'
291 | template<class U> R operator()(U const & u, A1 a1, A2 a2) const
| ^~~~~~~~
/usr/include/boost/bind/mem_fn_template.hpp:291:25: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/function/detail/maybe_include.hpp:29,
from /usr/include/boost/function/detail/function_iterate.hpp:14,
from /usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp:58,
from /usr/include/boost/function.hpp:71,
from /opt/ros/noetic/include/ros/forwards.h:40,
from /opt/ros/noetic/include/ros/service_client.h:31,
from /home/user/catkin_ws/src/mantain_distance_cpp/include/mantain_distance_cpp/robot.hpp:2,
from /home/user/catkin_ws/src/mantain_distance_cpp/src/robot.cpp:1:
/usr/include/boost/function/function_template.hpp:230:11: note: candidate expects 3 arguments, 2 provided
230 | BOOST_FUNCTION_RETURN(boost::mem_fn(*f)(BOOST_FUNCTION_ARGS));
| ^~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/boost/bind/mem_fn.hpp:215,
from /usr/include/boost/mem_fn.hpp:22,
from /usr/include/boost/function/detail/prologue.hpp:18,
from /usr/include/boost/function.hpp:30,
from /opt/ros/noetic/include/ros/forwards.h:40,
from /opt/ros/noetic/include/ros/service_client.h:31,
from /home/user/catkin_ws/src/mantain_distance_cpp/include/mantain_distance_cpp/robot.hpp:2,
from /home/user/catkin_ws/src/mantain_distance_cpp/src/robot.cpp:1:
/usr/include/boost/bind/mem_fn_template.hpp:299:7: note: candidate: 'R boost::_mfi::mf2<R, T, A1, A2>::operator()(T&, A1, A2) const [with R = void; T = RobotClass; A1 = const actionlib::SimpleClientGoalState&; A2 = const boost::shared_ptr<const odom_record_cpp::OdomRecordResult_<std::allocator<void> > >&]'
299 | R operator()(T & t, A1 a1, A2 a2) const
| ^~~~~~~~
/usr/include/boost/bind/mem_fn_template.hpp:299:7: note: candidate expects 3 arguments, 2 provided
In file included from /usr/include/boost/function/detail/maybe_include.hpp:22,
from /usr/include/boost/function/detail/function_iterate.hpp:14,
from /usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp:53,
from /usr/include/boost/function.hpp:71,
from /opt/ros/noetic/include/ros/forwards.h:40,
from /opt/ros/noetic/include/ros/service_client.h:31,
from /home/user/catkin_ws/src/mantain_distance_cpp/include/mantain_distance_cpp/robot.hpp:2,
from /home/user/catkin_ws/src/mantain_distance_cpp/src/robot.cpp:1:
/usr/include/boost/function/function_template.hpp: In instantiation of 'static void boost::detail::function::function_void_mem_invoker1<MemberPtr, R, T0>::invoke(boost::detail::function::function_buffer&, T0) [with MemberPtr = void (RobotClass::*)(const boost::shared_ptr<const odom_record_cpp::OdomRecordFeedback_<std::allocator<void> > >&); R = void; T0 = const boost::shared_ptr<const odom_record_cpp::OdomRecordFeedback_<std::allocator<void> > >&]':
/usr/include/boost/function/function_template.hpp:931:38: required from 'void boost::function1<R, T1>::assign_to(Functor) [with Functor = void (RobotClass::*)(const boost::shared_ptr<const odom_record_cpp::OdomRecordFeedback_<std::allocator<void> > >&); R = void; T0 = const boost::shared_ptr<const odom_record_cpp::OdomRecordFeedback_<std::allocator<void> > >&]'
/usr/include/boost/function/function_template.hpp:720:7: required from 'boost::function1<R, T1>::function1(Functor, typename boost::enable_if_<(! boost::is_integral<Functor>::value), int>::type) [with Functor = void (RobotClass::*)(const boost::shared_ptr<const odom_record_cpp::OdomRecordFeedback_<std::allocator<void> > >&); R = void; T0 = const boost::shared_ptr<const odom_record_cpp::OdomRecordFeedback_<std::allocator<void> > >&; typename boost::enable_if_<(! boost::is_integral<Functor>::value), int>::type = int]'
/usr/include/boost/function/function_template.hpp:1068:16: required from 'boost::function<R(T0)>::function(Functor, typename boost::enable_if_<(! boost::is_integral<Functor>::value), int>::type) [with Functor = void (RobotClass::*)(const boost::shared_ptr<const odom_record_cpp::OdomRecordFeedback_<std::allocator<void> > >&); R = void; T0 = const boost::shared_ptr<const odom_record_cpp::OdomRecordFeedback_<std::allocator<void> > >&; typename boost::enable_if_<(! boost::is_integral<Functor>::value), int>::type = int]'
/home/user/catkin_ws/src/mantain_distance_cpp/src/robot.cpp:72:42: required from here
/usr/include/boost/function/function_template.hpp:230:11: error: no match for call to '(boost::_mfi::mf1<void, RobotClass, const boost::shared_ptr<const odom_record_cpp::OdomRecordFeedback_<std::allocator<void> > >&>) (const boost::shared_ptr<const odom_record_cpp::OdomRecordFeedback_<std::allocator<void> > >&)'
230 | BOOST_FUNCTION_RETURN(boost::mem_fn(*f)(BOOST_FUNCTION_ARGS));
| ^~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/boost/bind/mem_fn.hpp:215,
from /usr/include/boost/mem_fn.hpp:22,
from /usr/include/boost/function/detail/prologue.hpp:18,
from /usr/include/boost/function.hpp:30,
from /opt/ros/noetic/include/ros/forwards.h:40,
from /opt/ros/noetic/include/ros/service_client.h:31,
from /home/user/catkin_ws/src/mantain_distance_cpp/include/mantain_distance_cpp/robot.hpp:2,
from /home/user/catkin_ws/src/mantain_distance_cpp/src/robot.cpp:1:
/usr/include/boost/bind/mem_fn_template.hpp:163:7: note: candidate: 'R boost::_mfi::mf1<R, T, A1>::operator()(T*, A1) const [with R = void; T = RobotClass; A1 = const boost::shared_ptr<const odom_record_cpp::OdomRecordFeedback_<std::allocator<void> > >&]'
163 | R operator()(T * p, A1 a1) const
| ^~~~~~~~
/usr/include/boost/bind/mem_fn_template.hpp:163:7: note: candidate expects 2 arguments, 1 provided
/usr/include/boost/bind/mem_fn_template.hpp:168:25: note: candidate: 'template<class U> R boost::_mfi::mf1<R, T, A1>::operator()(U&, A1) const [with U = U; R = void; T = RobotClass; A1 = const boost::shared_ptr<const odom_record_cpp::OdomRecordFeedback_<std::allocator<void> > >&]'
168 | template<class U> R operator()(U & u, A1 a1) const
| ^~~~~~~~
/usr/include/boost/bind/mem_fn_template.hpp:168:25: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/function/detail/maybe_include.hpp:22,
from /usr/include/boost/function/detail/function_iterate.hpp:14,
from /usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp:53,
from /usr/include/boost/function.hpp:71,
from /opt/ros/noetic/include/ros/forwards.h:40,
from /opt/ros/noetic/include/ros/service_client.h:31,
from /home/user/catkin_ws/src/mantain_distance_cpp/include/mantain_distance_cpp/robot.hpp:2,
from /home/user/catkin_ws/src/mantain_distance_cpp/src/robot.cpp:1:
/usr/include/boost/function/function_template.hpp:230:11: note: candidate expects 2 arguments, 1 provided
230 | BOOST_FUNCTION_RETURN(boost::mem_fn(*f)(BOOST_FUNCTION_ARGS));
| ^~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/boost/bind/mem_fn.hpp:215,
from /usr/include/boost/mem_fn.hpp:22,
from /usr/include/boost/function/detail/prologue.hpp:18,
from /usr/include/boost/function.hpp:30,
from /opt/ros/noetic/include/ros/forwards.h:40,
from /opt/ros/noetic/include/ros/service_client.h:31,
from /home/user/catkin_ws/src/mantain_distance_cpp/include/mantain_distance_cpp/robot.hpp:2,
from /home/user/catkin_ws/src/mantain_distance_cpp/src/robot.cpp:1:
/usr/include/boost/bind/mem_fn_template.hpp:176:25: note: candidate: 'template<class U> R boost::_mfi::mf1<R, T, A1>::operator()(const U&, A1) const [with U = U; R = void; T = RobotClass; A1 = const boost::shared_ptr<const odom_record_cpp::OdomRecordFeedback_<std::allocator<void> > >&]'
176 | template<class U> R operator()(U const & u, A1 a1) const
| ^~~~~~~~
/usr/include/boost/bind/mem_fn_template.hpp:176:25: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/function/detail/maybe_include.hpp:22,
from /usr/include/boost/function/detail/function_iterate.hpp:14,
from /usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp:53,
from /usr/include/boost/function.hpp:71,
from /opt/ros/noetic/include/ros/forwards.h:40,
from /opt/ros/noetic/include/ros/service_client.h:31,
from /home/user/catkin_ws/src/mantain_distance_cpp/include/mantain_distance_cpp/robot.hpp:2,
from /home/user/catkin_ws/src/mantain_distance_cpp/src/robot.cpp:1:
/usr/include/boost/function/function_template.hpp:230:11: note: candidate expects 2 arguments, 1 provided
230 | BOOST_FUNCTION_RETURN(boost::mem_fn(*f)(BOOST_FUNCTION_ARGS));
| ^~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/boost/bind/mem_fn.hpp:215,
from /usr/include/boost/mem_fn.hpp:22,
from /usr/include/boost/function/detail/prologue.hpp:18,
from /usr/include/boost/function.hpp:30,
from /opt/ros/noetic/include/ros/forwards.h:40,
from /opt/ros/noetic/include/ros/service_client.h:31,
from /home/user/catkin_ws/src/mantain_distance_cpp/include/mantain_distance_cpp/robot.hpp:2,
from /home/user/catkin_ws/src/mantain_distance_cpp/src/robot.cpp:1:
/usr/include/boost/bind/mem_fn_template.hpp:184:7: note: candidate: 'R boost::_mfi::mf1<R, T, A1>::operator()(T&, A1) const [with R = void; T = RobotClass; A1 = const boost::shared_ptr<const odom_record_cpp::OdomRecordFeedback_<std::allocator<void> > >&]'
184 | R operator()(T & t, A1 a1) const
| ^~~~~~~~
/usr/include/boost/bind/mem_fn_template.hpp:184:7: note: candidate expects 2 arguments, 1 provided
make[2]: *** [mantain_distance_cpp/CMakeFiles/mantain_distance_cpp.dir/build.make:63: mantain_distance_cpp/CMakeFiles/mantain_distance_cpp.dir/src/robot.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:1339: mantain_distance_cpp/CMakeFiles/mantain_distance_cpp.dir/all] Error 2
make: *** [Makefile:141: all] Error 2
Invoking "make -j8 -l8" failed
Where should I start to understand this error?