首页 理论教育让机器人具备周围环境感知能力

让机器人具备周围环境感知能力

【摘要】:可以说没有感知周围环境能力的机器人就像没有生命力的人。该结构实现了对传感器的循环检测,使机器人能够对周围环境的变化及时做出响应。机器人在出厂前,已经对所有的传感器都进行了检测,但是器件偏差和环境干扰是不可避免的。

在前面的例子中,机器人只是简单地执行程序预先设定好的指令,没有自主能力。它不知道前进的道路上有没有障碍,也不知道有没有完成编程者给的指令。例如,前面你让它走一个正方形,而它在中途撞到门上,它只会卡死在那里,不知道避开。可以说没有感知周围环境能力的机器人就像没有生命力的人。而所以称之为机器“人”,就是它拥有多种感知环境的手段,再配合它先进的“大脑”,才可能在实际环境中完成一定的任务,才能产生丰富的行为。因此,用好机器人的传感器是非常重要的。

本文的机器人传感器主要有碰撞传感器、光敏传感器、主动式红外测障传感器、旋转角度编码器和麦克风。其中麦克风是没有方向性的,能感知声音的强弱;光敏传感器能感知所在环境的光强;主动式红外测障传感器能感知前方80 cm以内的障碍物;碰撞传感器能感受到四个方向上的碰撞;旋转角度编码器不是用于探测外部环境,而是用于测量轮子旋转的角度数。

1.碰撞传感器的使用

下面结合“台球”程序来学习碰撞传感器的使用。

在该函数中有一个检测传感器的常用结构“while(1){检测传感器;做出响应;}”。该结构实现了对传感器的循环检测,使机器人能够对周围环境的变化及时做出响应。机器人做出的响应可以是改变运动方式,也可以是改变一个内部变量。在这个例子里,机器人响应来自外部四个方向上的碰撞,并相应地改变运动方向。程序刚开始运行时,机器人静止。这时你只要给它一个初始碰撞,它就开始不停地运动起来,在障碍物之间撞来撞去。你可以试着用脚去碰它,看一看它是不是像一个“足球”。如果你有不止一个机器人,那么试着改变程序对碰撞的响应方式,给每个机器人下载这样的程序,把它们摆在一起,让其中一个机器人从远处撞过来,那场面一定像打台球。

2.红外和光敏的使用

AS机器人的红外传感器可以探测到前方和左右两侧10~80 cm的障碍,就像它的一对“眼睛”。下面是一个利用红外传感器检测障碍物的一个程序。

这个例子实现了跟随前方物体。机器人可以跟随前方移动的人或物;如果撞上前方的物体,就停一停;如果前方红外系统探测范围内没有物体,就停下来。可以修改上面的程序,让机器人避开障碍物。给一个机器人下载避让程序,其他的机器人下载跟踪程序,在适当的条件下能看到,机器人一个跟着一个排成长龙,鱼贯前进。

光敏的使用和红外系统类似,所不同的是光敏只能感知左右两侧的明暗,和距离没有直接关系。调用“analog(photo_left);analog(photo_right);”就能返回两侧光敏的测量值。它在周围环境比较暗的情况下作用最明显。

要用好机器人传感器,需要对测量、采样原理有所了解。通常在使用传感器测量之前都有一个标定过程,设置测量值的参考点。机器人在出厂前,已经对所有的传感器都进行了检测,但是器件偏差和环境干扰是不可避免的。例如,可能会出现左右光敏对同样光强的测量值不一样,或采样出现异常值。所以在编程中,使用一些偏移量校正、去除测量噪声和避免误触发的方法还是很有用的。

3.编码器的使用

编码器测量的是轮子码盘转过的格数。通过编码器,可以知道轮子转过的圈数,从而大致知道机器人走过的距离,除以时间还可以知道实际转速。由于编码器是对自身采样,所以不可能依靠它判断机器人的精确位置。它可以用于短距离的定位和速度测量。