ros1_bridge fails to build
Anouar35 opened this issue · 7 comments
Bug report
Required Info:
- Operating System:
- Ubuntu 20.04
- Installation type:
- ros1_bridge from source. ROS1 Noetic and ROS2 Foxy
Steps to reproduce issue
1- Clone all workspaces from : here
2- Clone this to bridge_ws sources
3- Build ros1_ws and ros2_ws using respectively catkin_make and colcon build
4- Issue the following commands before building the ros1_bridge, by the same order:
source /opt/ros/noetic/setup.bash
source /opt/ros/foxy/setup.bash
# source the ROS workspaces
source <ros1_ws_dir>/devel/setup.bash
source <ros2_ws_dir>/install/setup.bash
5 - Build the ros1_bridge using colcon build --symlink-install --packages-select ros1_bridge --cmake-force-configure
Expected behavior
It is expected that the ros1_bridge builds successfully.
Actual behavior
Output from the console:
Starting >>> ros1_bridge
--- stderr: ros1_bridge
In file included from /home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/build/ros1_bridge/generated/custom_msg_ros2_factories.hpp:6,
from /home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/build/ros1_bridge/generated/custom_msg_ros2__msg__CustomMessage__factories.cpp:3:
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:358:30: error: ‘SharedLibrary’ is not a member of ‘rcpputils’
358 | std::shared_ptr<rcpputils::SharedLibrary> ts_lib_;
| ^~~~~~~~~~~~~
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:358:30: error: ‘SharedLibrary’ is not a member of ‘rcpputils’
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:358:43: error: template argument 1 is invalid
358 | std::shared_ptr<rcpputils::SharedLibrary> ts_lib_;
| ^
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp: In constructor ‘ros1_bridge::Factory<ROS1_T, ROS2_T>::Factory(const string&, const string&)’:
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:46:23: error: ‘get_typesupport_library’ is not a member of ‘rclcpp’
46 | ts_lib_ = rclcpp::get_typesupport_library(ros2_type_name, "rosidl_typesupport_cpp");
| ^~~~~~~~~~~~~~~~~~~~~~~
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:48:31: error: ‘get_typesupport_handle’ is not a member of ‘rclcpp’
48 | type_support_ = rclcpp::get_typesupport_handle(
| ^~~~~~~~~~~~~~~~~~~~~~
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:50:10: error: invalid type argument of unary ‘*’ (have ‘int’)
50 | *ts_lib_);
| ^~~~~~~
In file included from /home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/build/ros1_bridge/generated/action_msgs_factories.hpp:6,
from /home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/build/ros1_bridge/generated/action_msgs_factories.cpp:3:
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:358:30: error: ‘SharedLibrary’ is not a member of ‘rcpputils’
358 | std::shared_ptr<rcpputils::SharedLibrary> ts_lib_;
| ^~~~~~~~~~~~~
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:358:30: error: ‘SharedLibrary’ is not a member of ‘rcpputils’
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:358:43: error: template argument 1 is invalid
358 | std::shared_ptr<rcpputils::SharedLibrary> ts_lib_;
| ^
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp: In constructor ‘ros1_bridge::Factory<ROS1_T, ROS2_T>::Factory(const string&, const string&)’:
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:46:23: error: ‘get_typesupport_library’ is not a member of ‘rclcpp’
46 | ts_lib_ = rclcpp::get_typesupport_library(ros2_type_name, "rosidl_typesupport_cpp");
| ^~~~~~~~~~~~~~~~~~~~~~~
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:48:31: error: ‘get_typesupport_handle’ is not a member of ‘rclcpp’
48 | type_support_ = rclcpp::get_typesupport_handle(
| ^~~~~~~~~~~~~~~~~~~~~~
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:50:10: error: invalid type argument of unary ‘*’ (have ‘int’)
50 | *ts_lib_);
| ^~~~~~~
In file included from /home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/builtin_interfaces_factories.hpp:29,
from /home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/src/builtin_interfaces_factories.cpp:21:
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:358:30: error: ‘SharedLibrary’ is not a member of ‘rcpputils’
358 | std::shared_ptr<rcpputils::SharedLibrary> ts_lib_;
| ^~~~~~~~~~~~~
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:358:30: error: ‘SharedLibrary’ is not a member of ‘rcpputils’
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:358:43: error: template argument 1 is invalid
358 | std::shared_ptr<rcpputils::SharedLibrary> ts_lib_;
| ^
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp: In constructor ‘ros1_bridge::Factory<ROS1_T, ROS2_T>::Factory(const string&, const string&)’:
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:46:23: error: ‘get_typesupport_library’ is not a member of ‘rclcpp’
46 | ts_lib_ = rclcpp::get_typesupport_library(ros2_type_name, "rosidl_typesupport_cpp");
| ^~~~~~~~~~~~~~~~~~~~~~~
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:48:31: error: ‘get_typesupport_handle’ is not a member of ‘rclcpp’
48 | type_support_ = rclcpp::get_typesupport_handle(
| ^~~~~~~~~~~~~~~~~~~~~~
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:50:10: error: invalid type argument of unary ‘*’ (have ‘int’)
50 | *ts_lib_);
| ^~~~~~~
In file included from /home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/build/ros1_bridge/generated/custom_msg_ros2_factories.hpp:6,
from /home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/build/ros1_bridge/generated/custom_msg_ros2_factories.cpp:3:
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:358:30: error: ‘SharedLibrary’ is not a member of ‘rcpputils’
358 | std::shared_ptr<rcpputils::SharedLibrary> ts_lib_;
| ^~~~~~~~~~~~~
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:358:30: error: ‘SharedLibrary’ is not a member of ‘rcpputils’
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:358:43: error: template argument 1 is invalid
358 | std::shared_ptr<rcpputils::SharedLibrary> ts_lib_;
| ^
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp: In constructor ‘ros1_bridge::Factory<ROS1_T, ROS2_T>::Factory(const string&, const string&)’:
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:46:23: error: ‘get_typesupport_library’ is not a member of ‘rclcpp’
46 | ts_lib_ = rclcpp::get_typesupport_library(ros2_type_name, "rosidl_typesupport_cpp");
| ^~~~~~~~~~~~~~~~~~~~~~~
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:48:31: error: ‘get_typesupport_handle’ is not a member of ‘rclcpp’
48 | type_support_ = rclcpp::get_typesupport_handle(
| ^~~~~~~~~~~~~~~~~~~~~~
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:50:10: error: invalid type argument of unary ‘*’ (have ‘int’)
50 | *ts_lib_);
| ^~~~~~~
In file included from /home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/build/ros1_bridge/generated/get_factory.cpp:3:
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:358:30: error: ‘SharedLibrary’ is not a member of ‘rcpputils’
358 | std::shared_ptr<rcpputils::SharedLibrary> ts_lib_;
| ^~~~~~~~~~~~~
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:358:30: error: ‘SharedLibrary’ is not a member of ‘rcpputils’
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:358:43: error: template argument 1 is invalid
358 | std::shared_ptr<rcpputils::SharedLibrary> ts_lib_;
| ^
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp: In constructor ‘ros1_bridge::Factory<ROS1_T, ROS2_T>::Factory(const string&, const string&)’:
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:46:23: error: ‘get_typesupport_library’ is not a member of ‘rclcpp’
46 | ts_lib_ = rclcpp::get_typesupport_library(ros2_type_name, "rosidl_typesupport_cpp");
| ^~~~~~~~~~~~~~~~~~~~~~~
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:48:31: error: ‘get_typesupport_handle’ is not a member of ‘rclcpp’
48 | type_support_ = rclcpp::get_typesupport_handle(
| ^~~~~~~~~~~~~~~~~~~~~~
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:50:10: error: invalid type argument of unary ‘*’ (have ‘int’)
50 | *ts_lib_);
| ^~~~~~~
In file included from /home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/build/ros1_bridge/generated/action_msgs_factories.hpp:6,
from /home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/build/ros1_bridge/generated/action_msgs__msg__GoalInfo__factories.cpp:3:
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:358:30: error: ‘SharedLibrary’ is not a member of ‘rcpputils’
358 | std::shared_ptr<rcpputils::SharedLibrary> ts_lib_;
| ^~~~~~~~~~~~~
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:358:30: error: ‘SharedLibrary’ is not a member of ‘rcpputils’
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:358:43: error: template argument 1 is invalid
358 | std::shared_ptr<rcpputils::SharedLibrary> ts_lib_;
| ^
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp: In constructor ‘ros1_bridge::Factory<ROS1_T, ROS2_T>::Factory(const string&, const string&)’:
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:46:23: error: ‘get_typesupport_library’ is not a member of ‘rclcpp’
46 | ts_lib_ = rclcpp::get_typesupport_library(ros2_type_name, "rosidl_typesupport_cpp");
| ^~~~~~~~~~~~~~~~~~~~~~~
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:48:31: error: ‘get_typesupport_handle’ is not a member of ‘rclcpp’
48 | type_support_ = rclcpp::get_typesupport_handle(
| ^~~~~~~~~~~~~~~~~~~~~~
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:50:10: error: invalid type argument of unary ‘*’ (have ‘int’)
50 | *ts_lib_);
| ^~~~~~~
make[2]: *** [CMakeFiles/ros1_bridge.dir/build.make:1174 : CMakeFiles/ros1_bridge.dir/generated/action_msgs_factories.cpp.o] Erreur 1
make[2]: *** Attente des tâches non terminées....
In file included from /home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/build/ros1_bridge/generated/action_msgs_factories.hpp:6,
from /home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/build/ros1_bridge/generated/action_msgs__msg__GoalStatus__factories.cpp:3:
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:358:30: error: ‘SharedLibrary’ is not a member of ‘rcpputils’
358 | std::shared_ptr<rcpputils::SharedLibrary> ts_lib_;
| ^~~~~~~~~~~~~
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:358:30: error: ‘SharedLibrary’ is not a member of ‘rcpputils’
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:358:43: error: template argument 1 is invalid
358 | std::shared_ptr<rcpputils::SharedLibrary> ts_lib_;
| ^
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp: In constructor ‘ros1_bridge::Factory<ROS1_T, ROS2_T>::Factory(const string&, const string&)’:
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:46:23: error: ‘get_typesupport_library’ is not a member of ‘rclcpp’
46 | ts_lib_ = rclcpp::get_typesupport_library(ros2_type_name, "rosidl_typesupport_cpp");
| ^~~~~~~~~~~~~~~~~~~~~~~
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:48:31: error: ‘get_typesupport_handle’ is not a member of ‘rclcpp’
48 | type_support_ = rclcpp::get_typesupport_handle(
| ^~~~~~~~~~~~~~~~~~~~~~
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:50:10: error: invalid type argument of unary ‘*’ (have ‘int’)
50 | *ts_lib_);
| ^~~~~~~
make[2]: *** [CMakeFiles/ros1_bridge.dir/build.make:1146 : CMakeFiles/ros1_bridge.dir/generated/custom_msg_ros2_factories.cpp.o] Erreur 1
make[2]: *** [CMakeFiles/ros1_bridge.dir/build.make:1188 : CMakeFiles/ros1_bridge.dir/generated/action_msgs__msg__GoalInfo__factories.cpp.o] Erreur 1
make[2]: *** [CMakeFiles/ros1_bridge.dir/build.make:1202 : CMakeFiles/ros1_bridge.dir/generated/action_msgs__msg__GoalStatus__factories.cpp.o] Erreur 1
make[2]: *** [CMakeFiles/ros1_bridge.dir/build.make:1160 : CMakeFiles/ros1_bridge.dir/generated/custom_msg_ros2__msg__CustomMessage__factories.cpp.o] Erreur 1
make[2]: *** [CMakeFiles/ros1_bridge.dir/build.make:1118 : CMakeFiles/ros1_bridge.dir/generated/get_factory.cpp.o] Erreur 1
make[2]: *** [CMakeFiles/ros1_bridge.dir/build.make:1076 : CMakeFiles/ros1_bridge.dir/src/builtin_interfaces_factories.cpp.o] Erreur 1
In file included from /home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/build/ros1_bridge/generated/action_msgs_factories.hpp:6,
from /home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/build/ros1_bridge/generated/action_msgs__msg__GoalStatusArray__factories.cpp:3:
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:358:30: error: ‘SharedLibrary’ is not a member of ‘rcpputils’
358 | std::shared_ptr<rcpputils::SharedLibrary> ts_lib_;
| ^~~~~~~~~~~~~
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:358:30: error: ‘SharedLibrary’ is not a member of ‘rcpputils’
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:358:43: error: template argument 1 is invalid
358 | std::shared_ptr<rcpputils::SharedLibrary> ts_lib_;
| ^
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp: In constructor ‘ros1_bridge::Factory<ROS1_T, ROS2_T>::Factory(const string&, const string&)’:
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:46:23: error: ‘get_typesupport_library’ is not a member of ‘rclcpp’
46 | ts_lib_ = rclcpp::get_typesupport_library(ros2_type_name, "rosidl_typesupport_cpp");
| ^~~~~~~~~~~~~~~~~~~~~~~
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:48:31: error: ‘get_typesupport_handle’ is not a member of ‘rclcpp’
48 | type_support_ = rclcpp::get_typesupport_handle(
| ^~~~~~~~~~~~~~~~~~~~~~
/home/ac272844/ros2_bridge_custom_interfaces/bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:50:10: error: invalid type argument of unary ‘*’ (have ‘int’)
50 | *ts_lib_);
| ^~~~~~~
make[2]: *** [CMakeFiles/ros1_bridge.dir/build.make:1216 : CMakeFiles/ros1_bridge.dir/generated/action_msgs__msg__GoalStatusArray__factories.cpp.o] Erreur 1
make[1]: *** [CMakeFiles/Makefile2:227 : CMakeFiles/ros1_bridge.dir/all] Erreur 2
make: *** [Makefile:146 : all] Erreur 2
---
Failed <<< ros1_bridge [15.1s, exited with code 2]
Summary: 0 packages finished [15.3s]
1 package failed: ros1_bridge
1 package had stderr output: ros1_bridge
The ros1_bridge
will only consider interface definitions from packages with names ending in _msg
or _interfaces
. You need to fix the package names for your packages.
I faced a similar issue. In my case, I do not add any custom msgs or interfaces. I just install the original ros-noetic and ros-foxy. Before the commit 81f8b, I could build the ros1_bridge successfully. After that, the build just failed and the errors are just like the reported one. There seems to be some problems with the new functions for converting between ROS1 and ROS2 generic message.
If you want to build ros1_bridge
with Foxy then you need to use the Foxy branch. The master
branch only works with Rolling.
Enter the command git checkout foxy
after cloning the repo to be sure that you are building the correct version
Given the above, I'm going to close this out. If you are still having issues, please feel free to reopen.
If you want to build
ros1_bridge
with Foxy then you need to use the Foxy branch. Themaster
branch only works with Rolling.
Is it still valid?
zhuhj
Where can I find the commit 81f8b? The commit numbers are usually bigger, with 7 digits