ROS学习笔记10:rosbag与rqt

前言

本人ROS小白,利用寒假时间学习ROS,在此以笔记的方式记录自己每天的学习过程。争取写满20篇(10/20)。
环境:Ubuntu20.04、ROS1:noetic
环境配置:严格按照下方学习链接的教程配置,基本一次成功。
学习链接:【Autolabor初级教程】ROS机器人入门
对应链接文档:ROS机器人入门课程《ROS理论与实践》
笔记绝大部分代码使用Python语言编写。
本期关键词:rosbag,rqt工具箱

rosbag

是用于录制和回放 ROS 主题(话题)的一个工具集。

命令行实现

开始录制:

  1. 用法
rosbag record -a -o 目标文件
  1. 示例
rosbag record -a -o bag_test/
  1. 注意事项:"-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插件:

  1. rqt_graph:可视化显示计算图
  2. rqt_console:用于显示和过滤日志
  3. rqt_plot:图形绘制插件,可以以 2D 绘图的方式绘制发布在 topic 上的数据
  4. rqt_bag:录制和重放 bag 文件的图形化插件
    rqt的应用场景有很多,记住以上常用的,需要用到其他时再学习。

往期内容

  1. ROS学习笔记1:基础知识
  2. ROS学习笔记2:话题通信
  3. ROS学习笔记3:服务通信与参数服务器
  4. ROS常用命令记录
  5. ROS学习笔记4:通信机制实操
  6. ROS学习笔记5:常用API和模块导入
  7. ROS学习笔记6:launch文件
  8. ROS学习笔记7:重名解决与名称设置
  9. ROS学习笔记8:TF坐标变换
  10. ROS学习笔记9:TF坐标变换实操

你可能感兴趣的:(学习,笔记,python,c++,vscode)