11 月 18 日 ROS 学习笔记——可视化和调试工具
最佳答案 问答题库918位专家为你答疑解惑
文章目录
- 前言
- 一、调试 ROS 节点
- 1. `gdb` 调试器
- 2. 在 ROS 节点启动时调用 `gdb` 调试器
- 3. 在 ROS 节点启动时调用 `valgrind` 分析节点
- 4. 设置 ROS 节点 core 文件转储
- 5. 日志消息
- 1). 输出日志消息
- 2). 设置调试消息级别
- 二、检测系统状态
- 1. rqt_graph
- 2. 可视化坐标变换
- 3. 保存与回放数据
- 1). 消息记录包文件
- 4. rqt 与 rqt_gui 插件
前言
本文为 11 月 18 日 ROS 学习笔记——可视化和调试工具,分为两个章节:
- 调试 ROS 节点,
- 检测系统状态
一、调试 ROS 节点
ROS 节点可以像正常程序一样调试。调试程序在系统中运行时有一 个进程号(PID
)。可以用任何标准工具(gdb
)进行调试。同样可以用 memcheck
检查内存泄漏,或者用 callgrind
分析算法性能。
1. gdb
调试器
使用 gdb
调试器调试一个节点,只需知道可执行节点的路径。在 ROS Kinetic 和 catkin
功能包中,节点的可执行文件在工 作空间的 devel/lib/<package>
文件夹下。
cd /home/li/Documents/Chapter2_tut/devel/lib/demo01_pub_cli
gdb example1_a
(gdb) r
>>> Starting program: /home/li/Documents/Chapter2_tut/devel/lib/demo01_pub_cli/example1_a [Thread debugging using libthread_db enabled]Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".[New Thread 0x7ffff49fe700 (LWP 41626)][New Thread 0x7fffeffff700 (LWP 41627)][New Thread 0x7fffe77fe700 (LWP 41628)][New Thread 0x7fffef7fe700 (LWP 41629)]
2. 在 ROS 节点启动时调用 gdb
调试器
- 在节点启动时调用
gdb
调试器
<launch><node name="example1_a" pkg="demo01_pub_cli" type="example1_a" launch-prefix="xterm -e gdb --args" output="screen" /><node name="example1_b" pkg="demo01_pub_cli" type="example1_b"launch-prefix="xterm -e gdb --args" output="screen" />
</launch>
这个启 动前缀会创建一个调用 gdb
节点的新 xterm 终端。根据需要设置断点,按 C
键或 R
键启动节点并调试.
3. 在 ROS 节点启动时调用 valgrind
分析节点
<launch><node name="example1_a" pkg="demo01_pub_cli" type="example1_a" launch-prefix="valgrind" output="screen" />
</launch>
4. 设置 ROS 节点 core 文件转储
5. 日志消息
ROS 有不同层级的调试消息输出,每条消息都有自己的名称,并根据相应条件输出消息,甚至可调。
1). 输出日志消息
所有输出的消息都附带其级别和当前时间戳,这两个值放在实际消息之前的方括号中。时间戳以 公历时间计时,代表自1970年1月1日以来的秒和纳秒计数
[ INFO] [1700317838.847020306]: I heard: [I am the example_a_node]
2). 设置调试消息级别
ROS 有5个日志记录标准级别,按照顺序排列分别是:
- DEBUG(调试)in green
- INFO(信息)in white
- WARN(警告)in yellow
- ERROR(错误)in red
- FATAL(致命)in purple
二、检测系统状态
1. rqt_graph
rosrun rqt_graph rqt_graph
2. 可视化坐标变换
roslaunch turtle_tf turtle_tf_demo.launch
rosrun rqt_rviz rqt_rviz
3. 保存与回放数据
ROS 能够存储所有节点通过主题发布的消息。它能够创建一个消息记录包(bag)文件来保存消息,并包含消息的所有字段参数和时间戳。这允许离线回放实验并模拟真实的状态,包括消息的时间延迟。
1). 消息记录包文件
消息记录包文件是一个包含各个主题所发消息的容器,用于记录各个节点间的会话过程。简而言之,它们是系统运行期间消息传送的记录文件,并允许我们回放所有一切,包括时间延迟。消息记录包文件中存储的数据使用二进制格式。这个容器使用的数据结构非常特殊,它能够支持超高速数据流的处理和记录。每个消息与发布它的主题都被记录下来。因此,可以指定某个主题进行记录,或者直接选择全部(-a
参数)。
- 首先运行节点
roslaunch demo01_pub_cli chapter2.launch
- 记录所有的主题, 数据存储在当前目录下以日期作为文件名的消息记录包文件中
rosbag record -a
>>> [ INFO] [1700320804.461003795]: Subscribing to /rosout_agg[ INFO] [1700320804.461925882]: Recording to '2023-11-18-15-20-04.bag'.[ INFO] [1700320804.463208223]: Subscribing to /rosout[ INFO] [1700320804.464264122]: Subscribing to /message
- 在 launch 文件中通过添加一个节点可以直接调用 rosbag record
<node pkg="rosbag" type="record" name="bag_record" args="/temp /accel" />
- 回放消息记录包文件
rosbag play 2023-11-18-15-20-04.bag
>>> Waiting 0.2 seconds after advertising topics... done.Hit space to toggle paused, or 's' to step.[RUNNING] Bag Time: 1700320816.481530 Duration: 12.015316 / 12.015517 Done.
- 查看消息记录包文件的主题和消息
rosbag info 2023-11-18-15-20-04.bag
>>> path: 2023-11-18-15-20-04.bagversion: 2.0duration: 12.0sstart: Nov 18 2023 15:20:04.47 (1700320804.47)end: Nov 18 2023 15:20:16.48 (1700320816.48)size: 78.2 KBmessages: 358compression: none [1/1 chunks]types: rosgraph_msgs/Log [acffd30cd6b6de30f120938c17c593fb]std_msgs/String [992ce8a1687cec8c8bd883ec73ca41d1]topics: /message 119 msgs : std_msgs/String /rosout 120 msgs : rosgraph_msgs/Log (2 connections)/rosout_agg 119 msgs : rosgraph_msgs/Log
- rqt_bag
rqt_bag
4. rqt 与 rqt_gui 插件
rosrun rqt_gui rqt_gui
99%的人还看了
相似问题
- 〖大前端 - 基础入门三大核心之JS篇㊲〗- DOM改变元素节点的css样式、HTML属性
- Java 算法篇-链表的经典算法:判断回文链表、判断环链表与寻找环入口节点(“龟兔赛跑“算法实现)
- 代码随想录二刷 | 链表 | 删除链表的倒数第N个节点
- 节点导纳矩阵
- bhosts 显示节点 “unreach“ 状态
- 电子电器架构 —— 车载网关边缘节点总线转换
- 〖大前端 - 基础入门三大核心之JS篇㊳〗- DOM访问元素节点
- 第四天||24. 两两交换链表中的节点 ● 19.删除链表的倒数第N个节点 ● 面试题 02.07. 链表相交 ● 142.环形链表II
- CS224W5.1——消息传递和节点分类
- Vue报错解决Error in v-on handler: “Error: 无效的节点选择器:#div1“
猜你感兴趣
版权申明
本文"11 月 18 日 ROS 学习笔记——可视化和调试工具":http://eshow365.cn/6-39644-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: ubuntu下载conda
- 下一篇: Nginx安装配置与SSL证书安装部署