首页 > 解决方案 > “线程Thread-3中的异常”Python异常杀死ROS节点

问题描述

我正在尝试使用 python 脚本和 ROS 构建一个 slam 算法。我有一个顶级工作区,它有两个包,一个是来自 GitHub 的 (rplidar_ros) 包,另一个是我使用 catkin_create_pkg 构建的 (slam) 包,它有一个 src 目录,其中包含两个 python 文件 icp.py 和映射。 py,一个在 Custom.msg 中定义了自定义主题的 msg 目录和一个带有 icp.launch 的启动目录。我的问题是,当我使用roslaunch启动所有三个节点时,rplidar_ros启动icp_node正常并保持活动状态。map_node 虽然一开始就立即死亡,然后重生,然后再次死亡并继续这个循环。

当每个节点不使用独立运行时roslaunch,如果icp_node在map_node之前运行,map_node会产生相同的关闭和启动周期。但是如果 map_node 在 icp_node 之前启动它会给出这个错误 -

Exception in thread Thread-3:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
    self.run()
File "/usr/lib/python2.7/threading.py", line 754, in run
    self.__target(*self.__args, **self.__kwargs)
File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/impl/tcpros_base.py", line 154, in run
    (client_sock, client_addr) = self.server_sock.accept()
File "/usr/lib/python2.7/socket.py", line 206, in accept
sock, addr = self._sock.accept()
File "/usr/lib/python2.7/socket.py", line 174, in _dummy
    raise error(EBADF, 'Bad file descriptor')
error: [Errno 9] Bad file descriptor

知道什么可能导致此错误吗?

标签: pythonmultithreadingros

解决方案


推荐阅读