无人驾驶--实时定位与地图构建(SLAM)仿真与实战(附源码)

本文介绍了无人驾驶中基于EKF-SLAM的实时定位与地图构建技术,详细阐述了EKF-SLAM的基本算法流程,并提供了实际配置和仿真源码。通过激光雷达数据和车身传感器数据,利用扩展卡尔曼滤波算法实现SLAM,适用于智能车平台和ROS环境。同时,文章展示了仿真和工程应用效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

无人驾驶–实时定位与地图构建(SLAM)仿真与实战(附源码)

一个SLAM的技术小结,供自己回顾也为后人学习提供参考。
另外建了一个无人驾驶方面的微信交流群,有兴趣的同行或者专家学者可以加我微信:wxl609278502 请注明: 姓名-单位/学校/科研院所

项目技术描述

硬件平台:智能车平台、多线激光雷达、工控机、stm32、车身转角传感器和轮速传感器
软件平台:Ubuntu16.04、ROS
技术实现:通过激光雷达的点云数据和车身传感器数据,使用扩展卡尔曼滤波算法,实现实时定位与地图构建的matlab仿真验证与整车工程化实现(Ubuntu+ROS)。

SLAM概述

SLAM,全称是Simultaneous Localization and Mapping,即同时定位与建图。所以我们能看到SLAM的主要工作是定位以及建图。SLAM目前有很多实现方法,主要分为激光雷达和视觉传感器两个方向。。本文讨论的是激光雷达SLAM技术。
EKF 方法是解决 SLAM 问题的一种经典方法,其应用依赖于运动模型和观测模型的高斯噪声假设。在 SLAM 问题首次提出不久后,Smith 和 Cheesman及 Durrant-Whyte对机器人和路标间的几何不确定性关系进行了研究。Smith 等利用 EKF 方法提出的数学公式至今仍在广泛使用。基于 EKF 的 SLAM 方法提出后,许多研究者对该方法进一步改进,Moutarlier 等采用 EKF 方法实现了第一个 SLAM 系统。基于 EKF-SLAM 框架,一些研究人员在不同机器人系统上完成了许多开发工作。
EKF-SLAM 的主要优点是它能够以在线的方式估计地图的全后验概率。到目前为止,EKF(或其扩展方法,如高斯混合模型)方法和 RBPF(Rao-Blackwellized Particle Filte)方法是仅有的能够估计地图全后验概率的方法。估计全后验概率有很多优点:除了获得最可能的地图和机器人位姿,EKF 在地图中维护的不确定性在机器人利用地图导航的时候有极大的好处。除此以外,EKF可以使机器人位姿和所创建的环境地图依概率 1 收敛到真实值,其收敛程度由机器人初始不确定性和传感器观测的不确定性决定。

SLAM可以分为定位问题和建图问题:
定位问题:

  1. 已知路标的位置的地图m,
  2. 从无人车的位置得到路标的测量值Zk (距离和方位角),
  3. 根据路标的测量值Zk和路标的位置,计算出无人车的坐标Zk。
    无人车定位
    建图问题:
  4. 提供车辆的坐标Xk,
  5. 通过激光雷达获得路标相对车辆的测量值Zk,
  6. 根据无人车的坐标Xk和路标的测量值Zk,计算路标的坐标,实现路标地图的构建。
    建图
    定位与建图融合:
  7. 定位与建图是一个耦合问题,可以从单次测量中推断出两个量,
  8. 只有同时考虑定位和建图的方案才能解决SLAM问题。

EKF-SLAM基本算法流程

1.车辆的预测模型(车辆运动学建模)
目标:根据车辆在时刻k的车速和方向盘转交V和y,估计车辆在k + 1 时刻的位置和航向角。具体模型和公式推导如下图所示。
车辆模型
车辆运动学方程:
运动学方程
因此,车辆k+1时刻的预测方程为:
车辆状态预测方程

2.路标的预测模型
我们认定路标点的坐标相对地面坐标系是不变的,及k时刻和k+1时刻的路标点坐标位置一致。
测量模型
k时刻k+1时刻的路标点坐标
3.整个系统(车辆预测+路标预测)的预测方程
系统的预测方程
4.观测模型
观测模型
本实验中使用的激光雷达返回的是障碍物的距离和角度,因此观测方程需要从笛卡尔坐标系转换到极坐标系,因此观测方程如下所示:
极坐标观测方程

5.EKF公式推导(直接上ppt,卡尔曼算法原理不清楚的就去查论文吧)
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

四轮智能车SLAM实际配置

1.车辆建模
在这里插入图片描述
运动学方程
在这里插入图片描述
将我们的车辆坐标转换为激光雷达安装点的坐标,并进行微分。
在这里插入图片描述
车辆参数相对k时刻到k+1时刻的预测方程

SLAM导航机器人零基础实战系列》讲义 第1章:Linux基础 1.Linux简介 2.安装Linux发行版ubuntu系统 3.Linux命令行基础操作 第2章:ROS入门 1.ROS是什么 2.ROS系统整体架构 3.在ubuntu16.04中安装ROS kinetic 4.如何编写ROS的第一个程序hello_world 5.编写简单的消息发布器订阅器 6.编写简单的serviceclient 7.理解tf的原理 8.理解roslaunch在大型项目中的作用 9.熟练使用rviz 10.在实际机器人上运行ROS高级功能预览 第3章:感知大脑 1.ydlidar-x4激光雷达 2.带自校准九轴数据融合IMU惯性传感器 3.轮式里程计运动控制 4.音响麦克风摄像头 5.机器人大脑嵌入式主板性能对比 6.做一个能走路对话的机器人 第4章:差分底盘设计 1.stm32主控硬件设计 2.stm32主控软件设计 3.底盘通信协议 4.底盘ROS驱动开发 5.底盘PID控制参数整定 6.底盘里程计标 第5章:树莓派3开发环境搭建 1.安装系统ubuntu_mate_16.04 2.安装ros-kinetic 3.装机后一些实用软件安装系统设置 4.PC端robot端ROS网络通信 5.Android手机端robot端ROS网络通信 6.树莓派USBtty串口号绑定 7.开机自启动ROS节点 第6章:SLAM建图自主避障导航 1.在机器人上使用传感器 2.google-cartographer机器人SLAM建图 3.ros-navigation机器人自主避障导航 4.多目标点导航及任务调度 5.机器人巡航现场监控 第7章:语音交互自然语言处理 1.语音交互相关技术 2.机器人语音交互实现 3.自然语言处理云计算引擎
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值