机器人距离探测

上传人:d****2 文档编号:166513492 上传时间:2022-11-01 格式:DOCX 页数:15 大小:446.95KB
收藏 版权申诉 举报 下载
机器人距离探测_第1页
第1页 / 共15页
机器人距离探测_第2页
第2页 / 共15页
机器人距离探测_第3页
第3页 / 共15页
资源描述:

《机器人距离探测》由会员分享,可在线阅读,更多相关《机器人距离探测(15页珍藏版)》请在装配图网上搜索。

1、频率特性机器人距离探测在第六讲中,你学会了用红外传感器探测是否有物体挡在机器人的前方路线上而不用接触 物体。接下来你有没有想到,要是能探测到距离障碍物有多远不是更好吗?非接触探测物体距 离通常是声纳完成的任务:它发送出一组超声波脉冲,然后记录下被物体反射回来的声波所需 的时间,然后乘以超声波的传播速度的一半,就可以计算出距离物体有多远。本章并不使用声 纳传感器,仍旧采用前面章节中所使用过的非常类似的电路与红外线传感器来探测物体的距离 由于机器人可以检测到物体的距离,你就可以编程让机器人跟随物体行走而不会碰上它。你也 可以编程让机器人沿着白色背景上的黑色轨迹行走。下面将用同前第六讲中一样的IR

2、LED/探测电路来探测距离。 如果该电路仍然完好的在你的机器人上,确认红外线LED电路中含有lk欧姆的电阻。 如果你已经拆掉了该电路,请参照第六讲的内容重新搭建。新增工具和原料:(1) 尺子(2) 一张白纸任务1:测试扫描频率图7-1显示的是一个特殊品牌红外线传感器数据 表(Panasonic PNA4602M )的频率特性图。这个特 性图显示了红外线传感器在接收到不同于38.5 kHz 频率红外线信号时其敏感程度随频率变化的曲线 图。例如,当你发送频率为40 kHz的信号给传感器 时,它的灵敏度是频率为38.5 kHz的50%。如果红外 LED发送频率为42 kHz,探测器的灵敏度是频率为

3、38.5 kHz的20%左右。因此当你采用让探测器灵敏度 很底的频率的红外线时,为了让探测器探测到红外 线的反射,物体必须离探测器更近以便让反射的红 外光更强。从另一个角度来考虑就是,使用最高灵敏度红 外线频率可以探测最远距离的物体,较低灵敏度的 频率可以探测较近距离物体。这样,采用红外线探 测距离就简单了。选择5个不同频率的红外线,从最 高灵敏度频率到最低灵敏度进行扫描测试。首先用最高灵敏度频率,如果物体被探测到了,就 让仅次于它的高灵敏度频率测试,观察是否可以探测到,当探测器检测不到的相应的红外线频 率时,你就可以以此推断机器人到物体的距离。用频率扫描进行编程做距离探测 下面用图7-2说明

4、机器人如何用红外发射频率扫描进行距离探测。在这个例子中,目标物体 在区域3。也就是说,当机器人发送37500 Hz和38250Hz频率的红外线时能发现物体,发送39500 Hz、40500 Hz以及41500 Hz频率的红外线就不能发现物体。如果你移动物体到区域2,那么发送37500 Hz、38250 Hz以及39500Hz的红外线可以发现物体,而发送40500Hz和41500Hz频率的 红外线就不能发现物体。为了对红外线频率进行扫描,你要用FREQO UT命令发送5种不同的频率的红外线信号并测 试在每种频率下红外线探测器是否可以发现目标。由于每种频率之间的间隔不均匀,因此不宜使用FORNEX

5、T循环的STEP算子。你可以用DATA和READ,但会比较麻烦。你也可以用 五种不同的FREQO UT命令,但这样会浪费程序空间。最好的办法采用LOOKUP指令,它可以 储存一小段你想要依次用到的频率数值到一个列表中,然后通过一个索引使用表中的数值。命 令LOOKUP的用法定义如下:LOOKUP Index, ValueO, Valuel, ValueN, Variable物体区域33825C Hz图7-2机器人红外频率探测区域区城吕 任何频率 下均没检 测到物体区域2区域437500 Hz* -区域q-1050C7H2区域0 亠 41500 Hz如果变量Index的取值为0,那么方括号中Va

