概覽 由美國國家儀器公司工程師搭建的演示平臺NIRo是一種小型的無人地面車輛,它的組件都是從當(dāng)?shù)厣痰曛匈徺I的商用現(xiàn)貨。控制系統(tǒng)在集成了 FPGA和實時處理器的NI Single-Board RIO嵌入式平臺上實現(xiàn)。 部件概述 NIRo實現(xiàn)高效導(dǎo)航和避障需要幾個關(guān)鍵硬件組件: 嵌入式控制器 – 用于傳感器數(shù)據(jù)采集、決策和電機(jī)控制。 紅外線傳感器 – 用于探測機(jī)器人平臺兩側(cè)和后方一定距離內(nèi)的目標(biāo)。 超聲波傳感器 – 用于探測機(jī)器人前方的目標(biāo),因為前方覆蓋了較大的區(qū)域。 H橋 – 用于控制電池至電機(jī)的電流方向,使電機(jī)前進(jìn)或后退。 圖1顯示了每個硬件組件在NIRo上的位置。表1提供了詳細(xì)的部件列表。 ![]() 圖 1. NIRo硬件框圖 表1.部件列表
系統(tǒng)概述 NIRo的軟件構(gòu)架同時采用了底層和高層控制。避障和傳感器數(shù)據(jù)解析等高級任務(wù)在嵌入式實時控制器上執(zhí)行。避障算法使用IR和超聲波傳感器的測量數(shù)據(jù)來決定該如何根據(jù)周圍的環(huán)境進(jìn)行導(dǎo)航。 NIRo還包括電機(jī)的底層控制,該控制在FPGA上實現(xiàn)。根據(jù)避障算法獲得的結(jié)果,F(xiàn)PGA通過數(shù)字I/O線路輸出脈沖寬度調(diào)制(PWM)信號來控制電機(jī)。實時處理器與FPGA之間的數(shù)據(jù)傳輸通過LabVIEW內(nèi)置的FPGA接口功能來完成。 NIRo軟件構(gòu)架中的主要軟件組件包括: * 避障算法 * 電機(jī)控制(PWM) NIRo的軟件構(gòu)架可見圖2。IR傳感器與NI Single-Board RIO設(shè)備上內(nèi)建的模擬通道連接,超聲波傳感器與內(nèi)建的數(shù)字線路連接。電機(jī)與H橋連接,H橋再通過數(shù)字I/O連接到NI Single-Board RIO設(shè)備上。 ![]() 圖 2. 在NI Single-Board RIO平臺上實現(xiàn)NIRo的軟件構(gòu)架 避障 在避障過程中NIRo監(jiān)視從IR和超聲波傳感器獲得的值。如果從傳感器獲得的值顯示有物體接近,NIRo將按照自身與障礙物距離成比例的速率轉(zhuǎn)彎。也就是說,障礙物與NIRo的距離越近,轉(zhuǎn)彎的速度越快。 圖3的控制框圖說明了以上問題。障礙物與NIRo之間設(shè)置了一個預(yù)期最小距離。機(jī)器人與障礙物之間的距離小于該距離時會及時轉(zhuǎn)彎。機(jī)器人會考慮預(yù)期最小距離與物體真實距離的差值與傳感器測量到的真實距離的比例。 ![]() 圖 3. 用于避障的控制框圖 避障算法的實現(xiàn)代碼可見圖4。值得注意的是,與圖3類似,障礙物與NIRo之間的真實距離用來與最小預(yù)期距離進(jìn)行比較。還要注意圖4中case結(jié)構(gòu)與圖3中的避障框圖類似。 PID.vi的輸出用于向電機(jī)發(fā)出指令,使NIRo避開附近的障礙物。 ![]() 圖4. 用于避障的LabVIEW代碼 電機(jī)控制(PWM) 避障算法的輸出控制每個電機(jī)PWM信號的占空比。舉例來說,如果NIRo未在行進(jìn)路徑上探測到任何障礙物,它將向FPGA發(fā)送數(shù)據(jù)告訴電機(jī)向前行進(jìn)。這可通過向所有電機(jī)發(fā)送相同的占空比來實現(xiàn)。如果NIRo需要轉(zhuǎn)向,每個電機(jī)收到的PWM信號占空比將不同。 實時控制器將占空比指令發(fā)送給FPGA。在FPGA上,占空比指令被轉(zhuǎn)換成可被H橋使用的數(shù)字指令。每個H橋得到4個數(shù)字信號,4個數(shù)字信號結(jié)合確定了電池至電機(jī)的電流方向。根據(jù)發(fā)送到H橋的數(shù)字信號指揮電機(jī)前進(jìn)、后退或不動。 總結(jié) 盡管NIRo是小型的地面機(jī)器人,它用到的許多傳感器、算法和技術(shù)與大型的更復(fù)雜的機(jī)器人相同。通過LabVIEW Real-Time、LabVIEW FPGA及NI Single-Board RIO,開發(fā)人員能夠輕松集成硬件和軟件,快速設(shè)計、開發(fā)和發(fā)布算法。高層決策算法及底層電機(jī)控制都可以在同一個平臺上實現(xiàn)。通過集成可購買到的商用現(xiàn)貨以及使用高級圖形化編程語言,您可以極大地降低自主機(jī)器人開發(fā)的復(fù)雜性。 |