1,系统升级到22后,colcon build依然报错
sk@sk-virtual-machine:~/chapt7/chapt7_ws$ colcon build
Starting >>> autopatrol_interfaces
Starting >>> autopatrol_robot
Starting >>> fishbot_application
Starting >>> fishbot_application_cpp
Starting >>> fishbot_description
Starting >>> fishbot_navigation2
Finished <<< autopatrol_robot [3.80s]
Finished <<< fishbot_application [3.80s]
Finished <<< fishbot_navigation2 [5.13s]
Finished <<< fishbot_description [5.16s]
--- stderr: fishbot_application_cpp
/home/sk/chapt7/chapt7_ws/src/fishbot_application_cpp/src/nav2pose.cpp: In member function ‘void NavToPoseClient::sendGoal()’:
/home/sk/chapt7/chapt7_ws/src/fishbot_application_cpp/src/nav2pose.cpp:40:9: error: no match for ‘operator=’ (operand types are ‘rclcpp_action::Client<nav2_msgs::action::NavigateToPose>::GoalResponseCallback’ {aka ‘std::function<void(std::shared_future<std::shared_ptr<rclcpp_action::ClientGoalHandle<nav2_msgs::action::NavigateToPose> > >)>’} and ‘NavToPoseClient::sendGoal()::<lambda(rclcpp_action::ClientGoalHandle<nav2_msgs::action::NavigateToPose>::SharedPtr)>’)
40 | };
| ^
In file included from /usr/include/c++/11/functional:59,
from /usr/include/c++/11/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/11/algorithm:74,
from /opt/ros/foxy/include/rosidl_runtime_cpp/bounded_vector.hpp:18,
from /opt/ros/foxy/include/nav2_msgs/action/detail/navigate_to_pose__struct.hpp:8,
from /opt/ros/foxy/include/nav2_msgs/action/navigate_to_pose.hpp:7,
from /home/sk/chapt7/chapt7_ws/src/fishbot_application_cpp/src/nav2pose.cpp:3:
/usr/include/c++/11/bits/std_function.h:530:9: note: candidate: ‘template<class _Functor> std::function<_Res(_ArgTypes ...)>::_Requires<std::function<_Res(_ArgTypes ...)>::_Callable<_Functor>, std::function<_Res(_ArgTypes ...)>&> std::function<_Res(_ArgTypes ...)>::operator=(_Functor&&) [with _Functor = _Functor; _Res = void; _ArgTypes = {std::shared_future<std::shared_ptr<rclcpp_action::ClientGoalHandle<nav2_msgs::action::NavigateToPose> > >}]’
530 | operator=(_Functor&& __f)
| ^~~~~~~~
/usr/include/c++/11/bits/std_function.h:530:9: note: template argument deduction/substitution failed:
In file included from /usr/include/c++/11/bits/move.h:57,
from /usr/include/c++/11/bits/stl_pair.h:59,
from /usr/include/c++/11/bits/stl_algobase.h:64,
from /usr/include/c++/11/memory:63,
from /home/sk/chapt7/chapt7_ws/src/fishbot_application_cpp/src/nav2pose.cpp:1:
/usr/include/c++/11/type_traits: In substitution of ‘template<bool _Cond, class _Tp> using __enable_if_t = typename std::enable_if::type [with bool _Cond = false; _Tp = std::function<void(std::shared_future<std::shared_ptr<rclcpp_action::ClientGoalHandle<nav2_msgs::action::NavigateToPose> > >)>&]’:
/usr/include/c++/11/bits/std_function.h:353:8: required by substitution of ‘template<class _Res, class ... _ArgTypes> template<class _Cond, class _Tp> using _Requires = std::__enable_if_t<_Cond::value, _Tp> [with _Cond = std::function<void(std::shared_future<std::shared_ptr<rclcpp_action::ClientGoalHandle<nav2_msgs::action::NavigateToPose> > >)>::_Callable<NavToPoseClient::sendGoal()::<lambda(rclcpp_action::ClientGoalHandle<nav2_msgs::action::NavigateToPose>::SharedPtr)>, NavToPoseClient::sendGoal()::<lambda(rclcpp_action::ClientGoalHandle<nav2_msgs::action::NavigateToPose>::SharedPtr)>, std::__invoke_result<NavToPoseClient::sendGoal()::<lambda(rclcpp_action::ClientGoalHandle<nav2_msgs::action::NavigateToPose>::SharedPtr)>&, std::shared_future<std::shared_ptr<rclcpp_action::ClientGoalHandle<nav2_msgs::action::NavigateToPose> > > > >; _Tp = std::function<void(std::shared_future<std::shared_ptr<rclcpp_action::ClientGoalHandle<nav2_msgs::action::NavigateToPose> > >)>&; _Res = void; _ArgTypes = {std::shared_future<std::shared_ptr<rclcpp_action::ClientGoalHandle<nav2_msgs::action::NavigateToPose> > >}]’
/usr/include/c++/11/bits/std_function.h:530:2: required by substitution of ‘template<class _Functor> std::function<void(std::shared_future<std::shared_ptr<rclcpp_action::ClientGoalHandle<nav2_msgs::action::NavigateToPose> > >)>::_Requires<std::function<void(std::shared_future<std::shared_ptr<rclcpp_action::ClientGoalHandle<nav2_msgs::action::NavigateToPose> > >)>::_Callable<_Functor, typename std::enable_if<(! std::is_same<typename std::remove_cv<typename std::remove_reference<_Tp>::type>::type, std::function<void(std::shared_future<std::shared_ptr<rclcpp_action::ClientGoalHandle<nav2_msgs::action::NavigateToPose> > >)> >::value), std::decay<_Tp> >::type::type, std::__invoke_result<typename std::enable_if<(! std::is_same<typename std::remove_cv<typename std::remove_reference<_Tp>::type>::type, std::function<void(std::shared_future<std::shared_ptr<rclcpp_action::ClientGoalHandle<nav2_msgs::action::NavigateToPose> > >)> >::value), std::decay<_Tp> >::type::type&, std::shared_future<std::shared_ptr<rclcpp_action::ClientGoalHandle<nav2_msgs::action::NavigateToPose> > > > >, std::function<void(std::shared_future<std::shared_ptr<rclcpp_action::ClientGoalHandle<nav2_msgs::action::NavigateToPose> > >)>&> std::function<void(std::shared_future<std::shared_ptr<rclcpp_action::ClientGoalHandle<nav2_msgs::action::NavigateToPose> > >)>::operator=<_Functor>(_Functor&&) [with _Functor = NavToPoseClient::sendGoal()::<lambda(rclcpp_action::ClientGoalHandle<nav2_msgs::action::NavigateToPose>::SharedPtr)>]’
/home/sk/chapt7/chapt7_ws/src/fishbot_application_cpp/src/nav2pose.cpp:40:9: required from here
/usr/include/c++/11/type_traits:2205:11: error: no type named ‘type’ in ‘struct std::enable_if<false, std::function<void(std::shared_future<std::shared_ptr<rclcpp_action::ClientGoalHandle<nav2_msgs::action::NavigateToPose> > >)>&>’
2205 | using __enable_if_t = typename enable_if<_Cond, _Tp>::type;
| ^~~~~~~~~~~~~
In file included from /usr/include/c++/11/functional:59,
from /usr/include/c++/11/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/11/algorithm:74,
from /opt/ros/foxy/include/rosidl_runtime_cpp/bounded_vector.hpp:18,
from /opt/ros/foxy/include/nav2_msgs/action/detail/navigate_to_pose__struct.hpp:8,
from /opt/ros/foxy/include/nav2_msgs/action/navigate_to_pose.hpp:7,
from /home/sk/chapt7/chapt7_ws/src/fishbot_application_cpp/src/nav2pose.cpp:3:
/usr/include/c++/11/bits/std_function.h:540:9: note: candidate: ‘template<class _Functor> std::function<_Res(_ArgTypes ...)>& std::function<_Res(_ArgTypes ...)>::operator=(std::reference_wrapper<_Functor>) [with _Functor = _Functor; _Res = void; _ArgTypes = {std::shared_future<std::shared_ptr<rclcpp_action::ClientGoalHandle<nav2_msgs::action::NavigateToPose> > >}]’
540 | operator=(reference_wrapper<_Functor> __f) noexcept
| ^~~~~~~~
/usr/include/c++/11/bits/std_function.h:540:9: note: template argument deduction/substitution failed:
/home/sk/chapt7/chapt7_ws/src/fishbot_application_cpp/src/nav2pose.cpp:40:9: note: ‘NavToPoseClient::sendGoal()::<lambda(rclcpp_action::ClientGoalHandle<nav2_msgs::action::NavigateToPose>::SharedPtr)>’ is not derived from ‘std::reference_wrapper<_Tp>’
40 | };
| ^
In file included from /usr/include/c++/11/functional:59,
from /usr/include/c++/11/pstl/glue_algorithm_defs.h:13,
from /usr/include/c++/11/algorithm:74,
from /opt/ros/foxy/include/rosidl_runtime_cpp/bounded_vector.hpp:18,
from /opt/ros/foxy/include/nav2_msgs/action/detail/navigate_to_pose__struct.hpp:8,
from /opt/ros/foxy/include/nav2_msgs/action/navigate_to_pose.hpp:7,
from /home/sk/chapt7/chapt7_ws/src/fishbot_application_cpp/src/nav2pose.cpp:3:
/usr/include/c++/11/bits/std_function.h:469:7: note: candidate: ‘std::function<_Res(_ArgTypes ...)>& std::function<_Res(_ArgTypes ...)>::operator=(const std::function<_Res(_ArgTypes ...)>&) [with _Res = void; _ArgTypes = {std::shared_future<std::shared_ptr<rclcpp_action::ClientGoalHandle<nav2_msgs::action::NavigateToPose> > >}]’
469 | operator=(const function& __x)
| ^~~~~~~~
/usr/include/c++/11/bits/std_function.h:469:33: note: no known conversion for argument 1 from ‘NavToPoseClient::sendGoal()::<lambda(rclcpp_action::ClientGoalHandle<nav2_msgs::action::NavigateToPose>::SharedPtr)>’ to ‘const std::function<void(std::shared_future<std::shared_ptr<rclcpp_action::ClientGoalHandle<nav2_msgs::action::NavigateToPose> > >)>&’
469 | operator=(const function& __x)
| ~~^
/usr/include/c++/11/bits/std_function.h:487:7: note: candidate: ‘std::function<_Res(_ArgTypes ...)>& std::function<_Res(_ArgTypes ...)>::operator=(std::function<_Res(_ArgTypes ...)>&&) [with _Res = void; _ArgTypes = {std::shared_future<std::shared_ptr<rclcpp_action::ClientGoalHandle<nav2_msgs::action::NavigateToPose> > >}]’
487 | operator=(function&& __x) noexcept
| ^~
/usr/include/c++/11/bits/std_function.h:487:28: note: no known conversion for argument 1 from ‘NavToPoseClient::sendGoal()::<lambda(rclcpp_action::ClientGoalHandle<nav2_msgs::action::NavigateToPose>::SharedPtr)>’ to ‘std::function<void(std::shared_future<std::shared_ptr<rclcpp_action::ClientGoalHandle<nav2_msgs::action::NavigateToPose> > >)>&&’
487 | operator=(function&& __x) noexcept
| ~^
/usr/include/c++/11/bits/std_function.h:501:7: note: candidate: ‘std::function<_Res(_ArgTypes ...)>& std::function<_Res(_ArgTypes ...)>::operator=(std::nullptr_t) [with _Res = void; _ArgTypes = {std::shared_future<std::shared_ptr<rclcpp_action::ClientGoalHandle<nav2_msgs::action::NavigateToPose> > >}; std::nullptr_t = std::nullptr_t]’
501 | operator=(nullptr_t) noexcept
| ^~
/usr/include/c++/11/bits/std_function.h:501:17: note: no known conversion for argument 1 from ‘NavToPoseClient::sendGoal()::<lambda(rclcpp_action::ClientGoalHandle<nav2_msgs::action::NavigateToPose>::SharedPtr)>’ to ‘std::nullptr_t’
501 | operator=(nullptr_t) noexcept
| ^
gmake[2]: *** [CMakeFiles/nav2pose.dir/build.make:76:CMakeFiles/nav2pose.dir/src/nav2pose.cpp.o] 错误 1
gmake[1]: *** [CMakeFiles/Makefile2:137:CMakeFiles/nav2pose.dir/all] 错误 2
gmake: *** [Makefile:146:all] 错误 2
Failed <<< fishbot_application_cpp [13.7s, exited with code 2]
Aborted <<< autopatrol_interfaces [14.1s]
Summary: 4 packages finished [17.5s]
1 package failed: fishbot_application_cpp
1 package aborted: autopatrol_interfaces
2 packages had stderr output: autopatrol_interfaces fishbot_application_cpp
sk@sk-virtual-machine:~/chapt7/chapt7_ws$ cat /proc/version
Linux version 5.15.0-139-generic (buildd@lcy02-amd64-029) (gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) #149-Ubuntu SMP Fri Apr 11 22:06:13 UTC 2025
sk@sk-virtual-machine:~/chapt7/chapt7_ws$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.5 LTS
Release: 22.04
Codename: jammy
2,删除fishbot_application_cpp文件后正常,但是source install/setup.bash报not found: "/home/sk/chapt7/chapt7_ws/install/fishbot_application_cpp/share/fishbot_application_cpp/local_setup.bash"