6、lueO的值将被赋给变量Variable。如果变量Index 的取值为1,那么方括号中Valuel的值将被赋给变量Variable。列表中可以储存256个数值,但对 于下面的例程而言,你只需要5个数值。下面是怎样使用它的例子:FOR freqSelect = 0 TO 4LOOKUP freqSelect,37500,38250,39500,40500,41500,irFrequencyFREQOUT 8,1, irFrequency irDetect = IN9 Commands not shown.NEXT在FOR.NEXT循环语句第一次执行时,freqSelect的值为0,所以LOOKU

7、P命令把37500 赋予变量irFrequency。因为在执行命令LOOKUP之后,变量irFrequency值为37500,所以 FREQOUT发送该频率到与P8连接的红外线发光二极管上。和前面章节中一样,数值IN9保存 到变量irDetect。在FOR.NEXT循环语句第二次执行时,freqSelect的值为1,所以LOOKUP命 令把38250赋予变量 irFrequency 。第三次重复上述工作时,把39500赋予变量 irFrequency , 依次类推。例程TestLeftFrequencySweep.bs2TestLeftFrequencySweep.bs2要做两件事情。首先,它

8、测试左边的IR LED/探测器(与P8和 P9连接)以确认它们的距离探测功能正常。然后,它也演示如何完成如图7-2所示的频率扫描。 当你运行该程序时,调试终端将会显示你所测量的区域。会有很多可能的“yes”或“no” 排列模式出现,如图7-3所示是其中的两个。测试模式将由探测器内部的滤波器特性决定。 程序通过计算 “No” 出现的数量,就可以确定目标在哪个区域。注意即使图7-3所示的两 个调试终端的测试结果不同,但它们都有三个“Yes”和两个“No”出现,所以在两个例子中“Zone 2”都是探测到的目标区域。紧记,这种距离测量方法显然不是非常地精确。然而,它为机器人跟随,跟踪和其他行为 提供了

9、一个足够好的探测距离的能力。输入、保存并运行程序 T estLeftFrequencySweep.bs2。用一张纸或卡片面对IR LED/探测器测试距离探测。开始时把纸片贴近IR LED/探测器,大概lcm距离远。调试终端中显示区域应该为0或1。 逐渐把纸片远离IR LED,并记录每一个让zone值增大的距离。DTR f RTSLJJOBJECTFREQUENCYDETECTED37500Yes3250Yes33500Yes40500NO4150 JNoZoneLj1JrFREQUENCYOBJErTDETECTED31500No33250Ye?395Q0Yes4 0500y电s41500No

10、ZoneL:I1.Uta厂 Ed att图73距离探测测试输出乎例 Title TestLeftFrequencySweep.bs2 Test IR detector distance responses to frequency sweep. $STAMP BS2 Stamp directive. $PBASIC 2.5 PBASIC directive. Variables freqSelect VAR Nib irFrequency VAR Word irDetect VAR Bit distance VAR Nib- Initialization DEBUG CLS, OBJECT,

11、CR,FREQUENCY DETECTED, CR, Main Routine DOdistance = 0FOR freqSelect = 0 TO 4LOOKUP freqSelect,37500,38250,39500,40500,41500, irFrequency FREQOUT 8,1, irFrequencyirDetect = IN9distance = distance + irDetectDEBUG CRSRXY, 4, (freqSelect + 3), DEC5 irFrequencyDEBUG CRSRXY, 11, freqSelect + 3IF (irDetec

12、t = 0) THEN DEBUG Yes ELSE DEBUG No PAUSE 100NEXTDEBUG CR, , CR,Zone , DEC1 distanceLOOP该你了一一测试右边的IR LED/探测器尽管还有许多标注,但你只需通过替换下面两行代码来修改该程序来测试右边的IR LED/ 探测器: 修改程序TestLeftFrequencySweep.bs2,对右边的IR LED/探测器做距离探测测试。 运行该程序,检验这对IR LED/探测器能否测量到同样的距离。 同时显示两个距离用一个快捷的程序让机器人的两个探测器同时进行距离探测,有时是非常有用的。下面的 程序由子程序组成,这

