第十一章 巡线:Chapter 11 of KitiBot for Micro:bit

第十一章 巡线

kitiBot 看到高铁沿着轨道快速前进,也希望像高铁那样有一个行进的轨道,沿着轨道前 进。这一章我们就来学习 kitiBot 的巡线功能。本章的学习目标就是学会使用循迹传感器,并且利用循迹传感器实现机器人巡线功能。


知识要点

循迹传感器:循迹传感器可以帮助机器 人沿着地上的黑线前进。传感器底部有 五个探测器,通过红外 LED 灯投射红外光线到地面,来探知模块相对于黑线的偏移。根据反射面不一返回的模拟值大小也不一样。通过五个传感器得到的数据可以判断黑线的大概位置。


和循迹有关的积木比较多,下面我们来介绍一下各个积木有什么作用。

:由于每个传感器测量的最大值和最小值范围都不一样。所以传感器需要校准,测得每一个传感器可以测量的最大值和最小值。将测到的原始数据经过修正后再使用。执行这个积木时,需要将机器人放置到黑线的正中间的位置,机器人会左右移动测量几十组数据取得每个传感器可以测量的最大值和最小值。

:获取循迹传感器的原始数据,返回的是长度为5的数据,分别表示5个传感器的数值。

:获取循迹传感器经过校准后的数值,输出的是原始数据经过修正后的数值。

:获取传感器校准过后每个传感器可以测量的最大值。

:获取传感器校准过后每个传感器可以测量的最大值。

: 获取黑线的位置,范围为0~4000。0表示最左边,4000表示最右边,2000表示正中位置。

说了这么多可能很多小伙伴已经晕了,下面我们通过程序来介绍这些积木怎么使用。

第一节

这一节我们通过串口数据循迹传感器的原始数据,观察数据的变化。

程序先读取循迹数值保存到item变量中,然后通过传输数据0~4号数据,中间用空格键隔开。



micro:bit接入到电脑中会识别一个串口,程序下载后打开串口软件,波特率设置为115200。

可以看到串口会不断输出5组数据,机器人拿到空中时,输出大概就是0~10左右,输出很小,如果将机器人放到白色面上,输出大概在500~700左右。如果是在黑线上输出大概在100左右。


第二节

我们在前一节的基础上加上输出黑线的位置。


下载程序后打开串口软件可以大概看到如下数据。仔细观察数据可以发现当传感器下方有黑线时,输出的数值偏低,约为80~100左右。最右边的数据表示黑线位置,黑线位置不同时,输出的数值也不同。数据可以大概反应黑线的位置。注意:这里输出的数据是没有经过校准的。

(看红线的数据可以知道,黑线从传感器1往传感器5移动)


第三节

这一节我们在前一节程序的基础上加上校准,看下输出校准后的数据是怎样的。



程序运行后先延时3s,是为了有足够的时间在程序启动之前将机器人放置到黑线正中间的位置。

延时3s后执行循迹传感器校准积木。校准时机器人会先向左边转动,接着向右边转动,最后转回中间的位置。校准程序需要放置在黑线中运行,校准是为了获取每个传感器可以测量的最大值和最小值。校准是否准确直接影响到循迹效果。校准完成后会显示各个传感器的最小值和最大值。

循环中是输出循迹传感器校准过后的数据,以及黑线的位置


上面为串口数据,第一行为各个传感器可以测量的最大值

第二行为各个传感器可以测量到的最小值。

接下来输出的是传感器经过校准后的数据,前五列表示1~5个传感器校准过来的数值范围是0~1000. 0表示黑线,1000表示白色没有黑线,数值越小表示颜色越深。

最后一列表示黑色的位置,2000 表示黑线在正中,0 表示黑线在小车最左边,4000 表示黑线在小车最右边

第四节

前面三节都是讲解循迹传感器输出的数据是怎样的,这一下我们来讲解一下如果使用循迹传感器获取的数据来控制机器人实现循迹的效果。

实现循迹的原理就是机器人偏离黑线左边时,减小右边电机的速度,让机器人偏回到黑线上;机器人偏离黑线右边时,减小右边电机的速度,让机器人偏回到黑线上;

下面就是循迹程序



程序中P表示位置误差,正数表示偏右,负数表示偏左。

D表示当前误差和上次误差的差值,反映小车的响应速度,数值越大,响应速度越快。

dif表示电机需要修正的量。电机修正的量按照P和D这两个变量按照比例的和。 其中除15和除2表示P D这两个值所占比例的多少,修改比例可以改变循迹的效果。


由于轮式机器人和履带机器人不一样,需要这两个比例也是不一样的,调节不同的参数可以使循迹达到最佳的效果(详细参数请参考示例程序)。