ROS学习笔记四——地图、SLAM

感谢b站up 机器人工匠阿杰
文章仅供个人学习使用

地图

地图消息

map_serve节点发布/map话题,消息类型是nav_msgs::OccupancyGrid
(占据栅格)
请添加图片描述
消息类型OccupancyGrid:请添加图片描述
其中地图的描述信息info:
请添加图片描述

SLAM

全称Simultaneous Locallization And Mapping,即同时定位与地图创建。

请添加图片描述
ROS系统中使用雷达传感器进行机器人的环境感知。雷达传感器可以通过发射电磁波,如激光束或者声波,来探测周围环境并获取其反射回来的信号,进而获得环境的信息。其中最为常用的是激光雷达。

激光雷达会把激光束发射出去,然后等待激光束被障碍物反射回来,再通过接收器捕获反射回来的激光束。激光雷达会记录下激光束的反射时间、角度和位置等信息,并将这些信息转换成二维或三维坐标系中的点云数据,用于表示周围环境的物体形状和位置。

在ROS系统中,我们可以订阅激光雷达发布的数据,获取机器人周围的点云数据,然后通过建图算法和SLAM技术来处理这些数据,实现机器人的自主导航和环境感知功能。

在视觉SLAM中,我们可以使用环境中的固定物品、二维码、颜色标记、电子标签等作为参照物。ROS系统中使用栅格地图来表示环境。在初始状态下,所有的栅格值都被设为-1,表示未知状态。因此,我们需要使用激光雷达扫描这些未知状态的栅格。激光被投射到地图上,并通过障碍物的反射返回激光雷达,从而我们可以确定哪些栅格没有障碍物。没有障碍物的栅格的值被设置为0,而被阻挡的位置则被设置为100,其他未扫描到的栅格仍然保持-1的状态。激光束扫描一周,就能把机器人当前位置所能探测到的有障碍物和没有障碍物的栅格全都标注出来了。机器人在移动时不断扫描周围的栅格,并记录当前位置和探测到的栅格状态。一旦机器人移动到另一个位置,再次进行扫描,通过对不同观测点扫描的局部地图进行特征匹配和拼接,我们就可以将这些局部地图拼合起来,形成一个更大的全局地图。在导航时,我们可以在栅格值为0的区域进行路径搜索,而未被扫描到的栅格属于“未探明”区域。实际应用中,我们会对局部地图进行更频繁的扫描,以提高栅格地图的可靠性。

Hector_Mapping

请添加图片描述
安装

sudo apt install ros-noetic-hector-mapping

执行

roslaunch wpr_simulation wpb_stage_slam.launch
新终端:
rosrun rviz rviz
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值