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实现 蓝桥杯VIP 算法训练 比赛安排
问题描述 设有有2 n(n<=6)个球队进行单循环比赛,计划在2 n – 1天内完成,每个队每天进行一场比赛.设计一个比赛的安排,使在2 n – 1天内每个队都与不同的对手比赛. 输入格式 输入 ...
- Java实现蓝桥杯模拟递增三元组
问题描述 在数列 a[1], a[2], -, a[n] 中,如果对于下标 i, j, k 满足 0<i<j<k<n+1 且 a[i]<a[j]<a[k],则称 a ...
- Java实现蓝桥杯VIP 算法训练 P0504
试题 算法训练 P0504 资源限制 时间限制:1.0s 内存限制:256.0MB Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的 ...
- Java实现 LeetCode 208 实现 Trie (前缀树)
208. 实现 Trie (前缀树) 实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作. 示例: Trie trie = new Trie() ...
- java实现圆周率
我国古代数学家对圆周率方面的研究工作,成绩是突出的.三国时期的刘徽.南北朝时期的祖冲之都在这个领域取 得过辉煌战绩. 有了计算机,圆周率的计算变得十分容易了.如今,人们创造了上百种方法求π的值.其中比 ...
- STL关联容器
这里简单学习一下STL关联容器,主要是map.multimap.set.multiset以及unordered_map.前四个底层实现都是利用红黑树实现的,查找算法时间复杂度为\(O(log(n))\ ...
- Jenkins job docker 没有权限
问题描述 基于docker使用jenkins 构建cicd,在执行docker build 的时候出现了权限的问题.具体报错如下 + REPOSITORY=10.0.0.100/library/wen ...
- 实验四 Linux系统C语言开发环境学习
项目 内容 这个作业属于哪个课程 Linux系统与应用 这个作业的要求在哪里 作业要求链接 学号-姓名 17041428-朱槐健 作业学习目标 1.Linux系统下C语言开发环境搭建 2.学习Linu ...
- 若linux 的分区硬盘满,如何处理?
一.确定是不是真的是磁盘空间不足 输入命令:df –lh 查看磁盘信息 二.如何定位最大文件目录 输入命令:cd / 进入根目录. 输入命令:du -h max-depth=1 寻找当前目录,哪个文件 ...
- Charles抓包1-Charles安装汉化(附正版注册码)
目录 1.下载&&安装 2.汉化 1.下载&&安装 charles官网 charles下载 下载后直接安装即可. 2.汉化 下载提供的汉化包charles.jar(加群 ...