TTC测距算法
TTC测距算法
输入输出接口
Input:(1)人与车(或车与车)的距离
(2)人与车(或车与车)的相对速度
Output:TTC collision time
算法介绍和设计方案
TTC是Time-To-Collision的缩写,直译为碰撞时间。海沃德(1972)将TTC定义为:“如果两个车辆以现在的速度和相同的路径继续碰撞,则需要碰撞的时间”。在交通冲突技术的研究中,TTC已被证明是衡量交通冲突严重程度和区分关键行为与正常行为的有效手段。一些研究的结果指出直接使用TTC作为交通决策的线索。车辆之间未来相互作用的预测涉及为受试车辆以及所有可能发生相互作用的车辆创建预测轨迹,以查看是否可能发生碰撞。

图1. 轨迹管理中的TTC算法
在TTC算法中,车辆被视为二维平面。每一辆都由位于平面中特定位置的矩形表示。每辆车都有速度和加速度,速度与加速度都是矢量。
每辆“主体”车辆与附近的车辆会发生相互作用,不存在先导车辆或跟随车辆。主体车辆的动作遵循三条规则:
1) 跟随前方的车辆
2) 避免碰撞
3) 基于TTC的数值来调整所采取的动作的强度。
TTC是针对每两辆相互足够接近车辆来计算相互时间步长。根据其老位置、新速度矢量和新加速度矢量计算车辆的新坐标。它的新速度矢量同样是从它的旧速度和新加速度矢量计算出来的。通过对期望轨迹、道路几何形状、交通控制(例如,停止标志、交通信号和速度限制)以及邻近车辆的接近来确定加速度矢量。如果不引起任何碰撞,加速度被认为是可接受的。
TTC 碰撞时间(TTC是专门针对CIPV,本车会撞上前车的时间)
Mobileye的后装产品里面,FCW的时间设的是2.7秒
o 根据科学的统计,当提前2.5秒给予一个车辆警告的话
o 人的反应时间和刹车的距离,基本上可以做到车子刹停下来
Mobileye的后装产品(客户以商用车为主)会把这个预值再放大一点,保证司机有足够长的时间把车辆刹停下来

图2. 车辆防撞预警处理流程图
设A为自车,B为它车,d为两车中心连线的距离,K为两车的横向距离,s1,s2分别为自车与它车到碰撞点的距离。

图3. 各种碰撞算法模型示意图
逻辑上
o
处理算法获取图像,根据图在视野里面的变化的快慢,可计算出这辆车会碰撞的时间
o
做距离的检测,包括之前更多的是用雷达的手段来做FCW,或者AEB的时候,其实也都是先做了距离的检测,然后再来算出碰撞的时间
单目的摄像头的计算方式就是直接计算TTC
o
跟车辆的车速线是直接对接的(知道本车的速度),可反算出来这个距离是多少。
o
输出TTC这个值,因为这个值才是最终用来做预警或者控制的最有用的一个参数

表1. 危险特征参数统计结果
o
在TTC 2秒~2.5秒的范围内,视觉算法检测出TTC和真实的TTC之间是非常的精准的,只有当距离远了之后TTC才会产生一定的偏差。
o
AEB一般起作用都是在1秒上下的区间里面起作用,在这个时候我们的TTC已经可以做到非常精准。
o
当把TTC设在1.4、1.0和0.6的时候,我们AEB的TTC和实际要求的预值之间的精准度是非常非常高的。
在整个过程里面从FCW到AEB是一个过程,在不同的速度区间下,都有个最低的时间,我们根据这个画一根线,对司机来说,到时候就有两个决策。
o 通过制动解决问题
o 通过拐出去:经过很多次的货车侧翻和教训,相信现在大量的司机都是不打方向,宁可往前撞的。
o FCW的开始时间
o 驾驶员意识到的时间
o 驾驶员意识到没动作(刹车)的时间
o AEB的启动时间
- 感知计算传递
- 刹车执行器(由刹车类型决定)
§ 后面一体化的比较有趣了
- 开始减速
- 减速过程

图4. FCW实例
这个上面所说的2.7秒,看来就是所得出来正常驾驶员所能接受的
o TTC设计过长,可能会让开车有侵略性的受不了
o TTC设计过短,则让司机觉得FCW无用
这里就需要运用大量数据和统计的事来了,我相信这个2.7秒是个抽象的值,实际上是个函数。
根据Toyota在《Study on TTC
Distribution when Approaching a Lead Vehicle》一文里面多样的数据,感觉确实乘用车和商用车差异较大,具体在实施过程中,可能具有很大的差距,是需要考虑驾驶员的行为和接受度的。细节还需要对比更多的数据来对实际的设置有相应的考虑,可能以后自己还能调节这个Profile呢,或者进行更深度的学习。
小结:
1)主动安全,比我们想象的单个ECU和感知系统的事要复杂得多,因为牵涉了很多驾驶行为(人)和道路&环境(路),变量是比较多的。
2)以后这块的数据,是比较值钱的。
开发方案:
第一,统计连续10帧图像中每两帧图像车辆的图像像素偏移数,行人的图像像素偏移数,再依据帧率分别计算车辆和行人平均像素便宜和图像像素偏移速度。
第二,将图像坐标系转换成世界坐标系,在世界坐标系下,分别计算行人和车辆的矢量合成速度v12,计算TTC碰撞时间T=s/v12。
第三,分别计算行人行走的距离s1=v1*T, 车辆行驶的距离s2=v2*T。依据s1,S1,s2,S2的关系,判断行人和车辆是否相撞。
第四,同样道理,可以判断车辆与车辆的碰撞TTC问题。