13、些子程序可以方便的拷贝和粘贴到其它需要距离探测的程序中。 例程DisplayB ot hDis tances.bs2 输入、保存并运行程序DisplayBothDistances.bs2。 用纸片重复对每个IR LED进行距离探测,然后对两个IR LED同时进行测试。 - Title DisplayBothDistances.bs2 Test IR detector distance responses of both IR LED/detector pairs to frequency sweep. $STAMP BS2 Stamp directive. $PBASIC 2.5 PBASIC

14、 directive. - Variables freqSelect VAR Nib irFrequency VAR Word irDetectLeft VAR Bit irDetectRight VAR Bit distanceLeft VAR Nib distanceRight VAR Nib- Initialization DEBUG CLS,IR OBJECT ZONE, CR,Left Right, CR, - MainRoutine DOGOSUB Get_DistancesGOSUB Display_DistancesLOOPSubroutine -Get_Distances G

15、et_Distances: distanceLeft = 0 distanceRight = 0FOR freqSelect = 0 TO 4LOOKUP freqSelect,37500,38250,39500,40500,41500, irFrequency FREQOUT 8,1,irFrequencyirDetectLeft = IN9 distanceLeft = distanceLeft + irDetectLeftFREQOUT 2,1,irFrequencyirDetectRight = IN0 distanceRight = distanceRight + irDetectR

16、ight PAUSE 100NEXTRETURNSubroutine -Display_Distances Display_Distances:DEBUG CRSRXY,2,3, DEC1 distanceLeft,CRSRXY,9,3, DEC1 distanceRightRETURN该你了更多的距离测试尝试测量不同距离的物体,弄清物体的颜色和(或)材质是否会造成距离测量的差异。任务2:机器人尾随控制 本任务要你让一个机器人跟随另一个机器人行走。跟随的机器人,也叫尾随机器人,它必 须知道距离引导车有多远。如果尾随机器人落在后面,它必须能察觉并加速。如果尾随机器人 距离引导车太近,它也要能察觉

17、并减速。如果当前距离正好合适,它会等待直到测量距离变远 或变近。距离仅仅是机器人和其它自动化机器需要控制一种变量之一。当一个机器被设计用来自动 维持某一数值,比如距离、压力或液位时,它一般都包含一个控制系统。这些系统有时由传感 器和阀门组成,有时由传感器和电机组成。在本书使用的机器人里面,控制系统由传感器和连 续旋转电机组成。除此之外,控制系统还必须有某些处理器可以接受传感器的测量结果并把它 们转化控制指令输出给电机,由电机转化为机械运动。你必须对处理器编程来基于传感器的输 入作出决定,从而控制机械输出。对本书使用的机器人而言,处理器就是BASIC Stamp 2 。 闭环控制是一种常用的维持

18、控制目标的方法,它很好地帮助机器人保持与一个物体之间的 距离。闭环控制算法类型多种多样,最常用的有滞后、比例、积分以及微分控制。所有这些控 制方法都将在后续教材过程控制中详细介绍。绝大部分控制算法都可以用很少的几行PBASIC代码来实现。事实上,如图7-4所示的比例 控制环的主要部分可以精简为一行PBASIC代码。这个图称为方框图,它描述机器人用到的比例 控制过程的步骤,即机器人用右边的IR LED/探测器探测距离并用右边的伺服电机调节机器人之 间的位置以维持适当的距离。Center pulse width750图7-4右边伺服电机及IR LED/探测器的比例控制方框图请你仔细观察一下图7-4

19、中的数字,学习一下比例控制是如何工作的。这个特殊的例子是右 边的IR LED/探测器和右边的伺服电机的比例控制方框图。设定位置为2,说明你想机器人维持 它和任何它探测到的物体之间的距离是2。测量的距离为4,距离太远。误差是设定值减去测量 值的差,即2 - 4 = - 2,这在圆圈的左方以符号的形式指出,这个圆圈叫求和点。接着,误差传 入一个操作框。这个操作框显示,误差将乘以一个比例常数Kp。Kp的值为35。该操作框的输出 显示为-2 35 = -70,这叫输出校正。这个输出校正结果输入到另一个求和点,这时它与电机的 零点脉冲宽度750相加。相加的结果是680,这个脉宽可以让电机大约以3/4全速

