文章目录

  • 1 rosbag
    • 1.0 概念 - 作用 - 本质
    • 1.1 rosbag 命令行
    • 1.2 rosbag 使用_编码
      • 1.2.1 C++ 写bag
      • 1.2.2 C++ 读bag
  • 2 rqt 工具箱
    • 2.0 概念 - 作用 - 组成
    • 2.1 rqt 安装启动与基本使用
    • 2.2 rqt 常用插件:rqt_graph
    • 2.3 rqt 常用插件:rqt_console
    • 2.4 rqt 常用插件:rqt_plot
    • 2.5 rqt 常用插件:rqt_bag

1 rosbag

机器人传感器获取到的信息,有时我们可能需要时时处理,有时可能只是采集数据,事后分析,比如:

机器人导航实现中,可能需要绘制导航所需的全局地图,地图绘制实现,有两种方式
方式1:可以控制机器人运动,将机器人传感器感知到的数据时时处理,生成地图信息。
方式2:同样是控制机器人运动,将机器人传感器感知到的数据留存,事后,再重新读取数据,生成地图信息。两种方式比较,显然方式2使用上更为灵活方便。

  • 在ROS中关于数据的留存以及读取实现,提供了专门的工具: rosbag

1.0 概念 - 作用 - 本质

概念

  • 是用于录制和回放 ROS 主题的一个工具集

作用

  • 实现了数据的复用,方便调试、测试

本质

  • rosbag本质也是 ros的节点,当录制时,rosbag是一个订阅节点,可以订阅话题消息并将订阅到的数据写入磁盘文件;当重放时,rosbag是一个发布节点,可以读取磁盘文件,发布文件中的话题消息。

1.1 rosbag 命令行

  • 需求:ROS 内置的乌龟案例并操作,操作过程中使用 rosbag 录制,录制结束后,实现重放

实现方式

启动窗口1:roscore
启动窗口2:rosrun turtlesim turtlesim_node
启动窗口3:rosrun turtlesim turtle_teleop_key

  1. 准备:创建目录保存录制的文件
mkdir ./xxx
cd xxx
Copy
  1. 开始录制:ctrl + c 录制结束
rosbag record -a -O 目标文件
rosbag record -a -O bags/hello.bag

操作小乌龟一段时间,结束录制使用 ctrl + c,在创建的目录中会生成bag文件。

  1. 查看文件
rosbag info 文件名
rosbag info bags/hello tab补齐
  1. 回放文件
rosbag play 文件名
rosbag play bags/hello tab补齐

重启乌龟节点,会发现,乌龟按照录制时的轨迹运动

1.2 rosbag 使用_编码

命令实现不够灵活,可以使用编码的方式,增强录制与回放的灵活性,本节将通过简单的读写实现演示rosbag的编码实现。

1.2.1 C++ 写bag

#include "ros/ros.h"
#include "rosbag/bag.h"
#include "std_msgs/String.h"int main(int argc, char *argv[])
{ros::init(argc,argv,"bag_write");ros::NodeHandle nh;//创建bag对象rosbag::Bag bag;//打开bag.open("/home/rosdemo/demo/test.bag",rosbag::BagMode::Write);//写std_msgs::String msg;msg.data = "hello world";bag.write("/chatter",ros::Time::now(),msg);bag.write("/chatter",ros::Time::now(),msg);bag.write("/chatter",ros::Time::now(),msg);bag.write("/chatter",ros::Time::now(),msg);//关闭bag.close();return 0;
}

1.2.2 C++ 读bag

/*  读取 bag 文件:*/
#include "ros/ros.h"
#include "rosbag/bag.h"
#include "rosbag/view.h"
#include "std_msgs/String.h"
#include "std_msgs/Int32.h"int main(int argc, char *argv[])
{setlocale(LC_ALL,"");ros::init(argc,argv,"bag_read");ros::NodeHandle nh;//创建 bag 对象rosbag::Bag bag;//打开 bag 文件bag.open("/home/rosdemo/demo/test.bag",rosbag::BagMode::Read);//读数据for (rosbag::MessageInstance const m : rosbag::View(bag)){std_msgs::String::ConstPtr p = m.instantiate<std_msgs::String>();if(p != nullptr){ROS_INFO("读取的数据:%s",p->data.c_str());}}//关闭文件流bag.close();return 0;
}

2 rqt 工具箱

