概覽
自主移動(dòng)機(jī)器人的規(guī)劃與導(dǎo)航包括利用有目的的抉擇制定和執(zhí)行來使系統(tǒng)實(shí)現(xiàn)最高級(jí)的目標(biāo),。機(jī)器人是否勝任導(dǎo)航的能力必須通過兩個(gè)技能來證明:路徑規(guī)劃和避障。
目錄
- ni.com/devzone/cda/tut/p/id/10842#toc0">路徑規(guī)劃
- 避障
- 在中LabVIEW使用算法
路徑規(guī)劃
給定地圖和目的地情況下的路徑規(guī)劃指的是機(jī)器人通過軌跡識(shí)別行進(jìn)至目的地的能力,。路徑規(guī)劃是至關(guān)重要的問題解決能力,因?yàn)闄C(jī)器人必須有能力決定在到達(dá)目的地前的路程中如何行進(jìn),。
路徑規(guī)劃可分為兩部分:表達(dá)與算法,。路徑規(guī)劃人員首先將機(jī)器人環(huán)境轉(zhuǎn)化為適合路徑規(guī)劃的形式。一些常用的技術(shù)包括廣義的Voronoi圖,、規(guī)則網(wǎng)格和四叉樹,。路徑規(guī)劃算法通常可用于幾乎所有配置空間的表達(dá),,雖然某些方法會(huì)更適合特定表達(dá),。圖1展示了LabVIEW中繪制的Voronoi圖。
圖1.LabVIEW中的Voronoi圖
由于多數(shù)表達(dá)可轉(zhuǎn)換為圖表,初始節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)之間的路徑可通過圖搜索算法來計(jì)算,。圖搜索算法被計(jì)算機(jī)科學(xué)充分理解,,然而,許多算法要求程序訪問圖上的每個(gè)節(jié)點(diǎn),,以此來決定初始節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)間的最短路徑,。對(duì)于松連通圖來說,訪問每個(gè)節(jié)點(diǎn)是容易計(jì)算的,,如Voronoi 圖,;但對(duì)于緊連通圖來說計(jì)算開銷迅速變大,如規(guī)則網(wǎng)格圖,。
避障
路徑規(guī)劃人員僅考慮預(yù)先知道的環(huán)境障礙,。在路徑執(zhí)行中可能由于地圖精度或動(dòng)態(tài)環(huán)境等因素,造成機(jī)器人真實(shí)傳感器的值與預(yù)期值之間存在差異,。因此,,機(jī)器人必須能根據(jù)真實(shí)傳感器的值實(shí)時(shí)改變運(yùn)動(dòng)路徑。這正是避障能力重要的原因,。一些通用的避障方法包括Bug算法,、VFH算法。
Bug算法
一種直接的路徑規(guī)劃方法是沿機(jī)器人行進(jìn)路線中每個(gè)障礙的輪廓繞行,。Bug1算法中,,機(jī)器人完全沿障礙物輪廓環(huán)繞,并在到達(dá)離目標(biāo)地點(diǎn)最近的點(diǎn)時(shí)分離,。這種方法效率低,,但能確保機(jī)器人到達(dá)任何可到達(dá)的目標(biāo)。Bug2算法中,,機(jī)器人先沿障礙物輪廓行進(jìn),,當(dāng)達(dá)到可直達(dá)目標(biāo)地點(diǎn)的位置時(shí)立刻分離。Bug2算法顯著縮短了機(jī)器人的行進(jìn)路程,,但仍不是最優(yōu)的,。
VFH算法
Bug算法的一個(gè)限制是機(jī)器人每一刻的行為一般為傳感器最近時(shí)刻讀數(shù)的函數(shù)。這就可能導(dǎo)致機(jī)器人的瞬時(shí)傳感器讀數(shù)不能為穩(wěn)定的避障能力提供足夠的信息,。VFH技術(shù)通過創(chuàng)建機(jī)器人周圍環(huán)境的地圖克服了該限制,。在避障時(shí)生成極坐標(biāo)柱狀圖來確定轉(zhuǎn)向。首先,,識(shí)別能夠讓機(jī)器人通過的所有通道,。然后,執(zhí)行考慮目標(biāo)方向,、輪方向和前一刻方向的代價(jià)函數(shù),。
圖2.LabVIEW VI的前面板運(yùn)行VFH避障算法
在中LabVIEW使用算法
通過LabVIEW用戶可選擇最有效的語法來開發(fā)算法,,或使用內(nèi)置工具來導(dǎo)入其它基于文本語言寫的算法。繼承代碼中已有的搜索算法及其它機(jī)器人庫可輕松導(dǎo)入LabVIEW,、LabVIEW Real-Time和LabVIEW FPGA中,。
調(diào)用函數(shù)庫節(jié)點(diǎn)
LabVIEW用戶可利用調(diào)用庫函數(shù)節(jié)點(diǎn)在Windows機(jī)器和實(shí)時(shí)嵌入式控制器中調(diào)用DLL。該節(jié)點(diǎn)用于在LabVIEW中創(chuàng)建調(diào)用專為LabVIEW編寫的已有庫或新庫的接口,。下圖的調(diào)用庫函數(shù)節(jié)點(diǎn)輸入4個(gè)字節(jié)的浮點(diǎn)數(shù),,并輸出其平方值。
圖3.調(diào)用函數(shù)庫節(jié)點(diǎn)可在LabVIEW中用于導(dǎo)入繼承代碼
也可參閱:
公式節(jié)點(diǎn)
公式節(jié)點(diǎn)可用于LabVIEW和LabVIEW Real-Time中的算法開發(fā),。公式節(jié)點(diǎn)是一種簡單的基于文本語言的節(jié)點(diǎn),,用于在LabVIEW框圖中執(zhí)行數(shù)學(xué)操作。用戶無需連接任何外部代碼或應(yīng)用,,也無需連接低級(jí)算法函數(shù)來創(chuàng)建等式,。除了基于文本的等式表達(dá),公式節(jié)點(diǎn)還能接受基于文本版的if聲明,、while循環(huán),、for循環(huán)和do循環(huán),這些都是C 語言用戶所熟悉的,。
圖4.公式節(jié)點(diǎn)采用類似C語言的語法
公式節(jié)點(diǎn)對(duì)于包含許多變量或非常復(fù)雜的等式,,以及使用已有的基于文本的代碼來說很有用,。用戶可將已有的基于文本的代碼復(fù)制,、粘貼到公式節(jié)點(diǎn)中,避免了重新創(chuàng)建圖形代碼的麻煩,。
也可參閱:
指南:Mathscript和公式節(jié)點(diǎn)
練習(xí):Mathscript和公式節(jié)點(diǎn)
視頻:Mathscript和公式節(jié)點(diǎn)
HDL節(jié)點(diǎn)
HDL接口節(jié)點(diǎn)允許用戶在LabVIEW FPGA中綜合硬件描述語言(HDL)寫的算法或應(yīng)用,。用戶可以直接在HDL接口節(jié)點(diǎn)中輸入HDL代碼,或引用外部HDL文件,,下圖的例子中,,HDL輸入節(jié)點(diǎn)包括了VHDL代碼,將兩個(gè)32比特?cái)?shù)字相加并返回結(jié)果,。
圖5.HDL節(jié)點(diǎn)允許用于向LabVIEW FPGA中導(dǎo)入HDL代碼
也可參閱:
HDL接口節(jié)點(diǎn)FAQ
使用HDL接口節(jié)點(diǎn)向FPGA VI中導(dǎo)入HDL代碼
使用HDL接口節(jié)點(diǎn)在LabVIEW FPGA中綜合IP核
了解更多關(guān)于機(jī)器人技術(shù),,可參閱機(jī)器人技術(shù)基礎(chǔ)系列主頁ni.com/zone。
目前NI已全面推出LabVIEW Robotics 2009,,用于自主地面機(jī)器人系統(tǒng)的設(shè)計(jì),、原型與發(fā)布,更多信息請?jiān)L問www.ni.com/robotics/zhs,。