20、顺时针旋转。这 让机器人右轮向前、朝着物体的方向旋转。这个修正值加入到由机器人、以及距离为4的目标物 体组成的整个系统中,第二次经过闭环,测量距离可能发生变化,但是没有问题,因为不管测量 距离如何变,这个控制环路将会计算出一个数值,让电机旋转来纠正任何误差。修正值与误差总 是成比例关系,该误差就是设定位置和测量位置的关系的偏差。控制环都有一组方程来主导系统行为。图7-4中的方框图是对该组方程的可视化描述方法。 下面是从方框图中归纳出来的方程关系及结果:通过一些置换,上面三个等式可被简化为一个,提供你相同的结果:ErrorOutput adj ns=Right seno output =Righ

21、t distance set point 一 Measured right distance2-4eiTor Kp-2 35-70Output adjust + Center pulse yvidth- 70+ 750= 680通过些置换,上面:个等式可被简化为个,提供你相同的结果:Right seno output =(Right distance set point Measured right distance) KpCenter pulse width代入数值,你可以得到-致的结果:Right seio output -(2 - 4) - 35) + 750= 680左边的IR LED

22、/探测器以及左边的伺服电机的控制框图如图7-5所示,与右边的运算法则类 似。不同的是比例系数Kp的值由35替换为-35。假设与右边的测量值一样,输出修正的脉冲宽度 应该为820。下面是该框图的计算等式:Left sen-o output = (Left distance set point Measured left distance Kp + Center pulse width=(2 - 4) -35) + 750=820这个控制环的值让电机大约以3/4全速逆时针旋转。这个对机器人的左轮来讲是一个向前旋 转的脉宽。反馈的意思是,系统的输出被尾随机器人重新采样做另一个距离探测。控制环一次 又

23、一次的重复运行,大概每秒40次。对尾随机器人编程 记住右边伺服电机的输出方称为:下面的例子说明如何用PBASIC语言求解上面的方程。右边距离设置为2,测量距离由变量 distanceRight存储,Kp为35,零点脉冲宽度为750:pulseRight = (2 - distanceRight) * 35 + 750左伺服电机的比例系数Kp为-35:pulseLeft =(2 - distanceLeft) * (-35) + 750既然数值 -35, 35, 2, 和 750 全都有命名,干脆对这些常数声明如下:Kpl CON -35Kpr CON 35SetPoint CON 2Cente

24、rPulse CON 750由于程序中有这些常数声明,你可以用Kpl代替-35, Kpr代替35, SetPoint代替2, CenterPulse 代替750。在常量声明之后,比例控制计算式现在看起来象这样:pulseLeft = (SetPoint - distanceLeft) * Kpl + CenterPulse pulseRight =(SetPoint - distanceRight) * Kpr + CenterPulse 声明变量后者常量的便利在于,你只需在程序的开始部分对变量做一次改变。程序的开始 部分的修改会反映到所有你用到该常量的地方。例如把Kpl CON指令由-35改

25、为-40,那么程序中 所有Kpl的值都会由-35更改为-40。对于左、右比例控制系统的调试试验来讲,这是非常有用的。 例程 FollowingRobot.bs2FollowingRobot.bs2重复刚才讨论过的各个伺服脉冲比例控制环。换句话说,在每个脉冲发 送之前,需要测量距离,决定误差信号,然后将误差值乘以比例系数Kp,再将结果加上(或减 去)发送到左(或右)伺服电机的脉冲宽度值。 输入、保存并运行程序FollowingRobot.bs2。 把大小为8.5X11英寸的纸片置于机器人的前面,就象障碍物墙。机器人应该维持它和 纸片之间的距离为预定的距离。 尝试轻轻旋转一下纸片,机器人应该跟随之

