外观
踩坑GitHub UniversalRobots/Universal_Robots_ROS2_Driver9 天前
dashboard_client SIGINT退出延迟10s因29999端口无welcome消息
本文由 AI 根据公开内容整理,可能有误,请以原文为准:dashboard_client shutdown waits ~10 s when port 29999 accepts without welcome(GitHub UniversalRobots/Universal_Robots_ROS2_Driver #2012)
状态:有绕过办法
问题
在loopback测试中,若模拟端接受29999端口TCP连接但不发送welcome字节,向dashboard_client发送SIGINT后进程仍存活约10.5秒才退出。原因是首次连接期间DashboardClient对象被封装在connect()函数内,stop()无法中断等待welcome的阻塞操作;仅修改Driver或仅修改URCL均无法完全修复,必须两者协同更改才能将退出时间降至0.146秒。
环境
ROS 2 Rolling,Universal_Robots_ROS2_Driver main分支d113bc3,Linux VM/Docker环境,源码编译Driver与URCL,无实体机器人或URSim,使用合成G5版本5.12.0.1的loopback fixture。
解决办法
- 升级UR Client Library至包含PR #588的版本,使welcome接收过程可被disconnect信号中断。
- 应用ROS2 Driver侧对应修改(如PR #2013),确保首次连接期间的in-flight DashboardClient实例可被stop()访问并断开。
- 验证时需同时部署两处变更,单独任一修改无法消除10秒延迟;该问题仅在合成测试复现,真实机器人场景尚未确认,建议作为shutdown健壮性增强而非紧急修复处理。
讨论原作者:@shin4141 等,版权归原作者所有。
来源
本页事实对应的公开页面,以原文为准。