SLAM建图

一、SLAM

1.1 介绍

SLAM是机器人自身位置不确定的情况下,在完全未知的环境中创建地图,同时利用地图进行自主定位。

  • 定位:机器人根据周围环境估计自身在地图上的位置坐标。
  • 地图构建:机器人根据传感器的结果来构建一张地图。

1.2 原理

图1. SLAM原理

二、数据结构

2.1 激光雷达

一般在SLAM中使用可以直接获得深度信息的传感器。以激光雷达为例,在终端上输入rosmsg show sensor_msgs/LaserScan可以获得其数据结构

std_msgs/Header header
  uint32 seq
  time stamp
  string frame_id
float32 angle_min //可检测范围的起始角度
float32 angle_max //可检测范围的终止角度,与angle_min组成激光雷达的可检测范围
float32 angle_increment //相邻数据帧之间的角度步长
float32 time_increment //采集到相邻数据帧之间的时间步长,当传感器处于相对运动状态时进行补偿使用
float32 scan_time //采集一帧数据所需要的时间
float32 range_min //最近可检测深度的阈值
float32 range_max //最远可检测深度的阈值
float32[] ranges //一帧深度数据的存储数组
float32[] intensities

RGB-D摄像头,也可以通过红外摄像头获取周围环境的深度信息,可以通过depthimage_to_laserscan功能包转化为激光雷达的数据。

2.2 里程计

机器人在定位时要用到其里程计,在终端上输入rosmsg show nav_msgs/Odometry 可以获得其数据结构

std_msgs/Header header
  uint32 seq
  time stamp
  string frame_id
string child_frame_id
geometry_msgs/PoseWithCovariance pose //机器人当前位置坐标,包括机器人的XYZ三轴位置和方向参数,以及用于校正误差的协方差矩阵
  geometry_msgs/Pose pose 
    geometry_msgs/Point position
      float64 x
      float64 y
      float64 z
    geometry_msgs/Quaternion orientation
      float64 x
      float64 y
      float64 z
      float64 w
  float64[36] covariance
geometry_msgs/TwistWithCovariance twist //机器人当前的运动状态,包括XYZ三轴的线速度与角速度,以及用于校正误差的协方差矩阵
  geometry_msgs/Twist twist
    geometry_msgs/Vector3 linear
      float64 x
      float64 y
      float64 z
    geometry_msgs/Vector3 angular
      float64 x
      float64 y
      float64 z
  float64[36] covariance

三、SLAM功能包

3.1 介绍

借助SLAM功能包,我们只需要输入特定格式的传感器信息,就可以自动建图和定位。在ROS中这种功能的包有很多,比如用于平面地图的gmappinghectorcartographer等功能包,也有用于三维地图的rtabmap功能包。

3.2 gmapping

gmapping功能包为例,gmapping是基于二维激光雷达的 SLAM建图定位的功能包,采用的是Rao-Blackwellized粒子滤波算法,gmapping的总体框架如图2所示。深度信息,里程计信息,IMU信息是输入信息,二维栅格地图是输出地图。其中深度信息和里程计信息是必须输入的,IMU可不输入。

图2. gmapping功能包的总体框架

3.3 应用

我们借助gazebo,创建一个如图3所示的虚拟迷宫,用于小车的测试。图4是gmapping功能包的应用效果,可以看到小车的运动和地图构建都是同步的。

图3. 虚拟迷宫

图4. gmapping应用效果


如果你想要学习 Linux,那么你一定需要一个高性能、稳定、安全的 VPS 服务。而Evolution Host就是你的最佳选择。为什么呢?让我来告诉你:

• Evolution Host 提供了多种 Linux 发行版,包括 Ubuntu, Debian, CentOS, Fedora 等,让你可以根据自己的喜好和需求选择合适的操作系统。

• Evolution Host 的 VPS 配备了 SSD 硬盘,让你的 Linux 系统运行得更快、更流畅、更稳定。无论你是在编程、测试、部署还是运维,你都可以享受到极速的体验。

• Evolution Host 的 VPS 还提供了 DDoS 保护,让你的 Linux 系统免受网络攻击的威胁。你可以放心地使用 Linux,不用担心数据丢失或被篡改。

• Evolution Host 的 VPS 还有很多其他的优点,比如一键安装、自动备份、友好的客服等等。

总之,Evolution Host 是一个专业、可靠、优质的 VPS 服务提供商,它可以帮助你学习 Linux,并且让你的 Linux 学习之旅更加愉快和轻松。如果你对 Evolution Host 感兴趣,那么请点击这里,开始你的免费试用吧!

posted @ 2021-02-28 23:00  iamwasabi  阅读(2578)  评论(0编辑  收藏  举报