本发明属于多机器人任务分配领域,具体涉及一种基于vdsom算法的多机器人任务分配方法。
背景技术:
近年来,随着现代工业和制造技术的智能化发展进程,人类社会对机器人系统的需求也越来越高。尤其是在生产生活中,出现了越来越多的具备重复性、复杂性、危险性较高的挑战人类极限的工作,为了降低人类的劳动强度、调高工作效率,从20世纪至今科学家一直在研究如何使用机器人代替人类工作。但是,由于机器人的工作环境的复杂性不断地提高,需要机器人的领域也越来越多,单个机器人已经无法满足人类的需求,机器人的分析与设计变得愈加的困难。因此,采用多个机器人组成一个多机器人系统,通过协同工作完成复杂的任务,成为了机器人领域研究的重点课题之一。
从目前的研究成果可知,所有的机器人探索同一环境并不一定能够快速的实现环境中任务快速探索的目标。在不同的环境状态下,机器人如何根据环境的实际状态合理地、动态地产生不同的协作模式,能够大大的增加机器人的协作效率。多机器人协作完成任务探索,自组织任务分配不仅能够增加系统的灵活性和适应性,还能够大大的减少多机器人系统因为不合理的协作方式而产生的过多的总能耗,具有一定的研究价值。
任务分配体现了多机器人系统的智能性和合理性,是多机器人系统实现对未知环境任务探索的基础。分配机制是否合理直接影响多机器人系统中各个成员的自身发挥潜力,直接影响整个系统任务完成的效率。之前的多机器人任务分配方法主要集中在基拍卖、博弈论、遗传算法等,但随着机器人数量的增加,任务数量的增加,系统性能明显降低,容错性较差,不适用于动态的任务分配。
总结现有研究成果发现,目前多机器人系统任务分配存在以下几个问题需要解决:
(1)在二维的工作空间中不存在障碍物,因此多机器人的任务分配算法不具备实际效益;
(2)没有考虑机器人移动的方向角问题,在实际环境中原始的som算法直接使用机器人的当前位置与环境中目标位置的偏差来规划机器人的路径,这可能会出现横穿障碍物的情况,以至于机器人无法到达相对应的任务目标点,从而无法顺利完成任务分配。
技术实现要素:
本发明针对机器人的移动方向角偏差问题与实际分配环境中存在障碍物的情况,提出了一种基于vdsom算法的多机器人任务分配方法。
一种基于vdsom算法的多机器人任务分配方法,该方法包括以下步骤:
步骤1:竞争获取获胜神经元,主要是竞争层神经元,即机器人,对输入层输入的任务目标点做竞争,确定出那个机器人来执行这个任务;
步骤2:计算邻域函数,用来确定获胜神经元的邻域神经元;
步骤3:路径规划,再一次迭代中,确定好某个任务目标点的获胜机器人及其邻居机器人后,邻域范围内的所有机器人按照路径规划算法,在避开障碍物的前提下,向目标点移动一定的距离;
步骤4:修改获胜者及其邻居权重,在每次迭代的过程中,修改邻域内所有神经元的权重值。
所述步骤1包括以下步骤:
步骤1.1:初始化数据,对竞争层即输出层的各神经元权重随机赋值,在输入层中输入任务目标点的坐标,并建立初始化优胜领域,之后给学习率和变化率赋初值,som网络形成;
步骤1.2:随机将一个输入神经元即任务目标点的坐标输入到神经网络的输入层;
步骤1.3:得到竞争层的权重值即机器人的位置坐标;
步骤1.4:从第k组输出神经元中选出的第m个神经元是获胜神经元;
步骤1.5:得到某一时刻某两个神经元之间的加权距离。
步骤1.1所述的任务目标点的坐标为:
ti=(xi,yi)
步骤1.3所述的竞争层的权重值即机器人的位置坐标如下表示:
wkm=(wkmx,wkmy),k=1,2,3,...,k;m=1,2,3,...,m
其中,wkm是第k组输出神经元中第m个神经元的权向量,也就是第k个机器人在第m次迭代后的位置坐标。
步骤1.4所述的第m个神经元选择为:
其中u是在一次迭代中还没有成为赢家的一系列神经元。
所述步骤2包括以下步骤:
步骤2.1:确定获胜神经元和邻域神经元之间的影响,获胜神经元受到的影响力越大即强度越大,与获胜神经元相邻的神经元所受到的影响力就越低;
步骤2.2:判断获胜神经元周围的神经元的影响力,如果影响力已经降为零,则说明该神经元已不是获胜神经元的邻域神经元,即称为非邻域神经元;
步骤2.3:确定当邻域半径大于获胜神经元与某个神经元之间的距离时的邻域函数。
步骤2.3所述的邻域函数表示为下式:
f(e,h)=0
获胜神经元的邻域函数为:
在工作区域内,获胜神经元的邻域是一个圆形,其圆心的坐标是获胜神经元的位置坐标,随着更新迭代的过程,圆心一直在变化,直到该获胜神经元到达了与其相对应的任务目标点;其中,f(dc,h)∈[0,1],e代表邻域内获胜神经元m与邻域内其它神经元之间的距离,em(t)代表获胜神经元m的优胜邻域,γ是邻域半径,h(t)=εt×h0,t是迭代次数,ε是决定计算时间的变化率,ε越大,计算时间越长,ε越大,机器人运动的总路径就越短,h0是一个常数。
所述步骤3包括以下步骤:
步骤3.1:假设wk1=(wk1x,wk1y)为机器人当前所处的位置,获得机器人从当前位置到其对应的目标位置的矢量
步骤3.2:得到当前位置到下一个位置的移动方向角;
步骤3.3:由于假设机器人从当前位置出发,下一个位置由八个方向选择,将区间r=(-π,π]平分为8个区间;
步骤3.4:这八个动作形成了一组矢量集,用a(w)表示坐标w处可选择的矢量集;
步骤3.5:给每个方向角θ对应一个矢量标号,得到机器人方向选择规则;
步骤3.6:若根据以上步骤,机器人不能顺利达到目标,即机器人碰到障碍物,则修改方向角θ;
步骤3.7:设置方向角θ的修改规则;
步骤3.8:在运动方向确定后,估算出机器人的下一个位置坐标gi。
步骤3.2所述的当前位置到下一个位置的移动方向角表示为下式:
步骤3.3所述的将区间r=(-π,π]平分为8个区间表示为:
步骤3.4所述的用a(w)表示坐标w处可选择的矢量集,矢量集选择规则为:
a(w)={1,2,3,4,5,6,7,8}
步骤3.5所述的给每个方向角对应一个矢量标号,即,与矢量1,2,3,4,5,6,7,8相对应的机器人的移动方向为e,ne,n,nw,w,sw,s和se,机器人的方向选择规则为,首先判断步骤00302所得方向角θ属于步骤00303的那个区域角,其次通过步骤00304选择那个矢量标号,最后通过标号对应的方向确定下一步行驶方向;
步骤3.6所述的修改方向角θ,修改后的方向角θ表示为:
其中,β∈[-3,4]且β∈z;
步骤3.7所述的设置θ的修改规则,规则为:
(1)若机器人的移动方向为矢量1,则β=0;
(2)若机器人遇到障碍物且其任务目标位于障碍物的左上方,则判断机器人当前位置到障碍物上方最高点的矢量角属于步骤00303中哪个区间。若属于r2则机器人移动方向为矢量2,即β=1,若属于r3则机器人移动方向为矢量3,β=2;
(3)其余障碍物方向同理(2),只需改变相对应的β即可;
步骤3.8所述的估算出机器人的下一个位置坐标gi,假设两个横向单元间的距离为c,c为一常数,下一个位置坐标gi表示为下式:
所述步骤4包括以下步骤:
步骤4.1:当机器人与目标点的加权距离小于等于一个固定的最小距离d0时,修改权重值为wkm(t)=ti;
步骤4.2:当机器人与目标点的加权距离大于最小距离d0时,修改权重值为wkm(t)=wkm(t-1)+ηe-f(gi-wkm(t-1))。
结合步骤4.1和步骤4.2,总结权值更新函数,为:
其中,d0是一个常数也是一个终止条件,若dikm≤d0则认为输出神经元的权值(机器人)已经到达了其任务目标点,将该机器人的坐标置为其相对应的任务目标点的坐标,学习率η有一下规律,由以下公式给出:
t↑→η↓,f↑→η↓;如η(t,f)=η(t)e-f。
本发明的有益效果在于:
这种方法不仅有效地实现了多机器人的任务分配,同时也有效地避开了环境中的障碍物,从而使多机器人任务分配更具备实用性和高效性。本发明所提出的多机器人任务分配主要解决两类任务分配问题:其一,在任务环境中,每个机器人只执行一个任务,机器人数量与任务数量相等;其二,在任务环境中,机器人可以执行一系列任务,即机器人数量小于任务数量。发明主要包括:初始化神经网络,得到某一输入神经元的获胜神经元(机器人),以确定该任务目标点是由那个机器人执行;设计一个邻域函数,用来确定在邻域范围内受获胜神经元影响的输入神经元;控制获胜神经元和其相邻神经元向目标的位置坐标移动,根据矢量方向方法,在成功避开环境中障碍物的前提下,向目标点移动一定距离。修改权值,以确定下一次的获胜神经元。
附图说明
图1为基于vdsom算法的多机器人任务分配方法总流程图。
图2为基于vdsom算法的多机器人任务分配方法详细流程图。
图3为som神经网络图。
图4为机器人可选的八个区域和八个方向图。
图5为本方法中vd流程图。
具体实施方式
下面结合附图对本发明做进一步描述。
在多机器人系统中,经常会遇到多个机器人之间的协调与合作问题。无论从单个机器人角度出发还是从多个机器人角度出发,在完成所分配的任务前提下,消耗的能量最少,是多任务分配研究的主要问题。多机器人任务分配和路径规划是研究如何有效的分配任务目标,以便于移动机器人能够沿着较优的路径访问在有障碍物的工作区域内的所有目标。多机器人系统任务分配的目标是区域内的所有目标点都有机器人到达,且总代价尽可能小。对于单个机器人而言,其代价是从起始点到所经过的所有目标点的距离来衡量,而对于整个多机器人系统而言,总代价是所有单个机器人代价的总和。为了完成对工作区域中所有目标的访问,首先是考虑将任务目标分配给不同的移动机器人;其次,任务分配完成后,需要进行路径规划,由于工作区域内存在障碍物,因此每个机器人都必须具有避障的能力,能够成功避开区域内的障碍物;最后,移动机器人向目标运动的过程中,应避免发生位移跳变,进而保证每个移动机器人的路径规划都能实现。所有的任务即目标点都被机器人访问过后,任务分配完成。为了简化描述,将工作空间用二维平面表示。这里假设移动机器人的所有性能形同,即具备相同的导航、避障、位置识别功能,且所有机器人的能量储备相同,能量消耗速率也相同。因此,只需要研究如何动态的进行任务分配即可,即如何应用vdsom进行多机器人任务分配,并使其总工作量最小。本发明的详细流程图如图2。
假设工作区域内随机分布k=(1,2,3,...,k)台机器人和m=(1,2,3,...,m)个任务,多机器人系统的som模型有两层神经元,如图3:1)输入层包含所有的任务目标点,共有m个,所有任务目标点的坐标依次排列以构成神经网络的输入数据集合;2)竞争层共包括km个神经元,若工作区域用w表示,则这km个神经元的表示为(w11,w12,...,w1m,wk1,wk2,...,wkm),代表着k台机器人的坐标和相对应的运动轨迹。由于共有m个任务目标点和k台机器人,故机器人将这m个任务的分配和路径规划的结果分成k组。输出神经元的初始权值是由机器人的初始位置坐标来初始化。任务分配完成后,m个任务目标点从km个输出神经元中选出m个神经元,即共有m个获胜神经元,且这m个获胜神经元是由k台机器人组成。因此,k台机器人形成了k条路径,从起始位置出发,经过若干个目标,最终k台机器人访问的目标和为m个。
基于上述问题描述,为了实现本发明的目的,本发明采用如下步骤:
步骤001.竞争获取获胜神经元,主要是竞争层神经元(机器人)对输入层输入的任务目标点做竞争,用以确定出那个机器人来执行这个任务。
步骤002.计算邻域函数,用来确定获胜神经元的邻域神经元。
步骤003.路径规划,再一次迭代中,确定好某个任务目标点的获胜机器人及其邻居机器人后,邻域范围内的所有机器人按照路径规划算法,在避开障碍物的前提下,向目标点移动一定的距离。
步骤004.修改获胜者及其邻居权重,在每次迭代的过程中,修改邻域内所有神经元的权重值。
所述步骤001具体包括如下步骤:
步骤00101.初始化数据,对竞争层即输出层的各神经元权重随机赋值,在输入层中输入任务目标点的坐标,并建立初始化优胜领域,之后给学习率和变化率赋初值,som网络形成。
步骤00102.随机将一个输入神经元即任务目标点的坐标输入到神经网络的输入层。任务目标点的坐标为:
ti=(xi,yi)
这样做的目的是将数据集以随机输入的顺序策略影响算法的鲁棒性,减少其对初始工作空间和数据集的依赖。
步骤00103.竞争层的权重值即机器人的位置坐标如下表示:
wkm=(wkmx,wkmy),k=1,2,3,...,k;m=1,2,3,...,m
wkm是第k组输出神经元中第m个神经元的权向量,也就是第k个机器人在第m次迭代后的位置坐标。
步骤00104.从第k组输出神经元中选出的第m个神经元是获胜神经元。第m个获胜神经元选择为:
其中u是在一次迭代中还没有成为赢家的一系列神经元。
步骤00105.某一时刻某两个神经元之间的加权距离如下表示:
其中,
由于竞争获胜的神经元不仅仅是其与输入神经元的欧氏距离最小的神经元,还是在该时刻l最小的神经元,所以,其竞争过程需要由二者共同制约。当获胜神经元被选出后,下一步是设计邻域函数,进而确定下一次的获胜神经元。对于步骤002,具体包括以下步骤:
步骤00201.确定获胜神经元和邻域神经元之间的影响,获胜神经元受到的影响力越大即强度越大,与获胜神经元相邻的神经元所受到的影响力就越低。
步骤00202.判断获胜神经元周围的神经元的影响力,如果影响力已经降为零,则说明该神经元已不是获胜神经元的邻域神经元,即称为非邻域神经元。
步骤00203.确定当邻域半径大于获胜神经元与某个神经元之间的距离时的邻域函数,此时邻域函数为:
f(e,h)=e2/h2(t)
步骤00204.确定当邻域半径小于或等于获胜神经元与某个神经元之间的距离时的邻域函数,此时邻域函数为:
f(e,h)=0
将步骤00203和步骤00204结合可知,获胜神经元的邻域函数为:
在工作区域内,获胜神经元的邻域是一个圆形,其圆心的坐标是获胜神经元的位置坐标,随着更新迭代的过程,圆心一直在变化,直到该获胜神经元到达了与其相对应的任务目标点。影响力的大小决定了在某次迭代过程中邻域神经元权重调整的大小。其中,f(dc,h)∈[0,1],e代表邻域内获胜神经元m与邻域内其它神经元之间的距离,em(t)代表获胜神经元m的优胜邻域,γ是邻域半径,h(t)=εt×h0,t是迭代次数,ε是决定计算时间的变化率,ε越大,计算时间越长,ε越大,机器人运动的总路径就越短,h0是一个常数。
为了克服传统的som算法的缺点,使移动机器人能够自动避开障碍物并且避免步长跳变的问题,这里引入一个矢量方向的概念对som的权值进行调节,提出了一种矢量方向自组织映射算法vdsom。在未知环境下,自主机器人能通过它的传感器获得局部位置信息。机器人需要确定一个策略,以帮助在避开环境中障碍物的情况下到达任务目标点。对于步骤003,假设机器人从当前位置出发,可到达其相邻的八个位置中的一个位置,八个位置基于八个方向,方向包括东(e)、东南(ne)、南(n)、西南(nw)、西(w)、西北(sw)、北(s)和东北(se),其具体表示如图4。在环境中,机器人的位置可以看成是一个统一的网格,通过这样一种表示方法,障碍物是机器人不能到达的单元,而剩余单元机器人均可访问。步骤003的详细流程图如图5,具体步骤为:
步骤00301.假设wk1=(wk1x,wk1y)为机器人当前所处的位置,则机器人从当前位置到其对应的目标位置的矢量为
步骤00302.当前位置到下一个位置的移动方向角为:
步骤00303.由于假设机器人从当前位置出发,下一个位置可由八个方向选择,因此将区间r=(-π,π]平分为8个区间,分别为:
步骤00304.这八个动作形成了一组矢量集,用a(w)表示坐标w处可选择的矢量集,其矢量集选择规则为:
a(w)={1,2,3,4,5,6,7,8}
步骤00305.与矢量1,2,3,4,5,6,7,8相对应的机器人的移动方向为e,ne,n,nw,w,sw,s和se,其表示如图4。在图4中每个方向角对应一个矢量标号,故机器人的方向选择规则为,首先判断步骤00302所得方向角θ属于步骤00303的那个区域角,其次通过步骤00304选择那个矢量标号,最后通过标号对应的方向确定下一步行驶方向。
步骤00306.如果根据以上步骤,机器人不能顺利到达目标,即机器人碰到障碍物,则修改θ为:
步骤00307.设置θ的修改规则,如下:
(1)若机器人的移动方向为矢量1,则β=0;
(2)若机器人遇到障碍物且其任务目标位于障碍物的左上方,则判断机器人当前位置到障碍物上方最高点的矢量角属于步骤00303中哪个区间。若属于r2则机器人移动方向为矢量2,即β=1,若属于r3则机器人移动方向为矢量3,β=2;
(3)其余障碍物方向同理(2),只需改变相对应的β即可。
步骤00308.在运动方向确定后,估算出机器人的下一个位置坐标gi。假设两个横向单元间的距离为c(c为一常数),下一位置坐标gi的公式为:
将工作区域离散化后,路径规划问题就演变成为规划机器人的下一个行驶位置,只有准确得到这个位置,才能使机器人自主规划出一条切实可行的无碰撞路径。
在以上步骤都确定后,下一步的任务是将获胜神经元与它邻域神经元向任务目标移动,其它神经元保持不动,在这个过程中,输入层中相对应的权重值会发生改变,对于步骤004,其详细的步骤为:
步骤00401.当机器人与目标点的加权距离小于等于一个固定的最小距离d0时,其权重值修改为:
wkm(t)=ti,dikm≤d0
步骤00402.当机器人与目标点的加权距离大于最小距离d0时,其权重值修改为:
wkm(t)=wkm(t-1)+ηe-f(gi-wkm(t-1)),dikm>d0
结合步骤00401与步骤00402,可总结出权值更新函数,为:
d0是一个常数也是一个终止条件,若dikm≤d0则认为输出神经元的权值(机器人)已经到达了其任务目标点,将该机器人的坐标置为其相对应的任务目标点的坐标。学习率η一般有一下规律,由以下公式给出:
t↑→η↓,f↑→η↓;如η(t,f)=η(t)e-f。