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中这种功能的包有很多,比如用于平面地图的gmapping,hector,cartographer等功能包,也有用于三维地图的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 感兴趣,那么请点击这里,开始你的免费试用吧!