小车走迷宫技术_第1页
小车走迷宫技术_第2页
小车走迷宫技术_第3页
小车走迷宫技术_第4页
小车走迷宫技术_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、浅谈机器人在线迷宫中的控制策略问题(2) 来源:/brave_xixi 时间:2010-05-07 评论 条(访问论坛)RobotSky恭候您的投稿4、机器人对岔路口的处理方法4.1 机器人走迷宫过程分析 机器人在走线迷宫时,常用的控制方法无非是以下几个步骤: (1)、机器人沿着当前赛道前进(following the line);前进同时检测前方是否有岔路口。 (2)、一旦检测到岔路口,机器人要判断岔路口的类型; (3)、确定岔路口类型后,在一定的控制法则下完成转弯。 整个流程在机器人走迷宫时将会循环作用,直到机

2、器人到达迷宫重点。简单用流程图示意一下就是下图:p4.1 机器人走迷宫示意图 PS.当然上面的流程图中并没有涉及到后面我们所要讲到的“机器人自主学习功能”。这块功能将单拉出来讲解。4.2 机器人寻线方法(following the line) 机器人寻线相对而言还是比较简单的,我们只需根据传感器数调整机器人左右转速就可以了。这里提供一个简单的控制代码范例:Select Case Pattern /选择可能的模式;请参考3.3寻线传感器的使用; Case Pattern = %00100 /这种模式表示机器人处于赛道正上方,则全速前进; leftMotor=fast; rightMotor=fa

3、st /即左侧电机和右侧电机都快速前进; Case Pattern = %01000 /这种模式表示机器人轻微向右偏离赛道; leftMotor=medium; rightMotor=fast /针对这种状况,左侧电机中速转动,右侧电机快递转动, /通过两侧轮子转速差减少机器人向右偏移; Case Pattern= %10000 /这种模式表示机器人已经严重向右偏离赛道; leftMotor=slow; rightMotor=fast /针对这种状况,左侧电机慢速转动,右侧电机快速转动, /以快速纠正机器人。and so on 以上范例代码中,慢速、中速和快速只是根据机器人偏离赛道程度大小而使

4、用的描述词语。在实践中,机器人电机转动的速度需要你不断实验、尝试,才能使机器人有更好的寻线效果。(在控制上,这加入了反馈,属于闭环控制。建议去尝试着了解一下闭环控制理论中PID算法的介绍,这将对机器人的速度控制有很大帮助)4.3 赛道路口的识别和处理。 有了4.2中介绍的内容,我们的机器人就可以沿着赛道走了,但这个时候它还不会判断岔路口,更不知道遇到岔路口应该如何操作。这一小节就重点介绍岔路口的识别和对应操作。 让我们再次去回顾一下1.2小节中“P1.2线迷宫机机器人可能遇到的八种情形”的图片,我们就对图中的八种状况做分析。说到这里,我们要重点强调一个概念:岔路口。 至少到现在为止,岔路口的概

5、念还不会对我们介绍的内容造成理解上的偏差。但后面小节要介绍“机器人的自主学习能力”,如果不对这一概念做澄清,会影响后续内容的开展: 岔道口:机器人可以有一个以上行进方向的路口。 按照上面的定义,下图中的两个路口就不能再成为岔路口了。虽然在这两个路口,机器人要执行转向的操作,但在方向选择,显然机器人不必要思考的,左转或右转时他们唯一的选择。同样不能作为岔路口的还有“死胡同”。 p4.2 不是岔路口的路口 弄明白了这个概念对下一小节的内容就容易理解了。下面就切入本小节的正题:路口的识别和处理。4.3.1 死胡同的识别和处理 死胡同是8种路口中最简单的一个。当寻线传感器数值从“00100”变化为“0

6、0000”时,我们就可以认为机器人是遇到了死胡同。p4.3 死胡同 当机器人遇到死胡同时,机器人的动作应该是掉头(make a U-turn)。示意程序代码为: If Pattern = %00000 then gosub U-Turn /当遇到死胡同,机器人直行掉头的子函数。 4.3.2 “右转路口”和“右转或直行路口”识别和处理 当机器人遇到这两种路口时,传感器输出模式都是“00111”。这个时候机器人如何做选择呢? p4.4 右转路口和右转或直行路口 解决方式是,我们编写一个子程序,假设名字是inch(),执行的操作是让机器人再前进一点(一英寸)。当传感器越过赛道后,如果寻线传感器显示数

