使用MSFLocalizer的多传感器融合定位实践
本文档介绍 Apollo 多传感器融合定位(MSF Localization)的使用方法以及效果演示。
MSF Localizer 概览
MSF Localizer 订阅和发布的主要 Channel 如下表所示:
| Channel | 输入/输出 | 说明 |
|---|---|---|
| /apollo/sensor/hesai40/compensator/PointCloud2 | 输入 | 融合后的点云数据 |
| /apollo/sensor/gnss/imu | 输入 | IMU 消息 |
| /apollo/sensor/gnss/odometry | 输入 | 里程计消息 |
| /apollo/sensor/gnss/best_pose | 输入 | GPS 位置 |
| /apollo/sensor/gnss/heading | 输入 | GPS 航向角 |
| /apollo/localization/msf_gnss | 输出 | GNSS 定位结果 |
| /apollo/localization/msf_lidar | 输出 | Lidar 定位结果 |
| /apollo/localization/pose | 输出 | 融合定位结果 |
| /apollo/localization/msf_status | 输出 | 融合定位状态 |
步骤一:启动 MSF Localizer
1. 配置环境
请您按照以下步骤配置环境:
- 安装必备软件,参见 必备软件安装指南。
- 使用安装包安装 Apollo,参见 使用安装包安装Apollo。
-
准备定位测试数据。有两种方式:
- 使用自有硬件平台录制 recorder 数据,需包含的传感器有雷达、IMU、GNSS,
- 使用 Apollo 提供的开源数据,按照下面第 3 小节下载定位 demo 数据。
2. 启动 Apollo Docker 环境
-
启动终端,进入 Apollo 安装路径:
cd apollo -
执行脚本进入 Apollo Docker 环境:
./apollo.sh出现以下提示,证明您已经进入 docker 环境:
[user@in-runtime-docker:/apollo]$
3. 下载并解压数据包
下载定位 demo 数据 demo-localization-data-3.5.tar.gz。
执行以下命令下载数据:
wget https://apollo-system.cdn.bcebos.com/dataset/localization/demo-localization-data-3.5.tar.gz执行以下命令解压数据:
tar -xvf demo-localization-data-apollo-3.5.tar.gz解压后得到以下文件:
- data
|- local_map # MSF Localization 定位地图
|- ndt_map # NDT Localization 定位地图
|- params # 车辆参数
|- records # bag 数据4. 将数据包复制到指定目录
为了在 Docker 中可以访问下载的数据包,将下载的数据包复制到 /apollo/data/bag 目录下。
5. 配置参数
请您按照以下步骤配置参数:
-
配置传感器外参。
运行以下命令,拷贝车辆参数到定位模块目录下:
# DATA_PATH 请修改为第 3 小节 中下载的 demo 数据的路径 cp -r DATA_PATH/params/* /apollo/modules/localization/msf/params/params 文件夹下包含以下文件:
- gnss_params |- ant_imu_leverarm.yaml: #杆臂值 - velodyne_params |- velodyne128_novatel_extrinsics.yaml: #IMU -> LiDAR 坐标变换 |- velodyne128_height.yaml: #LiDAR 相对于地面的高度 -
配置地图参数。
打开
/apollo/modules/localization/conf/localization.conf文件并修改--map_dir字段:# 使用 vim 打开 localization.conf vim /apollo/modules/localization/conf/localization.conf # 移动到第五行,修改 --map_dir 字段 --map_dir=DATA_PATH
6. 启动 MSF Localizer
cyber_launch start /apollo/modules/localization/launch/msf_localization.launch7. 播放数据包
# DATA_PATH 请修改为 3.下载定位 demo 数据的路径
cd DATA_PATH/records
cyber_recorder play -f record.* 步骤二:定位结果查看
1. 使用 Cyber Monitor 查看 Channel
在 Apollo docker 环境中运行以下命令:
cyber_monitor如果 recorder 数据包正常,可以看到定位发出的 topic 消息。 当看到以下 topic 显示绿色时,定位模块运行正常:
/apollo/localization/msf_lidar
/apollo/localization/msf_status
/apollo/localization/pose
2. 使用 DreamView 查看定位状态
请按照以下步骤使用 DreamView 查看定位状态:
-
启动 DreamView。
运行以下命令启动 Dreamview 后台,如果已经启动可跳过这一步:
./scripts/bootstrap.sh -
在 Dreamview 中选择车辆模型和地图。
在浏览器中打开
http://localhost:8888,在左边栏选择 Module Controller,在右上角的下拉框中选择对应的车辆模型和地图:- 车辆模型选择 Mkz Example,
- 地图选择 Sunnyvale Big Loop。
-
(可选)在 Dreamview 中配置视角。
在浏览器中打开
http://localhost:8888,在左边栏选择 Layer Menu,- 在 Point of View 中选择 Overhead(鸟瞰),
- 在 Position 中同时勾选 Localization 和 GPS。
如果 recorder 数据包和地图正常,可以看到以下图像:

网页正中是地图和汽车,其中黑白的背景是地图,颜色表示环境中反射值:颜色越亮表示反射值越高,颜色越暗表示反射值越低,纯黑色表示没有被激光雷达扫描到的区域。
白色车辆模型表示经过 MSF 融合算法得到的位置坐标,蓝色方框表示 GPS 位置,可以在视频中看到蓝色方框在不停跳动,但车辆位置比较稳定,说明融合定位算法提供了更好的平滑性。
文档意见反馈
如果您在使用文档的过程中,遇到任何问题,请到我们在【开发者社区】建立的 反馈意见收集问答页面,反馈相关的问题。我们会根据反馈意见对文档进行迭代优化。