[ROS2 Humble]: Error building the package: joint_trajectory_controller
Hello,
I'm trying to build the ros2control and ros2controllers packages using ROS2 Humble on my Ubuntu 22.04 device. (Kernel 5.15.0-72-generic , gcc version 11.3.0) I also downgraded the setuptools version of Python from 59.6.0 to 58.2.0 in order to make the build of ros2_control work. I have followed these steps so far:
- $ mkdir -p ~/ros2controlws/src
- $ cd ~/ros2controlws/
- $ git clone https://github.com/ros-controls/ros2_control src/ros2_control -b humble
- $ git clone https://github.com/ros-controls/ros2_controllers src/ros2_controllers -b humble
- $ rosdep update
- $ rosdep install --from-paths src --ignore-src -r -y
- $ colcon build --symlink-install
When I build with colcon it builds everything except the joint_trajectory controller. It says a struct is missing members named "reference", "feedback" and "output". The exact output is the following:
tibr@ws-autom-03:~/ros2_control_ws$ colcon build --symlink-install
Starting >>> controller_manager_msgs
Starting >>> ros2_control_test_assets
Starting >>> joint_limits
Starting >>> ros2_controllers_test_nodes
Finished <<< ros2_control_test_assets [0.19s]
Starting >>> hardware_interface
Finished <<< joint_limits [0.19s]
Finished <<< hardware_interface [0.14s]
Starting >>> controller_interface
Starting >>> transmission_interface
Finished <<< transmission_interface [0.12s]
Finished <<< controller_interface [0.12s]
Finished <<< controller_manager_msgs [0.47s]
Starting >>> controller_manager
Starting >>> rqt_controller_manager
Starting >>> rqt_joint_trajectory_controller
Finished <<< ros2_controllers_test_nodes [0.73s]
Finished <<< controller_manager [0.37s]
Starting >>> forward_command_controller
Starting >>> joint_trajectory_controller
Starting >>> diff_drive_controller
Starting >>> force_torque_sensor_broadcaster
Starting >>> imu_sensor_broadcaster
Starting >>> joint_state_broadcaster
Starting >>> ros2controlcli
Starting >>> tricycle_controller
Starting >>> gripper_controllers
Finished <<< diff_drive_controller [0.30s]
Finished <<< joint_state_broadcaster [0.30s]
Finished <<< force_torque_sensor_broadcaster [0.31s]
Finished <<< imu_sensor_broadcaster [0.31s]
Finished <<< forward_command_controller [0.33s]
Starting >>> effort_controllers
Starting >>> position_controllers
Starting >>> velocity_controllers
Finished <<< tricycle_controller [0.36s]
Finished <<< gripper_controllers [0.37s]
Finished <<< rqt_joint_trajectory_controller [0.79s]
Finished <<< rqt_controller_manager [0.81s]
Finished <<< position_controllers [0.13s]
Finished <<< velocity_controllers [0.13s]
Finished <<< effort_controllers [0.14s]
Finished <<< ros2controlcli [0.60s]
Starting >>> ros2_control
Finished <<< ros2_control [0.07s]
--- stderr: joint_trajectory_controller
/home/tibr/ros2_control_ws/src/ros2_controllers/joint_trajectory_controller/src/joint_trajectory_controller.cpp: In member function ‘virtual controller_interface::CallbackReturn joint_trajectory_controller::JointTrajectoryController::on_configure(const rclcpp_lifecycle::State&)’:
/home/tibr/ros2_control_ws/src/ros2_controllers/joint_trajectory_controller/src/joint_trajectory_controller.cpp:846:26: error: ‘struct control_msgs::msg::JointTrajectoryControllerState_<std::allocator<void> >’ has no member named ‘reference’
846 | state_publisher_->msg_.reference.positions.resize(dof_);
| ^~~~~~~~~
/home/tibr/ros2_control_ws/src/ros2_controllers/joint_trajectory_controller/src/joint_trajectory_controller.cpp:847:26: error: ‘struct control_msgs::msg::JointTrajectoryControllerState_<std::allocator<void> >’ has no member named ‘reference’
847 | state_publisher_->msg_.reference.velocities.resize(dof_);
| ^~~~~~~~~
/home/tibr/ros2_control_ws/src/ros2_controllers/joint_trajectory_controller/src/joint_trajectory_controller.cpp:848:26: error: ‘struct control_msgs::msg::JointTrajectoryControllerState_<std::allocator<void> >’ has no member named ‘reference’
848 | state_publisher_->msg_.reference.accelerations.resize(dof_);
| ^~~~~~~~~
/home/tibr/ros2_control_ws/src/ros2_controllers/joint_trajectory_controller/src/joint_trajectory_controller.cpp:849:26: error: ‘struct control_msgs::msg::JointTrajectoryControllerState_<std::allocator<void> >’ has no member named ‘feedback’
849 | state_publisher_->msg_.feedback.positions.resize(dof_);
| ^~~~~~~~
/home/tibr/ros2_control_ws/src/ros2_controllers/joint_trajectory_controller/src/joint_trajectory_controller.cpp:853:28: error: ‘struct control_msgs::msg::JointTrajectoryControllerState_<std::allocator<void> >’ has no member named ‘feedback’
853 | state_publisher_->msg_.feedback.velocities.resize(dof_);
| ^~~~~~~~
/home/tibr/ros2_control_ws/src/ros2_controllers/joint_trajectory_controller/src/joint_trajectory_controller.cpp:858:28: error: ‘struct control_msgs::msg::JointTrajectoryControllerState_<std::allocator<void> >’ has no member named ‘feedback’
858 | state_publisher_->msg_.feedback.accelerations.resize(dof_);
| ^~~~~~~~
/home/tibr/ros2_control_ws/src/ros2_controllers/joint_trajectory_controller/src/joint_trajectory_controller.cpp:863:28: error: ‘struct control_msgs::msg::JointTrajectoryControllerState_<std::allocator<void> >’ has no member named ‘output’
863 | state_publisher_->msg_.output.positions.resize(dof_);
| ^~~~~~
/home/tibr/ros2_control_ws/src/ros2_controllers/joint_trajectory_controller/src/joint_trajectory_controller.cpp:867:28: error: ‘struct control_msgs::msg::JointTrajectoryControllerState_<std::allocator<void> >’ has no member named ‘output’
867 | state_publisher_->msg_.output.velocities.resize(dof_);
| ^~~~~~
/home/tibr/ros2_control_ws/src/ros2_controllers/joint_trajectory_controller/src/joint_trajectory_controller.cpp:871:28: error: ‘struct control_msgs::msg::JointTrajectoryControllerState_<std::allocator<void> >’ has no member named ‘output’
871 | state_publisher_->msg_.output.accelerations.resize(dof_);
| ^~~~~~
/home/tibr/ros2_control_ws/src/ros2_controllers/joint_trajectory_controller/src/joint_trajectory_controller.cpp:875:28: error: ‘struct control_msgs::msg::JointTrajectoryControllerState_<std::allocator<void> >’ has no member named ‘output’
875 | state_publisher_->msg_.output.effort.resize(dof_);
| ^~~~~~
/home/tibr/ros2_control_ws/src/ros2_controllers/joint_trajectory_controller/src/joint_trajectory_controller.cpp: In member function ‘void joint_trajectory_controller::JointTrajectoryController::publish_state(const JointTrajectoryPoint&, const JointTrajectoryPoint&, const JointTrajectoryPoint&)’:
/home/tibr/ros2_control_ws/src/ros2_controllers/joint_trajectory_controller/src/joint_trajectory_controller.cpp:1124:28: error: ‘struct control_msgs::msg::JointTrajectoryControllerState_<std::allocator<void> >’ has no member named ‘reference’
1124 | state_publisher_->msg_.reference.positions = desired_state.positions;
| ^~~~~~~~~
/home/tibr/ros2_control_ws/src/ros2_controllers/joint_trajectory_controller/src/joint_trajectory_controller.cpp:1125:28: error: ‘struct control_msgs::msg::JointTrajectoryControllerState_<std::allocator<void> >’ has no member named ‘reference’
1125 | state_publisher_->msg_.reference.velocities = desired_state.velocities;
| ^~~~~~~~~
/home/tibr/ros2_control_ws/src/ros2_controllers/joint_trajectory_controller/src/joint_trajectory_controller.cpp:1126:28: error: ‘struct control_msgs::msg::JointTrajectoryControllerState_<std::allocator<void> >’ has no member named ‘reference’
1126 | state_publisher_->msg_.reference.accelerations = desired_state.accelerations;
| ^~~~~~~~~
/home/tibr/ros2_control_ws/src/ros2_controllers/joint_trajectory_controller/src/joint_trajectory_controller.cpp:1127:28: error: ‘struct control_msgs::msg::JointTrajectoryControllerState_<std::allocator<void> >’ has no member named ‘feedback’
1127 | state_publisher_->msg_.feedback.positions = current_state.positions;
| ^~~~~~~~
/home/tibr/ros2_control_ws/src/ros2_controllers/joint_trajectory_controller/src/joint_trajectory_controller.cpp:1131:30: error: ‘struct control_msgs::msg::JointTrajectoryControllerState_<std::allocator<void> >’ has no member named ‘feedback’
1131 | state_publisher_->msg_.feedback.velocities = current_state.velocities;
| ^~~~~~~~
/home/tibr/ros2_control_ws/src/ros2_controllers/joint_trajectory_controller/src/joint_trajectory_controller.cpp:1136:30: error: ‘struct control_msgs::msg::JointTrajectoryControllerState_<std::allocator<void> >’ has no member named ‘feedback’
1136 | state_publisher_->msg_.feedback.accelerations = current_state.accelerations;
| ^~~~~~~~
/home/tibr/ros2_control_ws/src/ros2_controllers/joint_trajectory_controller/src/joint_trajectory_controller.cpp:1141:30: error: ‘struct control_msgs::msg::JointTrajectoryControllerState_<std::allocator<void> >’ has no member named ‘output’
1141 | state_publisher_->msg_.output = command_current_;
| ^~~~~~
gmake[2]: *** [CMakeFiles/joint_trajectory_controller.dir/build.make:76: CMakeFiles/joint_trajectory_controller.dir/src/joint_trajectory_controller.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:208: CMakeFiles/joint_trajectory_controller.dir/all] Error 2
gmake: *** [Makefile:146: all] Error 2
---
Failed <<< joint_trajectory_controller [3.01s, exited with code 2]
Summary: 22 packages finished [3.98s]
1 package failed: joint_trajectory_controller
1 package had stderr output: joint_trajectory_controller
2 packages not processed
Any ideas what the problem could be?
Asked by Nils Heidemann on 2023-05-30 09:18:56 UTC
Answers
This error comes from a change in control_msgs
, where the release got stuck somewhere. Update ros-humble-control-msgs
and it should be fine now. If not, add it to your workspace from https://github.com/ros-controls/control_msgs/tree/humble
Asked by christophfroehlich on 2023-06-06 07:38:41 UTC
Comments
you can install this packages using:
Asked by ma ar on 2023-05-30 13:23:47 UTC