7、值为“00000”,那么这个路口就一定是“右转路口”;如果寻线传感器显示数值为“00100”,那么这个路口就一定是“右转或直行路口”。 那接下来机器人该如果动作呢? 如果机器人使用的是“左手法则”,在“右转路口”只能有一种选择右转;在“右转或直行路口”,机器人就要执行“直行”的动作; 如果机器人使用的是“右手法则”,在“右转路口”显然要右转;在“右转或直行路口”,机器人就要执行“右转”的动作;4.3.3 “左转路口”和“左转或直行路口”识别和处理 当机器人遇到这两种路口时,传感器输出模式都是“11100”。这个时候机器人如何做选择呢? p4.5 左转路口和左转或直行路口 同样我们也是借助子函数

8、inch(),让机器人再前进一点(一英寸)。当传感器越过赛道后,如果寻线传感器显示数值为“00000”,那么这个路口就一定是“左转路口”;如果寻线传感器显示数值为“00100”,那么这个路口就一定是“左转或直行路口”。 那接下来机器人该如果动作呢? 如果机器人使用的是“左手法则”,在“左转路口”显然要左转;在“左转或直行路口”,机器人就要执行“左转”的动作; 如果机器人使用的是“右手法则”,在“左转路口”只能左转;在“左转或直行路口”,机器人就要执行“直行”的动作;4.3.4 “丁字路口”、“十字路口”和“终点路口”识别和处理 当机器人遇到这三种路口时,传感器输出模式都是“11111”。这个时

9、候机器人如何做选择呢? p4.6 其他路口 我们还是利用inch()函数,让机器人再前进一点距离,这将帮助我们分辨这三种路口: 如果寻线传感器数值是“00000”,那么这个路口就是丁字路口; 如果寻线传感器数值是“00100”,那么这个路口就是十字路口; 如果寻线传感器数值是“11111”,那么这个路口就是迷宫终点了。 针对不同路口的判断,我们这里提供一个程序范例: Gosub inch() /机器人再前进一点的子函数(距离越过赛道宽度就可以) ReadSensors() /读取寻线传感器数值 If Pattern = “00000” then ?Found the T intersectio

10、n /如果数值是“00000”,遇到丁字路口 Elseif Pattern = “11111” then ?Found the end of the maze STOP! /如果数值是“11111”,到达了迷宫重点; Else ?At a four-way intersection /如果是其他情况,则是遇到了十字路口。 Endif PS.在这篇文章中,我们使用的是一字型寻线传感器。如果我们使用八字型寻线传感器的话,由于传感器是分前后两排分布的,这样在判断岔路口方面就非常方便,无需借助inch()函数,就可以直接识别。八字型传感器的识别方法,留给读者自己解决。 当我们准确的判断出每个路口的类型

11、后,机器人就可以在一定的走迷宫法则指导下完成走迷宫任务。 但我们发现,在线迷宫中,有很多死胡同是不必要走的,有些弯路也是可以省略的,对于机器人,它们应该如何选择一条最短的距离呢?下一小节我们就重点介绍机器人的自学习能力。5、机器人自主学习算法5.1 引子 先轻松一下,看看下面的视频。简单介绍一下,这是机器人穿越线迷宫的视频,一共走了两次。 看完后请思考前后两次穿越迷宫有什么不同? 看完了吗?估计大家都看出来了,这个机器人在穿越迷宫时,第二次比第一次用的时间短,走过的距离也短,第一次走过的很多死胡同,第二次统统都绕过去了。这是为什么呢? 这就是我们要介绍的机器人自主学习功能。浅谈机器人在线迷宫中

12、的控制策略问题(2) 来源:/brave_xixi 时间:2010-05-07 评论 条(访问论坛)RobotSky恭候您的投稿5.2 机器人自主学习功能介绍 下面我们通过一个简易线迷宫来介绍机器人的自主学习功能。 在这个迷宫中,有十字路口、直行或右转路口、直行或左转路口、死胡同等,从图中可以看出,有些线路是无效线路,如死胡同,就是可以绕过的。但机器人并不知道那些路口时有效路口,哪些路口是无效的。 我们使用“左手法则”进行穿越线迷宫,图中的蓝色的线,就是其穿越路径。可以看出绕了很大的圈。机器人的自主学习功能就是机器

