外观
踩坑github.com7 天前
优傲 UR5e / UR10e 运行 ROS 2 Driver 报 External Control program stopped 与反向端口阻断
硬件与软件环境
- 机型:Universal Robots UR5e / UR10e(PolyScope 5.12+)
- 软件栈:Ubuntu 22.04 + ROS 2 Humble +
ur_robot_driver
故障现象与报错
在 Ubuntu 上启动 ros2 launch ur_robot_driver ur_control.launch.py ur_type:=ur5e robot_ip:=... 后,机械臂关节状态 /joint_states 可以正常读取(500Hz),但在示教器上点击播放 External Control 程序时,示教器立刻弹窗报错 The connection to the remote PC could not be established 或终端报 External Control program stopped。
根因分析
优傲 ROS 2 驱动采用双向加反向连接架构:
- 状态读取(RTDE 端口
30004)由 PC 主动连机械臂控制柜,所以只要能 ping 通就能读/joint_states; - 轨迹控制(External Control URCap)则是由 机械臂控制柜主动反向连接 PC 的
50001~50004端口。如果 Ubuntu 开启了ufw防火墙,或者在 Docker 容器中未映射50001-50004端口,或者示教器Installation -> External Control里填的Host IP不是当前 PC 网卡地址,反向连接就会立即失败。
解决步骤
- 核对示教器
External Control配置: 进入示教器Installation -> URCaps -> External Control,确认Host IP填写的是 Ubuntu 上位机直连机械臂那张有线网卡的真实 IPv4 地址,Custom port为50002。 - 放行 Ubuntu 防火墙端口
50001:50004:bash若在 Docker 容器内运行 ROS 2,启动容器时必须加上sudo ufw allow 50001:50004/tcp sudo ufw allow 50001:50004/udp--network host。 - 关闭冲突的第三方 Fieldbus(Profinet / EtherNet/IP):若控制柜同时开启了 Profinet 或 Modbus 从站并占用了控制寄存器,RTDE 写入掩码会报冲突,需在
Installation -> Fieldbus中将其设为 Disable。
来源
本页事实对应的公开页面,以原文为准。
- GitHub UniversalRobots/Universal_Robots_ROS2_Driver访问 2026-10-21