项目简介
本项目基于C++和Eigen库实现了扩展卡尔曼滤波器(Extended Kalman Filter, EKF),其目的是融合激光雷达和毫米波雷达的测量数据,以此精确估计行驶中的汽车和自行车位置。项目源自Udacity的自动驾驶汽车工程师课程,并且可以通过模拟器进行可视化展示。
项目的主要特性和功能
- 传感器融合:将激光雷达和毫米波雷达的测量数据进行融合,提升位置估计的准确性。
- 扩展卡尔曼滤波器:运用EKF进行状态估计,能够处理非线性测量模型。
- 模拟器支持:提供模拟器,可对滤波器的结果进行可视化展示。
- 实时数据处理:借助WebSocket通信实时处理传感器数据,并返回估计结果。
安装使用步骤
1. 环境配置
选择一:Ubuntu Bash
- 在Windows 10系统上安装Ubuntu Bash,参考安装步骤。
- 安装uWebSockets所需依赖库,如cmake、libssl-dev、openssl等。
- 运行项目提供的
install-linux.sh
脚本,或手动安装uWebSockets。
选择二:虚拟机
- 下载并使用Udacity提供的虚拟机,虚拟机下载地址为这里。
- 虚拟机中Linux系统的密码为
udacity-nd
。
2. 编译项目
- 进入项目文件夹,创建并进入
build
目录:bash mkdir build && cd build
- 使用CMake生成Makefile并编译项目:
bash cmake .. && make
- 编译成功后,运行生成的可执行文件:
bash ./ExtendedKF
3. 运行模拟器
打开模拟器,加载项目数据集,观察滤波器的结果。
4. 代码结构
FusionEKF.cpp
:实现融合扩展卡尔曼滤波器,处理传感器数据的初始化、预测和更新。kalman_filter.cpp
:实现卡尔曼滤波器的核心功能,包括初始化、预测和更新步骤。main.cpp
:主程序,处理WebSocket通信,调用FusionEKF进行状态估计,并计算RMSE。tools.cpp
:辅助函数,如计算RMSE和雅可比矩阵。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】