13、人在经过第一次穿越后,能够发现并记住所经过的无效线路,从而在第二次穿越时,自动绕过那些无效路口,实现最短距离穿越线迷宫,如图中绿线所示路径。p5.1 机器人穿越线迷宫路径 怎么能实现呢?这就是下面重点介绍的内容!5.3 机器人自主学习算法 不要嫌作者啰嗦,这里我们再次强调一下上小节中介绍的“岔路口”的概念:机器人可以有一个以上行进方向的路口称之为岔路口。好了,有了这个概念,就容易了。当机器人穿越线迷宫时,每穿越一个“岔路口”,我们就让机器人在存储器中记录一个字符:如果是直行就保存一个“S”;如果是左转就保存一个“L”;如果是右转就保存一个“R”;如果是掉头,就保存一个“U”。只要是岔路口,就要

14、记录一次。 PS.右转路口和左转路口不属于我们所说的岔路口概念,机器人经过时不要记录。有了这个共识,我们就开始下面的算法介绍!p5.2 第一个转弯 我们就借助上面的建议线迷宫,分步介绍机器人的自主学习过程的。机器人第一次穿越线迷宫时,我们采用“左手法则”来进行。沿途将有一些“岔路口”,我们需要记录。 机器人开始从起点出发了,然后就遇到了第一个“岔路口”直行或右转路口。根据“左手法则”,机器人将直行。这时候,机器人将在存储器中记录一个直行的标示符“S”,如p5.2所示。p5.3 第二个转弯 机器人继续前进,这时就遇到第二个“岔路口”死胡同。这个时候机器人需要掉头回来。这时候,机器人将在存储器中记

15、录一个掉头的标示符“U”,如图p5.3所示。这样存储器中的标示符就变成了“SU” PS.从图中可以看出机器人每记录一个死胡同类型的岔路口,就意味着机器人走了错误路线。在任何线迷宫中,最佳或最短路线都不包括死胡同线路。所以遇到死胡同类型的岔路口就是告诉我们在前一个路口的转向时不正确的,我们需要更正。 当机器人掉头回到第一个岔道口(也是机器人行进过程中的第三个岔路口),根据左手法则,机器人将会左转,如图p5.4所示。这时候,机器人将在存储器中记录一个左转的标示符“L”。这样存储器中的标示符就变成了“SUL”。从上面的介绍中可以知道死胡同类型的岔路口将不会在机器人穿越迷宫的路径中,所以机器人应该在第

16、一个岔路口向右转“R”,才可以避免经过死胡同。 从以上分析我们就可以得出:SUL=R(即机器人直行、掉头、左转就相当于机器人直接右转)。这样在存储器中SUL就被标示符“R”取代。这就代表着当机器人再次穿越这个线迷宫时,遇到第一个岔路口直接右转。p5.4 第三个转弯 机器人继续前进,就遇到了十字路p5.5 第四个转弯 机器人继续前进将遇到“右转路口”,前面介绍过,这种只有一种方向选择的路口不属于我们定义的“岔路口”,所以这里机器人不记录转弯标示符“R”。接下来又是死胡同类型的岔路口,机器人仍旧做掉头动作。同时在存储器中记录一个掉头标示符“U”,这个时候存储器中的标示符就变成了“RLU”。如图p5

17、.6所示。p5.6 第四个转弯 机器人掉头回来,再次遇到“十字路口”,根据左手法则,机器人将做左转。同时,机器人将在存储器中记录一个左转标示符“L”。这样存储器中的标示符就变成了“RLUL”。 从图p5.7可以看出,A和B之间又是一个死胡同,在机器人路径上时是要避免通过的,所以机器人在第一遇到十字路口时不应该左转,而是应该前进S,这样才可以避免死胡同。 从以上分析我们可以得出:LUL=S。这样在存储器中“LUL”就被标示符S所取代,这就代表机器人再次穿越这个线迷宫时,遇到第一个十字路口将直行。这个时候机器人存储器中的标示符将变为“RS” p5.7 第五个转弯 机器人左转后又遇到一个死胡同,同样的在存储器中将记录一个标示符“U”,这样存储器中的标示符就变为“RSU”,如图p5.8所示。p5.8 第六个转弯 机器人掉头后,根据左手法则,再次遇到十字路口,将左转。同样机器人在存储器中记录一个标示符“L”。这样存储器中的标示符就变为“RSUL”。 根据前面介绍的,SUL=R。这样存储器中的RSUL标示符就被RR所替代。如图p5.9p5.9 第七个转弯 机器人经过十字路口后,又将遇到“左转路口”,同样这不属于岔路口,机器人不在存储器中做左转记录。机器人继续前进,就遇到“左转或直行路口”。根据左手法则,机器

温馨提示

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

评论

0/150

提交评论