机器人操作系统(ROS),ROSOUT泄漏文件描述符

Posted

技术标签:

【中文标题】机器人操作系统(ROS),ROSOUT泄漏文件描述符【英文标题】:Robot Operating System(ROS), ROSOUT leak file descriptors 【发布时间】:2016-12-19 12:13:24 【问题描述】:

为什么rosout节点要花费一千多个文件描述符。lsof -p <pid of rosout>,近千个FD“无法识别协议”,有什么解决办法吗?

【问题讨论】:

【参考方案1】:

问题是由异常关闭的ros节点引起的。

我测试了一个很简单的代码sn-p:

import rospy
import rosnode
import time

if __name__=="__main__":
    rospy.init_node("test")
    rospy.signal_shutdown("an exception")

我发现每次执行代码时,都会造成文件描述符泄漏,因此我假设原因是在节点与“rosout”节点之间的套接字连接完成之前节点已关闭。以下代码(可能有点棘手)修复了提到的错误:

import rospy
import rosnode
import time

if __name__=="__main__":
    rospy.init_node("test")
    sleep(1)
    rospy.signal_shutdown("an exception")

【讨论】:

以上是关于机器人操作系统(ROS),ROSOUT泄漏文件描述符的主要内容,如果未能解决你的问题,请参考以下文章

ROS中的日志log消息与ROS终端的不同颜色输出

ROS中的日志(log)消息

ROS文件系统

ROS文件系统

4.7-Mastering ROS-包及包管理

ROS系统玩转自主移动机器人-- ROS系统建模