Robotics StackExchange | Archived questions

[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:

  1. $ mkdir -p ~/ros2controlws/src
  2. $ cd ~/ros2controlws/
  3. $ git clone https://github.com/ros-controls/ros2_control src/ros2_control -b humble
  4. $ git clone https://github.com/ros-controls/ros2_controllers src/ros2_controllers -b humble
  5. $ rosdep update
  6. $ rosdep install --from-paths src --ignore-src -r -y
  7. $ 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

Comments

you can install this packages using:

sudo apt istall ros-humble-ros2-control 
sudo apt istall ros-humble-ros2-controllers

Asked by ma ar on 2023-05-30 13:23:47 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