[DAY 29] RVIZ点云显现还有视觉化成果

前言

随着时间的流逝,铁人赛也来到尾声,在经历过安装、架构教学、汇入模型、打开世界、写入执行档後,我们终於对控制 Gazebo 当中的机器人有了基本的认知。而今天我们要介绍的是有关 Rviz 的应用,以笔者所研究的隧道模型为例,把机器人所能得到的各种资讯如点云、路径、座标等等透过 Rviz 来去呈现出来,那麽我们就接着往下看吧!

使用 RVIZ 显现点云与视觉化成果

在先前我们的Xml的介绍与运用中曾经提到过的 Rviz 的功能叙述,那麽今天则要来介绍如何实际操作系统介面。首先我们打开模拟世界还有机器人:
https://ithelp.ithome.com.tw/upload/images/20201014/20129807xxw4zKAxFC.png
这是笔者团队在研究模拟时所建的 world,其实就只是在原本 empty_world.launch 中导入隧道模型。针对模型导入的部分在之前都有提到,这边就不再赘述。

接着在另一个 Terminal 上运行我们在第27天所介绍的程序码,执行後如下:
https://ithelp.ithome.com.tw/upload/images/20201014/20129808hJALNhzJyW.jpg
还记得我们在 .xacro 档的第二篇介绍当中提到,笔者加入了一个名为 openni 的深度相机模组到原本的模型上吗?我们这次就要藉由他的 topic 内容来显示在 Rviz 上。
因为这项功能另有 Package 所以还要再打开一个 Terminal 运行他的 launch:
https://ithelp.ithome.com.tw/upload/images/20201014/20129807PP6GAJOf4h.jpg

接着用指令 rosrun rviz rviz 打开我们的 Rviz 介面
https://ithelp.ithome.com.tw/upload/images/20201014/2012938485aED0PmqC.jpg

接着我们打开 Rviz 旁边的列表,点选左下的 add :
https://ithelp.ithome.com.tw/upload/images/20201014/20129807Rdb6apb73W.png
里面有着 Rviz 的预设显示模组,具体内容在官网里面有介绍,但笔者这里还是会稍微说一下对这些显示工具的想法,还有分别对应的 Message 类型,来帮助大家熟悉 Rviz 这个系统,笔者将其制作成表格方便阅读。
https://ithelp.ithome.com.tw/upload/images/20201013/20129384yHHL7ig0Bd.jpg
https://ithelp.ithome.com.tw/upload/images/20201013/20129384FJmuAqWyYf.jpg
以上是笔者对於原本的 add 选单内容的理解。大家可以搭配官网的显示图片以及示范影片来做学习,也许就能解决原本不易理解的部分。

接下来就实际操作一次打开显示图案的过程吧!

首先这里我们先选择 pointcloud2
https://ithelp.ithome.com.tw/upload/images/20201014/20129807WsptGb3W50.png
至於为什麽不选择 pointcloud 呢?的确,他在 Rviz 自己的介绍里是一样的,但笔者的点云资讯是新修订的,所以使用新的显示资讯会来的比较稳定。

接着还记得当初提醒过不能乱取的 TopicName 吗?我们那时把点云资讯取名为 /camera/depth/point,在这边就必须将点云资讯的 topic 名称 /camera/depth/points 选取出来,就能够得到以下的结果:
https://ithelp.ithome.com.tw/upload/images/20201014/20129807t9I0yOpOB9.png
从靠近网格的部分可以看得出我们扫描的范围是呈现一个扇形以及周围隧道的轮廓,如想修改扫描范围参数,可以去放置雷射功能的机器人所对应的 gazebo.xacro 中做设定

再来我们回到 add 选单,把 pointcloud2 换成 camera,然後一样选取当初命名的 topic:
https://ithelp.ithome.com.tw/upload/images/20201014/20129807hGJZDNr5qT.png
上面显示的是我们深度相机的结果,可以看到隧道的形状,如果想用色彩来区隔远近,那麽一样在 camera 的标签里去做修改就好了,这里笔者就不多赘述。

