摘è¦ï¼šä¾¿æ”œå¼ç§»å‹•(dòng)機(jÄ«)器人手æŒç›£(jiÄn)控系統(tÇ’ng),基于嵌入å¼PC/104plus總線çµ(jié)æ§‹(gòu)ï¼Œç”±è¦–é »åœ–åƒç›£(jiÄn)視ã€ç‹€æ…‹(tà i)ä¿¡æ¯ç›£(jiÄn)測(cè)ã€é™æŽ§æŒ‡ä»¤ã€ç„¡(wú)ç·šé€šä¿¡ã€æ•¸(shù)å—地圖交互åŠå…¨å±€è·¯å¾‘è¦(guÄ«)劃å…大模塊組æˆã€‚儿¨¡å¡Šé€šéŽ(guò)接å£å¯¦(shÃ)ç¾(xià n)ä¿¡æ¯äº¤æ›èˆ‡æ•¸(shù)據(jù)共享。系統(tÇ’ng)軟件æ“作系統(tÇ’ng)平臺(tái)為Windows CE(WinCE),包括éµç›¤(pán)掃æä¸²å£é€šä¿¡è¦–é »è™•ç†æ•¸(shù)å—地圖路徑è¦(guÄ«)åŠƒç‰æ¨¡å¡Šã€‚并以履帶çµ(jié)æ§‹(gòu)便攜å¼ç§»å‹•(dòng)機(jÄ«)器人實(shÃ)é©—(yà n)平臺(tái)上的應(yÄ«ng)用實(shÃ)例,驗(yà n)è‰äº†è©²æ‰‹æŒç›£(jiÄn)控系統(tÇ’ng)。
é—œ(guÄn)éµè©žï¼šä¾¿æ”œå¼ç§»å‹•(dòng)機(jÄ«)器人;手æŒç›£(jiÄn)控系統(tÇ’ng)PC/104plus 總線;Windows CE
引言
ç›®å‰ï¼Œä¾¿æ”œå¼ç§»å‹•(dòng)機(jÄ«)器人全自主控制方å¼å°šä¸æˆç†Ÿï¼Œå…¶ç›£(jiÄn)控系統(tÇ’ng)æ™®é采用人在環(huán)åŠè‡ªä¸»æŽ§åˆ¶æ–¹å¼è¨(shè)計(jì)。為滿足攜帶ã€ç³»çµ±(tÇ’ng)å°åž‹åŒ–ã€åµŒå…¥å¼çš„çµ(jié)æ§‹(gòu)特點(diÇŽn),故è¨(shè)計(jì)便攜å¼ç§»å‹•(dòng)機(jÄ«)器人手æŒç›£(jiÄn)控系統(tÇ’ng),并將其用于履帶çµ(jié)æ§‹(gòu)便攜å¼ç§»å‹•(dòng)機(jÄ«)器人實(shÃ)é©—(yà n)平臺(tái)。
功能è¨(shè)計(jì)
手æŒç›£(jiÄn)控系統(tÇ’ng)å°(duì)便攜å¼ç§»å‹•(dòng)機(jÄ«)器人起到監(jiÄn)視與控制的全局性作用。手æŒç›£(jiÄn)控系統(tÇ’ng)å¯åŠƒåˆ†ç‚ºè¦–é »åœ–åƒç›£(jiÄn)視模塊ã€ç‹€æ…‹(tà i)ä¿¡æ¯ç›£(jiÄn)測(cè)模塊ã€é™æŽ§æŒ‡ä»¤æ¨¡å¡Šã€ç„¡(wú)ç·šé€šä¿¡æ¨¡å¡Šã€æ•¸(shù)å—地圖交互模塊ã€å…¨å±€è·¯å¾‘è¦(guÄ«)劃模塊å…大功能模塊(見(jià n)圖1)。

