logo资料库

智能车曲率计算(1).pdf

第1页 / 共2页
第2页 / 共2页
资料共2页,全文预览结束
BIT_AETC HWQ 曾看到智能车制作论坛里很多人询问曲率的计算,今天在整理一个 PPT 的 时候,刚好又用到了曲率计算,我就解释下东北大学和上海大学摄像头组计算曲 率的方法(请参看第二届东北大学技术报告和第三届上海大学技术报告)。 B x y 、 3 ( , 曲率问题可以归结为已知三角形的三点坐标 1 A x y 、 2 ( C x y , ) ) ( ) , , 1 2 3 求解三角形外接圆曲率。 设两个向量为 ( = 学过高数的都应该知道向量的叉乘,定义为:两个向量进行叉乘得到的是一 个向量,方向垂直于这两个向量构成的平面(三个向量符合右手坐标系),大小 等于这两个向量组成的平行四边形的面积。 x y z 、 ( , = b b j y a y b b i x a x b a b × = x y z , a b k z z b (1) ,则 a ) ) , a a , a 由叉乘的定义可知,求 ABCΔ 的面积,可以通过求解 来获得,将 上述叉乘公式应用于二维情况,即取 0 z = ,可得 AB AC× 2 = (( x 2 − x 1 )( y 3 − y 1 ) − ( x 3 − x 1 )( y 2 − y 1 )) k (2) × AB AC x 2 x 3 = x 1 x 1 y 2 y 3 i − − j − − y 1 y 1 k 0 0 所以 SΔ ABC = AB AC × 2 (( x 2 − x 1 )( y 3 − y 1 ) = ( x 3 − x 1 )( y 2 − y 1 )) (3) − 2 上式中,如果 ABC 三点是顺时针方向分布,则三角形面积为负值,逆时针 分布为正值(如果不需要符号,取下绝对值即可)。 C B A 面积的符号对于智能车其实还是挺有用的。如上图,如果曲线向右拐,算出 的面积是负的,如果曲线向左拐,算出的面积是正的,上述面积的正负反映了曲 线的方向。相比于海伦公式,用上述公式计算面积既可以减轻计算量,又可以反 映曲线的方向,一举两得。 有了上述公式,曲率可以表现为三角形外接圆半径的倒数,从而可得曲率计 算公式: 1/2
BIT_AETC HWQ K = 4S × AB BC AC ABC Δ × (4) 上式中要求出三边长,会用到求根公式,在单片机中开根号,那是很要命的。 如果精度要求不高,可以自已写一个简单的求根函数,东北大学给出的函数是 unsigned int m_sqrt(unsigned int x) { uchar ans=0,p=0x80; while(p!=0) { ans+=p; if(ans*ans>x) { ans-=p; } p=(uchar)(p/2); } return(ans); } 还有类似的求根算法可以看一下如下链接: http://hi.baidu.com/ssmsky_2006/blog/item/1e0e72fb40ade46d034f562f.html 注意:计算曲率的方法如果要提高精度,最好是能够将采到的畸形图像做一 下校正,以反映实际坐标。 2/2
分享到:
收藏