Apollo无人驾驶课程 Intro

高精地图

用于自动驾驶的地图

如何采集与生成:

IMU:测量三轴的加速度,任意两帧之间的相对运动。
轮速计:测量汽车车轮转速
GPS:空旷,高速比较好用。不需要做非常复杂的策略。
Lidar:精度高,发射接收激光束,得到距离。
Apollo无人驾驶课程 Intro_第1张图片
J = Q ( z − h ( m , x ) ) J = Q(z-h(m,x)) J=Q(zh(m,x))
高度简化的高精地图计算模型: Q:优化模型,z:激光雷达扫描出的点,h:方程预测最新扫描点的位置,m:扫描到的点在图中的位置,x:无人车的当前位置。
m与x刚开始未知,先多传感器融合求x,在求出测量点在地图中的准确位置。

有时使用视觉与激光雷达融合使用,补充雷达没有的图像丰富的色彩信息。
也有计算能力强大,实时采集。还有一些完全使用视觉。

规范:

NDS,OpenDRIVE
主要以下几个概念:Section,line,Junction.
Apollo无人驾驶课程 Intro_第2张图片
通过基于reference line 偏移量来描述。

一些公司的方案:

地图上有车,或移动物体,多次采集移除这些点云。不动的称为feature,定时的更新到地图中。
还将司机的经作为数据存在地图层中,使自动驾驶更像人。

路口处提供虚拟lane

Apollp的方案:

Apollo无人驾驶课程 Intro_第3张图片
使用百度提供的软件进行测绘,数据采回来后,云端百度进行高精地图绘制。

自定位技术

Apollo无人驾驶课程 Intro_第4张图片
姿态是说绕三个轴的旋转。

激光定位

首先提供一个地图,然后将地图点云压缩成2D,划分成小格子,储存例如颜色,高度,等等数据,然后车载实时监测与各个小格子数据进行匹配,获得车辆所在的位置。以下通过:重合度,到你线段的距离度量。下图中间是车载端在线跑帮助车子定位。
Apollo无人驾驶课程 Intro_第5张图片

定位基础知识

二维旋转矩阵:三维同理
Apollo无人驾驶课程 Intro_第6张图片
ECI地心惯性坐标系:x和y指向两个恒星,不随地球的自转运动。IMU的输出是基于这个参考系下的量测输出。
ECEF地心地固坐标系:x和y轴是随着地心转动的。地球上任意一点有唯一坐标。
UTM坐标系(水平地图):坐标(x,y)加投影带代号表示地球表面唯一的点,坐标与经纬度或者ECEF坐标系有确定的转换关系。高纬度误差会大,使用不同的坐标系,利用这个坐标系做输出。
当地水平坐标系:通常定义为ENU,位于载体上面,东向北向天向。称为导航坐标系。可以绕ECEF旋转得到。
车体坐标系:RFU(右前上)与FLU(前左上),随载体转动,所以是局部坐标系。可以对于ENU有旋转差异。
IMU坐标系:基本上和载体坐标系相同。IMU:惯性测量单元
激光雷达坐标系:固定于雷达上,通过外参与IMU有关系。
相机坐标系:通过外参与IMU有关系,因为其与IMU有旋转关系。

无人车定位所涉及的坐标系:IMU,ENU,车体坐标系他们之间都是旋转关系。

Apollp用到的技术

GNSS定位:GPS定位,定位,测试,授时
载波定位技术:在5秒内提供cm级精度。问题是需要建立基站
PPP:不同地方消除误差方式不一样。RTK用的是比较广的。
激光点云定位:输出xyz,和yaw角度,大地图分成很多小格子,利用检测的点云与匹配各自中的点匹配,获得位置。LK算法优化其航向角,如果没有航向角位置误差差1M以上,很危险。反射值加高度值自适应匹配可以达到误差cm级
视觉定位技术:用车道线,红绿灯等
视觉定位技术算法流程:
Apollo无人驾驶课程 Intro_第7张图片
捷联惯性导航系统:误差随时间累计。
Apollo无人驾驶课程 Intro_第8张图片
综合上述:最后的自定位融合上述一些技术最终得到组合导航系统
Apollo无人驾驶课程 Intro_第9张图片

