ROS理论与实践(以移动机器人为例)连载(八) ——机器人SLAM建图

本章着重讲如何在ROS里面使用SLAM功能包,而不会去讲解算法;之后会专门的专栏做SLAM。

代码包:链接: https://pan.baidu.com/s/1MkWs9ppcX2IeFPH16YLFRw 密码: l1ve


1. SLAM原理简介

放几张GIF动图感受一下:

在这里插入图片描述

在这里插入图片描述
这边再放上一个视频链接Autonomous Aerial Navigation in Confined Indoor Environments是关于一个无人机室内建图的。

还有这个Visual SLAM Car Navigation是关于使用iPhone5做视觉SLAM的。

  • SLAM(Simultaneout Localization and Mapping):即使定位与地图构建。即机器人自身位置不确定的情况下,在完全未知的环境中创建地图,同时利用地图进行自主定位和导航;
  • 定位,在地图上估测机器人的位置坐标;
  • 地图构建,这一过程是根据传感器的结果来构建一张地图或者是修正当前地图,同时将结果提供给定位算法做为先验地图。

在这里插入图片描述在这里插入图片描述
其实我感觉第一本书皮好看呀,两本书的PDF都可以私信我,由于版权问题就不公布了!

机器人必须安装激光雷达等测距设备,可以获取环境深度信息。 单线雷达,反馈的是二维的平面信息。多线雷达,反馈的是三维信息。(左边是单线,也就是TurtleBot3配置的雷达;右边是多线雷达)
在这里插入图片描述在这里插入图片描述

2. ROS机器人配置与数据结构

①单线雷达

在这里插入图片描述

  • angle_min:可检测范围的起始角度;
  • angle_max:可检测范围的终止角度,与angle_min组成激光雷达的可检测范围;
  • angle_increment:相邻数据帧之间的角度步长;
  • time_increment:采集到相邻数据帧之间的时间步长,当传感器处于相对运动状态时进行补偿使用;
  • scan_time:采集一帧数据所需要的时间;
  • range_min:最近可检测深度的阈值;
  • range_max:最远可检测深度的阈值;
  • ranges:一帧深度数据的存储数组。

在这里插入图片描述
像Kinect这种RGB-D相机,同样可以把收集到的三个维度的信息通过 depthimage_to_laserscan 这个功能包把点云深度数据转换成激光数据。

sudo apt-get install ros-melodic-depthimage-to-laserscan

使用功能包长着个样↓

<node pkg="depthimage_to_laserscan" type="depthimage_to_laserscan" name="depthimage_to_laserscan" output="screen">
	<remap from="image" to="/kinect/depth/image_raw" />
	<remap from="camera_info" to="/kinect/depth/camera_info" />
	<remap from="scan" to="/scan" />
	<param name="output_frame_id" value="/camera_link" />
</node>

②里程计

在这里插入图片描述

  • pose:机器人当前位置坐标,包括机器人的 XYZ 三轴位置与方向参数,以及用于矫正误差的协方差矩阵;
  • twist:机器人当前的运动状态,包括 XYZ 三轴的线速度与角速度,以及用于矫正误差的协方差矩阵。

使用 Building Editor 创建仿真环境,可见ROS理论与实践(以移动机器人为例)连载(五) ——构建机器人仿真平台

代码包:链接: https://pan.baidu.com/s/1hMKzm2sozhmIFIn6ZIQQMQ 密码: 1bm8

可以运行↓前提是把提供的功能包放在工作空间下并进行编译

$ roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch

3. 常用SLAM功能包应用

①gmapping

在这里插入图片描述

  • 基于激光雷达
  • Rao-Blackwellized 粒子滤波算法
  • 二维栅格地图
  • 需要机器人提供里程计信息
  • OpenSlam开源算法
  • 输出地图话题:nav_msgs/OccupancyGrid
    在这里插入图片描述
    论文可参考:http://openslam.org/gmapping.html

安装gmapping

$ sudo apt-get install ros-melodic-gmapping

gmapping功能包中的话题和服务:
在这里插入图片描述
gmapping功能包中的TF变换:
在这里插入图片描述
参考:http://wiki.ros.org/gmapping/

该如何使用 gmapping 呢?我们来配置一下 gmapping 的节点↓

<launch>
    <arg name="scan_topic" default="scan" />

    <node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen" clear_params="true">
        <param name="odom_frame" value
  • 8
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值