前言
本人ROS小白,利用寒假时间学习ROS,在此以笔记的方式记录自己每天的学习过程。争取写满15篇(10/15)。
环境:Ubuntu20.04、ROS1:noetic
环境配置:严格按照下方学习链接的教程配置,基本一次成功。
学习链接:【Autolabor初级教程】ROS机器人入门
对应链接文档:ROS机器人入门课程《ROS理论与实践》
笔记绝大部分代码使用Python语言编写。
本期关键词:rosbag,rqt工具箱
rosbag
是用于录制和回放 ROS 主题(话题)的一个工具集。
命令行实现
开始录制:
- 用法
rosbag record -a -o 目标文件
- 示例
rosbag record -a -o bag_test/
- 注意事项:"-o"的英文字母"o"是小写的,如果换成大写的无法正常生成bag包
查看文件:
rosbag info 文件名
回放文件:
rosbag play 文件名
编码实现
写入
往磁盘写入话题数据。
代码示例如下:
#! /usr/bin/env python
import rospy
import rosbag
from std_msgs.msg import String
if __name__ == "__main__":
#初始化节点
rospy.init_node("w_bag_p")
# 创建 rosbag 对象,w表示write写
bag = rosbag.Bag("hello.bag",'w')
# 写数据
s = String()
s.data= "code run"
# 话题名,内容(msg)
bag.write("/chatter",s)
bag.write("/chatter",s)
bag.write("/chatter",s)
# 关闭流
bag.close()
(运行之前要先启动roscore
命令)
读出
从bag包读出数据。
代码示例如下:
#! /usr/bin/env python
import rospy
import rosbag
from std_msgs.msg import String
if __name__ == "__main__":
#初始化节点
rospy.init_node("w_bag_p")
# 创建 rosbag 对象
bag = rosbag.Bag("hello.bag",'r')
# 读数据
# bagMessage为包含三种消息(话题,内容,时间戳)的列表
bagMessage = bag.read_messages("/chatter")
for topic,msg,t in bagMessage:
rospy.loginfo("%s,%s,%s",topic,msg,t)
# 关闭流
bag.close()
rqt工具箱
ROS基于 QT 框架,针对机器人开发提供了一系列可视化的工具,这些工具的集合就是rqt。
下面仅举例几个常用到的rqt插件:
rqt_graph
:可视化显示计算图rqt_console
:用于显示和过滤日志rqt_plot
:图形绘制插件,可以以 2D 绘图的方式绘制发布在 topic 上的数据rqt_bag
:录制和重放 bag 文件的图形化插件
rqt的应用场景有很多,记住以上常用的,需要用到其他时再学习。