è¦–é »åœ–åƒç›£(jiÄn)視模塊å°(duì)便攜å¼ç§»å‹•(dòng)機(jÄ«)器人所處環(huán)境進(jìn)è¡Œè¦–é »ç›£(jiÄn)視;狀態(tà i)ä¿¡æ¯ç›£(jiÄn)測(cè)模塊å°(duì)機(jÄ«)器人自身狀態(tà i)ä¿¡æ¯çš„監(jiÄn)測(cè)ï¼›é™æŽ§æŒ‡ä»¤æ¨¡å¡Šå¯¦(shÃ)ç¾(xià n)基本的é‹(yùn)å‹•(dòng)指令編碼以åŠç™¼(fÄ)é€ï¼›ç„¡(wú)線通信模塊實(shÃ)ç¾(xià n)é‹(yùn)å‹•(dòng)指令ã€ç‹€æ…‹(tà i)ä¿¡æ¯ã€è¦–é »ä¿¡è™Ÿ(hà o)ç‰æ•¸(shù)據(jù)的無(wú)線傳輸;數(shù)å—地圖交互模塊實(shÃ)ç¾(xià n)ç’°(huán)境地ç†ä¿¡æ¯çš„æ•¸(shù)å—化顯示åŠäººæ©Ÿ(jÄ«)交互功能;全局路徑è¦(guÄ«)劃模塊實(shÃ)ç¾(xià n)點(diÇŽn)到點(diÇŽn)的最優(yÅu)路徑æœç´¢åŠŸèƒ½ã€‚
硬件系統(tǒng)
手æŒç›£(jiÄn)控系統(tÇ’ng)的硬件系統(tÇ’ng)å¯åŠƒåˆ†ç‚ºè‹¥å¹²æ¨¡å¡Šï¼Œå„個(gè)模塊實(shÃ)ç¾(xià n)自身相å°(duì)ç¨(dú)立的功能。
硬件çµ(jié)æ§‹(gòu)與接å£
手æŒç›£(jiÄn)控系統(tÇ’ng)硬件系統(tÇ’ng)采用基于嵌入å¼ç³»çµ±(tÇ’ng)çš„PCI 總線的PC/104plus 總線çµ(jié)æ§‹(gòu),分為無(wú)線通信ã€åµŒå…¥å¼åœ–åƒé‡‡é›†ã€ä¸å¤®è™•ç†ã€é™æŽ§å™¨ã€æ¶²æ™¶é¡¯ç¤ºç‰äº”大模塊。無(wú)線通信模塊åˆåŠƒåˆ†ç‚ºç„¡(wú)線數(shù)據(jù)傳輸和無(wú)ç·šè¦–é »å‚³è¼¸æ¨¡å¡Šã€‚ç„¡(wú)線數(shù)據(jù)傳輸模塊實(shÃ)ç¾(xià n)é‹(yùn)å‹•(dòng)指令ã€ç‹€æ…‹(tà i)ä¿¡æ¯ç‰çª„帶數(shù)據(jù)ç„¡(wú)線傳輸;無(wú)ç·šè¦–é »å‚³è¼¸æ¨¡å¡Šå¯¦(shÃ)ç¾(xià n)è¦–é »åœ–åƒä¿¡è™Ÿ(hà o)ç‰å¯¬å¸¶æ•¸(shù)據(jù)ç„¡(wú)線傳輸。
硬件系統(tÇ’ng)儿¨¡å¡Šé€šéŽ(guò)接å£å¯¦(shÃ)ç¾(xià n)ä¿¡æ¯äº¤æ›èˆ‡æ•¸(shù)據(jù)共享。ä¸å¤®è™•ç†æ¨¡å¡Šé€šéŽ(guò)PC/104plus 總線與嵌入å¼åœ–åƒé‡‡é›†æ¨¡å¡ŠæŽ¥å£ï¼Œå¯¦(shÃ)ç¾(xià n)æ¨¡å¡Šä¹‹é–“è¦–é »åœ–åƒæ•¸(shù)據(jù)的傳輸。ä¸å¤®è™•ç†æ¨¡å¡Šèˆ‡ç„¡(wú)線數(shù)據(jù)傳輸模塊åŠé™æŽ§å™¨æ¨¡å¡Šé€šéŽ(guò)串å£é€£æŽ¥ã€‚ä¸å¤®è™•ç†æ¨¡å¡Šé€šéŽ(guò)TTL 接å£èˆ‡æ¶²æ™¶é¡¯ç¤ºæ¨¡å¡Šé€£æŽ¥ã€‚嵌入å¼åœ–åƒé‡‡é›†æ¨¡å¡Šèˆ‡ç„¡(wú)ç·šè¦–é »å‚³è¼¸æ¨¡å¡Šé€šéŽ(guò)RCA 接å£å¯¦(shÃ)ç¾(xià n)復(fù)åˆè¦–é »ä¿¡è™Ÿ(hà o)的傳輸(見(jià n)圖2)。