在 ROS 中使用了一些实用的工具,比如: ros_bag 用于录制与回放、tf2_tools 可以生成 TF 树 … 这些工具大大提高了开发的便利性,但是也存在一些问题: 这些工具的启动和使用过程中涉及到一些命令操作,应用起来不够方便,在ROS中,提供了rqt工具箱,在调用工具时以图形化操作代替了命令操作,应用更便利,提高了操作效率,优化了用户体验。

2.0 概念 - 作用 - 组成

概念

  • ROS基于 QT 框架,针对机器人开发提供了一系列可视化的工具,这些工具的集合就是rqt

作用

  • 可以方便的实现 ROS 可视化调试,并且在同一窗口中打开多个部件,提高开发效率,优化用户体验

组成:rqt 工具箱组成有三大部分

  • rqt——核心实现,开发人员无需关注
  • rqt_common_plugins——rqt 中常用的工具套件
  • rqt_robot_plugins——运行中和机器人交互的插件(比如: rviz)

2.1 rqt 安装启动与基本使用

  1. 安装:一般只要你安装的是desktop-full版本就会自带工具箱
    如果需要安装可以以如下方式安装
$ sudo apt-get install ros-noetic-rqt
$ sudo apt-get install ros-noetic-rqt-common-plugins
  1. 启动
    rqt 启动方式有两种:

方式1:rqt

方式2:rosrun rqt_gui rqt_gui

  1. 基本使用

启动 rqt 之后,可以通过 plugins 添加所需的插件

2.2 rqt 常用插件:rqt_graph

  • 简介:可视化显示计算图
  • 启动:可以在 rqt 的 plugins 中添加,或者使用rqt_graph启动
  • 乌龟跟随案例
  • turtle1是乌龟GUI节点,key是键盘控制节点,只控制第1个乌龟运动,pub1/2订阅乌龟位姿信息产生坐标系相对关系并发布,向tf发布坐标变换,产生相对关系,control控制第2个。control订阅坐标变换关系。并生成速度关系。
  • 圆圈是节点,方框是话题

2.3 rqt 常用插件:rqt_console

  • 简介:rqt_console 是 ROS 中用于显示和过滤日志的图形化插件
  • 准备:编写 Node 节点输出各个级别的日志信息
/*  ROS 节点:输出各种级别的日志信息*/
#include "ros/ros.h"int main(int argc, char *argv[])
{ros::init(argc,argv,"log_demo");ros::NodeHandle nh;ros::Rate r(0.3);while (ros::ok()){ROS_DEBUG("Debug message d");ROS_INFO("Info message oooooooooooooo");ROS_WARN("Warn message wwwww");ROS_ERROR("Erroe message EEEEEEEEEEEEEEEEEEEE");ROS_FATAL("Fatal message FFFFFFFFFFFFFFFFFFFFFFFFFFFFF");r.sleep();}return 0;
}

启动

  • 可以在 rqt 的 plugins 中添加,或者使用rqt_console启动

2.4 rqt 常用插件:rqt_plot

  • 简介:图形绘制插件,可以以 2D 绘图的方式绘制发布在 topic 上的数据
  • 准备:启动 turtlesim 乌龟节点与键盘控制节点,通过 rqt_plot 获取乌龟位姿
  • 启动:可以在 rqt 的 plugins 中添加,或者使用rqt_plot启动

启动窗口1

roscore

启动窗口2

rosrun turtlesim turtlesim_node

启动窗口3

rosrun turlesim turtle_teleop_key

启动窗口4

rqt_plot 或者rqt 里面 visualization里面的plot

2.5 rqt 常用插件:rqt_bag

  • 简介:录制和重放 bag 文件的图形化插件
  • 准备:启动 turtlesim 乌龟节点与键盘控制节点
  • 启动:可以在 rqt 的 plugins 中添加,或者使用rqt_bag启动

启动窗口1

roscore

启动窗口2

rosrun turtlesim turtlesim_node

启动窗口3

rosrun turlesim turtle_teleop_key

启动窗口4

rqt_bag

