教你如何在本地运行多传感器融合定位模块

定位技术横跨好几个专业,包括测绘、导航、计算机视觉知识、以及点云处理的知识。业界所说的“多传感器融合”,都是指对摄像头、激光雷达、毫米波雷达、超声波雷达等多种传感器各自分别收集到的数据所做的「数据融合」。
其中,apollo3.0多传感器融合定位模块的框架有:
定位模块依赖的硬件以及数据,包括惯性测量单元 imu、车端天线、基站、lidar、以及定位地图;
gnss定位以及激光点云定位模块,gnss定位(基站和车端天线辅助)输出位置及速度信息,点云定位(lidar和定位地图)输出位置及航向角信息;
融合框架:惯性导航解算、kalman滤波(卡尔曼滤波器是核心模块);融合定位输出是一个6-dof的位置和姿态,以及协方差矩阵,其结果会反过来用于gnss定位和点云定位的预测。
由于无人车的感知和决策能力并没有达到像「人」一样聪明的程度,而定位系统可以与高精地图配合提供静态场景感知,可将感知得到的动态物体正确放入静态场景,而位置和姿态用于路径规划和车辆控制。因此定位系统对于无人驾驶至关重要。
in brief,一个无人汽车感知系统成功并不能保证整个系统成功,而感知系统有瑕疵足以让使用它的软件工程师持续陷入苦恼。
对大多数涉足自动驾驶的公司来说,搞定一套传感器方案,这个看似简单的工作,却往往需要耗费一个小团队至少6-8个月的宝贵研发时间,才能勉强做到“不拖后腿”,而这又仅仅是“重复发明轮子”的一个过程。
百度apollo所开发的自动驾驶套件已可做到在硬件层面就将摄像头、激光雷达集成到一起,然后再将采集到的数据统一输送到计算平台。
apollo作为一个开放的平台,目的是将开发者从繁琐的重复性工作中解放出来,更加专注于算法迭代本身,加快自动驾驶技术的迭代速度,推进整个无人驾驶行业的进程。面对复杂多变、快速迭代的开发环境,只有开放才会带来进步,apollo社区正在被开源的力量唤醒。
从github网站下载apollo源代码
按照教程设置docker环境并搭建apollo工程
从apllo数据平台下载多传感器融合定位数据(仅限美国地区)
为了使定位模块正确运行,需要对地图路径和传感器外参进行配置。假设下载的定位数据的所在路径为data_path。在进行以下步骤前,首先确定你在docker容器中。
2.1 配置传感器外参:
将定位数据中的传感器外参拷贝至指定文件夹下。
cpdata_path/params/ant_imu_leverarm.yaml/apollo/modules/localization/msf/params/gnss_params/cpdata_path/params/velodyne64_novatel_extrinsics_example.yaml/apollo/modules/localization/msf/params/velodyne_params/cpdata_path/params/velodyne64_height.yaml/apollo/modules/localization/msf/params/velodyne_params/
各个外参的意义:
ant_imu_leverarm.yaml: 杆臂值参数,gnss天线相对imu的距离
velodyne64_novatel_extrinsics_example.yaml:lidar相对imu的外参
velodyne64_height.yaml: lidar相对地面的高度
2.2 设置地图路径:
在/apollo/modules/localization/conf/localization.conf中添加关于地图路径的配置:
#redefinethemap_diringlobal_flagfile.txt--map_dir=data_path
这将会覆盖global_flagfile.txt中的默认值。
./scripts/localization.sh
定位程序将在后台运行,可以通过以下命令进行查看。
ps-e|greplocalization
在/apollo/data/log目录下,可以看到定位模块输出的相关文件。
localization.info : info级别的log信息
localization.warning : warning级别的log信息
localization.error : error级别的log信息
localization.out : 标准输出重定向文件
localizaiton.flags : 启动localization模块使用的配置
cddata_path/bag rosbagplay*.bag
从播放数据到定位模块开始输出定位消息,大约需要30s左右。
5.1记录定位结果
该脚本会在后台运行录包程序,并将存放路径输出到终端上。
./scripts/record_bag.sh
5.2可视化定位结果
./scripts/localization_online_visualizer.sh
该可视化工具首先根据定位地图生成用于可视化的缓存文件,存放在/apollo/data/map_visual目录下。
然后接收以下topic并进行可视化绘制。
/apollo/sensor/velodyne64/compensator/pointcloud2
/apollo/localization/msf_lidar
/apollo/localization/msf_gnss
/apollo/localization/pose
5.3可视化效果如下:
如果发现可视化工具运行时卡顿,可使用如下命令重新编译可视化工具:
cd/apollo bazelbuild-copt//modules/localization/msf/local_tool/local_visualization/online_visual:online_local_visualizer
编译选项-c opt优化程序性能,从而使可视化工具可以实时运行。
./scripts/localization.shstop
如果之前有运行步骤5的录包脚本,还需执行
./scripts/record_bag.sh stop
假设步骤5中录取的数据存放路径为output_path,杆臂值外参的路径为ant_imu_path
7.1 运行脚本:
./scripts/msf_local_evaluation.shoutput_pathant_imu_path
该脚本会以rtk定位模式为基准,将多传感器融合模式的定位结果进行对比。注意只有在gnss信号良好,rtk定位模式运行良好的区域,这样的对比才是有意义的。
7.2 获得如下统计结果:
可以看到三组统计结果,第一组是组合导航(输出频率200hz)的统计结果,第二组是点云定位(输出频率5hz)的统计结果,第三组是gnss定位(输出频率约1hz)的统计结果。
表格中各项的意义:
error: 平面误差,单位为米
error lon: 车前进方向的误差,单位为米
error lat: 车横向方向的误差,单位为米
error roll: 翻滚角误差,单位为度
error pit: 俯仰角误差,单位为度
error yaw: 偏航角误差,单位为度
mean: 误差的平均值
std: 误差的标准差
max: 误差的最大值
<30cm: 距离误差少于30cm的帧所占的百分比
<1.0d: 角度误差小于1.0d的帧所占的百分比
con_frame(): 满足括号内条件的最大连续帧数

企业在选择SIEM时有哪些事项需注意,如何进行正确选择
VR的核心技术是“虚拟化身”?
光刻机运动台系统建模与优化
智能照明控制系统的特点和功能
中国移动家宽用户超1.9亿 成全球最大智慧家庭服务商
教你如何在本地运行多传感器融合定位模块
盘点未来可能改变智能手机行业的前沿创新技术
双晶体管正激有源钳位软开关的工作原理
智慧工地助力建筑行业迈入新基建新时代
iPhone X评测,到底好在哪里
L-com诺通推出新型高增益8端口MIMO扇形天线
校准示波器的具体步骤
东芝发布眼镜式可穿戴终端“Wearvue™ TG-1”
实测报告:针对海外市场的AI测温 人脸识别算法该如何选型
集成函数发生器8038的工作原理,8038管脚图
如何更好地去掌握I2C通信?
中国联通正式与三家企业达成了互联网电信增值业务合作
创辅助安全历史最高分纪录!极氪001中保研碰撞测试获最高评价
双端口双极性电源
DSP大功率超声波焊接电源发生器