一台可被称作机器人的机器,必须要能感应环境并对其产生影响。这也是传感器做为机器人学关键的原因,而懂得使用传感器打造智能机器人,对有心打进机器人学圈子的各位而言至关重要。
在本文中,我们要认识的是称为「感知>判断>动作」(sense > think > act)的机器人运作。这个运作在机器人学的应用相当广泛,也是了解如何编写机器人程序一个很好的切入点。让我们开始吧!
选择传感器
我们有多少物理特性可以测量,就有多少传感器可以使用,但我们先从HC-SR04超音波距离传感器开始,因为它便宜、单纯,而且在机器人学中用途广泛(它还有很方便的Arduino数据库)。
定义机器人模型
这个传感器可以侦测距离,所以我们先做一个会闪避障碍物的简单机器人吧。这种机器人可以前进、后退,并定点旋转到任何方向。距离传感器就安装在机器人的正面。有了这个机器人的概念之后,让我们来看如何让它运作。
什么是感知、判断、动作?
感知、判断、动作是一种决策循环,可以用来为机器人解决很多问题,而且非常地简单。在我们的例子中,机器人必须感测前方是否有障碍物,接着判断是否可以前进、或是否应该转弯或后退,之后便会依照决定来动作。这样的逻辑可以套用在任何机器人上,适用任何传感器,几乎可以进行任何动作。
了把这种逻辑写成用来控制机器人的程序代码,我们必须描述得更加精确,让我们由以下的方法来创造简单的机器人行为模式:
1. 机器人感应前方3cm内是否有任何障碍物。
2. 若无障碍物,则前进。
3. 若有障碍物,则后退。
这很容易转换为程序代码,但我们可以预见这套逻辑会让机器人在遇到墙壁时卡在前后来回的循环。它会先前进直到侦测到墙壁,接着后退到侦测不到墙壁,然后再前进,不断重复。我们可以用以下的方式来改良它的行为模式。
1. 机器人感应前方3cm内是否有障碍物。
2. 若无障碍物,则前进。
3. 若有障碍物,则右转,再返回第1步。
机器人会重复这个循环,直到找出3cm内没有墙面的方向。
现在我们就有了一个可以确实让机器人避开障碍物的感知、判断、动作模型。这并不是很精密的模型,我们还可以增加很多细节来提升闪避障碍物的能力。
即使是简单的机器人,只要运用复杂的感知、判断、动作模型,还是可以设计出非常聪明的行为模式。这就是机器人学的精随:聪明的都在软件里!
我们目前的行为模式效率有点低,因为机器人要右转的时候需要先左转三次。现在我们在前面的三步骤后面加上第四步来改良行为模式:
4. 若有障碍物,则左转,再返回第1步。
1. 机器人侦测前方3cm内是否有障碍物。
2. 若无障碍物,则前进。
3. 若有障碍物,则左转并再次侦测。
4. 若无障碍物,则前进并重设循环。
5. 若有障碍物,则右转并再次侦测。
6. 若无障碍物,则前进并重设循环。
7. 若有障碍物,则机器人继续右转,直到无障碍物。
样一来机器人就会检查左右两边有没有墙面,代表它的移动会更有效率。我们现在可以发现连这样简单的行为,在描述上也开始变得复杂,但如果把这套行为模式想成一系列的感知、判断、动作循环,就更容易理解了。
就这样,我们已经把一套简单的感知、判断、动作行为模式建构成可以实际应用的障碍闪避程序。接下来要把这套行为模式转换成程序代码很容易,而我们也就可以开始做各种机器人学的尝试了。再加装更多距离传感器,甚至不同种类的传感器,便能让机器人的行为模式更加精密。只要记得把动作分解成感知、判断、动作的循环,就能做到很多事!