11 月 18 日 ROS 学习笔记——可视化和调试工具

文章目录

  • 前言
  • 一、调试 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个日志记录标准级别,按照顺序排列分别是:

  1. DEBUG(调试)in green
  2. INFO(信息)in white
  3. WARN(警告)in yellow
  4. ERROR(错误)in red
  5. FATAL(致命)in purple

二、检测系统状态

1. rqt_graph

rosrun rqt_graph 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.bag
	version:     2.0
	duration:    12.0s
	start:       Nov 18 2023 15:20:04.47 (1700320804.47)
	end:         Nov 18 2023 15:20:16.48 (1700320816.48)
	size:        78.2 KB
	messages:    358
	compression: 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/163069.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ChinaSoft 论坛巡礼 | 新兴系统软件论坛

2023年CCF中国软件大会&#xff08;CCF ChinaSoft 2023&#xff09;由CCF主办&#xff0c;CCF系统软件专委会、形式化方法专委会、软件工程专委会以及复旦大学联合承办&#xff0c;将于2023年12月1-3日在上海国际会议中心举行。 本次大会主题是“智能化软件创新推动数字经济与社…

IOS object-c大屏图表 PNChart 折线图 曲线图

折线图是排列在工作表的列或行中的数据可以绘制到折线图中。折线图可以显示随时间&#xff08;根据常用比例设置&#xff09;而变化的连续数据&#xff0c;因此非常适用于显示在相等时间间隔下数据的趋势。在折线图中&#xff0c;类别数据沿水平轴均匀分布&#xff0c;所有值数…

C语言运算符优先级

优先级表 优先级规则说明 符号的优先级是在混合运算中才讨论表中优先级号越小&#xff0c;优先级越高同一优先级中&#xff0c;看结合性 优先级注意事项 逻辑 与 优先级高于逻辑 或而表示同级逗号优先级最低从整体看&#xff0c;可以简单总结为&#xff1a;算术运算符 > …

大数据HCIE成神之路之数学(2)——线性代数

线性代数 1.1 线性代数内容介绍1.1.1 线性代数介绍1.1.2 代码实现介绍 1.2 线性代数实现1.2.1 reshape运算1.2.2 转置实现1.2.3 矩阵乘法实现1.2.4 矩阵对应运算1.2.5 逆矩阵实现1.2.6 特征值与特征向量1.2.7 求行列式1.2.8 奇异值分解实现1.2.9 线性方程组求解 1.1 线性代数内…

一起学docker系列之四docker的常用命令--系统操作docker命令及镜像命令

目录 前言1 操作 Docker 的命令1.1 启动 Docker1.2 停止 Docker1.3 重启 Docker1.4 查看 Docker 状态1.5 查看 Docker 所有命令的信息1.6 查看某个命令的帮助信息 2 操作镜像的命令2.1 查看所有镜像2.2 搜索某个镜像2.3 下载某个镜像2.4 查看镜像所占空间2.5 删除镜像2.6 强制删…

Java拼图游戏

运行出的游戏界面如下&#xff1a; 按住A不松开&#xff0c;显示完整图片&#xff1b;松开A显示随机打乱的图片。 User类 package domain;/*** ClassName: User* Author: Kox* Data: 2023/2/2* Sketch:*/ public class User {private String username;private String password…

