主要介紹了一種移動(dòng)機(jī)器人的運(yùn)動(dòng)控制系統(tǒng)硬、軟件結(jié)構(gòu)??刂葡到y(tǒng)是由工業(yè)PC,ADT850運(yùn)動(dòng)控制卡及相關(guān)傳感器組成;操作系統(tǒng)采用Windows98系統(tǒng),采用VisualC++6.0開(kāi)發(fā),并應(yīng)用模塊化及Windows線程的多任務(wù)處理機(jī)制實(shí)現(xiàn)控制程序設(shè)計(jì);根據(jù)狀態(tài)反饋控制理論,設(shè)計(jì)了移動(dòng)機(jī)器人路徑跟蹤控制算法。實(shí)驗(yàn)論證了此控制系統(tǒng)及控制算法的有效性。
引言
移動(dòng)機(jī)器人是能夠在未知環(huán)境下自主運(yùn)動(dòng)的智能機(jī)器人,集環(huán)境感知、動(dòng)態(tài)決策與規(guī)劃、運(yùn)動(dòng)控制等多項(xiàng)功能于一體,其中運(yùn)動(dòng)控制系統(tǒng)的主要功能是實(shí)現(xiàn)對(duì)上層規(guī)劃路徑的跟蹤[1]。
隨著科學(xué)技術(shù)的發(fā)展,人類(lèi)的研究活動(dòng)領(lǐng)域已由陸地?cái)U(kuò)展到海底和空間。利用移動(dòng)機(jī)器人進(jìn)行空間探測(cè)和開(kāi)發(fā),已成為21世紀(jì)世界各主要科技發(fā)達(dá)國(guó)家開(kāi)發(fā)空間資源的主要手段之一。研究和發(fā)展月球探測(cè)移動(dòng)機(jī)器人技術(shù),對(duì)包括移動(dòng)機(jī)器人運(yùn)動(dòng)控制在內(nèi)的相關(guān)前沿技術(shù)的研究將產(chǎn)生巨大的推動(dòng)作用[2]。
本文提出了一種基于工業(yè)計(jì)算機(jī)(IPC)及ADT850運(yùn)動(dòng)控制卡的移動(dòng)機(jī)器人運(yùn)動(dòng)控制系統(tǒng),實(shí)現(xiàn)移動(dòng)機(jī)器人的車(chē)體與傳感器云臺(tái)運(yùn)動(dòng)控制。采用Windows系統(tǒng)的模塊化、多線程軟件設(shè)計(jì)方法,使系統(tǒng)具有較好的開(kāi)放性,易于功能擴(kuò)展。針對(duì)本系統(tǒng),提出了一種基于狀態(tài)反饋的移動(dòng)機(jī)器人路徑跟蹤控制算法,實(shí)現(xiàn)平穩(wěn)、有效的鎮(zhèn)定控制。
1運(yùn)動(dòng)控制系統(tǒng)的硬件結(jié)構(gòu)
1.1問(wèn)題的描述
對(duì)于移動(dòng)機(jī)器人的運(yùn)動(dòng)控制系統(tǒng),精確地進(jìn)行自定位是一個(gè)基本的要求。自定位就是獲得機(jī)器人自身相對(duì)于一個(gè)固定坐標(biāo)系的位置和方向角(統(tǒng)稱(chēng)位姿)。因此,從系統(tǒng)硬件層次來(lái)講,移動(dòng)機(jī)器人就必須要有一定的傳感器來(lái)獲得這些位姿信息,如利用固定在驅(qū)動(dòng)輪軸上的光電編碼器,通過(guò)測(cè)量各電機(jī)的運(yùn)動(dòng)增量推算出機(jī)器人的位置,利用光纖陀螺儀測(cè)量機(jī)器人在水平面的方向角,利用傾角傳感器測(cè)量機(jī)器人與水平面的傾角。另外,移動(dòng)機(jī)器人運(yùn)動(dòng)系統(tǒng)還要接收上層決策系統(tǒng)路徑規(guī)劃信息及向決策系統(tǒng)反饋機(jī)器人狀態(tài)信息等,因此要求系統(tǒng)要有較好的通信能力。
1.2硬件系統(tǒng)結(jié)構(gòu)
運(yùn)動(dòng)控制系統(tǒng)由計(jì)算機(jī)系統(tǒng)、傳感器系統(tǒng)、驅(qū)動(dòng)控制系統(tǒng)及電源系統(tǒng)等幾個(gè)部分組成(如圖1)。其中,計(jì)算機(jī)系統(tǒng)采用通用的工控機(jī)(IPC),這樣保證了整個(gè)系統(tǒng)較好的可擴(kuò)展性。傳感器系統(tǒng)包括編碼器、光纖陀螺儀及傾角傳感器。編碼器用來(lái)測(cè)量車(chē)輪的實(shí)際轉(zhuǎn)動(dòng)量;光纖陀螺儀用來(lái)測(cè)量機(jī)器人車(chē)體在水平面的方向偏角;傾角傳感器則用來(lái)測(cè)量機(jī)器人車(chē)體與水平面傾角。驅(qū)動(dòng)控制系統(tǒng)包括ADT850運(yùn)動(dòng)控制卡及步進(jìn)電機(jī)驅(qū)動(dòng)器。電源系統(tǒng)采用二組鎳氫12Ah電池組分別對(duì)計(jì)算機(jī)系統(tǒng)與驅(qū)動(dòng)系統(tǒng)獨(dú)立供電,其中計(jì)算機(jī)系統(tǒng)采用24V直流源,步進(jìn)電機(jī)采用36V直流源,可以支持系統(tǒng)連續(xù)工作2~3小時(shí)。
圖1移動(dòng)機(jī)器人運(yùn)動(dòng)控制系統(tǒng)硬件結(jié)構(gòu)框圖
光纖陀螺儀、傾角傳感器通過(guò)串口向IPC傳送移動(dòng)機(jī)器人的姿態(tài)信息,編碼器采集的移動(dòng)機(jī)器人位置信息,通過(guò)ADT850運(yùn)動(dòng)控制卡的I/O向IPC傳送。IPC獲取移動(dòng)機(jī)器人位姿信息后,并作相應(yīng)融合處理,然后根據(jù)上層決策系統(tǒng)提供的路徑規(guī)劃信息,執(zhí)行相應(yīng)的控制算法,向運(yùn)動(dòng)控制卡發(fā)送控制命令??刂泼钔ㄟ^(guò)運(yùn)動(dòng)控制卡,轉(zhuǎn)換為控制步進(jìn)電機(jī)的脈沖信號(hào)。
ADT850運(yùn)動(dòng)控制卡是基于PCI總線的高性能四通道伺服/步進(jìn)控制卡,在本系統(tǒng)中,兩個(gè)通道分別用于機(jī)器人車(chē)體左、右輪的驅(qū)動(dòng)控制,另外兩個(gè)通道分別用于傳感器云臺(tái)的旋轉(zhuǎn)與俯仰運(yùn)動(dòng)控制。其脈沖輸出方式可用單脈沖(脈沖+方向)或雙脈沖(脈沖+脈沖)方式,這里采用前一種方式,最大脈沖頻率為4MHz。位置管理采用兩個(gè)加/減計(jì)數(shù)器,一個(gè)用于內(nèi)部管理驅(qū)動(dòng)脈沖輸出的邏輯位置計(jì)數(shù)器,一個(gè)用于接收編碼器輸入信號(hào),作為實(shí)際位置計(jì)數(shù)器,計(jì)數(shù)器位數(shù)高達(dá)32位。還有到位信號(hào)、報(bào)警信號(hào)、伺服開(kāi)啟信號(hào)等外部輸入信號(hào)接口。提供多種運(yùn)動(dòng)控制方式,如定量運(yùn)動(dòng)、連續(xù)運(yùn)動(dòng)、回零運(yùn)動(dòng)等。速度控制可用定速和直線或S曲線加減速,可做非對(duì)稱(chēng)直線加減速,可用自動(dòng)或手動(dòng)減速。每軸有2個(gè)32位比較寄存器,用于產(chǎn)生中斷或作為軟件限位。并且每軸有8個(gè)輸入信號(hào)端,包括2個(gè)正負(fù)限位信號(hào),3個(gè)停止信號(hào),1個(gè)伺服報(bào)警信號(hào)和1個(gè)通用輸入信號(hào)。除限位信號(hào)外,其余信號(hào)可通過(guò)設(shè)置成無(wú)效來(lái)作為通用輸入信號(hào)。所有數(shù)字輸入信號(hào)均有積分型濾波器,可選8種濾波時(shí)間常數(shù),以防止干擾。各軸最高輸出速度可以通過(guò)設(shè)定其倍率參數(shù)來(lái)決定,因?yàn)轵?qū)動(dòng)速度、加/減速度等參數(shù)的設(shè)定范圍只在1~8000之間,若需要設(shè)定8000以上的數(shù)值的話,就必須提高倍率,但提高倍率后,速度的分辨率會(huì)相應(yīng)地降低。因此,在保證能達(dá)到最高的驅(qū)動(dòng)速度的條件下,設(shè)定最小倍率。由于移動(dòng)機(jī)器人最高速度為0.8m/s,轉(zhuǎn)化為脈沖頻率即為64kp/s,故最小倍率應(yīng)設(shè)定為8。
步進(jìn)電機(jī)驅(qū)動(dòng)器的輸入信號(hào)共有3路,它們是:步進(jìn)脈沖信號(hào)CP、方向電平信號(hào)DIR、脫機(jī)信號(hào)FREE。它們?cè)隍?qū)動(dòng)器內(nèi)部分別通過(guò)270????的限流電阻接入光耦的負(fù)輸入端,且電路形式完全相同,見(jiàn)圖2。OPTO端為3路信號(hào)的公共正端(3路光耦的正輸入端),3路輸入信號(hào)在驅(qū)動(dòng)器內(nèi)部接成共陽(yáng)方式,所以O(shè)PTO端須接外部系統(tǒng)的VCC,如果VCC是+5V則可直接接入;如果VCC是12V則須外部另加限流電阻R=680????,VCC是24V則須外部另加限流電阻R=1.8k????,以保證給驅(qū)動(dòng)器內(nèi)部光耦提供8~15mA的驅(qū)動(dòng)電流。步進(jìn)脈沖信號(hào)CP用于控制步進(jìn)電機(jī)的位置和速度,也就是說(shuō):驅(qū)動(dòng)器每接受一個(gè)CP脈沖就驅(qū)動(dòng)步進(jìn)電機(jī)旋轉(zhuǎn)一個(gè)步距角,CP脈沖的頻率改變則同時(shí)使步進(jìn)電機(jī)的轉(zhuǎn)速改變,控制CP脈沖的個(gè)數(shù),則可以使步進(jìn)電機(jī)精確定位。這樣就可以很方便地達(dá)到步進(jìn)電機(jī)調(diào)速和定位的目的。方向電平信號(hào)DIR用于控制步進(jìn)電機(jī)的旋轉(zhuǎn)方向。此端為高電平時(shí),電機(jī)為一個(gè)轉(zhuǎn)向;此端為低電平時(shí),電機(jī)為另一個(gè)轉(zhuǎn)向。電機(jī)換向必須在電機(jī)停止后再進(jìn)行,并且換向信號(hào)一定要在前一個(gè)方向的最后一個(gè)CP脈沖結(jié)束后以及下一個(gè)方向的第一個(gè)CP脈沖前發(fā)出。
1.3軟件系統(tǒng)結(jié)構(gòu)
本控制系統(tǒng)的操作系統(tǒng)采用Windows98,程序開(kāi)發(fā)系統(tǒng)采用VisualC++,并且采用模塊化及Windows線程的多任務(wù)處理機(jī)制等程序設(shè)計(jì)方法,這樣不僅便于程序調(diào)試與修改,而且還可以實(shí)現(xiàn)控制系統(tǒng)的準(zhǔn)并行分布式處理[3]。
首先,利用ADT850運(yùn)動(dòng)控制卡所提供的開(kāi)發(fā)庫(kù)函數(shù),將其針對(duì)運(yùn)動(dòng)控制卡各通道的操作封裝為針對(duì)機(jī)器人各輪的操作函數(shù),這些函數(shù)均屬于定義為CAdtMotorCtrl類(lèi)的成員函數(shù)。舉例如下:
通過(guò)以上兩個(gè)類(lèi),基本上屏蔽了運(yùn)動(dòng)控制卡及機(jī)器人本體有關(guān)硬件操作和硬件參數(shù),從而使上層開(kāi)發(fā)更加簡(jiǎn)單、方便,在無(wú)需知道與之相關(guān)的硬件知識(shí)就能完成機(jī)器人運(yùn)動(dòng)控制程序的開(kāi)發(fā)。使系統(tǒng)具備良好的可擴(kuò)展性能。其總體結(jié)構(gòu)如圖3所示:
圖3移動(dòng)機(jī)器人運(yùn)動(dòng)控制系統(tǒng)程序框圖
其中位姿狀態(tài)監(jiān)測(cè)模塊用來(lái)采集各傳感器的輸入信號(hào),完成對(duì)移動(dòng)機(jī)器人位置姿態(tài)的監(jiān)測(cè),并將這些信號(hào)作為控制系統(tǒng)的反饋信號(hào);路徑跟蹤控制模塊實(shí)現(xiàn)移動(dòng)機(jī)器路徑跟蹤控制算法,向驅(qū)動(dòng)系統(tǒng)提供控制信號(hào);傳感器云臺(tái)控制模塊控制傳感器云臺(tái)以角速度8(?。?s水平轉(zhuǎn)動(dòng)及4(?。?s俯仰運(yùn)動(dòng);緊急情況處理模塊用于各種緊急情況處理;通信模塊完成運(yùn)動(dòng)控制系統(tǒng)與上層決策系統(tǒng)之間的通信。
為了保證控制系統(tǒng)的實(shí)時(shí)性,利用位于Win????dows底層的定時(shí)控制API函數(shù),由它來(lái)獲得較高精度的定時(shí)信號(hào),而且,通過(guò)線程的優(yōu)先級(jí)安排,可以解決各線程對(duì)系統(tǒng)資源爭(zhēng)奪問(wèn)題,將重要的、緊急的任務(wù)安排在優(yōu)先級(jí)高的線程中來(lái)完成;另外,ADT850運(yùn)動(dòng)控制卡能夠獨(dú)立響應(yīng)和處理一些硬中斷事件,可以用來(lái)處理緊急事件,如機(jī)器人需緊急停止等,從而進(jìn)一步提高了控制系統(tǒng)的實(shí)時(shí)性。經(jīng)實(shí)驗(yàn),此方案完全能夠滿足本移動(dòng)機(jī)器人實(shí)時(shí)性要求。
2運(yùn)動(dòng)控制算法
移動(dòng)機(jī)器人的運(yùn)動(dòng)控制最主要的就是路徑跟蹤控制,其任務(wù)就是控制機(jī)器人使其運(yùn)動(dòng)軌跡漸近收斂于期望軌跡。由于移動(dòng)機(jī)器人車(chē)體的非線體、輪胎與地面的滑動(dòng)和非完整約束等原因,無(wú)法建立一個(gè)精確的數(shù)學(xué)模型[4],因此,本文提出了一種基于狀態(tài)反饋路徑跟蹤控制算法。
首先,對(duì)二差分輪式移動(dòng)機(jī)器人作運(yùn)動(dòng)學(xué)分析。設(shè)vl,vr分別為機(jī)器人左、右輪速,如圖所示,
在半徑為3m的圓軌跡跟蹤過(guò)程中,最大超調(diào)量約為1.2m,經(jīng)過(guò)50s左右便穩(wěn)定在期望軌跡上,且最終穩(wěn)態(tài)誤差約為0.15m。
4結(jié)論
本文介紹了一種基于IPC與ADT850的移動(dòng)機(jī)器人運(yùn)動(dòng)控制系統(tǒng),包括系統(tǒng)的硬件、軟件體系結(jié)構(gòu)。采用基于狀態(tài)反饋的控制算法,對(duì)移動(dòng)機(jī)器人進(jìn)行軌跡跟蹤控制,實(shí)驗(yàn)證明了本控制系統(tǒng)及控制算法的有效性。本系統(tǒng)采用了Windows系統(tǒng)的模塊化及Windows線程的多任務(wù)處理機(jī)制程序設(shè)計(jì)方法,使本控制系統(tǒng)具有較好的擴(kuò)展性和開(kāi)放性,為進(jìn)一步研究與實(shí)用化創(chuàng)造了較好的條件。
評(píng)論
查看更多