发明名称 基于协作协进化和多种群遗传算法的多机器人路径规划系统
摘要 一种基于协作协进化和多种群遗传算法的多机器人路径规划系统,机器人的一条路径采用一个染色体表示,染色体就表示成节点的链表形式,即[(x,y),time],(x,y,time∈R),(x,y)表示机器人的位置坐标,time部分表示从前一个结点移动本结点需要的时间消耗,开始节点的time部分等于0,每个机器人个体的染色体除了初始节点的初始位置,结束节点的目标位置固定以外,中间节点和节点个数都是可变的;将最短路径、平滑度和安全距离作为设计路径适应度函数的三个目标每个机器人采用所述适应度函数,通过Messy遗传算法优化得到最优路径。本发明采用分布式结构,通用性强、灵敏度高、稳定性好、可实现多机器人动态避障。
申请公布号 CN102169347A 申请公布日期 2011.08.31
申请号 CN201110056133.7 申请日期 2011.03.08
申请人 浙江工业大学 发明人 陈晋音;杨东勇;张健;卢瑾
分类号 G05D1/02(2006.01)I 主分类号 G05D1/02(2006.01)I
代理机构 杭州天正专利事务所有限公司 33201 代理人 王兵;王利强
主权项 1.一种基于协作协进化和多种群遗传算法的多机器人路径规划系统,其特征在于:机器人的一条路径采用一个染色体表示,染色体就表示成节点的链表形式,即[(x,y),time],(x,y,time∈R),(x,y)表示机器人的位置坐标,time部分表示从前一个节点移动本节点需要的时间消耗,开始节点的time部分等于0,每个机器人个体的染色体除了初始节点的初始位置,结束节点的目标位置固定以外,中间节点和节点个数都是可变的;每个机器人Robot(i)的路径path(j)的适应度函数表示成φ(p<sub>i,j</sub>):<maths num="0001"><![CDATA[<math><mrow><mi>&phi;</mi><mrow><mo>(</mo><msub><mi>p</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>)</mo></mrow><mo>=</mo><msup><mi>e</mi><mrow><mo>-</mo><mo>[</mo><msub><mi>w</mi><mi>l</mi></msub><mo>&times;</mo><mo>|</mo><mo>|</mo><msub><mi>p</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>|</mo><mo>|</mo><mo>+</mo><msub><mi>w</mi><mi>f</mi></msub><mo>&times;</mo><mi>&psi;</mi><mrow><mo>(</mo><msub><mi>p</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>)</mo></mrow><mo>]</mo></mrow></msup><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow></math>]]></maths>||p<sub>i,j</sub>||=Dis tan ce(P<sub>i,j</sub>)+w<sub>s</sub>×smooth(p<sub>i,j</sub>)+w<sub>t</sub>×Time(p<sub>i,j</sub>)(2)其中,φ(p<sub>i,j</sub>)是一个非线性函数,路径的消耗越大则φ(p<sub>i,j</sub>)越大;p<sub>i,j</sub>表示Robot(i)的路径path(j);||p<sub>i,j</sub>||是距离、平滑度和时间消耗的线性组合,w<sub>s</sub>是平滑加权因子,w<sub>t</sub>是时间加权因子;<maths num="0002"><![CDATA[<math><mrow><mi>Dis</mi><mi>tan</mi><mi>ce</mi><mrow><mo>(</mo><msub><mi>p</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>)</mo></mrow><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>Length</mi><mrow><mo>(</mo><msub><mi>p</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>)</mo></mrow><mo>-</mo><mn>1</mn></mrow></munderover><mi>s</mi><mrow><mo>(</mo><msubsup><mi>p</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><mi>k</mi></msubsup><mo>,</mo><msubsup><mi>p</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0003"><![CDATA[<math><mrow><mi>smooth</mi><mrow><mo>(</mo><msub><mi>p</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>)</mo></mrow><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>k</mi><mo>=</mo><mn>2</mn></mrow><mrow><mi>Length</mi><mrow><mo>(</mo><msub><mi>p</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>)</mo></mrow><mo>-</mo><mn>1</mn></mrow></munderover><mi>a</mi><mrow><mo>(</mo><msubsup><mi>&theta;</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><mi>k</mi></msubsup><mo>-</mo><mo>&PartialD;</mo><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>4</mn><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0004"><![CDATA[<math><mrow><mi>a</mi><mo>=</mo><mi>MAX</mi><mrow><mo>(</mo><mfrac><mi>A</mi><mrow><mn>2</mn><mo>&times;</mo><msub><mi>O</mi><mi>A</mi></msub></mrow></mfrac><mo>,</mo><mn>2</mn><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0005"><![CDATA[<math><mrow><mi>Time</mi><mrow><mo>(</mo><msub><mi>p</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>)</mo></mrow><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>length</mi></munderover><msub><mi>time</mi><msubsup><mi>p</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><mi>k</mi></msubsup></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>6</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中,Dis tan ce(p<sub>i,j</sub>)表示路径长度,<img file="FDA0000049188930000016.GIF" wi="226" he="60" />表示Robot(i)的路径path(j)中线段节点<img file="FDA0000049188930000017.GIF" wi="64" he="63" />和节点<img file="FDA0000049188930000018.GIF" wi="77" he="63" />的长度,<img file="FDA0000049188930000019.GIF" wi="64" he="63" />表示Robot(i)的路径path(j)中第k个节点,<img file="FDA00000491889300000110.GIF" wi="77" he="63" />表示Robot(i)的路径path(j)中第k+1个节点;smooth(p<sub>i,j</sub>)表示路径的平滑度,Length(p<sub>i,j</sub>)表示Robot(i)的路径path(j)的路径线段总数,a为中间参数,A表示障碍物的个数,O<sub>A</sub>表示所有障碍物的总面积,<img file="FDA0000049188930000021.GIF" wi="52" he="57" />表示线段<img file="FDA0000049188930000022.GIF" wi="210" he="62" />的转角度数,表示期望转角;Time(p<sub>i,j</sub>)是路径p<sub>i,j</sub>的时间消耗;ψ(p<sub>i,j</sub>)是约束条件定义成惩罚函数的形式,如公式(7)所示形式:ψ(p<sub>i,j</sub>)=ψ<sub>1</sub>(p<sub>i,j</sub>)+ψ<sub>2</sub>(p<sub>i,j</sub>)+ψ<sub>3</sub>(p<sub>i,j</sub>)(7)其中,ψ<sub>1</sub>(p<sub>i,j</sub>)用于评估机器人Robot(i)是否超速,ψ<sub>2</sub>(p<sub>i,j</sub>)表示是否有机器人-障碍物碰撞情况存在,ψ<sub>3</sub>(p<sub>i,j</sub>)表示发生碰撞的机器人个数总和;<maths num="0006"><![CDATA[<math><mrow><msub><mi>&psi;</mi><mn>1</mn></msub><mrow><mo>(</mo><msub><mi>p</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>)</mo></mrow><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><munder><mi>&Sigma;</mi><msup><mi>k</mi><mo>*</mo></msup></munder><msubsup><mi>s</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><msup><mi>k</mi><mo>*</mo></msup></msubsup><mo>/</mo><mo>|</mo><mo>|</mo><msubsup><mi>t</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><msup><mi>k</mi><mo>*</mo></msup></msubsup><mo>|</mo><mo>|</mo><mo>,</mo></mtd><mtd><mo>&Exists;</mo><msup><mi>k</mi><mo>*</mo></msup><mo>,</mo><msubsup><mi>s</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><msup><mi>k</mi><mo>*</mo></msup></msubsup><mo>/</mo><mo>|</mo><mo>|</mo><msubsup><mi>t</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><msup><mi>k</mi><mo>*</mo></msup></msubsup><mo>|</mo><mo>|</mo><mo>></mo><msub><mi>v</mi><mrow><mi>i</mi><mo>,</mo><mi>max</mi></mrow></msub></mtd></mtr><mtr><mtd><mn>0</mn><mo>,</mo></mtd><mtd><mi>otherwise</mi></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>8</mn><mo>)</mo></mrow></mrow></math>]]></maths>公式中,<img file="FDA0000049188930000025.GIF" wi="64" he="85" />表示上一个节点node(k<sup>*</sup>-1)到当前节点node(k<sup>*</sup>)的距离;<img file="FDA0000049188930000026.GIF" wi="81" he="89" />是上一个节点node(k<sup>*</sup>-1)到当前节点node(k<sup>*</sup>)所需要的时间消耗,k<sup>*</sup>表示路径线段,因此<img file="FDA0000049188930000027.GIF" wi="175" he="97" />就定义了机器人在路径<img file="FDA0000049188930000028.GIF" wi="69" he="78" />上的移动速度,v<sub>i,max</sub>用于指示机器人Robot(i)的最大速度,ψ<sub>1</sub>(p<sub>i,j</sub>)则是所有超速的总和;<maths num="0007"><![CDATA[<math><mrow><msub><mi>&psi;</mi><mn>2</mn></msub><mrow><mo>(</mo><msub><mi>p</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>,</mo><msub><mi>o</mi><mi>l</mi></msub><mo>)</mo></mrow><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><munder><mi>&Sigma;</mi><msup><mi>k</mi><mo>*</mo></msup></munder><msubsup><mi>&delta;</mi><mn>1</mn><mrow><mo>-</mo><mn>1</mn></mrow></msubsup><mrow><mo>(</mo><msubsup><mi>s</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><mi>k</mi></msubsup><mo>,</mo><msub><mi>o</mi><mi>l</mi></msub><mo>)</mo></mrow><mo>,</mo></mtd><mtd><mo>&Exists;</mo><msup><mi>k</mi><mo>*</mo></msup><mo>,</mo><mi>s</mi><mrow><mo>(</mo><msubsup><mi>p</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><msup><mi>k</mi><mo>*</mo></msup></msubsup><mo>,</mo><msub><mi>o</mi><mi>l</mi></msub><mo>)</mo></mrow><mo>&le;</mo><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn><mo>,</mo></mtd><mtd><mi>otherwise</mi></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>9</mn><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0008"><![CDATA[<math><mrow><msub><mi>&delta;</mi><mn>1</mn></msub><mrow><mo>(</mo><msubsup><mi>s</mi><mrow><mi>i</mi><mo>,</mo><msup><mi>k</mi><mo>*</mo></msup></mrow><mi>j</mi></msubsup><mo>,</mo><msub><mi>o</mi><mi>l</mi></msub><mo>)</mo></mrow><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mo>|</mo><mo>|</mo><mi>Area</mi><mrow><mo>(</mo><msubsup><mi>o</mi><mi>l</mi><mn>1</mn></msubsup><mo>)</mo></mrow><mo>-</mo><mi>Area</mi><mrow><mo>(</mo><msubsup><mi>o</mi><mi>l</mi><mn>2</mn></msubsup><mo>)</mo></mrow><mo>|</mo><mo>|</mo><mo>,</mo></mtd><mtd><mi>s</mi><mrow><mo>(</mo><msubsup><mi>s</mi><mrow><mi>i</mi><mo>,</mo><msup><mi>k</mi><mo>*</mo></msup></mrow><mi>j</mi></msubsup><mo>,</mo><msub><mi>o</mi><mi>l</mi></msub><mo>)</mo></mrow><mo>&le;</mo><mn>0</mn></mtd></mtr><mtr><mtd><mi>MaxNum</mi><mo>,</mo></mtd><mtd><mi>otherwise</mi></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>10</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中,<img file="FDA00000491889300000211.GIF" wi="188" he="69" />表示路径线段<img file="FDA00000491889300000212.GIF" wi="66" he="71" />和障碍物o<sub>l</sub>之间的距离,<img file="FDA00000491889300000213.GIF" wi="178" he="56" />和<img file="FDA00000491889300000214.GIF" wi="183" he="56" />表示路径线段<img file="FDA00000491889300000215.GIF" wi="66" he="71" />将障碍物o<sub>l</sub>分成两块后两块的面积大小,则<img file="FDA00000491889300000216.GIF" wi="433" he="75" />表示障碍物o<sub>l</sub>两块面积之差的绝对值,MaxNum是障碍物o<sub>l</sub>的面积;利用ψ<sub>2</sub>(p<sub>i,j</sub>,o<sub>l</sub>)来评估是否有机器人-障碍物碰撞情况存在,假设存在路径线段k<sup>*</sup>使得机器人和障碍物的距离等于0或者小于0,表示存在着机器人和障碍物的碰撞;根据公式(9),如果ψ<sub>2</sub>(p<sub>i,j</sub>,o<sub>l</sub>)等于0,表示机器人避障成功,如果ψ<sub>2</sub>(p<sub>i,j</sub>,o<sub>l</sub>)不等于0,利用ψ<sub>2</sub>(p<sub>i,j</sub>,o<sub>l</sub>)来评价机器人和障碍物避免碰撞需要克服的距离;<maths num="0009"><![CDATA[<math><mrow><msub><mi>&psi;</mi><mn>3</mn></msub><mrow><mo>(</mo><msub><mi>p</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>,</mo><msubsup><mi>p</mi><mi>l</mi><mo>*</mo></msubsup><mo>)</mo></mrow><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mn>1</mn><mo>,</mo></mtd><mtd><mo>&Exists;</mo><msub><mi>s</mi><mrow><mi>l</mi><mo>,</mo><mi>r</mi></mrow></msub><mo>&Element;</mo><msubsup><mi>p</mi><mi>l</mi><mo>*</mo></msubsup><mo>,</mo><msub><mi>&delta;</mi><mn>2</mn></msub><mrow><mo>(</mo><msubsup><mi>s</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><mi>k</mi></msubsup><mo>,</mo><msub><mi>s</mi><mrow><mi>l</mi><mo>,</mo><mi>r</mi></mrow></msub><mo>)</mo></mrow><mo>=</mo><mn>0</mn><mo>;</mo></mtd></mtr><mtr><mtd><mn>0</mn><mo>,</mo></mtd><mtd><mi>otherwise</mi></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>11</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中,<img file="FDA0000049188930000032.GIF" wi="227" he="62" />表示两个机器人在同一个时间的相对距离,通过协进化的共享机制得到其他机器人代表的位置,随后计算他们与自己的距离得到,如果在同一时间有多于两个机器人出现在同一个坐标位置,则<img file="FDA0000049188930000033.GIF" wi="229" he="63" />等于发生碰撞的机器人个数总和;每个机器人采用所述适应度函数,通过Messy遗传算法优化得到最优路径。
地址 310014 浙江省杭州市下城区朝晖六区
您可能感兴趣的专利