安徽省計量科學研究院 安徽 合肥 230000
本設計用于移動機器人路徑規(guī)劃,使用matlab編程軟件和遺傳算法實現(xiàn)。很多論文只提到利用matlab軟件進行機器人路徑規(guī)劃,但是沒有將計算結(jié)果用于對機器人的實際控制。本設計利用matlab的串口編程工具,將matlab的算法工具用于實際工業(yè)控制,可外接探測探頭,實現(xiàn)照度,溫度等環(huán)境檢測。
路徑規(guī)劃常用算法有模糊控制算法、神經(jīng)網(wǎng)絡算法、蟻群算法和遺傳算法等。遺傳算法運用于移動機器人路徑規(guī)劃的基本思想是:將路徑表達為路徑中一系列中途點,并轉(zhuǎn)換為二進制數(shù)。首先初始化路徑群體,然后進行遺傳操作,如選擇、交叉、復制、變異。經(jīng)過若干代進化以后,停止進化,輸出當前最優(yōu)個體。
機器人路徑規(guī)劃的主要程序框架為:①將機器人工作區(qū)域的點標記在坐標圖上,橫軸為X軸,縱軸為Y軸。②確定機器人工作點,以及機器人的起始位置和終止位置。③生成初始種群,采用遺傳算法生成路徑。④得出機器人工作空間中從起始位置到終止位置的最優(yōu)路徑。⑤將表示最優(yōu)路徑的數(shù)據(jù)通過串口和無線模塊發(fā)送給機器人。
本文接下來介紹求解最短路徑問題的遺傳算法的具體步驟:
求最短路徑問題,描述如下:在圖G(V,A)中,V表示工作點集合,即V=(v1,v2,…,vn).單個路徑長度d(v i,v j)表示兩個點v i,v j的距離。路徑的總長度定義為各條路徑的長度總和。
(1)染色體編碼:采用整數(shù)排列編碼方法,對于一個給定的模型,將圖中各頂點序號排序,然后按此順序?qū)⒚總€待選工作點或頂點作為染色體的一個基因。此染色體中的基因排列順序即為各頂點在次條通路中出現(xiàn)的先后順序,染色體的長度應等于該圖中的頂點個數(shù)。在本程序的TSP問題中一共有13個工作點,也就是在圖模型中有13個頂點,因此一個染色體的長度為13。
(2)種群初始化:在完成染色體編碼后,必須產(chǎn)生一個初始種群作為起始解,所以首先需要決定初始種群的數(shù)目。初始種群的數(shù)目視工作點數(shù)目的多少而確定,一般取值50-200.
(3)適應度函數(shù)f(i):適應度,表示個體對于環(huán)境的適應程度。對生存環(huán)境適應程度比較高的物種將獲得更多的繁衍機會,而對生存環(huán)境適應程度比較低的物種將獲得的繁衍機會就會相對較少,甚至逐漸滅絕。適應度準則體現(xiàn)了適者生存,不適應者淘汰的自然法則。
對該最優(yōu)化問題,工作點距離總長度越小越好。就是要尋找最優(yōu)解,使適應度函數(shù)值最大。適應度函數(shù)值越大的染色體越優(yōu)質(zhì),反之越劣質(zhì)。
(4)選擇操作:選擇作為交叉的雙親,是根據(jù)前代染色體的適應函數(shù)值所確定的,質(zhì)量好的個體,即從起點到終點路徑長度短的個體被選中的概率較大。
(5)交叉與變異操作:將被選中的兩個染色體進行交叉操作的過程是先產(chǎn)生一個隨機數(shù),確定交叉點,位于染色體的第幾位基因上.然后在此位置進行部分基因交換。變異是采用隨機數(shù)選取兩個點,將它們對換位置。變異的意義為在某條路徑上去掉或增加某頂點。
對每個個體進行交叉變異,然后代入適應度函數(shù)進行評估,選擇適應度大的個體進行下一代的交叉和變異。循環(huán)操作,判斷是否滿足設定的最大遺傳代數(shù),不滿足則繼續(xù)適應度數(shù)值的計算,如果到達最大遺傳代數(shù),結(jié)束循環(huán)操作。
設定的機器人要到達的工作點坐標為:[10,10;10,30;10,40;20,40;20,50;20,60;30,60;30,45;40,50;50,50;55,40;60,20;30,20].
遺傳參數(shù)設置如下:種群大小NIND=100;最大遺傳代數(shù)MAXGEN=150;交叉概率Pc=0.9;變異概率Pm=0.05;代溝GGAP=0.9.
圖1 初始路徑圖
圖2 最優(yōu)路徑圖
最優(yōu)解:
1—>2—>3—>4—>5—>6—>7—>8—>9—>10—>11—>12—>13—>1
總距離:190.3369
本設計用于解決移動機器人路徑規(guī)劃的實際問題。移動機器人和計算機通過NRF905無線模塊和串口通信。移動機器人將工作點數(shù)據(jù)傳送到計算機matlab上位機程序,用戶點擊路徑規(guī)劃按鍵,matlab軟件利用遺傳算法算出最短路徑,再通過串口發(fā)送給移動機器人,機器人在到達指定位置后,可通過自身攜帶的探頭測量所需的光照度參數(shù),通過方便準確的定位得到測量數(shù)據(jù)。