硬件模塊實(shÃ)ç¾(xià n)
ç„¡(wú)線數(shù)據(jù)傳輸模塊采用微功率無(wú)線數(shù)據(jù)傳é€å–®å…ƒå¯¦(shÃ)ç¾(xià n)。嵌入å¼åœ–åƒé‡‡é›†æ¨¡å¡Šé‡‡ç”¨PC/104plus總線çµ(jié)æ§‹(gòu)的嵌入å¼åœ–åƒé‡‡é›†å¡å¯¦(shÃ)ç¾(xià n)。ä¸å¤®è™•ç†æ¨¡å¡Šé‡‡ç”¨PC/104plus 總線çµ(jié)æ§‹(gòu)çš„å–®æ¿æ©Ÿ(jÄ«)實(shÃ)ç¾(xià n)ã€‚é™æŽ§å™¨æ¨¡å¡Šé€šéŽ(guò)自行è¨(shè)計(jì)電路æ¿å¯¦(shÃ)ç¾(xià n)æŒ‰éµæŽƒæã€æŒ‡ä»¤ç·¨ç¢¼ä»¥åŠä¸²å£ç™¼(fÄ)é€ç‰åŠŸèƒ½ã€‚æ¶²æ™¶é¡¯ç¤ºæ¨¡å¡Šé‡‡ç”¨å°åž‹å½©è‰²æ¶²æ™¶å±å¯¦(shÃ)ç¾(xià n)。以上å„硬件模塊實(shÃ)ç¾(xià n)ç¬¦åˆæ‰‹æŒè¨(shè)å‚™å°åž‹åŒ–ã€ä¾¿æ”œå¼çš„ç¡¬ä»¶è¦æ±‚。
軟件系統(tǒng)
手æŒç›£(jiÄn)控系統(tÇ’ng)的軟件系統(tÇ’ng)é¸ç”¨Windows CE(WinCEï¼‰ä½œç‚ºåµŒå…¥å¼æ“作系統(tÇ’ng)平臺(tái),監(jiÄn)控系統(tÇ’ng)軟件包括:æ“作系統(tÇ’ng)定制ã€è¨(shè)備驅(qÅ«)å‹•(dòng)程åºé–‹(kÄi)發(fÄ)ã€æ‡‰(yÄ«ng)用程åºã€‚應(yÄ«ng)用程åºåˆåˆ†ç‚ºï¼šéµç›¤(pán)æŽƒææ¨¡å¡Šã€ä¸²å£é€šä¿¡æ¨¡å¡Šã€è¦–é »è™•ç†æ¨¡å¡Šã€æ•¸(shù)å—地圖模塊ã€è·¯å¾‘è¦(guÄ«)劃模塊五大模塊(見(jià n)圖3)。
æ“作系統(tÇ’ng)定制
æ“作系統(tÇ’ng)å®šåˆ¶ä¸»è¦æ ¹æ“š(jù)系統(tÇ’ng)需è¦å»ºç«‹æ“作系統(tÇ’ng)平臺(tái)å¹¶å°(duì)其進(jìn)行相應(yÄ«ng)çš„é…置。通éŽ(guò)平臺(tái)è£å‰ªå·¥å…·Platform Builder(簡(jiÇŽn)稱PB)完æˆã€‚
è¨(shè)備驅(qÅ«)å‹•(dòng)程åºé–‹(kÄi)發(fÄ)
WinCE的驅(qÅ«)å‹•(dòng)程åºåˆ†ç‚ºï¼šæœ¬æ©Ÿ(jÄ«)è¨(shè)備驅(qÅ«)å‹•(dòng)程åºå’ŒæµæŽ¥å£é©…(qÅ«)å‹•(dòng)程åº[5]。本機(jÄ«)è¨(shè)備是指集æˆåˆ°ç›®æ¨™(biÄo)平臺(tái)çš„è¨(shè)備,其驅(qÅ«)å‹•(dòng)程åºç”±åŽŸè¨(shè)å‚™åˆ¶é€ å•†ï¼ˆOEM)æä¾›ã€‚æµæŽ¥å£é©…(qÅ«)å‹•(dòng)ç¨‹åºæ˜¯æŒ‡é€£æŽ¥åˆ°WinCE平臺(tái)的外部è¨(shè)備驅(qÅ«)å‹•(dòng)程åºï¼Œç”±ç”¨æˆ¶è‡ªè¡Œé–‹(kÄi)發(fÄ)ã€‚æµæŽ¥å£é©…(qÅ«)å‹•(dòng)ç¨‹åºæŠŠå¤–éƒ¨è¨(shè)備看作文件系統(tÇ’ng)的特殊文件,通éŽ(guò)文件讀å–函數(shù)間接地訪å•(wèn)外部è¨(shè)備。
嵌入å¼åœ–åƒé‡‡é›†å¡é©…(qÅ«)å‹•(dòng)程åºåˆ†ç‚ºä¸‰éƒ¨åˆ†ï¼š
(1) å…§(nèi)æ ¸éƒ¨åˆ†
實(shÃ)ç¾(xià n)䏿–·æœå‹™(wù)例程(ISR)。內(nèi)æ ¸å‡½æ•¸(shù)實(shÃ)ç¾(xià n)了物ç†ä¸æ–·è™Ÿ(hà o)與é‚è¼¯ä¸æ–·æ¨™(biÄo)è˜(shÃ)ä¹‹é–“çš„æ˜ å°„é—œ(guÄn)系,并調(dià o)ç”¨ä¸æ–·æœå‹™(wù)ä¾‹ç¨‹ï¼Œä¸æ–·æœå‹™(wù)ä¾‹ç¨‹åœ¨ä¸æ–·ç™¼(fÄ)生åŽå‘å…§(nèi)æ ¸è¿”å›žä¸æ–·é‚輯標(biÄo)è˜(shÃ)。
(2) é©…(qÅ«)å‹•(dòng)程åºéƒ¨åˆ†
實(shÃ)ç¾(xià n)WinCE æµæŽ¥å£é©…(qÅ«)å‹•(dòng)模型所需è¦çš„æ–‡ä»¶æ“作接å£å‡½æ•¸(shù),包括:采集å¡åˆå§‹åŒ–ã€æ•¸(shù)據(jù)讀å–和采集å¡å¥æŸ„é—œ(guÄn)閉。
(3) 應(yÄ«ng)用程åºéƒ¨åˆ†
通éŽ(guò)調(dià o)用è¨(shè)備注冊(cè)函數(shù)將嵌入å¼åœ–åƒé‡‡é›†å¡ä¸æ–·é©…(qÅ«)å‹•(dòng)程åºåŠ è¼‰åˆ°ç³»çµ±(tÇ’ng)å…§(nèi)å˜ï¼Œå¹¶æ ¹æ“š(jù)采集å¡åˆå§‹åŒ–åƒæ•¸(shù)è¨(shè)置修改WinCE 系統(tÇ’ng)注冊(cè)表文件。
應(yÄ«ng)用程åºè¨(shè)計(jì)
éµç›¤(pán)æŽƒææ¨¡å¡ŠåŠä¸²å£é€šä¿¡æ¨¡å¡Šå–®ç‰‡æ©Ÿ(jÄ«)程åºåœ¨å–®ç‰‡æ©Ÿ(jÄ«)集æˆé–‹(kÄi)發(fÄ)ç’°(huán)境uVision2 下用C 語(yÇ”)言開(kÄi)發(fÄ)外,其余模塊å‡åœ¨EVC(Windows CE Embedded VisualC++)下開(kÄi)發(fÄ)。
(1) éµç›¤(pán)æŽƒææ¨¡å¡Š
éµç›¤(pán)æŽƒææ¨¡å¡Šä¸»è¦å¯¦(shÃ)ç¾(xià n)單片機(jÄ«)å°(duì)薄膜éµç›¤(pán)的按éµè˜(shÃ)別åŠéµå€¼é¡¯ç¤ºåŠŸèƒ½ã€‚è–„è†œéµç›¤(pán)屬于行列å¼éžç·¨ç¢¼éµç›¤(pán),按éµçš„è˜(shÃ)別通常采用é€è¡ŒæŽƒææŸ¥è©¢æ³•實(shÃ)ç¾(xià n)。程åºé‡‡ç”¨è»Ÿä»¶å»¶æ™‚(shÃ)çš„æ–¹æ³•è™•ç†æŠ–å‹•(dòng)。éµå€¼é¡¯ç¤ºå‰‡é€šéŽ(guò)單片機(jÄ«)å°(duì)液晶å±ä¸²è¡Œæ•¸(shù)據(jù)å£ç·¨ç¨‹å¯¦(shÃ)ç¾(xià n)。
(2) 串å£é€šä¿¡æ¨¡å¡Š
串å£é€šä¿¡æ¨¡å¡Šä¸»è¦å¯¦(shÃ)ç¾(xià n)å–®æ¿æ©Ÿ(jÄ«)與單片機(jÄ«)之間的串行數(shù)據(jù)é€šä¿¡åŠŸèƒ½ã€‚è©²æ¨¡å¡ŠåŒ…æ‹¬å–®æ¿æ©Ÿ(jÄ«)串å£é€šä¿¡ç¨‹åºã€å–®ç‰‡æ©Ÿ(jÄ«)串å£é€šä¿¡ç¨‹åºã€ä¸²å£é€šä¿¡å”(xié)è°ä¸‰éƒ¨åˆ†ã€‚
â‘ å–®æ¿æ©Ÿ(jÄ«)串å£é€šä¿¡ç¨‹åºã€‚由于WinCE 䏿”¯æŒä¸²å£é€šä¿¡æŽ§ä»¶çš„使用,所以EVC ä¸‹çš„å–®æ¿æ©Ÿ(jÄ«)串å£é€šä¿¡ç¨‹åºé–‹(kÄi)發(fÄ)åªèƒ½é€šéŽ(guò)調(dià o)用文件æ“作函數(shù)實(shÃ)ç¾(xià n)。
â‘¡ 單片機(jÄ«)串å£é€šä¿¡ç¨‹åºã€‚單片機(jÄ«)串å£é€šä¿¡ç¨‹åºè¨(shè)計(jì)å¿…é ˆæ ¹æ“š(jù)通信雙方約定è¨(shè)置串å£å·¥ä½œæ–¹å¼åŠä¸²å£é€šä¿¡æ³¢ç‰¹çŽ‡ã€‚
â‘¢ 串å£é€šä¿¡å”(xié)è°ã€‚䏲壿•¸(shù)據(jù)包括:雙å‘通信測(cè)試數(shù)據(jù)ã€ä¸‹è¡ŒæŒ‡ä»¤æ•¸(shù)據(jù)ã€ä¸Šè¡Œå‚³æ„Ÿæ•¸(shù)據(jù),而傳感數(shù)據(jù)åˆåŠƒåˆ†ç‚ºï¼šé€Ÿåº¦ã€åŠ é€Ÿåº¦ã€ä½ç½®ã€å‚¾è§’ç‰ç‹€æ…‹(tà i)ä¿¡æ¯ã€‚為了在串å£é€šä¿¡ä¸æ£ç¢ºåˆ†é›¢å’Œè˜(shÃ)別å„種數(shù)據(jù),通éŽ(guò)å°(duì)å„種數(shù)據(jù)æ·»åŠ ç›¸æ‡‰(yÄ«ng)標(biÄo)å¿—å—節(jié)的方法編制串å£é€šä¿¡å”(xié)è°ã€‚
(3) è¦–é »è™•ç†æ¨¡å¡Š
è¦–é »è™•ç†æ¨¡å¡Šé€šéŽ(guò)在EVC 下調(dià o)用嵌入å¼åœ–åƒé‡‡é›†å¡é©…(qÅ«)å‹•(dòng)函數(shù)實(shÃ)ç¾(xià n)è¦–é »é¡¯ç¤ºèˆ‡è¦–é »æŽ§åˆ¶åŠŸèƒ½ã€‚è¦–é »é¡¯ç¤ºä½œç‚ºç›£(jiÄn)控系統(tÇ’ng)å窗å£åµŒå…¥åˆ°è»Ÿä»¶ç³»çµ±(tÇ’ng)用戶界é¢ã€‚è¦–é »é¡¯ç¤ºä¸»è¦å¯¦(shÃ)ç¾(xià n)便攜å¼ç§»å‹•(dòng)機(jÄ«)器人平臺(tái)所處環(huán)境信æ¯çš„實(shÃ)時(shÃ)è¦–é »é¡¯ç¤ºèˆ‡æ›´æ–°ã€‚è¦–é »æŽ§åˆ¶ä¸»è¦å¯¦(shÃ)ç¾(xià n)å°(duì)è¦–é »é‡‡é›†éŽ(guò)程的控制,其ä¸åŒ…æ‹¬ï¼šè¦–é »é‡‡é›†çª—å£å°ºå¯¸è¨(shè)ç½®ã€è¦–é »æºåˆ¶å¼è¨(shè)ç½®ã€è¦–é »æ•¸(shù)據(jù)æ ¼å¼é¸æ“‡åŠè¦–é »æ•¸(shù)據(jù)å˜å„²(chÇ”)ç‰ã€‚
WinCE 䏿”¯æŒä»»ä½•è¦–é »åŠ é€Ÿé©…(qÅ«)å‹•(dòng)程åºå’Œåº•層函數(shù),所以無(wú)法直接調(dià o)用DirectX 函數(shù),則WinCEè¨(shè)備上動(dòng)æ…‹(tà i)è¦–é »çš„é¡¯ç¤ºèˆ‡å›žæ”¾ï¼Œå¿…é ˆé–‹(kÄi)發(fÄ)æ–°çš„è¨(shè)備無(wú)é—œ(guÄn)ä½åœ–(DIB)快速顯示函數(shù)。采用從DGdiObject類派生的方法,使用CreateDIBSection 函數(shù)創(chuà ng)建DIB ä½åœ–,å¯ä»¥ç›´æŽ¥ä½¿ç”¨åœ–å½¢è¨(shè)備接å£ï¼ˆGDI)函數(shù)來(lái)æ“作DIB ä½åœ–,以有效æé«˜ä½åœ–顯示速度。
(4) 數(shù)å—地圖模塊
數(shù)å—地圖是地ç†ä¿¡æ¯ç³»çµ±(tÇ’ng)(GIS)ä¸çš„æ¦‚念。數(shù)å—地圖模塊實(shÃ)ç¾(xià n)便攜å¼ç§»å‹•(dòng)機(jÄ«)器人平臺(tái)所處地ç†ç’°(huán)境信æ¯çš„æ•¸(shù)å—化顯示,并在æ¤åŸºç¤Ž(chÇ”)上實(shÃ)ç¾(xià n)å°(duì)數(shù)å—地圖放大ã€ç¸®å°ã€æ¼«æ¸¸ã€æŸ¥æ‰¾ç‰äº¤äº’æ“作功能。
數(shù)å—地圖模塊通éŽ(guò)在EVC 下嵌入MapXMobile 組件實(shÃ)ç¾(xià n),并最終作為監(jiÄn)控系統(tÇ’ng)å窗å£é›†æˆåˆ°è»Ÿä»¶ç³»çµ±(tÇ’ng)用戶界é¢ã€‚MapX Mobile 是基于å°(duì)è±¡éˆæŽ¥åµŒå…¥ï¼ˆOLE)技術(shù)çš„ActiveX 控件,在EVC 下è¨(shè)ç½®è©²æŽ§ä»¶çš„å±¬æ€§ã€æ–¹æ³•åŠéŸ¿æ‡‰(yÄ«ng)事件å³å¯å¯¦(shÃ)ç¾(xià n)地圖顯示與æ“作功能。
應(yÄ«ng)用程åºé€šéŽ(guò)MapX Mobile 組件實(shÃ)ç¾(xià n)地圖顯示與æ“ä½œï¼ŒåŒæ™‚(shÃ)管ç†åœ°åœ–數(shù)據(jù)文件。并å¯ä»¥å–®ç¨(dú)在嵌入å¼è¨(shè)備上é‹(yùn)行,也能和WinCE æ“作系統(tÇ’ng)兼容。MapX Mobile å…許用戶把地圖數(shù)據(jù)帶到自身所在的任何ä½ç½®ï¼Œå¯¦(shÃ)ç¾(xià n)了移動(dòng)çš„GIS 組件。
(5) 路徑è¦(guÄ«)劃模塊
路徑è¦(guÄ«)劃模塊實(shÃ)ç¾(xià n)基于數(shù)å—地圖的點(diÇŽn)到點(diÇŽn)全局路徑è¦(guÄ«)劃功能。該模塊是在數(shù)å—地圖模塊查找交互æ“作功能的基礎(chÇ”)上é‹(yùn)ç”¨è¿ªæ°æ–¯ç‰¹æ‹‰ï¼ˆDijkstra)算法實(shÃ)ç¾(xià n)最優(yÅu)路徑æœç´¢ã€‚æ“作者在數(shù)å—地圖上é¸å–起始點(diÇŽn)和目標(biÄo)點(diÇŽn),程åºé€šéŽ(guò)Dijkstra 算法æœç´¢å¾—出兩點(diÇŽn)之間å¯ä»¥é€šè¡Œçš„æœ€å„ª(yÅu)路徑,并在數(shù)å—地圖上標(biÄo)è˜(shÃ)該最優(yÅu)路徑。
Dijkstra 算法是解決最çŸè·¯å¾‘å•(wèn)題的ç†è«–基礎(chÇ”)。該算法é©åˆäºŽè¨ˆ(jì)算帶權(quán)有å‘圖ä¸å…©ç¯€(jié)點(diÇŽn)之間的最çŸè·¯å¾‘。將數(shù)å—地圖上的é“路和地點(diÇŽn)抽象為有å‘圖的邊與節(jié)點(diÇŽn),é“路的長(zhÇŽng)度作為有å‘圖邊的權(quán)值,從而實(shÃ)ç¾(xià n)數(shù)å—地圖到帶權(quán)有å‘圖的抽象(見(jià n)圖4)。