26、旋转。 尝试用纸片引导机器人四处运动,机器人应该跟随它。 移动纸片距离机器人特别近时,机器人应该后退,远离纸片。 - Title FollowingRobot.bs2 Robot adjusts its position to keep objects it detects in zone 2. $STAMP BS2 Stamp directive. $PBASIC 2.5 PBASIC directive. DEBUG Program Running! Constants Kpl CON -35 Kpr CON 35SetPoint CON 2CenterPulse CON 750 Vari

27、ables freqSelect VAR Nib irFrequency VAR Word irDetectLeft VAR Bit irDetectRight VAR Bit distanceLeft VAR Nib distanceRight VAR Nib pulseLeft VAR Word pulseRight VAR Word Initialization FREQOUT 4, 2000, 3000 Main Routine DO GOSUB Get_Ir_Distances Calculate proportional output.pulseLeft = (SetPoint -

28、 distanceLeft) * Kpl + CenterPulse pulseRight = (SetPoint - distanceRight) * Kpr + CenterPulse GOSUB Send_PulseLOOP Subroutine - Get IR Distances Get_Ir_Distances:distanceLeft = 0 distanceRight = 0 FOR freqSelect = 0 TO 4LOOKUP freqSelect,37500,38250,39500,40500,41500, irFrequencyFREQOUT 8,1,irFrequ

29、encyirDetectLeft = IN9distanceLeft = distanceLeft + irDetectLeftFREQOUT 2,1,irFrequencyirDetectRight = IN0distanceRight = distanceRight + irDetectRightNEXTRETURNSubroutine - Get Pulse Send_Pulse:PULSOUT 13,pulseLeftPULSOUT 12,pulseRightPAUSE 5RETURN程序FollowingRobot.bs2是如何工作的程序FollowingRobot.bs2 通过CO

30、N指令声明了四个变量Kpr, Kpl, SetPoint和CenterPulse。无论什么地方出现SetPoint,它实际上是2。同样,你在任何地方看到的Kpl,实际上是-35, Kpr 实际上是35, CenterPulse是750。Kpl CON -35Kpr CON 35SetPoint CON 2CenterPulse CON 750主程序做的第一件事是调用Get_lr_Distances子程序。Get_lr_Distances子程序运行完成 之后,变量distanceLeft和distanceRight分别包含一个与区域相对应的数值,该区域里的 目标被左、右红外线探测器探测到。DOG

31、OSUB Get_Ir_Distances后边两行代码对每个电机执行比例控制计算。 Calculate proportional output.pulseLeft = (SetPoint - distanceLeft) * Kpl + CenterPulsepulseRight = (SetPoint - distanceRight) * Kpr + CenterPulse现在pulseLeft和pulseRight的计算做完了,可以调用子程序Send_Pulse了。GOSUB Send_PulseD0L00P 循环的LOOP部分使程序立刻返回到主循环开始的DO后面的命令。LOOP该你了图7-

32、6所示是引导机器人和尾随机器人。导引机器人运行的程序是FastIrRoaming.bs2修改后 的版本,尾随机器人运行的程序是FollowingRobot.bs2。比例控制让尾随机器人成为忠实的追随 者。一个引导机器人可以引导一串大概6到7个尾随机器人。只需要把导引机器人的侧面板和后 挡板加到其它的尾随机器人上。 如果你是在一个班级学习机器人,把纸板安装在你的机器人的两侧和尾部,参考图7-6。 如果你是个人爱好者并且只有一个机器人,可以让尾随机器人t跟随一张纸或你的手来 运动,就和跟随导引机器人一样。用阻值为470Q或220Q的电阻替换掉连接机器人的P2和P8到红外线发光二极管的lk电 阻。

33、使用程序FastIrRoaming.bs2修改后的版本对机器人编程来做避障试验,打开程序 FastIrRoaming.bs2 重命名为 SlowerIrRoamingForLeadRobot.bs2。 对程序 SlowerIrRoamingForLeadRobot.bs2 做以下修改:口增加所有命令PULSOUT Dwar/on中小于750的数值,现在是把650的增加为 710。口减小所有命令PULSOUTDwaf/on中大于750的数值,现在是把850的减少为790。 尾随机器人运行程序FollowingRobot.bs2,不用做任何修改。 让各个机器人都运行自己的程序,把尾随机器人放在引导