图5.
行人与车辆速度距离及TTC
数据集上达到(详细指标在开发过程中逐步修正)
|
行人(pedestrain) |
车辆(vehicle) |
TTC |
备注 |
|
|
准确度 |
80%(70米) |
80%(120米) |
90%(70米) |
|
|
召回率 |
50%(70米) |
60%(120米) |
50%(70米) |
|
|
帧率 |
30fps |
30fps |
30fps |
表2. 性能指标
集成
算法开发完成后,将算法集成到嵌入式硬件平台用于路测。
TTC测距算法的更多相关文章
- [自娱自乐] 3、超声波测距模块DIY笔记(三)
前言 上一节我们已经研究了超声波接收模块并自己设计了一个超声波接收模块,在此基础上又尝试用单片机加反相器构成生成40KHz的超声波发射电路,可是发现采用这种设计的发射电路存在严重的发射功率太低问题,对 ...
- [自娱自乐] 4、超声波测距模块DIY笔记(四)——终结篇·基于C#上位机软件开发
前言 上一节我们已经基本上把超声波硬件的发射和接收模块全部做好了,接下来我们着手开发一个软硬结合的基于C#的平面定位软件! 目录 一.整体思路 二.效果提前展示 2-1.软件部分展示 2-2.硬件部分 ...
- ICP算法使用遇到的问题
这几天在学习数据关联的方法,本来想使用ICP算法进行距离测距数据的配准,但是用的过程中出现问题,配的不准,而且偏差更大了. 红色的和黄色的2维激光点进行ICP配准,但将变换矩阵和黄色进行乘之后偏差更大 ...
- k-近邻(KNN)算法改进约会网站的配对效果[Python]
使用Python实现k-近邻算法的一般流程为: 1.收集数据:提供文本文件 2.准备数据:使用Python解析文本文件,预处理 3.分析数据:可视化处理 4.训练算法:此步骤不适用与k——近邻算法 5 ...
- 海伦去约会——kNN算法
下午于屋中闲居,于是翻开<机器学习实战>一书看了看“k-邻近算法”的内容,并学习了一位很厉害的博主Jack Cui的代码,自己照着码了一遍.在此感谢博主Jack Cui的知识分享. 一.k ...
- BP神经网络算法推导及代码实现笔记zz
一. 前言: 作为AI入门小白,参考了一些文章,想记点笔记加深印象,发出来是给有需求的童鞋学习共勉,大神轻拍! [毒鸡汤]:算法这东西,读完之后的状态多半是 --> “我是谁,我在哪?” 没事的 ...
- 机器学习实战笔记-k-近邻算法
机器学习实战笔记-k-近邻算法 目录 1. k-近邻算法概述 2. 示例:使用k-近邻算法改进约会网站的配对效果 3. 示例:手写识别系统 4. 小结 本章介绍了<机器学习实战>这本书中的 ...
- 一步步教你轻松学KNN模型算法
一步步教你轻松学KNN模型算法( 白宁超 2018年7月24日08:52:16 ) 导读:机器学习算法中KNN属于比较简单的典型算法,既可以做聚类又可以做分类使用.本文通过一个模拟的实际案例进行讲解. ...
- [转]Python3《机器学习实战》学习笔记(一):k-近邻算法(史诗级干货长文)
转自http://blog.csdn.net/c406495762/article/details/75172850 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 一 简 ...
随机推荐
- Python爬取笔趣阁小说,有趣又实用
上班想摸鱼?为了摸鱼方便,今天自己写了个爬取笔阁小说的程序.好吧,其实就是找个目的学习python,分享一下. 1. 首先导入相关的模块 import os import requests from ...
- hdu5248序列变换(二分+贪心)基础题
题意(中文的直接粘题意吧) 序 ...
- jquery简单实现tab选项卡效果
html: <ul class="tab"> <li>最新</li> <li class="cur">热门< ...
- Linux防火墙放行端口
添加放行端口 firewall-cmd --zone=public --add-port=端口号/tcp --permanent 重启防火墙 systemctl restart firewalld.s ...
- 【maven和jdk】报错:系统找不到指定的文件
创建一个maven项目出错 问题描述 在idea.log出现如下错误(系统找不到指定的文件,但是不知道指定文件是什么) com.intellij.execution.process.ProcessNo ...
- android 文件存储&SharedPreferences
一.文件存储 文件存储主要是I/O流的操作,没什么好说的,需要注意的是保存文件的各个目录. 下面为常用的目录: public static File getInFileDir(Context cont ...
- Docker简单流程
- 在Visual Studio 中使用git——文件管理-上(四)
在Visual Studio 中使用git--什么是Git(一) 在Visual Studio 中使用git--给Visual Studio安装 git插件(二) 在Visual Studio 中使用 ...
- Salsa20算法介绍
简介 Salsa20是一种流式对称加密算法,类似于Chacha20,算法性能相比AES能够快3倍以上. Salsa20算法通过将32 Byte的key和8 Byte的随机数nonce扩展为2^70 B ...
- LightningChart JS 3.0 新功能上线
在这次的LC JS更新中,首次将极坐标图引入图表库. 这种全新的图表类型可以通过API轻松地进行样式设置.极坐标可以用作独立图表或在仪表板中使用. 另外,用于 XY图表的对数轴也添加到了这次的更新,L ...