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实现第五届蓝桥杯出栈次序
出栈次序 X星球特别讲究秩序,所有道路都是单行线.一个甲壳虫车队,共16辆车,按照编号先后发车,夹在其它车流中,缓缓前行. 路边有个死胡同,只能容一辆车通过,是临时的检查站,如图[p1.png]所示. ...
- Hive的基本介绍以及常用函数
一.Hive的简介: Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能. 优点: ) 操作接口采用类SQL语法,提供快速开发的能力(简单.容易上 ...
- 使用liunx系统自带的工具sar监控指定接口速率
1.路由器双出口部署,接口可以实现负载分担,在接口负载比例设置为1:2之后,管理员反馈流量有些异常,内网tracert -d 外网域名或者IP,都走一条链路. 2.底层尝试使用sar命令监控两个接口的 ...
- LocalDateTime在项目中的使用(LocalDateTime对接前端通过时间戳互转、LocalDateTime对接数据库)
目录 1. 博客编写背景 2. LocalDateTime 前端交互 2.1 LocalDateTime 向前端写入时间戳 2.1.1 fastJson 默认的写入格式 2.1.2 更改 fastJs ...
- Java基础(八)
一.Java集合框架 Java集合类库也将接口与实现分离. 队列接口指出可以在队列的尾部添加元素,在队列的头部删除元素,并且可以查找队列中元素的个数. 队列通常有两种实现方式:一种是使用循环数组:另一 ...
- .NET开发者省份分布排名
什么叫.NET开发者省份分布排名呢? 顾名思义,这几个词大家都认识,.NET开发者都集中在城市,涵盖一线城市到五线城市.排名的方法非常简单粗暴,就是根据本公众号(dotnet跨平台)的省份订阅读者数量 ...
- Jenkins job docker 没有权限
问题描述 基于docker使用jenkins 构建cicd,在执行docker build 的时候出现了权限的问题.具体报错如下 + REPOSITORY=10.0.0.100/library/wen ...
- cb30a_c++_STL_算法_查找算法_(3)search_find_end
cb30a_c++_STL_算法_查找算法_(3)search_find_endsearch()pos = search(ideq.begin(), ideq.end(), ilist.begin() ...
- jmeter的参数化
[4种参数化] 用户参数 适用于参数取值范围很小的时候使用 CSV数据文件设置 适用于参数取值范围较大的时候使用,该方法具有更大的灵活性 用户定义的变量 一般用于测试计划中不需要随请求迭代的参数设置, ...
- 本地代码提交到远程仓库(git)
[准备环境] 我没有在Linux搭建gitlab私有云服务器,用的是开源的 gitee托管平台 1.在gitee注册账号 2.本地下载git客户端 [步骤] 1 本地新建1个文件夹 进入文件夹后 ...