[0041] 移动机器人根据所搭载的传感器获取的信息,判断机器人所处的环境。以移动机器人搭载8个距离传感器为例(如图3)进行具体说明,8个传感器以环形分布在移动机器人上。8个传感器能够获取机器人周边的8个距离信息(d1、d2…d8),(其中d1、d2为位于机器人右前侧的传感器获得的距离信息,d3为机器人右侧的传感器获得的距离信息,d4为机器人右后侧的传感器获得的距离信息,d5为机器人左后侧的传感器获得的距离信息,d6为机器人左侧的传感器获得的距离信息,d7、d8为位于机器人左前侧的传感器获得的距离信息)。设定阈值t,当dx
[0042] 表1.环境类型与二进制传感器值对应关系表
[0043]
[0044] b)判断机器人与目标之间的距离是否为历史最小值
[0045] 机器人与目标间的历史最小值用变量MinDist保存(用CurDist初始化),通过CurDist和MinDist的对比,判断机器人与目标之间的距离CurDist是否为最小值。MinDist>CurDist时,为历史最小值(用变量IfMin=1表示),并将MinDist=CurDist。
[0046] c)判断目标、障碍物(或壁面)是否在机器人同一侧
[0047] 输入的角度Angle能判断出目标在机器人的左侧还是右侧。Angle>0,目标在机器人右侧;Angle<0,目标在机器人左侧。障碍物(或壁面)的位置能通过输入的环境Ci=1,...,11确定。C7=0表示左上侧环境,即判断障碍物位于机器人左侧(用变量IfLeft=1表示);C8=0表示右上侧环境,即障碍物位于机器人右侧(用变量IfLeft=0表示)。C1=0表示左墙环境或C4=0表示左墙角,判断墙面位于机器人左侧(用变量IfLeft=1表示);C2=0表示右墙或C5=0表示右墙角,判断障碍物位于机器人右侧(用变量IfLeft=0表示)。
[0048] 根据上述判断,即可确定目标、障碍物(或壁面)是否在机器人同一侧。当Angle>0,IfLeft=1时,目标、障碍物(或壁面)不在机器人同一侧(用变量IfSame=0表示);Angle>0,IfLeft=0时,IfSame=1;Angle<0,IfLeft=1时,IfSame=1;Angle<0,IfLeft=0时,IfSame=0。总结为以下公式
[0049]
[0050] d)多行为选择
[0051] 本发明定义了五种行为,避障(前方、左方、右方障碍物避障)、随墙(左侧、右侧壁面随墙及穿越通道)、趋向目标、原地调头、自转行为。分别用避障行为变量随墙行为变量 趋向目标行为变量
Comgr、原地调头行为变量Comde、自转行为变量 表示。
[0052] 当满足特定的条件时,选择相应的行为(即相应的行为变量值赋值1),并输出行为变量。
[0053] 当机器人处于Ci=0(i=9、10)环境时,判断环境类型为死区类型,机器人因前进方向受阻,选择原地调头行为
[0054] 当机器人处于C11=0环境时,判断为无障碍类型。此时若IfMin=1,选择趋向目标行为Comgr=1;若IfMin=0,选择自转行为
[0055] 当机器人处于Ci=0(i=6、7、8)环境时,判断为障碍物类型。此时若IfMin=0,选择相应的避障行为 若IfMin=1,判断目标、障碍物是否在机器人同一侧,当IfSame=1,选择相应的避障行为
当IfSame=0,选择趋向目标行为
Comgr=1。
[0056] 当机器人处于Ci=0(i=1、2..5)环境时,判断为壁面类型。此时若IfMin=0,选择相应的随墙行为 若IfMin=1,判断目标、壁面是否在机器人同一侧,当IfSame=1,选择相应的随墙行为
当IfSame=0,选择趋向目标
行为Comgr=1。
[0057] 多行为融合酶数值膜系统输出行为变量给执行系统。
[0058] 3)执行相应的行为
[0059] 执行酶数值膜系统输出的行为。
[0060] 4)判断移动机器人是否到达目标
[0061] 判断距离值CurDist是否等于0。等于0则表示移动机器人到达目标,则结束控制。不为0则移动机器人继续获取环境状态,确定执行行为,直到到达目标。
[0062] 本发明在PC机上进行了仿真,CPU为2.8HZ,4GB RAM,
软件平台MATLAB2012、Windows7OS和Webots。以移动机器人Epuck为例,Epuck机器人具有8个红外传感器,双轮差动驱动。
[0063] 参照附图4、5,本发明采取如下步骤:
[0064] 步骤1.以未知环境及机器人目标作为输入
[0065] 将移动机器人Epuck置于图5所示未知环境中,Epuck根据距离和角度计算公式得到当前Epuck与目标的距离Dcur和角度Angle,输入到图4多行为融合酶数值膜系统中。角度Angle通过变量Agr1、Agr2保存,Agr1=Angle,Agr2=-Angle。
[0066] 步骤2.移动机器人的控制
[0067] a)移动机器人所处环境类型的获取和确定
[0068] 环境模式分为11种:左墙、右墙、走廊、左墙角、右墙角、前墙、左上侧、右上侧、两侧、死角、无障碍物,用Ci=1,...,11表示(Ci=1,...,11=0分别处于对应环境模式:左墙、右墙、走廊、左墙角、右墙角、前墙、左上侧、右上侧、两侧、死角、无障碍物)。Epuck通过8个红外传感器获取机器人周边的8个距离信息(传感器值d1、d2…d8)。8个传感器以环形分布在移动机器人上(如图3),(其中d1、d2为位于机器人右前侧的传感器获得的距离信息,d3为机器人右侧的传感器获得的距离信息,d4为机器人右后侧的传感器获得的距离信息,d5为机器人左后侧的传感器获得的距离信息,d6为机器人左侧的传感器获得的距离信息,d7、d8为位于机器人左前侧的传感器获得的距离信息)。阈值70,当dx>70(x=1,2…8)时,认为传感器检测到障碍物,并将dx置1,dx<70,dx置0代表未检测到障碍物。(Epuck传感器的值随着障碍物的距离的增大而减小)。8个传感器处理后的值组成一组二进制传感器值,如:无障碍时为[0 0 0 0 0 0 0 0],将当前得到的二进制组与定义的11种环境二进制组(见表1)对比,判断出当前机器人所处环境Ci=1,...,11,并输出给图4酶数值膜系统。酶数值膜系统将输入的环境分为4个大类:墙面类型(左墙、右墙、走廊、左墙角、右墙角环境对应该类),障碍物类型(前墙、左上侧、右上侧环境对应该类),死区类型(两侧、死角环境对应该类),无障碍物类型(无障碍物环境对应该类)。分别用变量Ewa、Eob、Ede、Eno表示。此步骤由图4子膜JudgeEnvironmentModel完成,该子膜内,一共11条规则Pri=1,2..11,Case。规则1-5(即Pri=1,2..5,Case)将机器人所处环境划分为墙面类型(Ewa=1),规则6,7,8划分为障碍物类型(Eob=1),规则9,10划分为死区类型(死区类型直接对应原地调头行为,故该处实现直接分配Comde=1),规则11划分为无障碍物类型(Eno=1)。
[0069] 此处以规则9说明规则的执行,以后规则执行方式均相同。规则9为Pr9,Case:C9+2(Ec→)1|Comde+1|ET。Pr9,Case为规则名字,用冒号与表达式分开,C9+2为值产生规则,1|Comde+1|ET为值分配规则,括号内为酶变量Ec(当酶变量大于值产生规则中某一变量时,该规则才能激活执行;此处需Ec>C9)。当Ec>C9时,规则9激活,值产生规则产生值C9+2,值产生规则执行后,会将产生规则中的变量清0(即C9会被清0),产生的值由分配规则分配,C9+2分为2份,一份给变量Comde,一份给ET,即Comde=(C9+2)/2,ET=(C9+2)/2。
[0070] b)判断机器人与目标之间的距离是否为历史最小值
[0071] 此步骤在图4子膜JudgeDistanceIfMinimal中完成。规则1判断是否为历史最小值,规则2将历史最小值输出保存。 规则1,2执行,Dmin=1表示为历史最小值,Output=Dcur。
[0072] c)判断目标、障碍物(或壁面)是否在机器人同一侧
[0073] 判断目标、障碍物是否在机器人同一侧由图4子膜JudgeRobotStateObstacle中规则2-7,10,11完成。
[0074] 规则4,5判断目标与机器人的位置。Agr1<0(即Angle<0)时,酶变量Ea[0]>Agr1,激活规则4, 表示目标在机器人左侧。Agr2<0(即Angle>0)时,酶变量Ea[0]>Agr2,激活规则5, 表示目标在机器人右侧。
[0075] 规则Pr2、3,obstaclen用来判断障碍物与机器人间的位置关系。当环境模式C7=0(左上侧)时,障碍物位于机器人左侧,激活规则Pr2,obstaclen:变量Oleft[-1]=1,Oright[-1]=0;环境模式C8=0(右上侧)时,障碍物位于机器人右侧,激活规则Pr3,obstaclen:变量Oright[-1]=1,Oleft[-1]=0。
[0076] 规则Pr6.7.10.11,obstaclen通过 Oleft、Oright的值,得出障碍物、目标与机器人间的关系。当Oleft=1(障碍物在机器人左边), (目标在机器人右边)时,表示障碍物在机器人左侧目标在右,激活规则Pr6,obstaclen:酶变量EOGlr=2;当Oright=1, 时,表示障碍物在右目标在左,激活规则Pr7,obstaclen:酶变量EOGrl=2;当Oleft=1, 时,表示障碍物、目标都在左,激活规则Pr10,obstaclen:酶变量Eogleft=2;当Oright=1,时,表示障碍物、目标都在右,激活规则Pr11,obstaclen:酶变量Eogright=2。
[0077] 判断目标、壁面是否在机器人同一侧由JudgeRobotStateWall中规则2-7,10,11完成。原理相同,故不再赘述。
[0078] d)多行为的选择
[0079] 本发明定义了5种行为,避障(前方、左方、右方障碍物避障)、随墙(左侧、右侧壁面随墙及穿越通道)、趋向目标、原地调头、自转行为。分别用避障行为变量随墙行为变量 趋向目标行为变量Comgr、原地
调头行为变量Comde、自转行为变量 表示(如图4)。行为变量等于1,表示选择该种行为变量。
[0080] 当机器人处于Ci=0(i=9、10)环境时,判断环境类型为死区类型,机器人因前进方向受阻,选择原地调头行为 此部分由图4子膜JudgeEnvironmentModel中规则9或10完成。变量ET=1,终止膜系统的进化计算,输出
[0081] 当机器人处于C11=0环境时,判断为无障碍类型(Eno=1)。此时若Dmin=1,选择趋向目标行为Comgr=1;若Dmin=0,选择自转行为 此部分由图4子膜SelectGoalReachingCase完成。若Dmin=1,规则1无法执行,进而规则2无法执行,规则3无酶变量故每次进化都会执行, 进而规则4执行,Comgr=1,ET=1表示终止膜系统的进化计算。若Dmin=0,规则1,2执行, ET=1。
[0082] 当机器人处于Ci=0(i=6、7、8)环境时,判断为障碍物类型(Eob=1)。图4子膜SelectObstacleAvoidanceCase和JudgeRobotStateObstacle判断选择何种行为。若Dmin=0,SelectObstacleAvoidanceCase中规则1执行 进而规则2或3或4执行,选择相应的避障行为 规则5执行后 使得
JudgeRobotStateObstacle中规则无法执行。若Dmin=1,SelectObstacleAvoidanceCase中规则1无法执行,进而规则2,3,4均无法执行,规则5执行后 如果目标、障碍物在机器人同一侧(Eogleft=2或Eogright=2),规则12或13激活, 或 如果目标、障
碍物不在机器人同一侧(EOGlr=2或EOGrl=2),规则8或9激活, ET=1。
[0083] 当机器人处于Ci=0(i=1、2..5)环境时,判断环境类型为壁面类型(Ewa=1)。图4子膜SelectWallFollowCase和JudgeRobotStateWall判断选择何种行为。原理同避障情况,故不再赘述。
[0084] 步骤3.执行相应的行为
[0085] 执行膜系统输出的行为。
[0086] 步骤4.判断移动机器人是否到达目标
[0087] 判断距离值Dcur是否等于0。等于0则表示移动机器人到达目标,则结束控制。不为0则移动机器人继续获取环境状态,确定执行行为,直到到达目标。
[0088] 从图5的实验结果可以看出相较于模糊逻辑控制,多行为融合膜控制(MBCMC)行走路径更短(图5左),且能摆脱模糊逻辑控制无法摆脱的死区(图5右)。