【ROS2机器人入门到实战】地图文件介绍

1.地图文件介绍

写在前面

  1. 当前平台文章汇总地址:ROS2机器人从入门到实战
  2. 获取完整教程及配套资料代码,请关注公众号<鱼香ROS>获取
  3. 教程配套机器人开发平台:两驱版| 四驱版
  4. 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn

1.地图数据文件.pgm介绍

OccupancyGrid由一个.yaml格式的元数据文件,和.pgm图片格式的地图数据文件组成。从上节课建图后保存的文件也可以看出。

.
├── fishbot_map.pgm
└── fishbot_map.yaml

0 directories, 2 files

在这里插入图片描述

打开上节课建好的地图,观察下,你应该会有几点疑问:

  1. 不是说占据栅格地图每个栅格都有一个概率吗?为什么看不出来?
  2. 立方体内和圆柱体内和墙之外的区域为什么是灰色的?

原因如下:

  1. 一个栅格对应到图片上其实是一个像素,每一个像素的值在0-255之间,所以将像素值和占据率之间的映射即可,而像素值反应到图像上就是颜色的深浅,1.2图对应的像素颜色如下:

在这里插入图片描述

  1. 建图的时候物体内和墙之外的区域机器人并没有探索到,没有数据参考就认为其值是未知的。

2.地图描述文件.yaml介绍

除了fishbot_map.pgm文件外,还有另外一个fishbot_map.yaml的文件,fishbot_map.yaml文件是地图的配置文件,该文件内容如下:

image: fishbot_map.pgm
mode: trinary
resolution: 0.05
origin: [-3.37, -2.88, 0]
negate: 0
occupied_thresh: 0.65
free_thresh: 0.25
  • image:图像名称

  • mode:图像模式,默认为trinary(三进制),还有另外两个可选项scale(缩放的)和raw(原本的值)。

  • resolution:分辨率,一个栅格对应的物理尺寸,单位为m。0.05则表示一个栅格为0.05m

  • origin:地图原点位置,单位是m。

  • negate:是否反转图像

  • cooupied_thresh:占据阈值

  • free_thresh:空闲阈值

如何在地图上找出机器人原点的像素位置?
  1. 图像的像素原点在左下角

  2. 借张图左边的0,0是地图原点,右边的图是图像的像素原点

在这里插入图片描述

  1. 假如机器人地图原点是[-3.37m, -2.88m],除上分辨率则可得到像素原点[-67.4px,-57.6px]。地图原点在x和y轴分别偏移[-67.4px,-57.6px]就到了像素原点,反过来说,地图原点就在像素原点的[67.4px,57.6px]处。

3.地图加载

3.1 启动地图

了解完地图的格式和描述文件,接着我们看看如何将地图加载到rviz2中进行显示。我们使用nav2_map_server进行地图的保存,也可以使用它来加载地图。

打开终端,进入src/map/运行下面指令:

ros2 run nav2_map_server map_server --ros-args --param yaml_filename:=map/fishbot_map.yaml

其中--ros-args --param yaml_filename:=map/fishbot_map.yaml指定地图描述文件名称.fishbot_map.yaml

3.2 打开rviz2

打开终端

rviz2

通过add->bytopic->选择map组件。此时你应该什么都看不到,没关系,这是正常的。

3.3 配置并激活map_server

map_server节点采用的是ROS2的生命周期进行编写的,除了启动节点,我们还需要手动的配置和激活节点才能使用。

打开新的终端,使用下面指令进行配置:

ros2 lifecycle set /map_server configure

使用下面的指令进行激活:

ros2 lifecycle set /map_server activate

完成这一步,你应该就可以在rviz2中看到地图了。

在这里插入图片描述

将栅格数量改大,然后将Grid的cellsize改成0.05,你就可以看到我们之间建立的地图每一个栅格的占据情况了。

在这里插入图片描述

生命周期节点转换图如下:
在这里插入图片描述

4.地图编辑

最后我们来说一下如何对地图进行编辑,地图编辑的方法有很多,你可以手动改图片,也可以通过opencv等图像处理库进行图像的去除噪点等操作。

这里小鱼介绍的是手动添加一个地图用PS进行编辑 。

打开网址:https://www.gaituya.com/ps/

接着点击文件打开选择我们的.pgm文件,即可看到下图。

在这里插入图片描述

接着小鱼将下面的正方形给补上。

在这里插入图片描述

保存后在文件选择导出为png格式即可,因为PS并不支持pgm格式的导出,所以我们选择png格式,幸运的是png格式的地图也是被map_server所支持的。

把导出的图片放到map文件夹下,接着我们需要修改下yaml配置文件中图片的后缀。

image: fishbot_map.png
mode: trinary
resolution: 0.05
origin: [-3.37, -2.88, 0]
negate: 0
occupied_thresh: 0.65
free_thresh: 0.25

接着你可以重新运行下map_server(记得先关闭rviz2),然后看一下map是否发生了改变。

5. 总结

本节我们主要学习了地图的相关概念以及加载和编辑的方式,下一节我们就开始正式学习Nav2导航框架。

参考文章:

  • https://zhuanlan.zhihu.com/p/21738718
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
ROS Web地图是一种基于ROS机器人操作系统)的在线地图修改和保存工具。它允许用户通过Web界面对地图进行实时编辑,并可以将修改后的地图保存到本地或服务器上。 首先,用户可以通过Web界面访问ROS Web地图工具。该界面提供了一些常用的地图编辑工具,如添加、删除和移动地图上的物体或障碍物等。用户可以使用鼠标在地图上直接拖拽和操作物体,或者使用工具栏上的按钮来进行编辑。 在编辑过程中,ROS Web地图可以实时反映出用户所做的修改。这意味着用户可以即时看到编辑效果,并根据实际需要进行调整。用户还可以使用一些辅助工具,如测量距离或角度等,以帮助进行精确的地图编辑。 除了实时编辑功能之外,ROS Web地图还提供了保存功能。一旦用户完成了对地图的编辑,他们可以选择将修改后的地图保存到本地或服务器上。这样,用户就可以在以后继续使用或分享所编辑的地图。 值得一提的是,ROS Web地图ROS系统整合紧密,可以方便地与其他ROS软件或设备进行通信。这意味着用户可以将ROS Web地图集成到现有的ROS机器人系统中,以便更好地实现地图编辑和导航功能。 综上所述,ROS Web地图是一项非常实用的在线地图修改和保存工具。它不仅可以高效地对地图进行编辑,还可以与其他ROS软件或设备进行无缝集成。无论是在机器人导航、环境建模还是路径规划等方面,ROS Web地图都能发挥重要作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值