jones 2008-4-3 09:22 AM
日本爱好者制作的微型寻线小车[中文]
寻线(Line Following)小车比赛就是众多机器比赛中的一种。这种比赛是以小车在线上的运行速度大小来决出胜负的。笔者自己制作了一个很小的(体积还不到一般寻线小车的五分之一)能够在桌面上运行的寻线小车。如图一所示:
[align=center][url=http://www.robotsky.com/d/file/XiangM/2008-03-07/8e46d331862df40f585a1523560025e3.gif][img]http://www.robotsky.com/d/file/XiangM/2008-03-07/8e46d331862df40f585a1523560025e3.gif[/img][/url][/align][align=center]图一:寻线小车[/align][b]关于寻线小车[/b]
寻线小车是沿着桌面上的线运行,且具有自我操控的功能。其基本的操作有:
(1)利用小车前端的图像传感器来捕捉线的位置。大多数参赛者都会使用几个图像反射器来进行图像处理,而少数具有领导能力的参赛者使用的是图像传感器来进行图像处理。另外,对线的感应过程还需要高分辨率和高鲁棒(即系统的健壮)。
(2)利用操控机制来控制小车追踪线。这仅仅是一个伺服操作(以机械位置或角度作为控制对象的自动控制)。在运用数字PID过滤器或者任何其他的伺服算法来稳定跟踪运动时,任何相位的补偿都是必须的。
(3)通过车道的状况来控制车速。在通过一条曲线时,由于轮胎和路面的摩擦,小车的速度是要有一定限制的。
小车寻的线有两种,分别是:黑底白线和白底黑线。大部分竞赛都是采用第一种线,且线的宽度介于15和25毫米之间。下面是白底黑线的示意图:
[align=center] [url=http://www.robotsky.com/d/file/XiangM/2008-03-07/7c3619cfba3c6acdc9537041ede364f6.gif][img]http://www.robotsky.com/d/file/XiangM/2008-03-07/7c3619cfba3c6acdc9537041ede364f6.gif[/img][/url] [/align][align=center] 图二:小车在白底黑线上运行[/align][b]寻线小车的硬件部分[/b]
下图三显示了寻线小车的底面和侧面。所有的机械部件和电线都是在一块原始的板子上进行安装的,这块板子同时也构成了小车的底盘。
寻线小车有两个驱动车轮和一个自由车轮。驱动车轮由一个7毫米直径的球轴承和一个橡胶轮胎构成。自由车轮是一个5毫米的球轴承。要让驱动车轮动起来,还需要两个微小的用于蜂窝电话,寻呼机或者任何移动设备的振动马达。小车的主轴用一个弹簧板压在轮胎上,其输出力矩就移转给车轮了。
驾驶装置的实现有很多不同的方法。但主要是通过小车左右轮之间不同的旋转速度来驾驶小车的。这样驾驶就不需要任何额外的致动器,只需要控制车轮的速度就可以了。
[align=center][url=http://www.robotsky.com/d/file/XiangM/2008-03-07/bf826cc0cfd87a73176f40ee9fc5c854.gif][img]http://www.robotsky.com/d/file/XiangM/2008-03-07/bf826cc0cfd87a73176f40ee9fc5c854.gif[/img][/url]
图三:寻线小车的底部图和侧面图[/align][align=center][url=http://www.robotsky.com/d/file/XiangM/2008-03-07/ed5350c72b5880352179bc45fe2b0a3f.gif][img]http://www.robotsky.com/d/file/XiangM/2008-03-07/ed5350c72b5880352179bc45fe2b0a3f.gif[/img][/url]
图四:两个振动马达[/align]
一个Amtel 公司的ATmega8(具有8KB系统内可编程Flash的微控制器)被用作小车的控制器,且ATmega8由一个硬币式的锂电池来启动。其他的锂电池用于马达。分成两部分来供电是为了避免由于马达电压下降而造成微控制器的意外复位。小车底盘的前端安装了六个图像反射器用来感应地面的反射率。为了使车轮的转速成线,马达是用PWM(脉宽调制,利用微处理器的数字输出来对模拟电路进行控制)驱动的。
[font=宋体][size=12pt]寻线小车最新的硬件资料图表如下:[/size][/font]
[table][tr][td=1,1,151][font=宋体][size=12pt]控制器[/size][/font]
[/td][td=1,1,417][font=Arial][size=12pt]Amtel [/size][/font][font=宋体][size=12pt]公司的[/size][/font][font=Arial][size=12pt]ATmega8[/size][/font]
[/td][/tr][tr][td=1,1,151][font=宋体][size=12pt]线感应器[/size][/font]
[/td][td=1,1,417][font=宋体][size=12pt]六个图像反射器[/size][/font]
[/td][/tr][tr][td=1,1,151][font=宋体][size=12pt]供电装置[/size][/font]
[/td][td=1,1,417][font=宋体][size=12pt]两个[/size][/font][size=12pt]CR2032[/size][font=宋体][size=12pt]锂电池(一个用于控制器,一个用于马达)[/size][/font]
[/td][/tr][tr][td=1,1,151][font=宋体][size=12pt]马达[/size][/font]
[/td][td=1,1,417][font=宋体][size=12pt]两个小马达分别用于左轮和右轮[/size][/font]
[/td][/tr][tr][td=1,1,151][font=宋体][size=12pt]尺寸[/size][/font]
[/td][td=1,1,417][size=12pt]45[/size][font=宋体][size=12pt]毫米长,[/size][/font][size=12pt]33[/size][font=宋体][size=12pt]毫米宽,[/size][/font][size=12pt]12.5[/size][font=宋体][size=12pt]毫米高[/size][/font]
[/td][/tr][tr][td=1,1,151][font=宋体][size=12pt]重量[/size][/font]
[/td][td=1,1,417][size=12pt]15[/size][font=宋体][size=12pt]克(包含两个锂电池)[/size][/font]
[/td][/tr][tr][td=1,1,151][font=宋体][size=12pt]能[/size][/font]
[/td][td=1,1,417][font=宋体][size=12pt]在椭圆线上[/size][/font][size=12pt]53[/size][font=宋体][size=12pt]厘米每秒[/size][/font]
[/td][/tr][/table]
[b]寻线小车的软件部分[/b]
图像反射器
为了探测小车将要运行的线,大多数参赛者都用两个或更多的图像反射器。与地面反射率成比例输出的电流通过一个电阻被转换为电压,并且测试这个电压看线是否被探测到。然而环境光线引起的光敏电流会被添加到输出电流,因此阈值电压是不断变化的,而不是固定在某一级的。
多数用于工业用途的图像探测模块都用柔和的光线以此来避免环境光线的干扰。被探测到的信号通过一个带通滤波器(一个允许特定频段的波通过同时屏蔽其他频段的设备)被过滤,没有用的信号就会被过滤掉。因此,只能探测到从光发射器发射来的比较柔和的信号。当然,探测器绝对不能因为环境光线而达到饱和。探测器在线区域进行探测时,这是必须的。
在这个项目中,脉冲光是用来排除环境光线的。这非常适合按顺序扫描以防下一个传感器干扰的阵列传感器。微控制器开始扫描传感器的状态,采样输出电压,打开LED并且再次采样输出电压。两次采样的不同之处在于LED的光敏电流和环境光线被排除后的输出电压。其余的传感器也按上述顺序进行扫描。
[align=center][url=http://www.robotsky.com/d/file/XiangM/2008-03-07/8f926cdde51f35e3a5757d4d6bfacebe.gif][img]http://www.robotsky.com/d/file/XiangM/2008-03-07/8f926cdde51f35e3a5757d4d6bfacebe.gif[/img][/url][/align][align=center]图五:线探测的信号处理过程[/align]
图六显示出了实际线的位置和在中心值640探测到的线的位置。微控制器扫描六个传感器并通过该线附近的两个传感器的输出来计算出线的位置。这样只用六个传感器就能够线地探测到线的位置。所有传感器输出与反射器成比例的模拟值,每个传感器的灵敏度各不相同。在这一系统中,为了消除从输出设备产生的差异,要每一个传感器的校准参数都输入到非易失的存储器中。在线模式下,完成这个工作。
[align=center][url=http://www.robotsky.com/d/file/XiangM/2008-03-07/18e7bf276522fa28dd91efa0fb1e99ae.gif][img]http://www.robotsky.com/d/file/XiangM/2008-03-07/18e7bf276522fa28dd91efa0fb1e99ae.gif[/img][/url][/align][align=center]图六:线的位置输出图[/align]
[b]跟踪控制[/b]
将被跟踪的线的位置是与中心值做对比的,定位误差同比例、积分、差分滤波器一起被处理来生成控制命令。寻线小车用当前最流行的用于伺服控制的算法PID来跟踪线。
在伺服系统中比例项是相同的。它是一个不依赖于时间的增益放大器。应用差分是为了改善对干扰的响应,同时弥补控制对象滞后的相位。大多数情况下为了稳定跟踪运行,D项是必须的。这个项目中从寻线原因来看,I项是不必要的。提高了DC增益的I项是用于消除左偏移误差的。但是,由于其本身的相位滞后,它常常会降低伺服系统的稳定。而寻线操作能够忽略这样的跟踪偏差,因此I项是不必要的。
当小车偏离线或者到达线的末端时,感应线的传感器就会产生一个错误。这时就会马达会停止,微控制器进入零功率消耗的休眠状态。
[align=center]
[url=http://www.robotsky.com/d/file/XiangM/2008-03-07/f7f1adf004ae7060733dc1de7a0e2979.gif][img]http://www.robotsky.com/d/file/XiangM/2008-03-07/f7f1adf004ae7060733dc1de7a0e2979.gif[/img][/url]
图七:跟踪控制图[/align]
xxxbobobo 2008-6-22 05:29 PM
有没那位大哥自己做过这个啊,提供点资料。。。。。。
hym523 2008-6-24 11:24 AM
1楼好象都是资料耶
您还需要什么资料?说具体点,才能给你提供呀
kurtone 2008-10-24 10:12 PM
电路图有没有
yunkangliu 2008-10-25 07:32 PM
这个微型小车确实不错,不知Jones先生能否提供有关图像反射器资料,比如,什么型号,什么参数及使用时的相关问题等等。
yunkangliu 2008-10-25 07:41 PM
有人说,ATmega8属于ATmega系列单片机(ATmega16/32/64/128)的一个子集,指令系统完全兼容。要用到AVR编程器,但目前有89C51编程器,不知是否有人做过用89C51来替代ATmega。