UniversalRobots / Universal_Robots_ROS2_Driver

Universal Robots ROS2 driver supporting CB3 and e-Series
BSD 3-Clause "New" or "Revised" License
436 stars 226 forks source link

controller_manager package faild to build using colcon build - ROS2 Humble on Ubuntu 22.04 #1178

Open Vineela0808 opened 2 weeks ago

Vineela0808 commented 2 weeks ago

Affected ROS2 Driver version(s)

controller_manager

Used ROS distribution.

Humble

Which combination of platform is the ROS driver running on.

Ubuntu Linux with standard kernel

How is the UR ROS2 Driver installed.

Build both the ROS driver and UR Client Library from source

Which robot platform is the driver connected to.

UR E-series robot

Robot SW / URSim version(s)

UR16E

How is the ROS driver used.

Through the robot teach pendant using External Control URCap

Issue details

I installed ROS2 Humble on Ubuntu 22.04 (on Nvidia Jetson Orin Nano using JetsonPack 6.0) as instructed on the official ROS2 webpage. It works fine and I also tried examples. Now, I'm trying to install UR drivers for humble and when I'm trying to colcon build, I'm getting the following error [Please check log output for full error]:

[Processing: controller_manager]
[Processing: controller_manager]
[Processing: controller_manager]
--- stderr: controller_manager
/usr/lib/python3/dist-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools. warnings.warn( /home/nyu/workspace/ros_ur_driver/src/ros2_control/controller_manager/src/ros2_control_node.cpp: In function ‘int main(int, char)’: /home/nyu/workspace/ros_ur_driver/src/ros2_control/controller_manager/src/ros2_control_node.cpp:50:50: error: ‘set_current_thread_affinity’ is not a member of ‘realtime_tools’ 50 | const auto affinity_result = realtime_tools::set_current_thread_affinity(cpu_affinity); | ^~~~~~~ /home/nyu/workspace/ros_ur_driver/src/ros2_control/controller_manager/src/ros2_control_node.cpp:59:39: error: ‘lock_memory’ is not a member of ‘realtime_tools’ 59 | if (lock_memory && !realtime_tools::lock_memory(message)) | ^~~ gmake[2]: ** [CMakeFiles/ros2_control_node.dir/build.make:76: CMakeFiles/ros2_control_node.dir/src/ros2_control_node.cpp.o] Error 1 gmake[1]: [CMakeFiles/Makefile2:234: CMakeFiles/ros2_control_node.dir/all] Error 2 gmake[1]: Waiting for unfinished jobs.... gmake: [Makefile:146: all] Error 2

Failed <<< controller_manager [1min 48s, exited with code 2]

Summary: 17 packages finished [7min 33s] 1 package failed: controller_manager 2 packages had stderr output: controller_manager ur_client_library 28 packages not processed

Relevant log output

nyu@nyu-desktop:~/workspace/ros_ur_driver$ colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release
[0.956s] WARNING:colcon.colcon_core.package_selection:Some selected packages are already built in one or more underlay workspaces:
    'control_msgs' is in: /opt/ros/humble
    'joint_state_broadcaster' is in: /opt/ros/humble
    'joint_trajectory_controller' is in: /opt/ros/humble
    'gripper_controllers' is in: /opt/ros/humble
If a package in a merged underlay workspace is overridden and it installs headers, then all packages in the overlay must sort their include directories by workspace order. Failure to do so may result in build failures or undefined behavior at run time.
If the overridden package is used by another package in any underlay, then the overriding package in the overlay must be API and ABI compatible or undefined behavior at run time may occur.

If you understand the risks and want to override a package anyways, add the following to the command line:
    --allow-overriding control_msgs gripper_controllers joint_state_broadcaster joint_trajectory_controller

This may be promoted to an error in a future release of colcon-override-check.
Starting >>> control_msgs
Starting >>> ros2_control_test_assets
Starting >>> controller_manager_msgs
Starting >>> ur_dashboard_msgs
Starting >>> ur_description
Starting >>> ur_msgs
Finished <<< ros2_control_test_assets [3.60s]                     
Starting >>> ros2_controllers_test_nodes
Finished <<< ur_description [4.29s]                               
Starting >>> kinematics_interface
Finished <<< ros2_controllers_test_nodes [3.64s]                  
Starting >>> ur_client_library                                       
[Processing: control_msgs, controller_manager_msgs, kinematics_interface, ur_client_library, ur_dashboard_msgs, ur_msgs]
[Processing: control_msgs, controller_manager_msgs, kinematics_interface, ur_client_library, ur_dashboard_msgs, ur_msgs]
Finished <<< kinematics_interface [1min 21s]
Starting >>> kinematics_interface_kdl
Finished <<< ur_msgs [1min 30s]             
Starting >>> joint_limits
Finished <<< ur_dashboard_msgs [1min 38s]   
Starting >>> ur_moveit_config
Finished <<< controller_manager_msgs [1min 39s]
Finished <<< ur_moveit_config [2.86s]       
--- stderr: ur_client_library               
/home/nyu/workspace/ros_ur_driver/src/Universal_Robots_Client_Library/src/ur/ur_driver.cpp: In member function ‘void urcl::UrDriver::setKeepaliveCount(uint32_t)’:
/home/nyu/workspace/ros_ur_driver/src/Universal_Robots_Client_Library/src/ur/ur_driver.cpp:593:40: warning: ‘virtual void urcl::control::ReverseInterface::setKeepaliveCount(uint32_t)’ is deprecated: Set keepaliveCount is deprecated, instead use the robot receive timeout directly in the write commands. [-Wdeprecated-declarations]
  593 |   reverse_interface_->setKeepaliveCount(count);
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
In file included from /home/nyu/workspace/ros_ur_driver/src/Universal_Robots_Client_Library/include/ur_client_library/ur/ur_driver.h:34,
                 from /home/nyu/workspace/ros_ur_driver/src/Universal_Robots_Client_Library/src/ur/ur_driver.cpp:34:
/home/nyu/workspace/ros_ur_driver/src/Universal_Robots_Client_Library/include/ur_client_library/control/reverse_interface.h:142:3: note: declared here
  142 |   setKeepaliveCount(const uint32_t count);
      |   ^~~~~~~~~~~~~~~~~
---
Finished <<< ur_client_library [1min 52s]
Finished <<< joint_limits [42.8s]           
[Processing: control_msgs, kinematics_interface_kdl]
Finished <<< kinematics_interface_kdl [1min 18s]
Finished <<< control_msgs [3min 13s]                                
Starting >>> hardware_interface
Starting >>> rqt_joint_trajectory_controller
Finished <<< rqt_joint_trajectory_controller [2.08s]                           
[Processing: hardware_interface]                                    
[Processing: hardware_interface]                                        
Finished <<< hardware_interface [1min 9s]                                
Starting >>> controller_interface
Starting >>> hardware_interface_testing
Starting >>> transmission_interface
[Processing: controller_interface, hardware_interface_testing, transmission_interface]
[Processing: controller_interface, hardware_interface_testing, transmission_interface]
Finished <<< hardware_interface_testing [1min 10s]
Finished <<< controller_interface [1min 22s] 
Starting >>> controller_manager
Finished <<< transmission_interface [1min 34s]
[Processing: controller_manager]                                    
[Processing: controller_manager]                                         
[Processing: controller_manager]                                         
--- stderr: controller_manager                                           
/usr/lib/python3/dist-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
  warnings.warn(
/home/nyu/workspace/ros_ur_driver/src/ros2_control/controller_manager/src/ros2_control_node.cpp: In function ‘int main(int, char**)’:
/home/nyu/workspace/ros_ur_driver/src/ros2_control/controller_manager/src/ros2_control_node.cpp:50:50: error: ‘set_current_thread_affinity’ is not a member of ‘realtime_tools’
   50 |     const auto affinity_result = realtime_tools::set_current_thread_affinity(cpu_affinity);
      |                                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/nyu/workspace/ros_ur_driver/src/ros2_control/controller_manager/src/ros2_control_node.cpp:59:39: error: ‘lock_memory’ is not a member of ‘realtime_tools’
   59 |   if (lock_memory && !realtime_tools::lock_memory(message))
      |                                       ^~~~~~~~~~~
gmake[2]: *** [CMakeFiles/ros2_control_node.dir/build.make:76: CMakeFiles/ros2_control_node.dir/src/ros2_control_node.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:234: CMakeFiles/ros2_control_node.dir/all] Error 2
gmake[1]: *** Waiting for unfinished jobs....
gmake: *** [Makefile:146: all] Error 2
---
Failed   <<< controller_manager [1min 48s, exited with code 2]

Summary: 17 packages finished [7min 33s]
  1 package failed: controller_manager
  2 packages had stderr output: controller_manager ur_client_library
  28 packages not processed
nyu@nyu-desktop:~/workspace/ros_ur_driver$

Accept Public visibility