ROS2: issues building some packages found in ros2/demos and ros2/examples
I am using ROS2 version dashing on Ubuntu 18.04.3 LTS. I installed following the instructions Installing ROS2 via Debian Packages: https://index.ros.org/doc/ros2/Instal....
I am failing to build the ros2 examples and demos found at: https://github.com/ros2/examples/tree... and https://github.com/ros2/demos/tree/da...
I was trying to follow this exercise: https://industrial-training-master.re....
The first error while compiling demos folder is in "demo_nodes_cpp" package:
--- stderr: demo_nodes_cpp
/home/ros/ros2_ws/src/demos/demo_nodes_cpp/src/parameters/parameter_event_handler.cpp: In function ‘int main(int, char**)’:
/home/ros/ros2_ws/src/demos/demo_nodes_cpp/src/parameters/parameter_event_handler.cpp:79:52: error: ‘ParameterEventHandler’ is not a member of ‘rclcpp’
auto param_subscriber = std::make_shared<rclcpp::ParameterEventHandler>(node);
^~~~~~~~~~~~~~~~~~~~~
/home/ros/ros2_ws/src/demos/demo_nodes_cpp/src/parameters/parameter_event_handler.cpp:79:52: note: suggested alternative: ‘ParameterEventsQoS’
auto param_subscriber = std::make_shared<rclcpp::ParameterEventHandler>(node);
^~~~~~~~~~~~~~~~~~~~~
ParameterEventsQoS
/home/ros/ros2_ws/src/demos/demo_nodes_cpp/src/parameters/parameter_event_handler.cpp:79:52: error: ‘ParameterEventHandler’ is not a member of ‘rclcpp’
/home/ros/ros2_ws/src/demos/demo_nodes_cpp/src/parameters/parameter_event_handler.cpp:79:52: note: suggested alternative: ‘ParameterEventsQoS’
auto param_subscriber = std::make_shared<rclcpp::ParameterEventHandler>(node);
^~~~~~~~~~~~~~~~~~~~~
ParameterEventsQoS
/home/ros/ros2_ws/src/demos/demo_nodes_cpp/src/parameters/parameter_event_handler.cpp:79:79: error: no matching function for call to ‘make_shared<<expression error> >(std::shared_ptr<rclcpp::Node>&)’
auto param_subscriber = std::make_shared<rclcpp::ParameterEventHandler>(node);
^
In file included from /usr/include/c++/7/memory:81:0,
from /home/ros/ros2_ws/src/demos/demo_nodes_cpp/src/parameters/parameter_event_handler.cpp:17:
/usr/include/c++/7/bits/shared_ptr.h:703:5: note: candidate: template<class _Tp, class ... _Args> std::shared_ptr<_Tp> std::make_shared(_Args&& ...)
make_shared(_Args&&... __args)
^~~~~~~~~~~
/usr/include/c++/7/bits/shared_ptr.h:703:5: note: template argument deduction/substitution failed:
/home/ros/ros2_ws/src/demos/demo_nodes_cpp/src/parameters/parameter_event_handler.cpp:79:79: error: template argument 1 is invalid
auto param_subscriber = std::make_shared<rclcpp::ParameterEventHandler>(node);
^
/home/ros/ros2_ws/src/demos/demo_nodes_cpp/src/parameters/parameter_event_handler.cpp: In lambda function:
/home/ros/ros2_ws/src/demos/demo_nodes_cpp/src/parameters/parameter_event_handler.cpp:116:21: error: ‘rclcpp::ParameterEventHandler’ has not been declared
if (rclcpp::ParameterEventHandler::get_parameter_from_event(
^~~~~~~~~~~~~~~~~~~~~
/home/ros/ros2_ws/src/demos/demo_nodes_cpp/src/parameters/parameter_event_handler.cpp:129:31: error: ‘rclcpp::ParameterEventHandler’ has not been declared
auto params = rclcpp::ParameterEventHandler::get_parameters_from_event(event);
^~~~~~~~~~~~~~~~~~~~~
/home/ros/ros2_ws/src/demos/demo_nodes_cpp/src/parameters/parameter_event_handler.cpp:130:25: error: unable to deduce ‘auto&&’ from ‘params’
for (auto & p : params) {
^~~~~~
make[2]: *** [CMakeFiles/parameter_event_handler.dir/src/parameters/parameter_event_handler.cpp.o] Error 1
make[1]: *** [CMakeFiles/parameter_event_handler.dir/all] Error 2
make: *** [all] Error 2
---
Failed <<< demo_nodes_cpp [1min 10s, exited with code 2]
Aborted <<< demo_nodes_cpp_native [24.1s]
Summary: 5 packages finished [3min 41s]
1 package failed: demo_nodes_cpp
1 package aborted: demo_nodes_cpp_native
2 packages had stderr output: demo_nodes_cpp demo_nodes_cpp_native
13 packages not processed
The first error while compiling examples folder is in "examples_rclcpp_async_client" package:
--- stderr: examples_rclcpp_async_client
/home/ros/ros2_ws/src/examples/rclcpp/services/async_client/main.cpp: In lambda function:
/home/ros/ros2_ws/src/examples/rclcpp/services/async_client/main.cpp:46:42: error: ‘using element_type = class rclcpp::Client<example_interfaces::srv::AddTwoInts> {aka class rclcpp::Client<example_interfaces ...