电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

智能车控制算法VIP免费

智能车控制算法_第1页
1/4
智能车控制算法_第2页
2/4
智能车控制算法_第3页
3/4
智能车转角与速度控制算法1.检测黑线中点Center:设黑、白点两个计数数组black、white,从第一个白点开始,检测到一个白点,白点计数器就加1,检测到第一个黑点,黑点计数器就加1,并且白点计数器停止,以此类推扫描每一行;黑线中点=白点个数+(黑点的个数/2)2.判断弯直道:找出黑线的平均位置avg(以每10行或者20…作为参照,行数待定)算出相对位移之和(每一行黑线中点与黑线平均位置距离的绝对值之和)然后用Curve的大小来确定是否弯直道(Curve的阀值待定)。3.控制速度:根据弯度的大小控制速度大小。//*****************************弯度检测函数*******************************//Curvecontrol(){intblack[N];//黑点计数器intwhite[N];//白点计数器intcenter[N];//黑线中点位置intavg;//黑线中点平均位置intcurve;//N行的相对位移之和if(白点)++white[N];//判断黑白点的个数else++black[N];center[N]=white[N]+black[N]/2;//每一行的黑线中点avg=(center[1]+center[2]+...+center[N])/N;//求出黑线中点的平均位置curve=(|avg-center[1]|+|avg-center[2]|+...+|avg-center[N]|)/N//求出N行的相对位移之和returncurve;//返回弯度大小}//*****************************舵舱转角控制函数******************************////****黑线轨迹会指引小车的行驶方向,所以向左还是向右是由黑线决定的。********////****设0为小车正向行驶,-10为向左的最大转角,+10为向右的最大转角。*******////****设小车实际行驶路线中心A相对于黑线中线B偏移量为gap;gap有正负之分,//gap为正时,小车在黑线中线的右侧,应该左转;gap为负时,小车在黑线中线左侧,应//该右转。转角的大小由刚刚得到的弯度Curve确定。*****************************//Viewpointcontrol(){Intgap,A,B;Inty;//****y为舵舱的转角角度gap=A-B;If(gap>0)左转elseif(gap<0)右转else不变y=与Curve和gap有关的公式;//****y有正负之分returny;//****返回转角角度}//*****************************速度控制函数*********************************////*******根据弯度的大小来改变速度大小*****//Speedcontrol(){Returnspeed;}5.3.1偏航距离的计算由于已经获得了赛道中心线的位置,所以计算偏航距离的问题是选取何处的中心线的距离为当前的偏航距离。控制算法的执行周期为40ms,如果赛车的速度为2m/s,则在两次控制算法的执行中间,赛车要前进8cm,赛车所处的环境将发生比较大的改变,所以赛车的控制只能算是半实时控制,这是所有使用摄像头作为主要寻线传感器的参赛队都避免不了的问题。因为算法的滞后性,赛车需要将“当前位置”进行适当前移。前移量应该跟赛车当前速度成正比,但实际中我们发现,适当增加一些前移距离是有好处的,因为可以在入弯处提前转弯,使得赛车沿弯道内侧行驶,缩短了过弯距离。5.3.2偏航角度的计算计算偏航角度的实质是直线拟合问题,因为赛道中心线所在的直线确定了,而直线的斜率与偏航角度一一对应。直线拟合最有效的方法是最小二乘法[7],但是直接应用存在一个问题,即如何确定进行直线拟合的区间?在整个成功识别出赛道的区间内进行直线拟合显然是欠缺考虑的,因为在弯道的情况下,这种方法拟合出的是一条弦线,而不是当前该弯道处的切线。摄像头视野越大,弯道曲率越大,弦线偏离切线的程度也就越大。为了能够在直道和弯道上都能正确的拟合出正确的直线,我们采用了直线检测的方法,即首先根据残差的大小确定直线的范围,然后在这一范围内进行直线拟合。5.3.3曲率的计算如果说斜率的计算需要某种技巧的话,计算曲率则更是一种技巧的应用。首届时很多参赛队针对各自的实际需要,提出了自己的方法。其中最普遍的是根据斜率的导数来计算曲率[8]。但是斜率的计算本身就很不准确,特别是某个点的斜率,对斜率求导就更不准确,所以使用这种方法只能得出一个大致的结果。本文作者提出了另外一种方法,首先对获得的路径进行滤波,使得路径尽可能平滑,然后取其两个端点和中间点,计算这3个点组成的三角形的外接圆的半径,半径的倒数就是这段路径的曲率。经过多次实验,这种方法的误差一般不大于20%,...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

智能车控制算法

您可能关注的文档

墨香书阁+ 关注
实名认证
内容提供者

热爱教学事业,对互联网知识分享很感兴趣

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部