34、机器 人的后面。尾随机器人应该跟随 一个固定的距离,只要它不被其 它的诸如手或附近墙壁等引开。你可以通过调整SetPoi nt和比例常数 来改变尾随机器人的行为。用手或一张纸 片来引导尾随机器人,做下面练习。 尝试用15到50范围内的常量Kpr 和Kpl来运行程序Followi ngRobot.bs2,注意Robot在跟随目标运动的时候的响应有何 差异。尝试调节常量SetPoint的值,范围从0到4。图7-7条纹带跟随路径任务3:跟踪条纹带 图7-7是要你铺设的一个路径。路径铺好后你需要编程使机器人跟随该路径运动。路径中每 个条纹带是由三条19m m宽黑色聚乙烯绝缘带平行粘贴在白色招贴板上组成

35、的,绝缘带条纹之 间不能漏出白色板底板。搭建和测试路线 为了成功跟踪该路径,首先必须测试和调节机器人以及铺好的条纹带。需要的材料(1) 一张招贴板大概尺寸: 56 cm X 71 cm(2) 19 mm宽黑色聚乙烯绝缘带一卷。嵋视側视图陀 红外探测器朝F扫描条纹带参考图7-7用白色招贴板和绝缘带铺设运行路径。测试条纹带 调节IR LED/探测器的位置向下和向外,如图7-8所示。 确保绝缘带路径不受荧光灯干扰。 用2 k电阻代替与IR LED串联的1K电阻,使机器人更加近视。 运行程序DisplayBothDistances.bs2。机器人与串口电缆相连,以便你能看 到显示的距离。 如图7-9所

36、示,把机器人放在白色 招贴板上。 验证你的区域读数是否表示被探测的物体在很近的区域,两个传感器给你的读数都是1或0。即 机器人可以看到白色底板。 放置机器人使两个IR LED/检测器都直接指向三条绝缘 带的中心,如图7-10和7-11 所示。 然后调整机器人的位置(靠近或远离绝缘带)直到两个区域的值都达到4或者5,这表明要么发现 一个很远的物体,要么没 有发现物体。即机器人看 不到绝缘带,也就表示机 器人认为前面没有障碍 物。如果在你的绝缘带路径上很难获得比较高 的读数值,参考绝缘带路径铺设疑难解答 部分。绝缘带路径排错如果IR LED/检测器指向绝缘带路径的中心的时候你不能获得比较高的读数值

37、,代替原来三条绝缘带用四条绝缘带在用一片纸上铺设路径。如果区域读数仍然低,确认你是用2 kQ (红一黑一红)电阻串联在IR LED上。也可以试用4.7 kQ电阻使机器人更加近视。如果都不行,试试不同的绝缘带。调整RLED/探测器,使它们指向更靠近或更远离机器人前部 可能有帮助。如果白色底板区域测试有问题。试试将IRLED/探测器指向更靠近机器人的方向,但是要 注意不要让底盘带来干扰。你也可以试试一个更低阻值比如/ kQ (棕一黑一红)的电阻。如果你用老的缩小包装的IRLED代替带套筒的IR LED,当IRLED/探测器聚焦在白色背景上时 你要得到一个低区域的值可能有 问题。这些IR LED可能

38、需要串联470Q (黄一紫一棕)电阻或者220Q (红一红一棕)电阻,还要确保IR上。IR探测器应该稍稍向外,如图 ijoaa 口咸口 口 ULQ pnro 口口 口 红夕卜掘待互J向放大图机器人横跨绝绦带俯视E1LED的脚没有相互接触。 现在,将机器人放在绝缘带路 径上,它的轮子正好跨在黑色线7-12。验证两个距离读数是否又是0或者1。如果读数较高,意味着IR探测器需要再稍微朝远离 绝缘带边缘的方向向外调整一下。当你把机器人沿图中双箭头所示的任一个方向移动,两个IR中的一个会指向绝缘带上。当 你做了这些后,这个指向绝缘带上的IR的读数应该增加到4或5。记住如果你将机器人向左移动, 右边检测器

