机器人编程趣味实践11-图形化调试工具(rqt)
机器人调试工具如果使用ssh,在终端运行和使用。
当然也有很多人性化调试工具,如rqt系列:
关键词:Python C++ Qt
未开启特定功能的界面如下:
本节以console为例作详细介绍。
目标
了解 rqt_console,一个用于查看日志消息的工具。
基础概念
rqt_console 是一个 图形化用户接口(GUI) 工具,用于查看 ROS 2 中的日志消息。通常,日志消息会显示在终端中。 使用 rqt_console,可以随时间的推移收集这些消息,更有条理的方式仔细查看、过滤、保存,甚至重新加载保存的文件在不同的时间进行查阅。节点使用日志以多种方式输出有关事件和状态的消息。 对于用户而言,它们的内容通常是信息性的。
功能包
- rqt_concole
- turtlesim
实践
1 启程
两种方式打开rqt_console
第一种,rqt,然后在plugins->logging->console
第二种,
- ros2 run rqt_console rqt_console
开启后,界面如下:
控制台的第一部分是显示来自系统的日志消息的位置。
(在中间,可以选择通过排除严重性级别来过滤消息。 还可以使用右侧的加号按钮添加更多排除过滤器。底部用于突出显示包含输入的字符串的消息。 也可以向此部分添加更多过滤器。)
好像上面第一个图和文字不对应啊……那么往后看……
现在使用以下命令在新终端中启动turtlesim:
- ros2 run turtlesim turtlesim_node
先对比:
终端
图形化
2 消息显示
为了生成 rqt_console 显示的日志消息,让机器人撞到墙上。 在新终端中,输入ros2 topic pub 命令(在主题教程中详细说明):
- ros2 topic pub -r 1 /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: 0.1}}"
由于上述命令以稳定的速度发布主题,因此机器人不断地撞墙。 在 rqt_console 中,将看到一遍又一遍地显示警告严重性级别的相同消息,如下所示:
机器人位置如下:
在运行 ros2 topic pub 命令的终端中按 Ctrl+C 停止。
3 记录日志级别
ROS 2 的日志记录级别按严重性排序:
- Fatal
- Error
- Warn
- Info
- Debug
每个级别表示的内容没有确切的标准,但可以作如下假设:
-
Fatal
致命消息表明系统将终止以尝试保护自己免受损害。 -
Error
错误消息表明重大问题不一定会损坏系统,但会阻止系统正常运行。 -
Warn
警告消息表示可能代表更深层次问题的意外活动或非理想结果,但不会直接损害功能。 -
Info
信息消息指示事件和状态更新,作为系统按预期运行的可视化验证。 -
Debug
调试消息详细说明了系统执行的整个逐步过程。
默认级别为Info
信息。只会看到默认严重级别和更严重级别的消息。
通常,只有 Debug 消息被隐藏,因为它们是唯一比 Info 严重性低的级别。例如,如果将默认级别设置为警告,则只会看到严重性为警告、错误和致命的消息。
设置默认日志级别
可以在第一次使用重新映射运行 /turtlesim 节点时设置默认记录器级别。 在终端中输入以下命令:
- ros2 run turtlesim turtlesim_node --ros-args --log-level WARN
现在不会看到上次启动turtlesim时控制台中出现的初始信息级别警告。 那是因为信息消息的优先级低于新的默认严重性,警告。
总结
如果需要仔细检查来自系统的日志消息,rqt_console 会非常有用。 可能出于各种原因想要检查日志消息,通常是为了找出哪里出了问题以及导致该问题的一系列事件。
小作业
- 阅读turtlesim/rqt源码
- 部分代码提示汉化
-Fin-
相关文章
- Git 技术篇 - github镜像推荐,无需访问国外网站实现飞速访问github官网
- Git 技术篇 - git remote修改、移除仓库源的使用方法,git添加仓库源提示fatal: remote origin already exists.问题解决
- 给几句话就能生成分子,看见分子也能生成描述,神秘的Google X把多模态AI做成了黑科技
- Git 技术篇 - 同步代码到github失败,提示non-fast-forward、error: failed to push some refs to问题解决方法,git pull的用法
- Git 技术篇 - GitHub克隆私有仓库方法,新主机绑定并同步github私有库实例演示
- 1-ESP8266转485通讯模块-硬件使用说明
- IDEA注释模板,惊艳了!动作要快,姿势要帅!
- 203-ESP32_SDK开发-softAP+station共存模式
- 英伟达算法遭破解,RTX30系恢复100%挖矿算力:显卡降价结束了?
- 1-HC32F460(华大)+BC260Y(NB-IOT)基本控制篇(自建物联网平台)-硬件使用说明
- 2-HC32F460(华大)+Air724UG(4G GPRS)远程升级篇(自建物联网平台)
- Linux 设置windows可见的文件夹共享,创建只拥有读权限的共享用户,samba工具安装,“smbpasswd: command not found“问题解决
- 怎么实现淘宝七天自动确认收货?
- MIT 团队的新测试,将 AI 推理与人类思维进行比较
- 1-HC32F460(华大)+Air724UG(4G GPRS)基本控制篇(自建物联网平台)
- 周志华:“数据、算法、算力” 人工智能三要素,在未来要加上“知识”!
- Linux下oracle数据库spfile参数配置文件丢失问题解决,“ORA-32001: write to SPFILE requested but no SPFILE is in use“问题处理
- 7-HC32F460(华大单片机)-定时器Timer0
- 6-HC32F460(华大单片机)-时钟树
- Linux服务器oracle数据库重启服务、重启监听方法,oracle数据库sysdba管理员登录方法