失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Apollo无人驾驶课程 Intro

Apollo无人驾驶课程 Intro

时间:2020-03-22 20:15:09

相关推荐

Apollo无人驾驶课程 Intro

高精地图

用于自动驾驶的地图

如何采集与生成:

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

Apollp的方案:

使用百度提供的软件进行测绘,数据采回来后,云端百度进行高精地图绘制。

自定位技术

姿态是说绕三个轴的旋转。

激光定位

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

定位基础知识

二维旋转矩阵:三维同理

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级

视觉定位技术:用车道线,红绿灯等

视觉定位技术算法流程:

捷联惯性导航系统:误差随时间累计。

综合上述:最后的自定位融合上述一些技术最终得到组合导航系统

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

Robust and Precise Vehicle Localization based on Multi-sensor Fusion in Diverse City Scenes ICRA,私聊作者可以获得上述PDF

Apollp Project开源代码库

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

目的将底层算法模块通过通讯框架串联起来,让他们高实时性,高安全性,高鲁棒性运行

两节点通讯链路过程:分别叫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节点

使用EclipsePlugin引入Rviz的相关功能进行调试

四个需要用到的重要功能

TF坐标转换

每个节点都是相对独立的,所以每个节点的坐标系都需要整合起来为一个同一个世界坐标系。

RQT

Ros 的QT 可视化,图像化展示的有用的工具。

常用功能:

RQTimageview 自动驾驶顶层传感器或camera,实时查看图像是否正确时,查看channel。

multiplot连续数据的二维可视化,XY二维坐标系

graph把节点之间的联系可视化显示出来

concole对应ROS日志系统提供的一套可视化工具,Debug,warning,error等

URDF

Robot Models 机器人表述语言。主要描述节点,和节点间的关系。

Link是节点,Joint是节之间的关系

SDF

另一种调试工具

Service

不同于之前基于消息的订阅发送模型。在实际中使用的还是非常广泛的。

ROS Actions

比Service多了一个Cancel功能,在目前使用较少。

ROS Time

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

ROS Bags

1:实际调试时的数据录制到某个bag文件里,回到实验室拿出数据复现场景。例如车子在某个地方做了错误决策,复现过后,使用新一版算法看看是否覆盖了此处错误。

2:算法训练时,也要使用大量bags数据

Debugging Strategies

RQT提供的诊断程序,当节点运行不起来时,到底哪里错了

Apollo平台介绍

待填::

//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

本质是搜索

如果觉得《Apollo无人驾驶课程 Intro》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。