39、的值会增加,如果你将机器人向右移动,左边检测器的值会升高。 调整IR LED/检测器直到机器人通过这个最后的测试,然后你可以试验下面的程序让机 器人沿着条纹带行走。编程跟踪条纹带你只需对程序FollowingRobot.bs2做一点小小的调整,就可以使机器人跟踪条纹带行走。首 先,机器人应当向前运动以使到目标的距离比SetPoint值更近,或者离开目标使距离比SetPoint 更远,这同程序FollowingRobot.bs2的表现相反。当机器人离物体的距离不在SetPoint的范围内时, 让Robot向相反地方向运动,只需简单的更改Kpl和Kpr的符号。换句话说,将Kpl由-35改为35,

40、Kpr由35改为-35。你需要用SetPoint做试验,当值从2到4时,系统趋于工作得最好。下面的例子 程序将用值为3的SetPoint。例程StripeFollowingRobot.bs2 打开程序FollowingRobot.bs2,另存为StripeFollowingRobot.bs2。 将 SetPoint 声明由 SetPoint CON 2 改为 SetPoint CON 3。 将Kpl由-35改为35。 将Kpr由35改为-35。 运行程序。 将机器人放在图7-13所示的“ Start ”位置,机器人将静止。如果你把手放在IR组前面, 然后它会向前移动,当它走过了开始的条纹带时,

41、把手移开,它会沿着条纹带行走。当它看到“Finis条纹带时,它应该停止不动。 假定你从绝缘带获得的距离读数为5,从白色招贴板获得的读数为0, SetPoint的常量 值为2、3以及4时都可以正常工作。尝试不同的SetPoint值,注意机器人在条纹带上运行时的 性能。 Title StripeFollowingBoeBot.bs2 Robot adjusts its position to move toward objects that are closer28 (71 cm) 图7口机器人沿着条纹带路径行总Finish than zone 3 and away from objects fu

42、rther than zone 3. Useful for following a 2.25 inch wide vinyl electrical tape stripe. $STAMP BS2 Stamp directive. $PBASIC 2.5 PBASIC directive. DEBUG Program Running! Constants Kpl CON 35 Change from -35 to 35 Kpr CON -35 Change from 35 to -35 SetPoint CON 3 Change from 2 to 3. CenterPulse CON 750

43、Variables freqSelect VAR Nib irFrequency VAR Word irDetectLeft VAR Bit irDetectRight VAR Bit distanceLeft VAR Nib distanceRight VAR Nib pulseLeft VAR Word pulseRight VAR Word Initialization FREQOUT 4, 2000, 3000 Main Routine DOGOSUB Get_Ir_Distances Calculate proportional output.pulseLeft = (SetPoin

44、t -distanceLeft) * Kpl + CenterPulsepulseRight = (SetPoint -distanceRight) * Kpr + CenterPulseGOSUB Send_PulseLOOP Subroutine - Get IR Distances Get_Ir_Distances:distanceLeft = 0 distanceRight = 0 FOR freqSelect = 0 TO 4LOOKUP freqSelect,37500,38250,39500,40500,41500, irFrequencyFREQOUT 8,1,irFreque

45、ncyirDetectLeft = IN9distanceLeft = distanceLeft + irDetectLeftFREQOUT 2,1,irFrequencyirDetectRight = IN0distanceRight = distanceRight + irDetectRightNEXTRETURN Subroutine - Get Pulse Send_Pulse:PULSOUT 13,pulseLeftPULSOUT 12,pulseRightPAUSE 5RETURN该你了沿着条纹带行走比赛倘若你的机器人能忠实地在“Start”和“Finish”条纹带处等待,你可以把这个试验转化为 比赛,费时最少者获胜。你也可以搭建其它的路径。为了最好的性能,用不同的SetPoint,Kpl 和Kpr做试验。工程素质和技能归纳 红外线传感器(发射器和接收器对)扫描路径测量距离的工作原理和工程实现方法; 如何通过BASIC Stamp编程让红外传感器进行距离探测; 反馈控制的基本概念和P控制的实现方法; 用红外距离测量和P控制器实现机器人尾随运动的思路和方法; 控制器参数的调整对尾随机器人跟踪性能的影响; 改进尾随机器人的程序使其可以跟踪条纹带。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!