传感器
在颜色模式中,颜色传感器可识别七种颜色-黑色、蓝色、绿色、黄色、白色和棕色,加上无颜色。传感器区别不同颜色的能力意味着您可对机器人编程来分类彩色球或模块,说出各种检测到的颜色,或见到红色即停止动作。
在反射光强度模式中,颜色传感器测量从红灯(即发光灯)反射回来的光强度。该传感器测量范围为0(极暗)到100(极亮)。这意味着您可对机器人编程,使其在一个白色表面上来回移动,直到检测到一条黑线或解释颜色编码识别卡。
在环境光强度模式中,该颜色传感器测量从周围环境进入到窗口的光强度,如太阳光或手电筒的光束。该传感器测量范围为0(极暗)到100(极亮)。这意味着您可对机器人编程来设定早间闹钟,或在灯灭时停止动作。
该颜色传感器采样速率为每秒1kHz。
当处于“颜色模式”或“反射光强度模式”时,为求最精确,传感器必须角度正确、靠近但不接触到正在检测的物体表面。
EV3目前的颜色传感器内部使用的是ST的一款低功耗单品机,并不是专用的颜色传感芯片。在用到颜色识别功能的时候,常会出现颜色识别错误的问题。作为前端的传感器一旦出现识别不准确的现象,会直接影响后续机器的动作,而对初学这方面知识的朋友造成很大困扰。这篇微博的内容就是讨论一下几种避免颜色错误识别的几种方法。
首先来看一下这个颜色传感器的工作原理。当她工作在颜色识别的工作模式下时,她的颜色发光管通过集成在一起的红、绿、蓝三个LED,利用光的三色原理,交替发出7种不同颜色的光,然后通过传感器上的接收二极管,测量被测物体反射光的强度,当反射光最强时,就认为此时发出的颜色光就是物体的颜色。
例如,在她的发射LED交替发出7种不同颜色光的时候,同时也在不断地接收反射光的强度。而当发出红色光的时候,测量到此时物体的反射光最强,那么就认为这个被测量的物体是红色。
黑色物体因为吸收了所有可见光,所以当传感器交替发完7种不同颜色的光以后,比较每一种颜色所接收的反射光强度,数值都非常弱,同时与测量的环境光比较后,则认为被测物体是黑色。
明白了这个颜色传感器工作原理,我们再来看颜色识别错误的问题和几种解决方法:我们用蓝色来举例,首先被测色块尽可能靠近颜色传感器,以减少外界环境光源的干扰,但不要完全贴在传感器上,留给物体反射回传感器的一个距离空间,一般5mm左右就可以。不要移动被测色块,再看测量结果。
1. 如果一个蓝色的色块,颜色传感器总是读出绿色,或者读错的概率太大,说明这种蓝色的色调不适合用EV3的颜色传感器。建议换一种不同色调的蓝色,最好用Lego的蓝色积木块。因为EV3的颜色传感器在设计时,是以Lego自己的颜色为标准。
2. 如果一个蓝色的被测色块,有时会被识别成绿色,但多数情况被正确识别成蓝色。这种情况可以用数字均值滤波的方法,去除掉干扰。比如当第一次读出蓝色后,延时再读一次,再判断第二次读出的是否还是蓝色,如果两次读出不一致,则忽略不计。直到连续读出同一颜色结果,则认为此颜色正确。具体测量采样的频率和次数,根据实际应用来定。我在颜色分拣传送带的程序里,根据传送带的速度,和色块尺寸,用了两次采样,间隔0.5秒。举例如下:
3 .在实际应用中,我们多数情况对要识别的色块,识别到了即可,不需要对已经识别到的色块再反复识别。比如对传送带上经过的色块计数。经过一个色块就记一次数,如何控制检测计数器,也是会经常用到的。我比较常用的方法是经过数字滤波后,确认正确识别到了物体后,计数器操作一次,同时作‘本次已操作过’标志。保证对同一物体不再重复运算操作。直到传感器采样到另一种颜色后,比如黑色或无色或其他环境颜色,再清除“本次已操作过”标志。具体程序并不复杂,大家可自己尝试。
全部0条评论
快来发表一下你的评论吧 !