用于自动驾驶的地图
IMU
:测量三轴的加速度,任意两帧之间的相对运动。
轮速计
:测量汽车车轮转速
GPS
:空旷,高速比较好用。不需要做非常复杂的策略。
Lidar
:精度高,发射接收激光束,得到距离。
J = Q ( z − h ( m , x ) ) J = Q(z-h(m,x)) J=Q(z−h(m,x))
高度简化的高精地图计算模型: Q:优化模型,z:激光雷达扫描出的点,h:方程预测最新扫描点的位置,m:扫描到的点在图中的位置,x:无人车的当前位置。
m与x刚开始未知,先多传感器融合求x,在求出测量点在地图中的准确位置。
有时使用视觉与激光雷达融合使用,补充雷达没有的图像丰富的色彩信息。
也有计算能力强大,实时采集。还有一些完全使用视觉。
NDS,OpenDRIVE
主要以下几个概念:Section,line,Junction.
通过基于reference line
偏移量来描述。
地图上有车,或移动物体,多次采集移除这些点云。不动的称为feature
,定时的更新到地图中。
还将司机的经作为数据存在地图层中,使自动驾驶更像人。
路口处提供虚拟lane
使用百度提供的软件进行测绘,数据采回来后,云端百度进行高精地图绘制。
首先提供一个地图,然后将地图点云压缩成2D,划分成小格子,储存例如颜色,高度,等等数据,然后车载实时监测与各个小格子数据进行匹配,获得车辆所在的位置。以下通过:重合度,到你线段的距离度量。下图中间是车载端在线跑帮助车子定位。
二维旋转矩阵:三维同理
ECI地心惯性坐标系
:x和y指向两个恒星,不随地球的自转运动。IMU的输出是基于这个参考系下的量测输出。
ECEF地心地固坐标系
:x和y轴是随着地心转动的。地球上任意一点有唯一坐标。
UTM坐标系(水平地图)
:坐标(x,y)加投影带代号表示地球表面唯一的点,坐标与经纬度或者ECEF坐标系有确定的转换关系。高纬度误差会大,使用不同的坐标系,利用这个坐标系做输出。
当地水平坐标系
:通常定义为ENU
,位于载体上面,东向北向天向。称为导航坐标系。可以绕ECEF旋转得到。
车体坐标系
:RFU(右前上)与FLU(前左上),随载体转动,所以是局部坐标系。可以对于ENU有旋转差异。
IMU坐标系
:基本上和载体坐标系相同。IMU:惯性测量单元
激光雷达坐标系
:固定于雷达上,通过外参与IMU有关系。
相机坐标系
:通过外参与IMU有关系,因为其与IMU有旋转关系。
无人车定位所涉及的坐标系:IMU,ENU,车体坐标系
他们之间都是旋转关系。
GNSS定位
:GPS定位,定位,测试,授时
载波定位技术
:在5秒内提供cm级精度。问题是需要建立基站
PPP
:不同地方消除误差方式不一样。RTK用的是比较广的。
激光点云定位
:输出xyz,和yaw角度,大地图分成很多小格子,利用检测的点云与匹配各自中的点匹配,获得位置。LK算法优化其航向角,如果没有航向角位置误差差1M以上,很危险。反射值加高度值自适应匹配可以达到误差cm级
视觉定位技术
:用车道线,红绿灯等
视觉定位技术算法流程:
捷联惯性导航系统
:误差随时间累计。
综合上述:最后的自定位
融合上述一些技术最终得到组合导航系统
:
Robust and Precise Vehicle Localization based on Multi-sensor Fusion in Diverse City Scenes ICRA,2018 私聊作者可以获得上述PDF
Apollp Project开源代码库
目的:将底层算法模块通过通讯框架串联起来,让他们高实时性,高安全性,高鲁棒性运行
两节点通讯链路过程:分别叫Publisher,Subscriber
Publisher:发送节点 Subscriber:接收节点
流程:
1:发送节点向Master注册这个节点,注册我起了一个节点
2:接收节点去Master注册我起了一个接收节点。
3:Master向接收节点发送一个已有发送节点
的信息拓扑
4:接收节点拿到这个拓扑信息后,向发送节点请求建立TCP连接
5:发送与接收建立P2P连接后,持续不断的向接收节点发送信息。
优缺点:
优点:节点容错性强,不同语言模块隔离,开发模块低耦合
缺点:过度依赖Master单点,缺乏异常恢复机制
特别是Master作为拓扑网络的中心,一旦异常将影响整个网络。
车上一般设有冗余备用系统,但是当主系统宕机的情况下,整个系统都无法正常使用,起不到设计冗余备用系统的作用。
去中心化:加入时告诉所有节点我要加入,退出时告诉所有节点要退出。
1:告诉所有节点我要启动起来
2:所有节点在接受到新加入的节点信息之后,和新加入的节点构成两两链接
3: 然后所有节点向新加入的节点发送它们已有的拓扑信息
流程图
每一个节点都不是单独的Publisher,Subscriber,一般是两种角色同时担任,取得上游来的消息,callback之后又发送给下游的Subscriber。
Rviz
是一种可视化拓扑网络工具,它也是一个Ros节点
使用Eclipse
的Plugin
引入Rviz
的相关功能进行调试
每个节点都是相对独立的,所以每个节点的坐标系都需要整合起来为一个同一个世界坐标系。
Ros 的QT 可视化,图像化展示的有用的工具。
常用功能:
RQT
imageview 自动驾驶顶层传感器或camera,实时查看图像是否正确时,查看channel。
multiplot
连续数据的二维可视化,XY二维坐标系
graph
把节点之间的联系可视化显示出来
concole
对应ROS日志系统提供的一套可视化工具,Debug,warning,error等
Robot Models 机器人表述语言。主要描述节点,和节点间的关系。
Link是节点,Joint是节之间的关系
不同于
之前基于消息的订阅发送模型。在实际中使用的还是非常广泛的。
仿真时间,数据是在之前录制的,在仿真环境下模拟的时候回放当时的场景。
1:实际调试时的数据录制到某个bag文件里,回到实验室拿出数据复现场景。例如车子在某个地方做了错误决策,复现过后,使用新一版算法看看是否覆盖了此处错误。
2:算法训练时,也要使用大量bags数据
待填::
https://apollodreamlandprod.b2clogin.com/apollodreamlandprod.onmicrosoft.com/oauth2/v2.0/authorize?p=b2c_1a_signup_signin&redirect_uri=https%3A%2F%2Fazure.apollo.auto%2Fauth%2Fopenid%2Freturn&response_type=code%20id_token&response_mode=form_post&client_id=622ae2f5-9f92-492b-b9a8-967f3b1f63e9&state=CUSTOMa1zr-Ci1YgdFmvyqh0yHyK_bhG5F3J9Dmy_state&nonce=53D3OVFQfEwX34ZhqqxLbVr4O48yUHX0&scope=offline_access%20openid&x-client-SKU=passport-azure-ad&x-client-Ver=3.0.12
在线模拟的一个软件
运动规划:Motion planning
本质是搜索