自定位技术开源代码及论文:

Robust and Precise Vehicle Localization based on Multi-sensor Fusion in Diverse City Scenes ICRA,2018 私聊作者可以获得上述PDF
Apollp Project开源代码库

Apollo ROS介绍 底层数据通讯结构

目的将底层算法模块通过通讯框架串联起来,让他们高实时性,高安全性,高鲁棒性运行
两节点通讯链路过程:分别叫Publisher,Subscriber

中心化网络拓扑

Apollo无人驾驶课程 Intro_第10张图片

Publisher:发送节点 Subscriber:接收节点
流程:
1:发送节点向Master注册这个节点,注册我起了一个节点
2:接收节点去Master注册我起了一个接收节点。
3:Master向接收节点发送一个已有发送节点的信息拓扑
4:接收节点拿到这个拓扑信息后,向发送节点请求建立TCP连接
5:发送与接收建立P2P连接后,持续不断的向接收节点发送信息。

优缺点:

优点:节点容错性强,不同语言模块隔离,开发模块低耦合
缺点:过度依赖Master单点,缺乏异常恢复机制
特别是Master作为拓扑网络的中心,一旦异常将影响整个网络。
Apollo无人驾驶课程 Intro_第11张图片
车上一般设有冗余备用系统,但是当主系统宕机的情况下,整个系统都无法正常使用,起不到设计冗余备用系统的作用。

去中心化网络拓扑

为了改进以上缺点,采用去中心化网络拓扑。
Apollo无人驾驶课程 Intro_第12张图片

去中心化:加入时告诉所有节点我要加入,退出时告诉所有节点要退出。
1:告诉所有节点我要启动起来
2:所有节点在接受到新加入的节点信息之后,和新加入的节点构成两两链接
3: 然后所有节点向新加入的节点发送它们已有的拓扑信息
流程图Apollo无人驾驶课程 Intro_第13张图片

每一个节点都不是单独的Publisher,Subscriber,一般是两种角色同时担任,取得上游来的消息,callback之后又发送给下游的Subscriber。

Rviz是一种可视化拓扑网络工具,它也是一个Ros节点
Apollo无人驾驶课程 Intro_第14张图片
使用EclipsePlugin引入Rviz的相关功能进行调试

四个需要用到的重要功能

TF坐标转换

每个节点都是相对独立的,所以每个节点的坐标系都需要整合起来为一个同一个世界坐标系。
Apollo无人驾驶课程 Intro_第15张图片

RQT

Ros 的QT 可视化,图像化展示的有用的工具。
常用功能:
RQT imageview 自动驾驶顶层传感器或camera,实时查看图像是否正确时,查看channel。
multiplot 连续数据的二维可视化,XY二维坐标系
graph 把节点之间的联系可视化显示出来
concole 对应ROS日志系统提供的一套可视化工具,Debug,warning,error等

URDF

Robot Models 机器人表述语言。主要描述节点,和节点间的关系。
Link是节点,Joint是节之间的关系
Apollo无人驾驶课程 Intro_第16张图片

SDF

另一种调试工具
Apollo无人驾驶课程 Intro_第17张图片

Service

不同于之前基于消息的订阅发送模型。在实际中使用的还是非常广泛的。
Apollo无人驾驶课程 Intro_第18张图片

ROS Actions

比Service多了一个Cancel功能,在目前使用较少。
Apollo无人驾驶课程 Intro_第19张图片

ROS Time

仿真时间,数据是在之前录制的,在仿真环境下模拟的时候回放当时的场景。

Apollo无人驾驶课程 Intro_第20张图片

ROS Bags

1:实际调试时的数据录制到某个bag文件里,回到实验室拿出数据复现场景。例如车子在某个地方做了错误决策,复现过后,使用新一版算法看看是否覆盖了此处错误。
2:算法训练时,也要使用大量bags数据
Apollo无人驾驶课程 Intro_第21张图片

Debugging Strategies

RQT提供的诊断程序,当节点运行不起来时,到底哪里错了
Apollo无人驾驶课程 Intro_第22张图片

Apollo平台介绍

待填::
Apollo无人驾驶课程 Intro_第23张图片
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
本质是搜索

你可能感兴趣的:(无人驾驶)