在ROS2下编译机器人节点时,准备用log4cplus输出和存储日志,但在日志输出设置为STDOUT时,
用top -d 1 查看进程会发现有个ROS2进程CPU特别高,用strace -f -p PID查看,可以看到进程高的原因是ROS2在不断输出日志。
在.ros/log下查看日志文件,也能看到ros将log4cplus输出的日志重新保存了一遍,导致该问题。
解决:增加 --ros-args --disable-external-lib-logs
例如:
stdbuf -oL ros2 run robot_ctrl robotctrl --ros-args --disable-external-lib-logs > /dev/null
本文描述了在ROS2环境下使用log4cplus编译机器人节点时,日志输出至STDOUT导致CPU占用过高的问题。作者发现ROS2会重复保存log4cplus的日志,给出的解决方案是通过添加`--ros-args--disable-external-lib-logs`来禁用外部库日志输出。
426

被折叠的 条评论
为什么被折叠?



