倒车轨迹线的实现方法(基于前人基础改进和验证)
背景:
网上对于倒车轨迹的大多数原创和转发的博客应该都基于同一篇,其他人没有进一步思考就对其进行转载和借鉴,其中原理的说明基本也是原版照抄,我看了一下,对于有些地方还是应该存疑,这些地方其他转发和借鉴的朋友也没有修改。
这是我能找到的最早的,借鉴最多的对于倒车轨迹研究的博客,我接下来的分析也是根据这篇博客,有些地方就稍微带过,主要对其中介绍不足的地方进行介绍,请参照原博客一起看。
原理
1.俯瞰监督倒车轨迹形成原理
先看上面示意图,这是俯瞰图,我们从二维平面来分析一下,不管是车辆前进还是后退,我们对其后轮进行追踪,我们通过生活经验可以发现,如果在某一时刻的方向盘角度不变,一直前进或者后退,车轮将会在地面画出圆形的轨迹,我们现在摘取后轮的轨迹来研究;
先声明要使用的参数:
- φ: 前轮同水平方向的夹角
- L:前后轮轴距
- w:后轮轴长
- D:后轮距离车尾的距离
从几何关系可知,后轮轴心的运动轨迹可以描述为以半径Lcot(φ)的圆周运动。两个后轮的轨迹分别为Lcot(φ)-W/2和Lcot(φ)+W/2的圆。从等式可以看到,当φ接近0度时候行进轨迹近似直线,接近90度时半径呈缩小趋势,符合我们日常经验值。
坐标转换
我们都知道单位圆的几何方程为:
X2+Y2=R2(R为圆半径)X^{2}+Y^{2} =R^{2}(R为圆半径)X2+Y2=R2(R为圆半径)
那么在这里我们的后轮画出的圆的轨迹方程为:(以外侧轮为例)
X2+Y2=(Lcot(φ)−w2)2X^{2}+Y^{2}=(Lcot(φ)-\frac{w}{2})^{2} X2+Y2=(Lcot(φ)−2w)2
注意:上面的方程建立在以后轮轨迹圆心为坐标原点的,所以我们需要将坐标原点建立在摄像头所在位置,如上图1所示,此时我们的方程就变为:
(X+Lcot(φ))2+(Y+D)2=(Lcot(φ)+w2)2①(X+Lcot(φ))^{2}+(Y+D)^{2}=(Lcot(φ)+\frac{w}{2})^{2} ①(X+Lcot(φ))2+(Y+D)2=(Lcot(φ)+2w)2①
同理:我们的内侧后轮轨迹方程为:
(X+Lcot(φ))2+(Y+D)2=(Lcot(φ)−w2)2②(X+Lcot(φ))^{2}+(Y+D)^{2}=(Lcot(φ)-\frac{w}{2})^{2}②(X+Lcot(φ))2+(Y+D)2=(Lcot(φ)−2w)2②
但是,从实际出发。从车尾摄像头看车尾部的景象是有角度的。我们还需要对其进行角度的转化
角度转换
上面我们推算出的轨迹是俯瞰的结果,但是驾车人员看屏幕中从摄像头上传的倒车景象是带有角度(并不是俯瞰)。我们现在通过数学模型简化一下视图来源的流程:这里如果摄像头相对于屏幕为一个点,会造成实际计算结果的一定偏差。关于偏差的细节数学计算不属本文讨论的重点
先声明要使用的参数:
- 2α: camera的张角的二分之一( 假设camera的张角为2α)
- h: 摄像头距离地面
- β:摄像头中心线同水平面的夹角
- H: 输出屏幕的高度
- W: 输出屏幕的宽度
我们实际观察到的Yr为地面y在显示屏H上的投影,y方向的转换过程如图二:
上图简化camera图像采集和显示到屏幕的过程:现在完全可以理解为显示屏上的景象是实际远处景象在中间的投影。
上图中的虚线为水平线,点线为屏幕的中心点到摄像头的连线,β为中心线和水平线的夹角
将上图进行简化可转为下列数学问题,等腰三角形中同顶点成已知角度所相应的边长,简化后的计算如图三。
通过正弦定理、几何运算可得:(这里原博客把下面③④式子中的*写成x,现改正过来)
Yr=sinθ1sin(θ1+θ2)∗H2sinα③Yr = \frac{\sin\theta _{1}}{\sin(\theta _{1}+\theta _{2})}*\frac{H}{2\sin\alpha } ③Yr=sin(θ1+θ2)sinθ1∗2sinαH③
其中θ1=α+β−θ\theta _{1} =\alpha+\beta -\thetaθ1=α+β−θ
θ2=90o−α\theta_{2} =90^o-\alpha θ2=90o−α
代入③式可得:
Yr=sin(α+β−arctan(hy))cos(β−arctan(hy))∗H2sinα④Yr = \frac{\sin(\alpha+\beta-\arctan (\frac{h}{y}))}{\cos( \beta-\arctan (\frac{h}{y}) )}* \frac{H}{2\sin\alpha } ④Yr=cos(β−arctan(yh))sin(α+β−arctan(yh))∗2sinαH④
sh上面等式要求满足以下条件:表现为对车尾局部区域不可见,即盲区如下图
y>h∗cot(α+β)y> h*cot(α+β) y>h∗cot(α+β)
从上面公式可以看出来,当β越小,当β = 0;y趋向无穷远,上面等式约等于Yr = H/2;即最远距离图像在频幕上的显示高度不会超过屏幕高度一半;现在从实际出发,倒车时对camera可视距离的需求只是车尾3-5米,所以β 的角度一定存在,并且不会太小。
Xr对应屏幕宽度方向上的位置:(这里原博客求Xr时误差太大,已改经进)
在求Xr时,我们可以想像camera是可以转动的:
当camera垂直地面时:
根据上图建立的模型,我们可以计算出当camera垂直面向地面时的影像关系为:
Xr=xhtanα∗W2⑤(x为地面X方向距离)Xr =\frac{x}{h\tan \alpha} *\frac{W}{2} ⑤(x为地面X方向距离) Xr=htanαx∗2W⑤(x为地面X方向距离)当camera向上稍微转动,如上图二所示:即camera面向车尾后下方(具体车型安装角度不一):(这个图就不画了,根据已有的图发散想象一下)
此时⑤式就不能满足;但是我们仍然可以从中发现规律,现在参考(camera垂直图)当camera角度转动后,w/2不变,α也不变,x在计算中是变量,只有h在变,并且h->h`是可以找到具体量化的关系的
h2+y2=(h′)2(y为地面Y方向距离)h^{2}+y^{2} =(h^{'})^{2} (y为地面Y方向距离)h2+y2=(h′)2(y为地面Y方向距离)
所以:
Xr=xh′tanα∗W2Xr =\frac{x}{h^{'}\tan \alpha} *\frac{W}{2}Xr=h′tanαx∗2W
最后得:
Xr=xh2+y2tanα∗W2⑥Xr =\frac{x}{\sqrt{h^{2}+y^{2}}\tan \alpha} *\frac{W}{2} ⑥Xr=h2+y2tanαx∗2W⑥
计算轨迹的条件
从以上计算我们可以看到,需要计算出轨迹,必须提供以下参数:
1 摄像头的可视角范围2α
2 摄像头距离地面距离h
3摄像头中心线同水平面的夹角β
4输出屏幕的高度H和宽度W
5 汽车前后轮轴距L
6 汽车轴长w,后轮距离车尾的距离D
7前轮同水平方向的夹角φ
以上参数中除转角φ外对于固定的车型和安装方式都已经固定,转角φ的获取可以有两种方式:1 对于有方向盘角度信息的车型可以直接通过输出接口如can总线获取。2外加角度传感器获取角度信息。两种方式都需要对采集的信息作一定的校正。
下面是我自己在Android上验证结果:
注意
因为测试时众多参数都是我自己未经证实就设定的,导致整体看倒车轨迹线变化幅度有点浮夸(还未叠加倒车录像),轨迹线远小近大,符合生活经验,误差未具体计算,不过可以证实这个思路是正确的。
参考博客:https://blog.csdn.net/shuaiff/article/details/5411280
参考资料:[1] 张永亮 智能可视倒车系统 武汉科技大学硕士学位论文3.1倒车轨迹数学模型
demo源码GitHub地址,方便的话给个star,给blog点个赞,给我支持.希望我的blog可以给你提供点开发思路.
倒车轨迹线的实现方法(基于前人基础改进和验证)相关推荐
- 地理国情普查外业调绘轨迹线的整理方法
1.在做外业元数据整理时,需要先将外业调绘的GPS轨迹点转为线,按照要求,一条道路上只能出现一条轨迹线 由于在外业调绘时,有可能多次从一条路上经过,GPS轨迹点转线后,一条道路上就有可能有多条线: 自 ...
- lisp+等高线点线矛盾检查_基于AutoCAD平台地形图高程点与等高线点线矛盾检测方法研究与实现...
2019 年 6 月 测绘与空间地理信息 GEOMATICS & SPATIAL INFORMATION TECHNOLOGY Vol.42 ꎬ No.6 Jun. ꎬ 2019 收稿日期 : ...
- 基于多阈值的形态提取遥感图像中的沿海线的特征方法(Qu Jishuang)
论文阅读笔记 Title:A multi-threshold based morphological approach for extracting coastal line feature in r ...
- 1、倒车轨迹计算方法和实施!(开启+更改!)
倒车轨迹理论实现 keyword:倒车轨迹 视角转换 一 倒车轨迹的基本原理 从日常经验可知.以自行车为例,假设前轮有一定转角,在维持转角不变状态和无轴向移动前提下自行车走过的路径将会以 ...
- android画布一闪一闪的,解决Android SurfaceView绘制触摸轨迹闪烁问题的方法
本文分享了解决SurfaceView触摸轨迹闪烁问题的方法,供大家参考,具体内容如下 第一种解决SurfaceView触摸轨迹闪烁问题的方法: 由于SurfaceView使用双缓存机制,两张画布轮流显 ...
- CVPR 2019轨迹预测竞赛冠军方法总结
背景 CVPR 2019 是机器视觉方向最重要的学术会议,本届大会共吸引了来自全世界各地共计 5160 篇论文,共接收 1294 篇论文,投稿数量和接受数量都创下了历史新高,其中与自动驾驶相关的论文. ...
- python 轨迹预测_CVPR 2019轨迹预测竞赛冠军方法总结
背景 CVPR 2019 是机器视觉方向最重要的学术会议,本届大会共吸引了来自全世界各地共计 5160 篇论文,共接收 1294 篇论文,投稿数量和接受数量都创下了历史新高,其中与自动驾驶相关的论文. ...
- 通用汽车研发中心最新提出:3D车道线检测新方法
点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作分享,不代表本公众号立场,侵权联系删除 转载于:知乎黄浴博士,已获授权 https://zhuanlan.zhi ...
- 可用于实时嵌入式设备的心电信号基线漂移滤除方法——基于延迟的近似零相位IIR滤波器
考虑到ECG信号去基漂算法需要在嵌入式设备中运行,并且尽可能降低延迟,选择IIR低通滤波器求得信号的基线漂移.将信号减去基漂后得到最终信号. 参考论文<基于零相位的心电信号基线漂移滤 ...
最新文章
- 配置php.ini文件,关闭错误提示,打开错误日志,设置错误日志路径(亲测)
- sql server 数据脚本生成工具
- 系统架构设计师考试4
- AngularJS开发指南5:AngularJS表达式详解
- label包裹input,点击label响应两次解决方法
- hplus java_Java HijrahDate plus(long, TemporalUnit)用法及代码示例
- iPhone 4 Cydia使用教程 精选Cydia源 cydia怎么添加源 Cydia源使用方法 越狱后使用cydia
- 【MSFconsole进阶】auxiliary模块:信息收集、扫描、嗅探、指纹识别、口令猜测和Dos攻击等
- 云计算概念:什么是云计算
- iOS查看每日限免APP+监控APP降价信息教程
- Sticky Footer , fixed footer, pinned footer
- k8s 配置存储之 Configmap secret
- 弹性裸金属服务器EBM
- 阿里云centos服务器基本构建(服务器的探索之路)
- 通过PHP实现PNG转JPG
- python之红楼梦词频统计并生成图云
- Gartner云安全理念解读
- 三分钟了解阿里云学生机购买限制条件详细规则
- ADS8684 驱动
- 1.19Java设计模式
热门文章
- 最先进的微型计算机,微型计算机中的先进计算机技术.ppt
- Java静默调用虚拟打印机_静默虚拟打印机BullzipPDFPrinter
- CATIA 数控编程加工实例精解视频教程
- 论文 计算机动态网页的制作,计算机动态网页设计中多元素应用网页设计论文(范文1)...
- Linux跑齿轮命令,Linux 游戏作弊工具:GameConqueror 0.09
- 推荐一个数据库同步软件,可同步Mysql,sqlserver数据,支持实时同步
- vue之动画( 仿jquery的slideToggle动画效果 )
- Python读取文件时,出现SyntaxError: (unicode error) ‘unicodeescape‘ codec can‘t decode bytes in position 2-3
- 学生机器人编程用什么语言
- 哈尔滨火车站下面有三个火车票代售点,假如哈尔滨到北京的火车票总共是200张,如何用程序来实现三个售票点同时卖票的功能。