前辈您好:
我也是和您一样,拟使用ROS2建立Moveit2与ABB(IRB1600)的连接。
和您文中到的阶段差不多,我也成功建立了从Moveit2到Robotstudio里的虚拟IRB1600(Robotware6.08与6.14.00.01都成功了),但移植到实体机械臂上的时候,总是在报41830机械臂硬件系统无法发送UpdUc信息的错误。db4f7fe19351b65ab43d243e99f19ab.png
当然还会有41822无法接受到上位机UdpUc信息的警告(这个我猜测是未建立连接的错误,若41830可解决,这个亦可解决)。
在此想咨询前辈:
1、是否成功的控制了实际的ABB机械臂?
2、是否也遇到了上述报错?
3、上述41830错误是只要运行ABB的RAPID代码就会延迟1s左右出现,此时无论ROS2那边是否发起连接,是否从模拟环境转到实际机械臂需要额外修改的配置文件?(机械臂的URDF与SRDF我都已经换成了IRB1600的了)
PS:
1、实际机械臂ABB的EGM模组已经额外购买安装了;
2、实际机械臂的Robotware版本为6.14.00.01
3、ROS2版本为Iron
4、IRB1600是标准的六轴工业臂,无额外加轴或负载;
以下是正常运行的仿真信息与报错信息
正常连接
maple@maple-virtual-machine:~$ ros2 launch abb_bringup abb_control.launch.py description_package:=abb_irb1600_support description_file:=irb1600_10_12.xacro launch_rviz:=false moveit_config_package:=abb_irb1600_10_12_moveit_config use_fake_hardware:=false rws_ip:=10.189.140.136
[INFO] [launch]: All log files can be found below /home/maple/.ros/log/2023-07-12-10-39-23-301877-maple-virtual-machine-8611
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [ros2_control_node-1]: process started with pid [8616]
[INFO] [robot_state_publisher-2]: process started with pid [8618]
[INFO] [spawner-3]: process started with pid [8620]
[INFO] [spawner-4]: process started with pid [8622]
[robot_state_publisher-2] [WARN] [1689129563.750335791] [kdl_parser]: The root link base_link has an inertia specified in the URDF, but KDL does not support a root link with an inertia. As a workaround, you can add an extra dummy link to your URDF.
[robot_state_publisher-2] [INFO] [1689129563.750440292] [robot_state_publisher]: got segment base
[robot_state_publisher-2] [INFO] [1689129563.750521252] [robot_state_publisher]: got segment base_link
[robot_state_publisher-2] [INFO] [1689129563.750533369] [robot_state_publisher]: got segment flange
[robot_state_publisher-2] [INFO] [1689129563.750542839] [robot_state_publisher]: got segment link_1
[robot_state_publisher-2] [INFO] [1689129563.750551914] [robot_state_publisher]: got segment link_2
[robot_state_publisher-2] [INFO] [1689129563.750561160] [robot_state_publisher]: got segment link_3
[robot_state_publisher-2] [INFO] [1689129563.750570210] [robot_state_publisher]: got segment link_4
[robot_state_publisher-2] [INFO] [1689129563.750579187] [robot_state_publisher]: got segment link_5
[robot_state_publisher-2] [INFO] [1689129563.750588108] [robot_state_publisher]: got segment link_6
[robot_state_publisher-2] [INFO] [1689129563.750596960] [robot_state_publisher]: got segment tool0
[ros2_control_node-1] [INFO] [1689129563.759028902] [resource_manager]: Loading hardware 'ABBMultiInterfaceHardware'
[ros2_control_node-1] [INFO] [1689129563.766998498] [resource_manager]: Initialize hardware 'ABBMultiInterfaceHardware'
[ros2_control_node-1] [INFO] [1689129563.852748278] [ABBSystemHardware]: Robot controller description:
[ros2_control_node-1] ============================================================
[ros2_control_node-1] = Summary of robot controller at '10.189.140.136:80'
[ros2_control_node-1] ============================================================
[ros2_control_node-1] # General Information:
[ros2_control_node-1] |- RobotWare version: 6.08.00.00
[ros2_control_node-1] |- System name: IRB_1600_10kg_1.2m
[ros2_control_node-1] |- System type: Virtual Controller
[ros2_control_node-1] |- Options:
[ros2_control_node-1] |- RobotWare Base
[ros2_control_node-1] |- English
[ros2_control_node-1] |- 689-1 Externally Guided Motion (EGM)
[ros2_control_node-1] |- UDPUC Driver
[ros2_control_node-1] |- Drive System IRB 120/140/260/360/910SC/1200/1400/1520/1600/1660ID
[ros2_control_node-1] |- ADU-790A in position X3
[ros2_control_node-1] |- ADU-790A in position Y3
[ros2_control_node-1] |- ADU-790A in position Z3
[ros2_control_node-1] |- Axis Calibration
[ros2_control_node-1] |- IRB 1600-10/1.2
[ros2_control_node-1]
[ros2_control_node-1] # Mechanical Units:
[ros2_control_node-1] |- Unit: ROB_1
[ros2_control_node-1]
[ros2_control_node-1] # Mechanical Unit Groups:
[ros2_control_node-1] |- N/A (only for MultiMove systems)
[ros2_control_node-1] ============================================================
[ros2_control_node-1] [INFO] [1689129563.852792740] [ABBSystemHardware]: Configuring EGM interface...
[ros2_control_node-1] [INFO] [1689129563.852883541] [ABBSystemHardware]: Configuring EGM for mechanical unit group on port 6511
[ros2_control_node-1] [INFO] [1689129563.867502416] [resource_manager]: Successful initialization of hardware 'ABBMultiInterfaceHardware'
[ros2_control_node-1] [WARN] [1689129563.867709761] [controller_manager]: [Deprecated]: Automatic activation of all hardware components will not be supported in the future anymore. Use hardware_spawner instead.
[ros2_control_node-1] [INFO] [1689129563.867822275] [resource_manager]: 'configure' hardware 'ABBMultiInterfaceHardware'
[ros2_control_node-1] [INFO] [1689129563.867830015] [resource_manager]: Successful 'configure' of hardware 'ABBMultiInterfaceHardware'
[ros2_control_node-1] [INFO] [1689129563.867837397] [resource_manager]: 'activate' hardware 'ABBMultiInterfaceHardware'
[ros2_control_node-1] [INFO] [1689129563.867853642] [ABBSystemHardware]: Connecting to robot...
[ros2_control_node-1] [INFO] [1689129564.368014796] [ABBSystemHardware]: Not connected to robot...
[ros2_control_node-1] [INFO] [1689129565.368461517] [ABBSystemHardware]: Not connected to robot...
[spawner-4] [INFO] [1689129565.973728146] [spawner_joint_trajectory_controller]: Waiting for '/controller_manager' services to be available
[spawner-3] [INFO] [1689129565.990071817] [spawner_joint_state_broadcaster]: Waiting for '/controller_manager' services to be available
[ros2_control_node-1] [INFO] [1689129566.369010847] [ABBSystemHardware]: Not connected to robot...
[ros2_control_node-1] [INFO] [1689129567.305496260] [ABBSystemHardware]: Connected to robot
[ros2_control_node-1] [INFO] [1689129567.305574934] [ABBSystemHardware]: ros2_control hardware interface was successfully started!
[ros2_control_node-1] [INFO] [1689129567.305585904] [resource_manager]: Successful 'activate' of hardware 'ABBMultiInterfaceHardware'
[ros2_control_node-1] [INFO] [1689129567.310303851] [controller_manager]: update rate is 250 Hz
[ros2_control_node-1] [INFO] [1689129567.310438338] [controller_manager]: RT kernel is recommended for better performance
[ros2_control_node-1] [INFO] [1689129567.400565923] [controller_manager]: Loading controller 'joint_trajectory_controller'
[spawner-4] [INFO] [1689129567.415595360] [spawner_joint_trajectory_controller]: Loaded joint_trajectory_controller
[ros2_control_node-1] [INFO] [1689129567.416202532] [controller_manager]: Loading controller 'joint_state_broadcaster'
[ros2_control_node-1] [INFO] [1689129567.426816858] [controller_manager]: Configuring controller 'joint_trajectory_controller'
[ros2_control_node-1] [INFO] [1689129567.427018662] [joint_trajectory_controller]: No specific joint names are used for command interfaces. Using 'joints' parameter.
[ros2_control_node-1] [INFO] [1689129567.427105302] [joint_trajectory_controller]: Command interfaces are [position velocity] and state interfaces are [position velocity].
[ros2_control_node-1] [INFO] [1689129567.427128183] [joint_trajectory_controller]: Using 'splines' interpolation method.
[spawner-3] [INFO] [1689129567.427298317] [spawner_joint_state_broadcaster]: Loaded joint_state_broadcaster
[ros2_control_node-1] [INFO] [1689129567.431965610] [joint_trajectory_controller]: Action status changes will be monitored at 20.00 Hz.
[ros2_control_node-1] [INFO] [1689129567.435177565] [controller_manager]: Configuring controller 'joint_state_broadcaster'
[ros2_control_node-1] [INFO] [1689129567.435225859] [joint_state_broadcaster]: 'joints' or 'interfaces' parameter is empty. All available state interfaces will be published
[spawner-4] [INFO] [1689129567.443496874] [spawner_joint_trajectory_controller]: Configured and activated joint_trajectory_controller
[spawner-3] [INFO] [1689129567.451358331] [spawner_joint_state_broadcaster]: Configured and activated joint_state_broadcaster
[INFO] [spawner-4]: process has finished cleanly [pid 8622]
[INFO] [spawner-3]: process has finished cleanly [pid 8620]
实际机械臂连接
maple@maple-virtual-machine:~$ ros2 launch abb_bringup abb_control.launch.py description_package:=abb_irb1600_support description_file:=irb1600_10_12.xacro launch_rviz:=false moveit_config_package:=abb_irb1600_10_12_moveit_config use_fake_hardware:=false rws_ip:=10.189.140.12
[INFO] [launch]: All log files can be found below /home/maple/.ros/log/2023-07-12-10-43-35-659335-maple-virtual-machine-9011
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [ros2_control_node-1]: process started with pid [9016]
[INFO] [robot_state_publisher-2]: process started with pid [9018]
[INFO] [spawner-3]: process started with pid [9020]
[INFO] [spawner-4]: process started with pid [9022]
[robot_state_publisher-2] [WARN] [1689129816.093032645] [kdl_parser]: The root link base_link has an inertia specified in the URDF, but KDL does not support a root link with an inertia. As a workaround, you can add an extra dummy link to your URDF.
[robot_state_publisher-2] [INFO] [1689129816.093116631] [robot_state_publisher]: got segment base
[robot_state_publisher-2] [INFO] [1689129816.093164184] [robot_state_publisher]: got segment base_link
[robot_state_publisher-2] [INFO] [1689129816.093172570] [robot_state_publisher]: got segment flange
[robot_state_publisher-2] [INFO] [1689129816.093180311] [robot_state_publisher]: got segment link_1
[robot_state_publisher-2] [INFO] [1689129816.093187438] [robot_state_publisher]: got segment link_2
[robot_state_publisher-2] [INFO] [1689129816.093194769] [robot_state_publisher]: got segment link_3
[robot_state_publisher-2] [INFO] [1689129816.093201942] [robot_state_publisher]: got segment link_4
[robot_state_publisher-2] [INFO] [1689129816.093209117] [robot_state_publisher]: got segment link_5
[robot_state_publisher-2] [INFO] [1689129816.093216141] [robot_state_publisher]: got segment link_6
[robot_state_publisher-2] [INFO] [1689129816.093223215] [robot_state_publisher]: got segment tool0
[ros2_control_node-1] [INFO] [1689129816.098424145] [resource_manager]: Loading hardware 'ABBMultiInterfaceHardware'
[ros2_control_node-1] [INFO] [1689129816.104218773] [resource_manager]: Initialize hardware 'ABBMultiInterfaceHardware'
[ros2_control_node-1] [WARN] [1689129818.107661442] [ABBHardwareInterfaceUtilities]: Failed to establish RWS connection to the robot controller (waiting indefinitely), reason: 'Failed to collect general system info'
[spawner-4] [INFO] [1689129818.697917155] [spawner_joint_trajectory_controller]: Waiting for '/controller_manager' services to be available
[spawner-3] [INFO] [1689129818.732989817] [spawner_joint_state_broadcaster]: Waiting for '/controller_manager' services to be available
[spawner-4] [INFO] [1689129820.712809011] [spawner_joint_trajectory_controller]: Waiting for '/controller_manager' services to be available
[spawner-3] [INFO] [1689129820.751684380] [spawner_joint_state_broadcaster]: Waiting for '/controller_manager' services to be available
[ros2_control_node-1] [WARN] [1689129821.110718473] [ABBHardwareInterfaceUtilities]: Failed to establish RWS connection to the robot controller (waiting indefinitely), reason: 'Failed to collect general system info'
[spawner-4] [INFO] [1689129822.727772717] [spawner_joint_trajectory_controller]: Waiting for '/controller_manager' services to be available
[spawner-3] [INFO] [1689129822.769059037] [spawner_joint_state_broadcaster]: Waiting for '/controller_manager' services to be available
[ros2_control_node-1] [WARN] [1689129824.113744158] [ABBHardwareInterfaceUtilities]: Failed to establish RWS connection to the robot controller (waiting indefinitely), reason: 'Failed to collect general system info'
[spawner-4] [INFO] [1689129824.744069858] [spawner_joint_trajectory_controller]: Waiting for '/controller_manager' services to be available
[spawner-3] [INFO] [1689129824.787293213] [spawner_joint_state_broadcaster]: Waiting for '/controller_manager' services to be available
[spawner-4] [ERROR] [1689129826.760465664] [spawner_joint_trajectory_controller]: Controller manager not available
[spawner-3] [ERROR] [1689129826.802841821] [spawner_joint_state_broadcaster]: Controller manager not available
[ERROR] [spawner-4]: process has died [pid 9022, exit code 1, cmd '/opt/ros/iron/lib/controller_manager/spawner joint_trajectory_controller -c /controller_manager --ros-args'].
[ERROR] [spawner-3]: process has died [pid 9020, exit code 1, cmd '/opt/ros/iron/lib/controller_manager/spawner joint_state_broadcaster --controller-manager /controller_manager --ros-args'].
[ros2_control_node-1] [WARN] [1689129827.116410557] [ABBHardwareInterfaceUtilities]: Failed to establish RWS connection to the robot controller (waiting indefinitely), reason: 'Failed to collect general system info'
[ros2_control_node-1] [WARN] [1689129830.120605662] [ABBHardwareInterfaceUtilities]: Failed to establish RWS connection to the robot controller (waiting indefinitely), reason: 'Failed to collect general system info'
^C[WARNING] [launch]: user interrupted with ctrl-c (SIGINT)
[robot_state_publisher-2] [INFO] [1689129831.757217191] [rclcpp]: signal_handler(signum=2)
[ros2_control_node-1] [INFO] [1689129831.757245258] [rclcpp]: signal_handler(signum=2)
[INFO] [robot_state_publisher-2]: process has finished cleanly [pid 9018]
[ros2_control_node-1] [WARN] [1689129833.122248436] [ABBHardwareInterfaceUtilities]: Failed to establish RWS connection to the robot controller (waiting indefinitely), reason: 'Failed to collect general system info'
[ros2_control_node-1] terminate called after throwing an instance of 'std::runtime_error'
[ros2_control_node-1] what(): Failed to establish RWS connection to the robot controller
[ros2_control_node-1] Stack trace (most recent call last):
[ros2_control_node-1] #18 Object "", at 0xffffffffffffffff, in
[ros2_control_node-1] #17 Object "/opt/ros/iron/lib/controller_manager/ros2_control_node", at 0x558c5341de04, in _start
[ros2_control_node-1] #16 Source "../csu/libc-start.c", line 392, in __libc_start_main_impl [0x7f7fea029e3f]
[ros2_control_node-1] #15 Source "../sysdeps/nptl/libc_start_call_main.h", line 58, in __libc_start_call_main [0x7f7fea029d8f]
[ros2_control_node-1] #14 Object "/opt/ros/iron/lib/controller_manager/ros2_control_node", at 0x558c5341d8b2, in main
[ros2_control_node-1] #13 Object "/opt/ros/iron/lib/libcontroller_manager.so", at 0x7f7feac14128, in controller_manager::ControllerManager::ControllerManager(std::shared_ptr<rclcpp::Executor>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rclcpp::NodeOptions const&)
[ros2_control_node-1] #12 Object "/opt/ros/iron/lib/libcontroller_manager.so", at 0x7f7feac0fe91, in controller_manager::ControllerManager::init_resource_manager(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
[ros2_control_node-1] #11 Object "/opt/ros/iron/lib/libhardware_interface.so", at 0x7f7feaa8661a, in hardware_interface::ResourceManager::load_urdf(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)
[ros2_control_node-1] #10 Object "/opt/ros/iron/lib/libhardware_interface.so", at 0x7f7feaaab25d, in
[ros2_control_node-1] #9 Object "/opt/ros/iron/lib/libhardware_interface.so", at 0x7f7feaaa15ab, in hardware_interface::System::initialize(hardware_interface::HardwareInfo const&)
[ros2_control_node-1] #8 Object "/home/maple/abb_ros2_ws/install/abb_hardware_interface/lib/libabb_hardware_interface.so", at 0x7f7fdcf6ee27, in abb_hardware_interface::ABBSystemHardware::on_init(hardware_interface::HardwareInfo const&)
[ros2_control_node-1] #7 Object "/home/maple/abb_ros2_ws/install/abb_hardware_interface/lib/libabb_hardware_interface.so", at 0x7f7fdcf90341, in abb::robot::utilities::establishRWSConnection(abb::robot::RWSManager&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)
[ros2_control_node-1] #6 Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30", at 0x7f7fea4ae517, in __cxa_throw
[ros2_control_node-1] #5 Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30", at 0x7f7fea4ae2b6, in std::terminate()
[ros2_control_node-1] #4 Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30", at 0x7f7fea4ae24b, in
[ros2_control_node-1] #3 Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30", at 0x7f7fea4a2bbd, in
[ros2_control_node-1] #2 Source "./stdlib/abort.c", line 79, in abort [0x7f7fea0287f2]
[ros2_control_node-1] #1 Source "../sysdeps/posix/raise.c", line 26, in raise [0x7f7fea042475]
[ros2_control_node-1] #0 | Source "./nptl/pthread_kill.c", line 89, in __pthread_kill_internal
[ros2_control_node-1] | Source "./nptl/pthread_kill.c", line 78, in __pthread_kill_implementation
[ros2_control_node-1] Source "./nptl/pthread_kill.c", line 44, in __pthread_kill [0x7f7fea096a7c]
[ros2_control_node-1] Aborted (Signal sent by tkill() 9016 1000)
[ERROR] [ros2_control_node-1]: process has died [pid 9016, exit code -6, cmd '/opt/ros/iron/lib/controller_manager/ros2_control_node --ros-args --params-file /tmp/launch_params_cgq8rsj4 --params-file /home/maple/abb_ros2_ws/install/abb_bringup/share/abb_bringup/config/abb_controllers.yaml'].
PS:
1、IP不一致是网络更换了
2、Robotware6.14.00.01的虚拟连接成功,与正常的连接命令行输出类似
谢谢您的宝贵意见!