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测距算法的更多相关文章

  1. [自娱自乐] 3、超声波测距模块DIY笔记(三)

    前言 上一节我们已经研究了超声波接收模块并自己设计了一个超声波接收模块,在此基础上又尝试用单片机加反相器构成生成40KHz的超声波发射电路,可是发现采用这种设计的发射电路存在严重的发射功率太低问题,对 ...

  2. [自娱自乐] 4、超声波测距模块DIY笔记(四)——终结篇·基于C#上位机软件开发

    前言 上一节我们已经基本上把超声波硬件的发射和接收模块全部做好了,接下来我们着手开发一个软硬结合的基于C#的平面定位软件! 目录 一.整体思路 二.效果提前展示 2-1.软件部分展示 2-2.硬件部分 ...

  3. ICP算法使用遇到的问题

    这几天在学习数据关联的方法,本来想使用ICP算法进行距离测距数据的配准,但是用的过程中出现问题,配的不准,而且偏差更大了. 红色的和黄色的2维激光点进行ICP配准,但将变换矩阵和黄色进行乘之后偏差更大 ...

  4. k-近邻(KNN)算法改进约会网站的配对效果[Python]

    使用Python实现k-近邻算法的一般流程为: 1.收集数据:提供文本文件 2.准备数据:使用Python解析文本文件,预处理 3.分析数据:可视化处理 4.训练算法:此步骤不适用与k——近邻算法 5 ...

  5. 海伦去约会——kNN算法

    下午于屋中闲居,于是翻开<机器学习实战>一书看了看“k-邻近算法”的内容,并学习了一位很厉害的博主Jack Cui的代码,自己照着码了一遍.在此感谢博主Jack Cui的知识分享. 一.k ...

  6. BP神经网络算法推导及代码实现笔记zz

    一. 前言: 作为AI入门小白,参考了一些文章,想记点笔记加深印象,发出来是给有需求的童鞋学习共勉,大神轻拍! [毒鸡汤]:算法这东西,读完之后的状态多半是 --> “我是谁,我在哪?” 没事的 ...

  7. 机器学习实战笔记-k-近邻算法

    机器学习实战笔记-k-近邻算法 目录 1. k-近邻算法概述 2. 示例:使用k-近邻算法改进约会网站的配对效果 3. 示例:手写识别系统 4. 小结 本章介绍了<机器学习实战>这本书中的 ...

  8. 一步步教你轻松学KNN模型算法

    一步步教你轻松学KNN模型算法( 白宁超 2018年7月24日08:52:16 ) 导读:机器学习算法中KNN属于比较简单的典型算法,既可以做聚类又可以做分类使用.本文通过一个模拟的实际案例进行讲解. ...

  9. [转]Python3《机器学习实战》学习笔记(一):k-近邻算法(史诗级干货长文)

    转自http://blog.csdn.net/c406495762/article/details/75172850 版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[-] 一 简 ...

随机推荐

  1. D - 下个也是签到题 FZU - 2221(博弈)

    ZB loves watching RunningMan! There's a game in RunningMan called 100 vs 100. There are two teams, e ...

  2. Django--虚拟环境、项目和应用的创建

    第一点:官方手册 -- https://yiyibooks.cn/ 第二点:运行环境 -- django项目采用虚拟运行环境 之前我们pip install都是在Python的安装目录(底层)上安装的 ...

  3. php连接MySQL数据库的三种方式(mysql/mysqli/pdo)

    引言 PHP与MySQL的连接有三种API接口,分别是:PHP的MySQL扩展 .PHP的mysqli扩展 .PHP数据对象(PDO) ,下面针对以上三种连接方式做下总结,以备在不同场景下选出最优方案 ...

  4. 【ElasticSearch】ES线上脏数据处理

    ES分组 GET index_user_latest/_search { "aggs": { "group_by_tags": { "terms&qu ...

  5. Android平台下Dalvik层hook框架ddi的研究

    通过adbi,可以对native层的所有代码进行hook.但对于Android系统来说,这还远远不够,因为很多应用都还是在Dalvik虚拟机中运行的. 那么,有没有什么办法可以对Dalvik虚拟机中跑 ...

  6. 如何以最简单的方式安装 KALI 渗透测试框架系统

    0x01 第一步下载 KALI 百度搜索 KALI 官网,找到下载区,我选的是 64 位标准版,但是推荐下载 32 位(功能貌似更全) 这个为下载后的 iso 镜像文件 0x02 第二步打开虚拟机,配 ...

  7. 针对缓冲区保护技术(ASLR)的一次初探

    0x01 前言 ASLR 是一种针对缓冲区溢出的安全保护技术,通过对堆.栈.共享库映射等线性区布局的随机化,通过增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的的一 ...

  8. Windows Pe 第三章 PE头文件(上)

    第三章  PE头文件 本章是全书重点,所以要好好理解,概念比较多,但是非常重要. PE头文件记录了PE文件中所有的数据的组织方式,它类似于一本书的目录,通过目录我们可以快速定位到某个具体的章节:通过P ...

  9. MFC ListControl用法合集

    以下未经说明,listctrl 默认view 风格为report ------------------------------------------------------------------- ...

  10. 【python】Leetcode每日一题-不同的子序列

    [python]Leetcode每日一题-不同的子序列 [题目描述] 给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数. 字符串的一个 子序列 是指,通过删除一些(也可以 ...