ADAS感知设计
ADAS传感器融合
0.传感器标定
首先标定传感器。一般可以精度高的传感标定用精度低一个数量级的传感器,如用激光雷达标定毫米波雷达。
毫米波雷达标定:可以采用激光雷达对毫米波雷达进行标定。选取一个纹理丰富的自然场景的,如有树木,电线杆和清晰车道线传感器标定。将毫米波雷达数据投影到激光雷达坐标系中,并画出相应的鸟瞰图进行辅助验证。毫米波雷达会检测到道路边沿的目标,通过判断毫米波雷达与激光雷达目标是否重合判断标定是否成功。
摄像头标定。包括摄像头的内参和外参。内参包含相机的焦距、主点和畸变系数等信息,可以用棋盘格通过OpenCV和Matlab的工具进行标定。外参为相机坐标到世界坐标,与摄像头的安装位置和角度有关,在平直道路上,利用卷尺和人的身高进行标定。
激光雷达标定。采用相机和激光雷达联合标定。
1.传感器融合
因为传感器有各自的优缺点,所以需要融合来扬长避短。摄像头与毫米波雷达是ADAS中最常用的传感器是。
摄像头 - 优势:目标识别能力强,可以对车辆,自行车,行人等目标进行分类。劣势:距离信息不是直接测量得到的。特别是在恶劣天气和光照环境环境下距离信息不准确。
毫米波雷达 - 优势:直接测量目标的位置和速度。受到天气及环境的影响小。劣势: 于雷达的信号较为稀疏,不便通过雷达进行目标识别。这些性质正好与摄像头形成互补。
信息融合又可分为目标级融合和信号级融合。
目标级融合: 每个传感器先各自处理原始信号生成目标。在目标的基础上进行融合。- 优势: 对控制器的算力和通信传输要求低。劣势: 是传感器在独立处理信号时会有信息丢失。
数据级融合: 在原始数据级就进行融合。- 优势:信息丢失少,精度高,劣势:对控制器的算力和通信传输要求高。
在架构设计时需要找到精度和算力分布的平衡点。
L2级别ADAS采用前视摄像头和雷达目标级融合的方案。雷达输出target信号,摄像头为类似mobileye的智能摄像头,输出track信号。
模块分为数据有效性验证,时间补偿,雷达聚类,目标匹配,新目标生成,航迹追踪,目标管理等子模块:
2.雷达聚类
毫米波雷达通过分析雷达反射的回波进行目标的定位测速。雷达底层信号处理回波通过快速傅里叶变换fft,反射点,恒虚警处理cfar,关键点。这些步骤一般在内雷达部件内部完成。
雷达输出的信号分为:target,object,track。target信号为未经过聚类的反射点。由于回波反射,特别是在旁边车辆,隧道,或者有路边栅栏的情况,回波多次反射噪音较大。一个目标也会出现多个target信号。
object为聚类之后的目标点。置信度高于object。track是object进行追踪后,带有ID,置信度最高, 但因为目标稳定追踪后才会输出,所以新目标出现会有延时。
-目标聚类
雷达target聚类得到object。雷达target先需要进行目标进行滤除。
因为不知道雷达簇的个数,并且对算法实时性要求高,一般采用基于距离或密度的聚类。如eclidean clustering和dbscan。
在簇核心的选择上可以选择反射能量大的点,或者以上次聚类的结果做为核心。在距离参数上,除了空间距欧式离外,或者采用马氏距离。雷达只能提供径向距离和速度,不能提供切向值。径向值较准而角度不准。在计算距离时可以根据变量的精度加权。
3.数据关联
数据关联是匹配不同传感器的目标或者匹配当前目标与前帧的航迹。
在匹配之前通过设置门限值(gate),对匹配目标进行初删选。
通过在每个track周围根据距离和速度设置门限值,只有在阈值内的目标才进行匹配。
对匹配的假设会出现多的情况一配一,一配多,多配一的情况。根据数据的情况选择匹配的假设。
以一配一的为例步骤如下:
- 计算距离矩阵。距离参数可选择,欧式距离,或者根据卡方分布计算马氏距离。计算两组需要匹配的列表中列表1中每个点到列表2中每个点的距离。如果目标门限值之外可以给距离赋一个极大值。
- 目标匹配的算法有GNN(global nearest neighbor), JPDA(joint probablity data assication),MHT(multi-hypothesis tracking)等
如果假设问题是一对一匹配可以用到线性分配(linear assignment)。匈牙利算法可以找到最优解,但算法复杂度较高的O(n4),
实际应用中如果不需要最优解并且对算法实时性要求高可以采用贪心算法。计算全局的最小值匹配,把匹配后那行和列都删掉。再在剩下的值中找最小值重复上述步骤。直到列表为空或者最小值都大于某阈值。
4. 航迹追踪
航迹与雷达和相机的匹配结构后,通过卡尔曼滤波对航迹进行追踪。
注意的是雷达只能观测到径向的距离和速度。观测矩阵是非线性的所以要用到EKF。
如果假设目标是质点运动模型,如横坐标方向匀速运动,纵坐标方向匀加速采用EKF。如果运动模型选用更复杂的非线性模型如速度航向角模型。
则需用到UKF。
卡尔曼调参
参数虽然有物理含义但是很难从理论推到得到,需要根据数据进行调试。
P(初始前验协方差):初始增益的大小可以决定初始收敛速度。
Q(过程噪音协方差):Q小时系统更依赖模型。
R(观测噪声协方差):R小时系统更依赖观测, 初始增益大,但是稳态时容易引入噪声。
特殊情况:
1.当前帧没有观测值。卡尔曼只做预测不做更新。
2.设置几套不同的参数。例如相机发现目标后2秒内目标位置速度不准确,这时可以采用较大的R
5. 难点
- 区分实际目标与路旁的障碍物。可将速度设为门限值以滤除路边静止目标。
- 并行目标区分。如果辆车并行速度相似,雷达较难区分,因为雷达角分辨率较低。可以通过相机目标识别加以区分。
- 遮挡障碍物识别。相机会被前方车辆遮挡,当前车cutout后容易发生危险。雷达有一定的穿透能力,可对遮挡的前车提前做出预警。
- 雷达误报警。雷达会识别路面上的金属目标(如井盖),产生误报警。通过相机确认目标存在。
- 漏报警。在雨天或者光照条件不好的情况下相机识别不稳定,易出现漏报的情况。而雷达性能受环境影响较小,在track丢失相机目标时可通过雷达信息进行追踪。误报漏报间存在权衡,根据功能定义在特定区域对误报漏报进行标定。如L2级ADAS系统应该首先降低误报警,因为系统安全最终由人负责,频繁的误报警会影响驾驶体验。
ADAS感知设计的更多相关文章
- ADAS感知开发问题
ADAS感知开发问题 1. 雨天相机 问题:雨天相机目标识别不稳.出现目标时断时续的情况 对策: 增加单雷达生成功能.当单雷达目标置信度高时直接由雷达生成目标. 2. 相机震动目标位置突变 问题 :相 ...
- ADAS感知算法观察
ADAS感知算法观察 如果把一台ADAS车辆比作一个人的话,那么激光雷达.毫米波雷达.摄像头.IMU及GPS等等部件就相当于人的眼睛.鼻子.耳朵.触觉及第六感等器官或系统. 环境感知作为无人驾驶的第一 ...
- ADAS系统长篇综述(下)
ADAS系统长篇综述(下) 四.ADAS架构设计的进化阶梯 前面谈到的产品的商业化推广渗透和产品的功能演进渗透,目的是让大家去概念化.当然,最后的赢家一定是实干者,能够在具体技术实现路径上进行深度耕耘 ...
- CEVA引入新的可配置传感器集线器DSP架构
CEVA引入新的可配置传感器集线器DSP架构 CEVA introduces new configurable sensor hub DSP architecture 在一个将多个传感器设计成几乎所有 ...
- Mobile First! Wijmo 5 之 架构
CSDN移动开发频道率先报道的<Mobile First!jQuery UI组件集Wijmo五年最大更新>引起开发者极大关注. 本文就开发者关心的话题之一架构,展开叙述. Wijmo 5是 ...
- 信息物理融合CPS
在阅读了自动化学报的信息物理融合专刊的两篇文章李洪阳老师等发表的<信息物理系统技术综述>一文对信息物理融合有了一个初步的了解.链接附后. 信息物理融合从字面上看好像是软件和硬件系统的融合, ...
- 设计一个简单的,低耗的能够区分红酒和白酒的感知器(sensor)
学习using weka in your javacode 主要学习两个部分的代码:1.过滤数据集 2 使用J48决策树进行分类.下面的例子没有对数据集进行分割,完全使用训练集作为测试集,所以不符合数 ...
- UI设计,使用感知分层技术
页面设计时使用感知分层技术:不同的元素用不同的颜色表示,让它看起来是位于独立的一层之上.人们在无意识的状态下,只会感知到自己关注的元素,将其他元素排除在意识之外.
- 【资讯】天啦鲁,这十余款创客设计居然由FPGA搞定 [转]
按理说‘高大上’的FPGA,多出现在航天航空(如火星探测器).通信(如基站.数据中心).测试测量等高端应用场景.但麦迪却也发现,近期,在很多创客的作品内部都有FPGA的影子.这或许也从侧面看出,打从总 ...
随机推荐
- Java实现 LeetCode 227 基本计算器 II(二)
227. 基本计算器 II 实现一个基本的计算器来计算一个简单的字符串表达式的值. 字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 . 整数除法仅保留整数部分. 示例 1: 输入: ...
- java算法集训代码填空题练习2
1 连续数的公倍数 为什么1小时有60分钟,而不是100分钟呢?这是历史上的习惯导致. 但也并非纯粹的偶然:60是个优秀的数字,它的因子比较多. 事实上,它是1至6的每个数字的倍数.即1,2,3,4, ...
- C++实现网络寻路
标题:网络寻路 X 国的一个网络使用若干条线路连接若干个节点.节点间的通信是双向的.某重要数据包,为了安全起见,必须恰好被转发两次到达目的地.该包可能在任意一个节点产生,我们需要知道该网络中一共有多少 ...
- java实现最大五个数
** 最大5个数** [12,127,85,66,27,34,15,344,156,344,29,47,....] 这是某设备测量到的工程数据. 因工程要求,需要找出最大的5个值. 一般的想法是对它排 ...
- java实现第四届蓝桥杯带分数
带分数 题目描述 100 可以表示为带分数的形式:100 = 3 + 69258 / 714 还可以表示为:100 = 82 + 3546 / 197 注意特征:带分数中,数字1~9分别出现且只出现一 ...
- 【JavaScript】原生js实现:强制保留2位小数(由于toFixed()报错)
function decimal(x) { var f = parseFloat(x); if (isNaN(f)) { alert("请输入数字!"); return; } va ...
- Mysql添加索引及索引的优缺点
一.什么是索引? 索引是对数据库表中的一列或多列值进行排序的一种结构,使用索引可以快速访问数据库表中的特定信息. 二.索引的作用? 索引相当于图书上的目录,可以根据目录上的页码快速找到所需的内容,提高 ...
- vue2.0 + Element UI + axios实现表格分页
注:本文分页组件用原生 html + css 实现,element-ui里有专门的分页组件可以不用自己写,详情见另一篇博客:https://www.cnblogs.com/zdd2017/p/1115 ...
- HashMap常问面试题整理
去面试时,hashmap总是被经常问的问题,下面总结了几道关于hashmap的问题. 1.hashmap的主要参数都有哪些? 2.hashmap的数据结构是什么样子的?自己如何实现一个hashmap? ...
- 刷一遍《剑指Offer》,你还需要这些知识!(一刷)
因为时间紧和基础薄弱,一刷<剑指Offer>就变成了速看. 我按照: 1.看题目思考一会: 2.上网找找关于题目里不懂的知识点: 3.看评论和官方题解的解法,尽量看懂,并及时弄懂不懂的地方 ...