友情提示:380元/半年,儿童学编程,就上码丁实验室。
如果需要学习本阶段课程,建议先学习本号内《基础硬件篇和基础编程篇》。
学习本篇请下载 LEGO Mindstorms 教育版软件
年过完啦,你们也要的巡线在这里!
很多朋友发来信息想让我讲讲巡线任务,原因是,这个应用场景在各种机器人比赛中经常用到。
其实巡线这个名称已经是经过了分析后,包含了结果含义了。
一般在比赛或者任务出题中,可不会说:
请完成一个巡线任务。
只会要求你在某个位置要完成某个动作。
那么这边有一个问题:
到底我们解决的是准确到达某个位置?
还是沿着这条线走?
这是个重要的问题。
我们利用巡线,仅仅是为了更方便或更准确地解决问题,而不是看到线就要去“巡”。
事实上,这句话应该这样表达。
从A点到B点,我们可以使用巡线方法来完成这个要求。
我们看到很多机器人比赛都会有这样的场地,
地上会有一条条的标准线,方便大家利用并完成某个动作。
而线段本身对任务完成的结果没有意义,只是给到了机器人一个判断前进路线的标准条件,来方便大家的完成过程。
我们并不需要看到线就用巡线……很多时候这也会多次一举。
如图:
对于场景1来说,我们没必要巡线,直接碾压过去,不是更方便?
对于场景2来说,这个时候使用巡线的方法,就会比较合适。
简单总结一下,如果你碰到的是复杂路线,而场地内有标志线,那么,使用巡线就是很好的解决问题的方法。反之,则是多此一举。
巡线的方法有很多,但大体上,我们常用的有3种。
1、单色感摆动巡线
2、双色感摆动巡线
3、单色感PID巡线
当然不止这些,根据不同的场景要求,我们可以利用其它传感器的数据和色感配合,以达到某种特殊的巡线要求。(几秒而已,别在乎这点流量)
比如视频中做的这个巡线设计,就是利用陀螺仪传感器和颜色传感器的数据配合完成的。完全没有使用到PID技术,同样精准。
根本上,我们的思维不能固定化,听到巡线就一定使用颜色传感器。
主要还是要从任务的要求和客观条件的合理性上去作分析。
(飞机在天上可没有线“巡”,但却有“航线”)
事实上,每个场景中都有无数条“线”存在,而巡线,只是一种让“场地条件”变为可利用的数据的方法。
好了言归正传,我们先说一个简单的。
在这个方法中,首先我们要搞清楚,让物体“前进”是什么概念。
我们通常的思维惯性下,前进,意味着直线向前。
但事实上,左转一下,右转一下,只要不是旋转,只要不是转180度,都可以做到“前进”。
直线前进,只是从某个点到另一个点最短的距离而已。但不是前进的唯一方法。
回到我们的问题:
当我们有一条线存在时,如果需要沿着这条线前进。
那么这个问题重点其实并不在如何“前进”上。
因为它并没有要求你使用什么方式前进,重点在于“沿(巡)着线”。
既然是沿着线,那么我们就要让机器人不断的“寻找”到这条线的位置。
所以虽然我们称之为“巡线”,但我们其实可以叫这个任务为“寻线”!(视频仅4秒)
只要当没线的时候,通过某种运动方式保证机器一定能找到这条线,自然就可以巡着走。
这个时候,直线前进,是无法满足这个要求的,除非线本身就是直线,不然总会有脱离线的情况存在。
当需要左转或者右转的时候,这是个不确定因素,我们是无法帮机器人去判断左转还是右转的。
机器无法通过一个二选一的条件(有线?没有线?),判断出第3种可能性(前进?左转?右转?)。
但我们发现,当机器使用左转和右转的方法前进时,这个问题就迎刃而解了。
因为
条件是二选一(有线?没有线?)
而对应的
动作也是二选一(左转前进?右转前进?)
条件和结果是11对应的关系。这样的操作就能解决这个问题。
接下来的编程环节也就很简单了。
使用一个判断流程,设定颜色传感器的反射光模式。
(反射值的概念,可以通过微信直接回复“反射”和“灰度”获取这两个相关内容解释)
当反射值高的时候,证明没有线存在,我们向左转;
当反射值低的时候,证明有线的存在,我们向右转。
点开大图看一下说明。
这样一来,机器人就会使用左转一下,右转一下的方法,不断的寻找这跟线的存在,而达到沿着线前进的目的!
大家可以看一下下面这个视频,就是成品动作。
(视频9秒)
今天就到这里,我们下周继续!