如果是忘记自己的 Topic 命名为何,可以打开 yourmodel.gazebo.xacro 档来查看,这边给大家看看笔者外挂软键的内容:
https://ithelp.ithome.com.tw/upload/images/20201014/201298070gzLHE6zIG.png

需要注意的是 <framename>,因为在 Rviz 里是藉由你的 frame 名称来读取并且显现对应资料
https://ithelp.ithome.com.tw/upload/images/20201014/20129807sBpOkdo3QX.png
笔者这里将他跟 reference 设为相同的方便管理
https://ithelp.ithome.com.tw/upload/images/20201014/20129807uAyVOhsWVn.png

那大家可以再回到一开始打开 Rviz 的介面,可以看到右边列表中 global options 下面有 fixed frame:
https://ithelp.ithome.com.tw/upload/images/20201014/20129807vUIEWvlexr.png

在 .gazebo.xacro 档里我们将 camera 的资讯放在命名为 camera_rgb_frame 的 reference 里,代表说如果要显示相机所提供的资讯,就要将 fixed frame 设为我们的 camera_rgb_frame,否则会出现找不到 frame 的状况。下面再跟各位介绍一些 frame 的定义:

  1. Coordinate Frames(座标框架):Rviz 使用 tf 变换系统将数据从其到达的坐标系转换为全局参考值。
  2. The Fixed Frame(固定框架):通常是 mapworld,以及在 .gazebo.xacro 中所设定的 reference 名称,例如 odometry、base_footprint、camera_rgb_frame。

这边再个别解释一下 map 与 odometry:
map:指的是虚拟世界的座标系统,z轴指向上方,但会因为机器人执行雷射扫描而不稳。
odom:机器人运动轨迹座标,在这个座标系统可以显示位移、移动轨迹等动态资讯。

以上就是我们透过 Rviz 对於机器人相关扫描成果的介绍。

结语

今天我们利用 Rviz 的图形显示功能来呈现出我们要的相关资料,虽然 Rviz 功能远远不只有我们今天提到的部分,但经过今天简单的操作讲解後,相信各位对於 Rviz 当中的介面与应用有了最基本的认识。如何选择对的 frame 去呈现我们机器人所能提供的资讯,还有一些常用的 frame 的介绍就是今日的重点,当初笔者一开始在操作时频频出现错误,而且就连错在哪都不知道,但原来只要选择正确的 frame 以及 topic 名称,那麽实际上操作起来也不至於太过复杂。今天的内容就到这边结束了,同时也是这篇铁人赛最後的教学,笔者团队相当感谢大家的陪伴,你们的阅读是笔者团队撰写文章的动力来源,同时在这边也对所有完成铁人赛的前辈感到由衷的敬佩,感谢各位!

https://ithelp.ithome.com.tw/upload/images/20201014/20129807T9EwLb2gGb.png


<<:  [Day 29] 永和美食纪录-和陞屋牛排

>>:  【第 30 个第一次】 网页设计师灵感五大宝典 + 完赛排名感言 40 秒(撒花)

[Lesson21] Kotlin - 宣告变数

Kotlin 的基本资料型态与 Java 相同,包括:Byte、Short、Int、Long、Flo...

Swift 新手-後端基础 PHP + MySQL & Laravel

如何在 MacOS 从 0 到 1 建置 Laravel 开发环境,并搭配 phpMyAdmin G...

Day21 - 用 Ruby on Rails 抓台湾证券交易所资料-除权除息计算结果表

前言 这篇主要以抓「台湾证券交易所」的「除权除息计算结果表」为主 取得「除权除息计算结果表」CSV ...

[Day7]Where子句

前几篇介绍了Select语句,接下来会以相同模式介绍Where子句。 Where子句格式: Wher...