第 5 章 ROS 常用组件 4 —— rosbag / rqt工具箱相关推荐

  1. 第 5 章 ROS 常用组件 2 —— TF 坐标变换_多坐标变换 tf03_tfs(重难点)

    文章目录 01 多坐标变换 1.1 需求 - 分析 - 流程 1.2 新建功能包,添加依赖 -- 功能包 tf03_tfs 1.3 程序实现 1.3.1 发布方 -- tfs_c.launch 1.3 ...

  2. [ROS常用组件] --- rosbag

    1 认识rosbag 概念:是用于录制和回放 ROS 主题的一个工具集. 作用:实现了数据的复用,方便调试.测试. 本质: rosbag本质也是ros的节点,当录制时,rosbag是一个订阅节点,可以 ...

  3. 深蓝学院古月居第四讲——ros常用组件笔记

    目录 1.Launch启动文件 2.TF坐标变换(默认保存10s之内的所有坐标系关系) 3.可视化显示与仿真工具 1.Launch启动文件 Launch启动文件:通过XML文件实现多节点的配置和启动( ...

  4. rqt teb参数动态调试工具_16.ROS常用工具:Rviz/rqt

    >>点赞,收藏+关注,理财&技术不迷路<< RViz(The Robot Visualization tool可视化工具): 作用:把一些抽象的复杂的传感器信息以图像的 ...

  5. ROS系列:常用组件(一)

    文章目录 五.ROS常用组件 1.TF坐标变换 1.1 坐标msg消息 1.2 静态坐标变换 五.ROS常用组件 在ROS中内置了一些比较使用的工具:本章主要介绍ROS内置如下组件: TF坐标变换,实 ...

  6. java网站开发模式有哪些_第7章JavaWeb常用开发模式.ppt

    第7章JavaWeb常用开发模式.ppt 7.4.4 JSP+Servlet+JavaBean案例 --学生体质信息管理系统 [例7-10]采用JSP+Servlet+JavaBean+JDBC+My ...

  7. 【ROS】ROS常用命令

    [ROS]ROS常用命令 一.前言 二.常用命令 2.1 ROS shell 命令 2.2 ROS执行命令 2.2.1 `roscore` [选项] 2.2.2 rosrun:运行ROS节点 2.2. ...

  8. 第十四章:Element-ui组件库

    第十四章:Element-ui组件库 一.常用的UI组件库 1.1 移动端常用UI组件库 Vant组件库 Mint组件库 Cube组件库 1.2 PC端常用UI组件库 Element UI组件库 饿了 ...

  9. ROS基础一之ROS常用指令集合

    ROS常用指令集合 ROS常用指令集合 1.功能包相关指令 2.topic相关指令 3.service相关指令 4.msg/srv相关指令 5.param相关指令 6.node相关指令 7.rqt相关 ...

最新文章

  1. 泛在电力物联网(能源互联网+物联网)浅析
  2. 2019-06-26 某小型支付公司面试经历
  3. java 异常堆栈日志分析_Java 进阶之路:深入解读 Java 异常堆栈丢失原因
  4. CISSP的成长之路(十六):复习访问控制(1)
  5. Java native方法String转char*以及String[]转char**
  6. springboot添加webmagic_SpringBoot+Solr + webmagic JD商品爬取数据,放入solr中做搜索
  7. View Agent Direct-Connection注册表
  8. 安装chrome Jsonview插件
  9. 【实验】设计一个加密算法(英文、中文)
  10. roseha for linux,ROSEHA for linux安装与操作文档
  11. 国际计算机网络信息与安全管理,计算机信息网络国际联网单位安全管理制度
  12. python断言语句_Python断言assert的用法代码解析
  13. Garbled Circuits介绍 - 56 Yao协议的实现 总结
  14. Caml 多表关联查询
  15. IESM项目实训三——语音合成工具类
  16. 十年匠心,让国漫精致到羽翼丰满!《老鹰抓小鸡》幕后制作分享
  17. Python生成汉字字库文字,以及转换为文字图片
  18. 实习小结·改进代码(解决爆栈问题)
  19. PPP概念股一览 PPP概念股盈利预测
  20. 在线检查英文语法神器

热门文章

  1. ROS2 发展历程和开发环境安装
  2. 20201125今日学习
  3. Mathematica中用有限元方法解不规则区域上的波动方程
  4. 高德地图 坐标与地址
  5. linux 易语言窗口程序_用易语言开发Linux程序的方法
  6. windows远程桌面连接redhat
  7. 在Xshell上下载vim
  8. 浪潮服务器怎么重做raid 、设置pxe 启动
  9. PDP-11 计算机
  10. “温水煮青蛙”的实验论证