Skip to content

control_msgs ROS1<->ROS2 fails ros1_bridge build #4

@gavanderhoorn

Description

@gavanderhoorn

First: 💯 for the work.

With your recent updates to ros2#256, I tried building a configuration where both ROS 1 and ROS 2 have control_msgs, sensor_msgs and trajectory_msgs installed.

The build comes quite far, but at some point it stops with the following output:

In file included from /opt/ros/galactic/include/rclcpp/client.hpp:40,
                 from /opt/ros/galactic/include/rclcpp/callback_group.hpp:23,
                 from /opt/ros/galactic/include/rclcpp/any_executable.hpp:20,
                 from /opt/ros/galactic/include/rclcpp/memory_strategy.hpp:25,
                 from /opt/ros/galactic/include/rclcpp/memory_strategies.hpp:18,
                 from /opt/ros/galactic/include/rclcpp/executor_options.hpp:20,
                 from /opt/ros/galactic/include/rclcpp/executor.hpp:36,
                 from /opt/ros/galactic/include/rclcpp/executors/multi_threaded_executor.hpp:26,
                 from /opt/ros/galactic/include/rclcpp/executors.hpp:21,
                 from /opt/ros/galactic/include/rclcpp/rclcpp.hpp:156,
                 from /bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:25,
                 from /bridge_ws/build/ros1_bridge/generated/control_msgs_factories.hpp:6,
                 from /bridge_ws/build/ros1_bridge/generated/control_msgs__action__PointHead__factories.cpp:3:
/bridge_ws/src/ros1_bridge/include/ros1_bridge/action_factory.hpp: In instantiation of ‘void ros1_bridge::ActionFactory_1_2<ROS1_T, ROS2_T>::GoalHandler::handle() [with ROS1_T = control_msgs::PointHeadAction_<std::allocator<void> >; ROS2_T = control_msgs::action::PointHead]’:
/bridge_ws/src/ros1_bridge/include/ros1_bridge/action_factory.hpp:113:9:   required from ‘void ros1_bridge::ActionFactory_1_2<ROS1_T, ROS2_T>::goal_cb(ros1_bridge::ActionFactory_1_2<ROS1_T, ROS2_T>::ROS1GoalHandle) [with ROS1_T = control_msgs::PointHeadAction_<std::allocator<void> >; ROS2_T = control_msgs::action::PointHead; ros1_bridge::ActionFactory_1_2<ROS1_T, ROS2_T>::ROS1GoalHandle = actionlib::ServerGoalHandle<control_msgs::PointHeadAction_<std::allocator<void> > >]’
/bridge_ws/src/ros1_bridge/include/ros1_bridge/action_factory.hpp:74:17:   required from ‘void ros1_bridge::ActionFactory_1_2<ROS1_T, ROS2_T>::create_server_client(ros::NodeHandle, rclcpp::Node::SharedPtr, std::string) [with ROS1_T = control_msgs::PointHeadAction_<std::allocator<void> >; ROS2_T = control_msgs::action::PointHead; rclcpp::Node::SharedPtr = std::shared_ptr<rclcpp::Node>; std::string = std::__cxx11::basic_string<char>]’
/bridge_ws/src/ros1_bridge/include/ros1_bridge/action_factory.hpp:65:16:   required from here
/bridge_ws/src/ros1_bridge/include/ros1_bridge/action_factory.hpp:141:21: error: invalid use of non-static data member ‘ros1_bridge::ActionFactory_1_2<control_msgs::PointHeadAction_<std::allocator<void> >, control_msgs::action::PointHead>::ros2_node_’
  141 |         RCLCPP_INFO(ros2_node_->get_logger(), "Action server not available after waiting");
      |                     ^~~~~~~~~~

this repeats for all actions in control_msgs.

Additionally:

In file included from /usr/include/c++/9/functional:59,
                 from /bridge_ws/src/ros1_bridge/include/ros1_bridge/factory.hpp:18,
                 from /bridge_ws/build/ros1_bridge/generated/control_msgs_factories.hpp:6,
                 from /bridge_ws/build/ros1_bridge/generated/control_msgs__action__PointHead__factories.cpp:3:
/usr/include/c++/9/bits/std_function.h:667:7: error: ‘std::function<_Res(_ArgTypes ...)>::function(_Functor) [with _Functor = ros1_bridge::ActionFactory_1_2<ROS1_T, ROS2_T>::GoalHandler::handle() [with ROS1_T = control_msgs::PointHeadAction_<std::allocator<void> >; ROS2_T = control_msgs::action::PointHead]::<lambda(std::shared_future<std::shared_ptr<rclcpp_action::ClientGoalHandle<control_msgs::action::PointHead> > >)>; <template-parameter-2-2> = void; <template-parameter-2-3> = void; _Res = void; _ArgTypes = {std::shared_future<std::shared_ptr<rclcpp_action::ClientGoalHandle<control_msgs::action::PointHead> > >}]’, declared using local type ‘ros1_bridge::ActionFactory_1_2<ROS1_T, ROS2_T>::GoalHandler::handle() [with ROS1_T = control_msgs::PointHeadAction_<std::allocator<void> >; ROS2_T = control_msgs::action::PointHead]::<lambda(std::shared_future<std::shared_ptr<rclcpp_action::ClientGoalHandle<control_msgs::action::PointHead> > >)>’, is used but never defined [-fpermissive]
  667 |       function<_Res(_ArgTypes...)>::
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~

I don't remember seeing these earlier, so perhaps these are the result of a recent addition?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions