《中鸣机器人巡线算法分析 论文.docx》由会员分享,可在线阅读,更多相关《中鸣机器人巡线算法分析 论文.docx(8页珍藏版)》请在第壹文秘上搜索。
1、中鸣机器人巡线算法分析摘要巡线是机器人完成一切任务的基础,可以说,没有巡线,中鸣机器人则无法完成任何任务,可想而知,巡线在中鸣机器人运用的地位,而巡线算法则重中之重。在此以中鸣机器人巡线为背景,探讨巡线算法。关键字光电值、光电阈值、巡线、PID算法引言近几年在中小学机器人比赛中,中鸣机器人参赛的频次较高,其中对巡线光电传感器的数量有一定的要求,不同数量的光电传感器数量,得分有不同的比例系数,即巡线的光电传感器数量越少则得分比例系数越大,故各地选手想方设法通过不同的算法来减少光电传感器的数量,以达到取胜的目的,本文通过光电巡线原理,从理论上推导出双光电巡线算法,通过PID控制算法达到机器人高效快
2、速巡线的目的。一、背景1 .场地分析及光电传感器中鸣机器人比赛场地是机器人完成任务的地方,机器人从出发点,根据引导线(黑线、白线、彩线)巡线行走,在不同的地方完成预设的任务,最后回到终止点。所以,尽管场地的不同,但都是根据引导线来行走的。引导线是一条宽约2厘米的线,引导线的背景是一条约20厘米宽的色带,一般与引导线的颜色为反差显示,如引导线的颜色是黑色或彩色,则色带为白色,如果引导线为白色,则色带为黑色。识别场地颜色的器件是光电传感器,光电传感器简称为光电(以下以光电简称),光电通过发射器发出探测光,照射到场地表面,同一物体由于表面颜色的不用对于照射到它表面的反射光的强弱是有所不同的,而光电的
3、接收器根据接收到反射光的强弱显示相应的值,这个值为光电值(即光电传感器测出的当前场地表面的光电值),机器人根据不同的光电值来识别不同的颜色(引导线),进而根据光电值来行走,达到巡线的目的。2 .光电值分析可想而知,机器人是不能直接识别引导线的,而是根据不同的光电值来“识另广引导线,完成巡线的目的。那么不同的光电值与引导线又有什么联系呢?下面以黑色引导线白色为底色带为例,具体分析光电值与引导线的关系。如图1,黑色引导线把白色色带分成三部分,共五个区域:A、AB、B、BC、Co其中A、C两个区域的光电基本相同,光电值最大,AB与BC两个区的光电基本相同,光电值居中,B区光电值最小。在A、AB、B三
4、个区域中,光电值递减,在B、BC、C三个区域中,光电值递增,相应的数据及图像如表1和图2所示。(设置理想光电传感器在白色区域测得光电值为1000,在黑色区域测得光电值为0,阈值为500;状态表示:0:全白,1阈值,2全黑。以下均以此数据为例)由于只有一个光电,无法区分黑线的左右两边,但是,如果把上述数据分成两个部分,分别是:因为AB(或BC)是相同的,如果测得光电值高于AB(或BC),则位于A(或O区,如果光电值小于AB(或BC),则当前光电位于B区。下面以A、AB、B三个区域为例,具体说明如果巡线(说明:下图4中的光电可以是一个光电,也可以是一组光电)。在位置1,光电测得值大于AB,则向B转
5、弯,行进到位置2,在位置2测得的光电值小于AB,则向A转弯,行进到位置3,如果光电位于AB上,则测得光电值与AB相同,则不转弯,直线行进。想法有了,在上述中,直线行进,可以实现,机器人的两个轮子转速相同就可以了,但是,如何向左转弯、向右转弯来达到行进的目的呢?设置机器人的左右两个轮子分别为R、1.,当:R、1.转速相同、方向一致时,直线行进;R、1.转速相同,方向相反时,(即大小相同,方向相反),原地转动;R、1.转速不同,方向一致时,差速转弯,即一边行进,一边转弯。所以,从位置1到位置2时,我们可以通过差速转弯来达到行进及转弯的目的。通过上述分析,可以确定,机器人依据测得的光电值,控制左右两
6、个转子的转速,以达到差速转弯,则机器人沿着AB线左右波浪式行进。3 .PID控制算法把光电测得的光电值与AB区的光电值进行比较,通过个差值去控制左右两上轮子,以达到巡线的目的。于是,我们把AB区的光电值称之为阈值。当前值与阈值的差值为error,kp、ki、kd分别分比例、积分、微分系数,t为当前时刻,t-1为上一个测光电时刻,则可以用公式来表示:pwm=kp*error+ki*error+kd*(error(t)-error(t-1)上述公式就是PID算法公式,又称为位置PID算法(区别于增量PID算法),相对应的组合有:PI、PD、PID共三种。二、单光电巡线原理利用一个光电传感器来巡线的
7、程序,称为单光电巡线程序,在整个程序中,用到的光电传感器数量只有一个O用一个光电传感器代替上图的“光电”,用于测定光电值,与该光电的阈值的差值作为输入量,得出控制量pwm,去控制左右轮子的转速,以达到巡线目的称为单光电巡线。通过分析可知,机器人沿AB或BC波浪式行进(见图5)。在A、AB、B区中,机器人尽量不要移动到C区,同样的,在B、BC、C区中,机器人尽量不要移动到A区。由于B区为黑线,宽度较小(一般为2厘米),如果转弯的速度过快,很容易越过黑线进入黑线的另一侧,巡线失败。单光巡线缺点(1)由于是沿黑线的两个边界线进行巡线的,故同一条黑线有两条边,两条边的巡线算法不完全相同,机器人总是自动
8、偏向黑线一边。(2)很难判断遇角转弯的情况。(3)角度很大的弧形黑线,则很难快速通过。三、双光电巡线算法为了克服单光电巡线的缺点,增加了一个光电传感器,共有二个光电分别标记为P1.、P2左P1.右P2),并列且紧靠在一起,现在我们来分析一下,双光电该如何巡线呢?(1.类单光电巡线在讨论了单光电巡线的基础上,两个光电是否“合成”一个光电,作为“一个光电”来使用呢?回答是肯定的:加权平均法,前提条件:理想数据。状态分析,设每个光电的电气性质完全相同,所测场地的最大值为100O(白色区域),最小值为0(黑色区载),阈值为500,光电处于全白区域标识为,光电处于黑白交界区域标识为(,光电处于全黑区域标
9、识为(,则各种状态如下:5/2P1P2P1P2状态又设P1.的权值为1.P2的权值为2。第一种情况:加权平均值权值设定一一序号作为权值(1)P1P2在黑线的左侧,标识:口口va1.ue=(1000*1.+1000*2)(1.+2)=300032)P1.全白,P2在黑线边缘,标识:口va1.ue=(1000*1.+500*2)(1.+2)=200033)P1.全白,P2全黑,标识:va1.ue=(1000*1.+0*2)(1.+2)=100034)P1P2在黑线边缘,标识:va1.ue=(500*1.+500*2)(1.+2)=150035)PI全黑,P2全白,标识:va1.ue=(0*1.+1
10、000*2)(1.+2)=200036) P1.在边缘,P2全白,标识:va1.ue=(500*1.+1000*2)(1.+2)=250037)P1P2全白,标识:(va1.ue=(1000*1.+1000*2)(1.+2)=30003一共有七种标识,以第四种为标准,所有标识数据与标准之差如下表,通过图像可知,很难找出其中之的关系。第二种情况:加权平均值权值设定一一光电值作为权值根据加权的权上再想点办法,设想能否把光电值作为权值呢?1) )P1P2在黑线的左侧,标识:va1.ue=(1000*1.+1000*2)(1000+1000)=30002000=1.52) P1.全白,P2在黑线边缘,
11、标识:va1.ue=(1000*1.+500*2)(1000+500)=20001500=1.33) P1.全白,P2全黑,标识:va1.ue=(1000*1.+0*2)(1000+0)=10001000=1.04)P1P2在黑线边缘,标识:va1.ue=(500*1.+500*2)(500+500)=15001000=1.55)P1.全黑,P2全白,标识:va1.ue=(0*1.+1000*2)(0+1000)=20001000=2.06)P1.在边缘,P2全白,标识:va1.ue=(500*1.+1000*2)(500+1000)=25001500=1.77) P1P2全白,标识:口口(v
12、a1.ue=(1000*1.+1000*2)(1000+1000)=30002000=1.5一共有七种标识,还是以第四种为标准,所有标识数据与标准之差的对称关系如下表3,通过图像,对称关系一目了然,以光电值为权的想法得到验证了。在0轴的上部分,所有的点都是在黑线的右边,在0轴的下部分,所有的点都在黑线的左边,这样通过标准差就已经把在黑线的左右分出来。到达左右两个端点,都处于脱线状态,标准差相同,故需要进行脱线修复。通过上述讨论,决定采用第二种,以光电值作为权值求加权平均值法。标准差即作为PID的误差,由于值比较小,可以放大100O倍,这样就可以投入计算了。8) 光电差值法巡线类“单光电巡线”是
13、把多个光电传感器合成一个光电传感器来使用,然后与场地的阈值做差法,作为PID算法的误差,从达到巡线目的的。然后,双光电又有一个特殊性,两个光电可以直接做差法。是否可行?可以从理论上进行推导。1) )P1P2在黑线的左侧,标识:口口P1.测得的光电值为1000,P2测得的光电值为1000,则光电差值:VaIue=100O-1000=02) )P1.全白,P2在黑线边缘,标识:va1.ue=1000-500=5003) )P1.全白,P2全黑,标识:Va1.ue=100O-O=100O4) P1P2在黑线边缘,标识:va1.ue=500-500=05) P1.全黑,P2全白,标识:Va1.ue=O
14、-100O=-100O6) P1.在边缘,P2全白,标识:va1.ue=500-1000=-5007) P1P2全白,标识:口口(va1.ue=1000-1000=0一共有七种标识,以光电之间为标准,所有标识数据即为标准差,如下表4,通过图像对称关系也一目了然,计算更简单些。在O轴的上部分,所有的点都是在黑线的左边,在O轴的下部分,所有的点都在黑线的右边,这样通过标准差就已经把在黑线的左右分出来。到达左右两个端点,也是处于脱线状态,也需要进行脱线修复,而且标准差值比较大,不需要再“放大”处理,减少了计算量。现在回到推理前的假设,前提条件是理想数据,什么理想数据呢?设想一下,光电传感器是一件物理
15、器件,每个光电传感器自从生产出来后就有一定的物理特性、电气特性等等,光电传感器的主要功能是获取场地的反射光而测得物体表面的灰度值或色彩,由于个体的差异,对于同一个点或同一个物体,不同的光电传感器测量值肯定不尽相同,无法达到上述理想数据这个前提条件。怎么办呢?常用硬件不足,软件来补。通过一定的算法处理,把这些非理想的测量值转化为理想数据。3.光电值的映射一般光电传感器的测量范围是几百到上千,但总是有个边界的,即是它们的测量宽度(测量最大值减去测量最小值),而光电传感器的测量值一般又是线性的,这样我们就可以通过映射关系,把没量宽度映射到oooo的范围之内,公式如下:映射值=100O*(测量值-测量最小值)/测量宽度通过这个公式的映射,所有的光电传感器获取的值都在01000范围之内,且对同一个物体的测量,测量值可能不同,但映射值相同,达到所有光电传感器测量数据的理想化厅。四、总结本文通过对单光电巡线的讨论,引出双光电巡线算法,在历届的中鸣机器人比赛中,官方给出的五光电巡线算法已经很成熟了1,各比赛选手都在想方设法减少光电数量,设计了四光电、三光电巡线算法。本文结合官方五光电算法的思想,通过理论推导的方式给出双光电巡线算法,并且作者已经在实际运用中得到了验证。参考文献