Dijkstra 算法æ¥é©Ÿï¼š
Step1:è¨(shè)集åˆSå˜æ”¾å·²æ±‚出最çŸè·¯å¾‘的終節(jié)點(diÇŽn),åˆå§‹ç‹€æ…‹(tà i)時(shÃ),S集åˆåªæœ‰æºç¯€(jié)點(diÇŽn)v[sub]0[/sub],å³Sï¼ï½›v[sub]0[/sub]ï½ã€‚
Step2:令kï¼1,å°(duì)于節(jié)點(diÇŽn)v[sub]k[/sub],計(jì)ç®—v[sub]0[/sub]到v[sub]k[/sub]çš„è·é›¢
代價(jià )函數(shù):

Length(k)是v[sub]0[/sub]å’Œv[sub]k[/sub]之間å¯é”(dá)連接權(quán)值之和,如果v[sub]0[/sub]å’Œv[sub]k[/sub]之間ä¸å¯é”(dá),則è·é›¢ä»£åƒ¹(jià )函數(shù)值無(wú)窮大。
Step3:å–dist[k]值最å°çš„節(jié)點(diÇŽn)åºåˆ—ä¿å˜åœ¨path[k]ä¸ï¼Œå¹¶æ·»åŠ v[sub]k[/sub]到集åˆSä¸ï¼Œå³Sï¼ï½›v[sub]0[/sub],v[sub]k[/sub]ï½ã€‚且令kï¼k+1。
Step4:若v[sub]k[/sub]å³ç‚ºç›®æ¨™(biÄo)節(jié)點(diÇŽn),則算法çµ(jié)æŸï¼›å¦å‰‡ï¼Œè·³è½‰(zhuÇŽn)至Step2。
則path[k]ä¸å³ç‚ºæºç¯€(jié)點(diÇŽn)與目標(biÄo)節(jié)之間的最çŸè·¯å¾‘åºåˆ—,最å°dist[k]值å³ç‚ºæºç¯€(jié)點(diÇŽn)與目標(biÄo)節(jié)點(diÇŽn)之間的最çŸè·¯å¾‘è·é›¢ã€‚
è¨(shè)計(jì)實(shÃ)例
該手æŒç›£(jiÄn)控系統(tÇ’ng)已應(yÄ«ng)用到履帶çµ(jié)æ§‹(gòu)便攜å¼ç§»å‹•(dòng)機(jÄ«)器人實(shÃ)é©—(yà n)平臺(tái)。在室外實(shÃ)é©—(yà n)å ´(chÇŽng)地測(cè)試å–得較好的效果,測(cè)試éŽ(guò)程ä¸è»Ÿä»¶ç³»çµ±(tÇ’ng)用戶界é¢å¦‚圖5。用戶界é¢åˆ†ç‚ºä¸‰éƒ¨åˆ†ï¼šæ©Ÿ(jÄ«)器人自身狀態(tà i)ä¿¡æ¯é¡¯ç¤ºã€è¦–é »åœ–åƒæ•¸(shù)據(jù)é¡¯ç¤ºã€æ•¸(shù)å—地圖顯示。
çµ(jié)è«–
便攜å¼ç§»å‹•(dòng)機(jÄ«)器人手æŒç›£(jiÄn)控系統(tÇ’ng)在履帶çµ(jié)æ§‹(gòu)便攜å¼ç§»å‹•(dòng)機(jÄ«)器人實(shÃ)é©—(yà n)平臺(tái)上通éŽ(guò)測(cè)試。嵌入å¼ç¡¬ä»¶çµ(jié)æ§‹(gòu)å’ŒåµŒå…¥å¼æ“作系統(tÇ’ng)的引入符åˆç§»å‹•(dòng)智能終端è¨(shè)備體ç©å°ã€é‡é‡è¼•ã€å¯¦(shÃ)時(shÃ)性強(qiáng)ã€å¯é 性高的è¨(shè)計(jì)è¦æ±‚。
隨著高技術(shù)æ¦å™¨è£å‚™ç ”究的發(fÄ)展,便攜å¼ç§»å‹•(dòng)機(jÄ«)器人將越來(lái)越多地應(yÄ«ng)用在è»äº‹é ˜(lÇng)域。手æŒç›£(jiÄn)控系統(tÇ’ng)作為便攜å¼ç§»å‹•(dòng)機(jÄ«)器人的å系統(tÇ’ng)ï¼Œé€æ¥æˆç‚ºè»ç”¨æ©Ÿ(jÄ«)å™¨äººç ”ç©¶é ˜(lÇng)域的é‡è¦èª²é¡Œä¹‹ä¸€ã€‚