自主吸尘机器人的视觉系统主要采用超声波传感器、红外传感器、碰撞传感器以及CMOS图像传感器等。自主吸尘机器人主要应用超声波传感器和红外传感器作为接近视觉的传感器检测障碍物。CMOS图像传感器主要用于全局信息的获取,在自主吸尘机器人的障碍物检测、基于电子地图的定位以及路径规划等方面都有很好的应用前景。碰撞传感器作为辅助传感器,当其他传感器失效时,可通过与障碍物的接触感知障碍物的存在。但目前大多数视觉系统由单一传感器构成,对环境信息的感知不全面。为了获得更加全面的障碍物信息,更有效地实现实时避障,本系统融合了超声波传感器、红外传感器及碰撞传感器,采用了基于BP神经网络的多传感器融合算法。神经网络能够根据传感器的输入实时输出,完成避障行为,从而使机器人更加自主和健壮地行走。
传感器布置及硬件电路实现
超声波传感器相对于光学传感器(如红外传感器)在障碍物检测上有突出的优点:超声波对色彩不敏感,能够识别深颜色的障碍物;对光照度不敏感,适于识别透明、半透明的物体(如窗户、玻璃门等)。
超声波传感器的角度特性不好,发射角是较宽的锥形角(典型值为15~30锥度),这意味着不能准确测得障碍物的位置。超声波传感器的另一个问题是镜面反射:当超声波束以较浅的角度射向光滑平面时发生镜面反射,波束向外反射而接收不到反射波。此外,超声波传感器还存在着窜绕信号,且易受环境温度、湿度等条件的影响。
红外传感器是近距离传感器,其探测视角小、方向性好,与超声传感器固有的锥形波相比,红外传感器具有角度分辨力高的优点,并且能在较短的时间内获得大量的测量数据。红外传感器的缺点为:易受户外光线的干扰;对障碍物的颜色敏感,深颜色特别是黑色识别效果不好;玻璃等光滑表面对红外线的反射特性影响很大。
综合以上分析可知,单一传感器存在有效探测范围小、数据可靠性低等缺点,很难得到好的避障效果。因此,自主吸尘机器人的视觉系统同时采用了超声波传感器和红外传感器,并且辅以碰撞传感器,利用各种传感器的信息互补,能够很好地提供机器人周围的障碍物信息。由于本系统的目标是廉价有效地避障,因此没有采用CMOS图像传感器。
如图1所示。由于自主吸尘机器人主要的避障行为是前进、停顿、转弯,因此采用7组传感器均布在机器人的正前方,覆盖180°的半圆范围,以充分探测障碍物。其中,第1、2、3、4组传感器由一对超声波传感器和一对红外传感器组成,其他几组由一对红外传感器组成。每组传感器共同提供某一时刻特定方位的障碍物信息。由于右侧需布置机器人自主回归电路,故减少一对超声波传感器。
在自主吸尘机器人的实时避障过程中,不需要测量距障碍物的精确距离,而只需检测超过门槛强度的回波。回波的强度与距障碍物的距离及障碍物的性质有关。若检测到超过门槛强度的回波时,则认为存在障碍物,需要执行相应的避障策略。门槛强度根据机器人行走过程中认定的最近障碍物的距离而定,一般可取最近障碍物的距离为2~5cm。对超声波传感器,有效回波比窜绕信号要大得多,因此设置合适的门槛强度可以屏蔽掉窜绕信号的影响。
硬件电路主要包括信号发射电路、信号接收电路、信号放大电路、门槛强度比较电路、鉴频电路以及路选电路。硬件电路框图如图2所示。
基于神经网络的传感器融合技术
神经网络多传感器融合算法在自主机器人避障以及自主行走应用上具有独特优势。本系统采用包含输入层、隐层和输出层三层结构的BP神经网络,如图3所示。
BP神经网络决定了传感器输入与行为模式输出之间的通信,通过对连接权值的计算得出与输入相对应的输出。训练过程以随机的连接权值开始,BP神经网络不断比较实际输出与期望输出,通过调整连接权值减少两者之间的差值,直至输出期望值,同时得到连接权值。
BP神经网络的输入层为图1所示的7路传感器输入信号,隐层有3个单元,每个隐层单元根据7路输入的加权计算得到单一的实值输出。然后这3个隐层单元的输出作为第二层4个输出单元的输入。输出层有4路输出信号,每路输出信号对应机器人特定的运动行为,分别表示左转(L)、停顿(S)、前进(F)以及右转(R),或者是两种行为的组合,如前左转、前右转。
传感器的输入信号以及送到电机的输出信号都以二进制表示,并通过简单的开关控制电机。其中,0、1、2三路输入信号检测左侧是否存在障碍物,第3路输入信号检测正前方的障碍物信息。4、5、6输入信号检测右侧的障碍物信息。仅检测到左(右)侧障碍物输出前右(左)转指令;检测到左(右)侧及前方障碍物输出右(左)转指令;仅检测到前方障碍物及同时检测到左侧和右侧障碍物则输出应急停顿指令;无障碍物信号输出前进指令。另外碰撞传感器检测到碰撞信号也输出停顿指令,处理器收到停顿指令后采取相应的策略。
每个输出值是0和1之间的某个实数,对应于预测相应运动行为的置信度。可以根据置信度对输出进行简单处理,即当输出超过0.5时,则认为输出为1,否则认为输出为0。下面给出BP神经网络的算法推导。
设输入层为M,隐层为I,输出层为P,对应的小写字母表示任一信息单元。输入层与隐层的突触权值用Wmi表示,隐层与输出层的突触权值用Wip表示。
神经元的输入用u表示,激励输出用v表示,u、v的上标表示层,下标表示层中的某个神经元。对应于任一训练样本Xk=[xk1,xk2,…,xkm]T的实际输出为Yk=[yk1,yk2,…,ykp]T,期望输出dk=[dk1,dk2,…,dkp]T。设n为迭代次数,网络输入训练Xk,由工作信号的正向传播过程可得:
输出层的第p个神经元的误差信号为:
ekp(n)=dkp(n)-ykp(n)
定义神经元P的误差能量为,
则输出层所有神经元的误差能量总和。
在误差信号反向传递过程中,逐层修改连接权值。
下面计算误差信号的反向传播过程。
(1)隐层I与输出层P之间的权值修正量。
根据梯度下降和Delta法则,Wip(n)的修正量为:
其中,h是学习步长,为局部梯度。
当激励函数为Sigmoid函数,即
,
得
则下一次迭代时隐层J上任一节点与输出层P上任一节点之间的权值为:
Wip(n+1)=Wip(n)+"Wip(n)
(2)隐层I上的任一节点与输入层M上的任一节点的权值修正量。
与(1)中的推导类似,
其中:
则在下一次迭代时隐层I上任一节点与输入层M上任一节点之间的权值为:
BP算法框图
图4给出了BP神经网络算法的程序流程图。在执行算法之前,首先要设置变量和参量。其中:Wmi(n)为第n次迭代时输入层与隐层I之间的权值向量;Wip(n)为第n次迭代时输出层与隐层I之间的权值向量;n为迭代次数,K为训练样本的下标,Maxloop为最大迭代次数,Maxtrain为训练样本的总数,ξ为能量最小误差。
仿真结果
用FoxPro建立输入样本的数据库,用VC编程训练网络。训练时用了72组输入样本,并且循环4000次训练网络,训练时间15s。表1给出了部分训练样本的示例(P0表示样本0,以下同)。
表1 训练样本示例
初始权值为-0.01~0.01的随机数值。下面给出了网络训练的权值输出。
输入层与隐层权值
0.251,-9.187,2.347
0.231,-9.225,2.373
0.266,-9.213,2.331
4.722,-1.479,-1.470
0.214,2.520,-9.067
0.293,2.512,-9.013
0.275,2.442,-8.890
输出层与隐层权值
-11.843,-5.154,-4.722,6.348
9.970,10.696,-10.990,-11.535
9.938,-9.617,10.613,-12.470
为了验证训练权值的正确性与强壮性,对大量的输入样本(包括没有经历训练过程的样本)进行实验,网络产生相匹配的输出。实验结果表明,网络的训练是成功的。
部分实验数据如下:
输入数据组数:6
第0组输入数据:0000000
第0组输出为:1000
第1组输入数据:0001000
第1组输出为:0001
第2组输入数据:1101000
第2组输出为:0010
第3组输入数据:1110000
第3组输出为:1010
第4组输入数据:0001100
第4组输出为:0100
第5组输入数据:1101001
第5组输出为:0001
最后利用Matlab提供的Neural Network工具箱,对训练网络的输出和相应的期望输出进行衰退分析,以测定训练网络的性能。图5为前面训练所用的72组输入数据产生的输出A和期望输出T的衰退分析图。其中虚线为最佳线性拟合曲线A=T,实线为72组输出A与相应的期望输出T的线性拟合。由图5可以看出,拟合效果理想,因此训练网络的性能可靠。
实际应用过程的思路为:将BP网络训练的权值移植到机器人的处理器中;7组传感器按顺序轮流工作,每循环一次得到一组输入作为神经网络的输入;通过神经网络计算得到匹配的实时输出;行走电机根据输出信号作出相应的避障行为。
本文将超声波传感器和红外传感器融合进自主吸尘机器人的视觉系统,从而获得相对于单一传感器更加准确和全面的障碍物信息。采用了基于神经网络的多传感器信息融合算法,通过网络训练,机器人能够对训练过程中没有经历的实际情况做出合理的反应。这种算法的鲁棒性和容错性很强,能够适应自主吸尘机器人非结构化的工作环境。