首页 > 代码库 > 1、倒车轨迹理论实现方法(转+修改!)
1、倒车轨迹理论实现方法(转+修改!)
倒车轨迹理论实现方法
关键字:倒车轨迹 视角转换
一 倒车轨迹的基本原理
从日常经验可知,以自行车为例,如果前轮有一定转角,在维持转角不变状态和无轴向移动前提下自行车走过的路径将会以某个圆点为中心旋转,同样的状态也会出现在汽车上。其走过路径如图1。
图中假设车轮不会出现轴向移动,故如果保持车轮转角不变的情况下,每个车轮只能沿着垂直其车轴的方向行进,这里取前后轮的轴心作为轨迹跟踪点(实际过程中两个前轮轴心不会出现平行),则轨迹应该是以前后轮轴向线的焦点为圆心的圆。图中φ为为前轮同水平方向的夹角,记前后轮轴距为L,后轮轴长为W,后轮距离车尾的距离为D,从几何关系可知,后轮轴心的运动轨迹可以描述为以半径Lcot(φ)的圆周运动。两个后轮的轨迹分别为Lcot(φ)-W/2和Lcot(φ)+W/2的圆。这里的推导过程采用经验法结合几何推算,完全从数学角度的推算过程请参考资料1。图中的x方向和y方向不同于一般习惯主要是考虑后面的视角变换。从等式可以看到,当φ接近0度时候行进轨迹近似直线,接近90度时半径呈缩小趋势,符合我们日常经验值。
二 视角转换
从倒车公式推导出的路线图为行进路线的俯视图,实际显示给操作者的路线应该是从车内观察点观察到的轨迹,驾驶人员看到的运动轨迹实际为以车尾摄像头为中心点坐标的图像描述(图一中车尾位置的原点)。将摄像头位置定为坐标零点,则后轮轨迹上的任意点位置公式为:
(x+Lcot(φ))2+(y+D)2=(Lcot(φ)-w/2)2 (1)
(x+Lcot(φ))2+(y+D)2=(Lcot(φ)+w/2)2 (2)
上面推导的轨迹仍然是基于俯视条件下的轨迹,看到的应该为处于一定视角观察的轨迹,故需要进行一定角度的转换才能切换到实际观察到的图像。假设摄像头的可视角范围为2α,摄像头距离地面h,摄像头中心线同水平面的夹角为β,输出屏幕的高度为H,这里假设摄像头相对于屏幕为一个点,会造成实际计算结果的一定偏差,关于偏差的细节数学计算不属本文讨论的重点。我们实际观察到的Yr为地面y在显示屏H上的投影,y方向的转换过程如图二:
这个显示屏和摄像头以及投射到地面的y值对应关系?这样合理吗?
上图中为了便于计算,将经过摄像头采集后输出的显示器直接投影到同一个图中,这和实际输出没有区别。(为什么可以这样不造成影响?与实际车载的显示器投射方法不太一样?原理是什么啊?有没有可以解惑下的?谢谢!我的邮箱是zhujianhubei@163.com.)上图中的虚线为水平线,点线为屏幕的中心点到摄像头的连线,β为中心线和水平线的夹角
将上图进行简化可转为下列数学问题,等腰三角形中同顶点成已知角度所对应的边长,简化后的计算如图三。
通过正弦定理、几何运算可得:
这个推导正确,我验证了~!
这个简单的等比例缩放?怎么得来?严谨吗?请教大牛~!
三 计算轨迹的条件
从以上计算我们可以看到,需要计算出轨迹,必须提供以下参数:
1 摄像头的可视角范围2a
2 摄像头距离地面距离h
3摄像头中心线同水平面的夹角β
4输出屏幕的高度H和宽带W
5 汽车前后轮轴距L
6 汽车轴长W,后轮距离车尾的距离D
7前轮同水平方向的夹角φ
以上参数中除转角φ外对于固定的车型和安装方式都已经固定,转角φ的获取可以有两种方式:1 对于有方向盘角度信息的车型可以直接通过输出接口如can总线获取。2外加角度传感器获取角度信息。两种方式都需要对采集的信息作一定的校正。
有没有谁用matlab可以仿真出来?得到模拟倒车轨迹线?
四 验证
将上面公式的2和3带入1,可推导出显示屏幕上的实际轨迹图像。我们用vc实现了过程模拟,程序流程图四,模拟结果如图五。在真实的嵌入式平台上实现需要该平台支持图像叠加功能,目前许多多媒体soc芯片都能具备硬件α融合功能,可以方便的将描绘出的轨迹叠加到摄像头的输入信号上,对于角度信息的采集,则要求平台有can总线接口(部分车型可以输出角度信息)或外加角度传感器接口获取车轮转角。
有没有谁有源码?交流一下?我的邮箱是zhujianhubei@163.com.
五 结论:从验证情况看,结果和经验吻合,证明算法的主要正确性。一些细节信息需要针对具体的实现平台进行微调。以上算法对于下列场景无法解决,如果路面有斜坡由于整个系统无法感知而导致叠加图像有误,当倒车速度过快(如漂移)会造成上述公式整体失效,但是对于普通用户场景-低速、路面相对平整还是主要场合,故将参数校准后会有较好的参考价值。
参考资料:[1] 张永亮 智能可视倒车系统 武汉科技大学硕士学位论文3.1倒车轨迹数学模型