(带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程

源码简介&#xff1a; 1、会员管理&#xff1a; 该系统分为三个级别的会员流程&#xff1a;总站管理员、代理与会员&#xff08;会员有普通会员、中级会员和高级会员三个等级&#xff09;。总站管理员可以添加代理用户并为其充值余额&#xff0c;代理用户可以为普通用户充值余…

ClickHouse建表优化

1. 数据类型 1.1 时间字段的类型 建表时能用数值型或日期时间型表示的字段就不要用字符串&#xff0c;全String类型在以Hive为中心的数仓建设中常见&#xff0c;但ClickHouse环境不应受此影响。 虽然ClickHouse底层将DateTime存储为时间戳Long类型&#xff0c;但不建议存储Long…

电子学会C/C++编程等级考试2021年12月(一级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:输出整数部分 输入一个双精度浮点数f, 输出其整数部分。 时间限制:1000 内存限制:65536输入 一个双精度浮点数f(0 < f < 100000000)。输出 一个整数,表示浮点数的整数部分。样例输入 3.8889样例输出 3 答案: //参…

面向未来的自动化:拥抱机器人即服务(RaaS)

01. RaaS是什么&#xff1f; 对于希望实现业务流程自动化的公司来说&#xff0c;机器人通常是一笔巨大的资本支出。由于机器人非常昂贵&#xff0c;公司可能需要等待数年才能看到投资回报。正是由于这一现实&#xff0c;许多较小的组织无法投资机器人。 但一些机器人公司正在采…

报道 | 2023年12月-2024年2月国际运筹优化会议汇总

2023年12月-2024年2月召开会议汇总&#xff1a; The 16th Annual International Conference on Combinatorial Optimization and Applications (COCOA 2023) Location: Virtual Important dates: Conference: December 11, 2023 (Start) - December 13, 2023 (End) Details…

python图

有向图&#xff1a;图中的每条边都有方向的图叫有向图。此时&#xff0c;边的两个顶点有次序关系&#xff0c;有向边 < u,v>成为从顶点u到顶点v的一条弧&#xff0c;u成为弧尾&#xff08;始点&#xff09;&#xff0c;v成为弧头&#xff08;终点&#xff09;&#xff0c…

项目踩坑之面试遇到的问题及解决

第一点&#xff1a; 问题 遇到的问题之&#xff1a;在实现后台管理端-账户操作的时候&#xff0c;添加员工的时候如果重复添加同一个员工&#xff0c;会触发一个数据库唯一约束异常&#xff0c;但客户端无法清晰的理解这个错误&#xff0c;所以我们就对新增员工的代码进行try…

HUAWEI华为MateBook X 2020款i5集显(EUL-W19P)原装出厂Windows10系统

链接&#xff1a;https://pan.baidu.com/s/1eZuLjarWH2PjAWVqMWnzjQ?pwd2374 提取码&#xff1a;2374 原厂系统自带所有驱动、出厂主题壁纸、系统属性专属LOGO标志、Office办公软件、华为电脑管家等预装程序

关于Android音效播放,【备忘】

主要还是希望开箱即用。所以才有了这篇&#xff0c;也是备忘。 以下代码适合Android5.0版本以后 private SoundPool soundPool;//特效播放private Map<String,Integer> soundPoolMap;// Builder buildernew SoundPool.Builder();builder.setMaxStreams(4);///最大…

神辅助 Cursor 编辑器,加入 GPT-4 让编码更轻松!

分类 互联网 在 ChatGPT 问世之前&#xff0c;我们的编码方式很多时候都是面向搜索引擎编码&#xff0c;需要不断地进行搜索&#xff0c;然后复制粘贴&#xff0c;俗称复制粘贴工程师。 但是&#xff0c;随着ChatGPT的出现&#xff0c;这一切将彻底改变。 ChatGPT 是一种基于…

基于django的在线教育系统

基于python的在线教育系统 摘要 基于Django的在线教育系统是一种利用Django框架开发的现代化教育平台。该系统旨在提供高效、灵活、易用的在线学习体验&#xff0c;满足学生、教师和管理员的需求。系统包括学生管理、课程管理、教师管理、视频课程、在线测验等核心功能。系统采…

[ATC复盘] abc329 20231118

[ATC复盘] abc329 20231118 总结A - Spread1. 题目描述2. 思路分析3. 代码实现 B - Next1. 题目描述2. 思路分析-3. 代码实现 C - Count xxx1. 题目描述2. 思路分析3. 代码实现 D - Election Quick Report2. 思路分析3. 代码实现 E - Stamp2. 思路分析3. 代码实现 F - Colored…

一文讲明 Spring 的使用 【全网超详细教程】

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 前言 目录结构 Spring 的相关代码 都公开在…

使用opera/火狐浏览器将网页固定到桌面和任务栏

1.单击Windows 图标&#xff0c;搜索Opera&#xff0c;右键单击它&#xff0c;然后选择Open file location 2.右键单击Opera&#xff0c;然后选择Show more options 3.将光标悬停在“发送到”选项上&#xff0c;然后选择“桌面&#xff08;创建快捷方式&#xff09;” 4.转到…