机器人距离探测

上传人:hs****ma 文档编号:469752192 上传时间:2022-11-08 格式:DOCX 页数:15 大小:446.90KB
返回 下载 相关 举报
机器人距离探测_第1页
第1页 / 共15页
机器人距离探测_第2页
第2页 / 共15页
机器人距离探测_第3页
第3页 / 共15页
机器人距离探测_第4页
第4页 / 共15页
机器人距离探测_第5页
第5页 / 共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 + irDetectRight PAUSE 100NEXTRETURN

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号