(長(zhǎng)安大學(xué) 工程機(jī)械學(xué)院,陜西 西安 710064)
隨著我國(guó)人口老齡化速度的加快,人力勞動(dòng)成本的不斷增長(zhǎng),近些年來(lái)我國(guó)機(jī)器人市場(chǎng)進(jìn)入了高速增長(zhǎng)期,服務(wù)機(jī)器人的研究也正處于方興未艾的階段。文獻(xiàn)[1]提出了一種基于嵌入式系統(tǒng),采用WiFi技術(shù)的智能化用于圖書(shū)館取書(shū)的機(jī)器人設(shè)計(jì)方案。文獻(xiàn)[2]提出一種基于Android系統(tǒng)和LabVIEW的變電站服務(wù)機(jī)器人的自適應(yīng)模糊PID控制器的設(shè)計(jì)方案。文獻(xiàn)[3]采用雙ARM Cortex架構(gòu),對(duì)嵌入式移動(dòng)機(jī)器人的控制器進(jìn)行了研究。文獻(xiàn)[4]針對(duì)液壓驅(qū)動(dòng)的四足機(jī)器人控制問(wèn)題,提出了一種以ARM為內(nèi)核的嵌入式控制系統(tǒng)的設(shè)計(jì)方案。文獻(xiàn)[5]~文獻(xiàn)[6]針對(duì)不同的應(yīng)用場(chǎng)合,提出了基于物聯(lián)網(wǎng)技術(shù),實(shí)現(xiàn)對(duì)機(jī)器人遠(yuǎn)程操控的控制器系統(tǒng)的設(shè)計(jì)方案。文獻(xiàn)[7]~文獻(xiàn)[11]采用Android系統(tǒng)作為機(jī)器人控制器設(shè)計(jì)中的輔助控制,就不同工況的機(jī)器人控制器設(shè)計(jì)進(jìn)行了有益的探討。
由上述研究可見(jiàn),服務(wù)機(jī)器人控制器的研究已經(jīng)獲得了長(zhǎng)足的發(fā)展?,F(xiàn)在服務(wù)機(jī)器人設(shè)計(jì)涉及大量模擬傳感器、開(kāi)關(guān)型傳感器以及電機(jī)的驅(qū)動(dòng),存在大量設(shè)備數(shù)據(jù)的交互;本地現(xiàn)場(chǎng)設(shè)備的運(yùn)行狀態(tài)需要實(shí)時(shí)現(xiàn)場(chǎng)監(jiān)測(cè)監(jiān)控;為使服務(wù)機(jī)器人更加人性化,服務(wù)機(jī)器人需具有多媒體交互功能。而現(xiàn)在服務(wù)機(jī)器人多采用的單核模式開(kāi)發(fā)控制器,雖能滿足上述需求,但也存在開(kāi)發(fā)周期長(zhǎng)、研發(fā)成本高等問(wèn)題。
為解決上述問(wèn)題,提出了一種以Android移動(dòng)終端為主控制器,以通信主板、模擬板和運(yùn)動(dòng)控制板為輔助控制器的多核異構(gòu)的服務(wù)機(jī)器人通用可編程控制器系統(tǒng)的設(shè)計(jì)方案。通信主板、模擬板和運(yùn)動(dòng)控制板由自定義增強(qiáng)型SPI相互通信,并分別完成特定的任務(wù)和功能,任務(wù)的進(jìn)度和協(xié)調(diào)由Android移動(dòng)終端進(jìn)行控制,將控制系統(tǒng)的任務(wù)多核化。運(yùn)載于主控制器移動(dòng)終端的控制器監(jiān)控系統(tǒng),方便了服務(wù)機(jī)器人設(shè)備現(xiàn)場(chǎng)性能的監(jiān)測(cè)監(jiān)控。開(kāi)發(fā)了一種基于EngineerC語(yǔ)言面向多核異構(gòu)的圖形化編程系統(tǒng),可實(shí)現(xiàn)對(duì)系統(tǒng)平臺(tái)的快速二次開(kāi)發(fā),圖形化編程降低了系統(tǒng)平臺(tái)對(duì)用戶編程能力的要求。
多核異構(gòu)的服務(wù)機(jī)器人可編程控制器的硬件主要包括通信主板、模擬板、運(yùn)動(dòng)控制板、移動(dòng)終端以及PC機(jī)。通信主板、模擬板和運(yùn)動(dòng)控制板間通過(guò)自定義增強(qiáng)型SPI進(jìn)行相互通信,實(shí)現(xiàn)數(shù)據(jù)的傳輸。運(yùn)動(dòng)控制板用于驅(qū)動(dòng)服務(wù)機(jī)器人相關(guān)的運(yùn)動(dòng)單元。模擬板用于采集傳感器和運(yùn)動(dòng)控制板的數(shù)據(jù)信息。通信主板主要實(shí)現(xiàn)移動(dòng)終端和微控制板之間的多方式通信。移動(dòng)終端作為主控制器,處理相關(guān)傳感器數(shù)據(jù),將數(shù)據(jù)以圖表形式顯示在移動(dòng)終端屏幕上。機(jī)器人圖形化編程系統(tǒng)(Robot Graphical Integration Development Environment,RGIDE)通過(guò)圖形編程系統(tǒng)為移動(dòng)終端和微控制板編寫(xiě)相關(guān)程序。該方案的具體實(shí)現(xiàn)原理圖如圖1所示。
通信主板實(shí)現(xiàn)了上位機(jī)與微控制板之間的通信,完成了代碼的燒寫(xiě)和傳感器數(shù)據(jù)的傳輸。通信主板主要由CAN總線、RS232串口、RS485接口、USB串口、藍(lán)牙、WiFi、以太網(wǎng)、自定義增強(qiáng)型SPI和電源構(gòu)成。通信主板與上位機(jī)采用以USB接口有線通信和CAN無(wú)線通信方式為主、其他多種通信方式為輔的通信模式,提高了該控制器的通用性。上位機(jī)主要采用以Android移動(dòng)終端為主,PC機(jī)等為輔的方案。移動(dòng)終端的控制器監(jiān)控系統(tǒng)中以動(dòng)態(tài)文本和動(dòng)態(tài)曲線的形式將傳感器數(shù)據(jù)顯示在屏幕上。
圖1 多核異構(gòu)控制器總體設(shè)計(jì)框架
模擬板主要包括A/D電路模塊、D/A電路模塊、增強(qiáng)SPI和電源模塊。A/D電路模塊主要由衰減電路、模擬開(kāi)關(guān)和儀表放大器組成,該模塊可采集來(lái)自傳感器的三路差分信號(hào)和兩路4~10 mA的電流信號(hào);D/A模塊可產(chǎn)生±10 V的數(shù)字信號(hào),用于系統(tǒng)測(cè)試;電源模塊主要是為模擬板提供±5 V和±15 V的電源。模擬板主要采集并處理來(lái)自超聲波測(cè)距傳感器、相關(guān)攝像機(jī)和機(jī)械里程計(jì)等外設(shè)傳感器的相關(guān)數(shù)據(jù),并通過(guò)通信板傳輸給移動(dòng)終端。模擬板D/A模塊原理圖如圖2所示。
運(yùn)動(dòng)控制板的主要功能為控制移動(dòng)機(jī)器人運(yùn)動(dòng)單元的運(yùn)動(dòng)狀態(tài),實(shí)現(xiàn)步進(jìn)電機(jī)的控制。運(yùn)動(dòng)控制板主要由DRV8835模塊、CH340模塊、SWD接口和電源模塊構(gòu)成。DRV8835模塊主要由4片DRV8835構(gòu)成,用以驅(qū)動(dòng)8個(gè)步進(jìn)電機(jī)的運(yùn)動(dòng)。SWD接口可實(shí)現(xiàn)運(yùn)動(dòng)控制板主芯片的單獨(dú)調(diào)試。運(yùn)動(dòng)控制板的CH340作為轉(zhuǎn)接芯片,可實(shí)現(xiàn)USB轉(zhuǎn)串口和USB打印串口。DRV8835的原理圖如圖3所示。
多核異構(gòu)控制器系統(tǒng)的硬件主要由通信主板、模擬板和運(yùn)動(dòng)控制板構(gòu)成。每個(gè)微控制板搭載不同的主芯片和外設(shè)芯片,從而將控制器的特定任務(wù)分配給特定的控制板完成。各微控制器之間可通過(guò)增強(qiáng)型SPI連接,實(shí)現(xiàn)了各微控制板互為主從的通信模式。各微控制板即可單運(yùn)行,也可多微控制板同步運(yùn)行。如在模擬板進(jìn)行多傳感器數(shù)據(jù)采集的同時(shí),運(yùn)動(dòng)控制主板進(jìn)行服務(wù)機(jī)器人的運(yùn)動(dòng)控制,實(shí)現(xiàn)了多任務(wù)的同步運(yùn)行,這種控制系統(tǒng)功能的多核化處理,降低了運(yùn)算負(fù)荷,提高了系統(tǒng)的實(shí)時(shí)性和可靠性。
圖2 D/A模塊原理圖
圖3 DRV8835原理圖
設(shè)計(jì)了一種運(yùn)載于終端移動(dòng)平臺(tái)的服務(wù)機(jī)器人監(jiān)控器系統(tǒng),便利了服務(wù)機(jī)器人的現(xiàn)場(chǎng)維護(hù)和維修。該監(jiān)控系統(tǒng)總體架構(gòu)如圖4所示。
該監(jiān)控系統(tǒng)使用Android中的Service組件實(shí)時(shí)獲取傳感器數(shù)據(jù),即在Service的onStarCommand()函數(shù)中初始化傳感器,獲取傳感器數(shù)據(jù),并實(shí)時(shí)傳輸給SQLite中間數(shù)據(jù)庫(kù)。首先設(shè)置傳感器管理器,并獲取相應(yīng)傳感器權(quán)限,其次,注冊(cè)并實(shí)例化傳感器監(jiān)聽(tīng)器,然后獲取傳感器數(shù)據(jù)。
陀螺儀傳感器和加速度傳感器數(shù)據(jù)由空間X軸、Y軸和Z軸三方向數(shù)據(jù)組成,經(jīng)如下算法獲得設(shè)備實(shí)際運(yùn)行狀態(tài)數(shù)據(jù)。
圖4 監(jiān)控系統(tǒng)總體架構(gòu)
If(event.Sensor.getType()=
Sensor.TYPE_GYROSCOPE)
{
float[]values_gy=event.values;
if(timestamp!=0)
{
//方向旋轉(zhuǎn)角度初始值
float axisX=event.values[0];
float axisY=event.values[1];
float axisZ=event.values[2];
}
}
該控制器監(jiān)控系統(tǒng)選擇Android移動(dòng)終端支持的SQLite數(shù)據(jù)庫(kù)作為中間數(shù)據(jù)庫(kù),用來(lái)存儲(chǔ)和管理獲取的傳感器數(shù)據(jù)。先創(chuàng)建數(shù)據(jù)庫(kù)monitordatabase,根據(jù)系統(tǒng)功能要求,創(chuàng)建sensordata_table(傳感器數(shù)據(jù)表)和userdata_table(用戶信息表)。
傳感器數(shù)據(jù)表創(chuàng)建的關(guān)鍵代碼如下:
Public void CreatTable_SensorData(
SQLitDatabase database)
{
String SensorTable=”create table
SensorTable(
id integer primary key autoincrement,
date Date,time Time,acc_xvalue Double,
acc_yvalue Double,acc_zvalue
Double,gyr_xvalue Double,
gyr_yvalue Double,gyr_zvalue Double);
Database.SQLexec(SensorTable);
}
對(duì)中間數(shù)據(jù)庫(kù)可進(jìn)行添加數(shù)據(jù)、更新數(shù)據(jù)、查找數(shù)據(jù)和刪除數(shù)據(jù)等操作。監(jiān)控系統(tǒng)中間數(shù)據(jù)庫(kù)的構(gòu)建和操作過(guò)程如圖5所示。
圖5 中間數(shù)據(jù)庫(kù)的構(gòu)建和操作流程
傳感器數(shù)據(jù)來(lái)源有兩種:一種是移動(dòng)終端自帶傳感器采集的數(shù)據(jù);一種是由模擬板采集的數(shù)據(jù),經(jīng)中央通信板傳送到移動(dòng)終端的傳感器數(shù)據(jù)。
獲得傳感器數(shù)據(jù)與當(dāng)前時(shí)間數(shù)據(jù),將時(shí)間數(shù)據(jù)傳遞給中間變量,然后匹配當(dāng)前時(shí)間與中間變量不一致時(shí),采集數(shù)據(jù)、刷新移動(dòng)端可視化數(shù)據(jù)。傳感器數(shù)據(jù)在移動(dòng)終端上的可視化方式有動(dòng)態(tài)文本和動(dòng)態(tài)曲線兩種模式。將移動(dòng)終端與測(cè)試設(shè)備綁定測(cè)試,獲得兩種顯示模式結(jié)果。
① 動(dòng)態(tài)文本模式。該控制器平臺(tái)的監(jiān)控系統(tǒng)設(shè)計(jì)中設(shè)計(jì)了中間數(shù)據(jù)庫(kù),系統(tǒng)將會(huì)從每200 ms刷新一次的中間數(shù)據(jù)庫(kù)中提取數(shù)據(jù),并以動(dòng)態(tài)文本的形式顯示在移動(dòng)平臺(tái)界面。傳感器數(shù)據(jù)動(dòng)態(tài)文本顯示界面如6所示。
② 動(dòng)態(tài)曲線模式。為能夠更加直觀地觀察傳感器數(shù)據(jù)的變化幅值和趨勢(shì),監(jiān)測(cè)系統(tǒng)使用可繪制圖表的TChart控件,將傳感器數(shù)據(jù)以動(dòng)態(tài)曲線的形式顯示在移動(dòng)平臺(tái)的界面。傳感器數(shù)據(jù)動(dòng)態(tài)曲線顯示界面如圖7所示。動(dòng)態(tài)曲線使用戶更容易發(fā)現(xiàn)錯(cuò)誤數(shù)據(jù)和意外工況,方便了現(xiàn)場(chǎng)維護(hù)和維修。
圖6 傳感器數(shù)據(jù)動(dòng)態(tài)文本顯示界面
圖7 傳感器數(shù)據(jù)動(dòng)態(tài)曲線顯示界面
研發(fā)了一種基于EngineerC開(kāi)發(fā)環(huán)境面向多核異構(gòu)的圖形化編程系統(tǒng)——機(jī)器人圖形化二次開(kāi)發(fā)平臺(tái)(RGIDE)。RGIDE由文件系統(tǒng)、拖拽系統(tǒng)、智能提示系統(tǒng)、圖形交互模塊、調(diào)試模塊和顯示模塊組成。RGIDE實(shí)現(xiàn)了對(duì)移動(dòng)終端和微控制板的程序代碼的編寫(xiě)和二次開(kāi)發(fā),RGIDE的圖形化簡(jiǎn)化了編程過(guò)程,降低了控制系統(tǒng)編程的難度,即便是初學(xué)者也能完成復(fù)雜代碼的編寫(xiě)。圖8為RGIDE的主界面。
圖8 RGIDE使用界面
為實(shí)現(xiàn)面向多核異構(gòu)控制器系統(tǒng)的調(diào)試與開(kāi)發(fā),研發(fā)了擁有自主知識(shí)產(chǎn)權(quán)的EngineerC開(kāi)發(fā)語(yǔ)言。該開(kāi)發(fā)語(yǔ)言以C語(yǔ)言為基礎(chǔ),結(jié)合C++和C#語(yǔ)言特點(diǎn),實(shí)現(xiàn)了半結(jié)構(gòu)化的自然語(yǔ)言編程。該語(yǔ)言為用戶提供了圖形化輸入語(yǔ)言,用戶根據(jù)編程邏輯,拖拽相關(guān)圖形完成工程的建立和函數(shù)的添加,編程代碼將在EngieerC開(kāi)發(fā)環(huán)境后臺(tái)自動(dòng)生成。
編程代碼的編寫(xiě)主要由圖形交互模塊實(shí)現(xiàn),是RGIDE編輯的核心部分,圖形交互模塊可以實(shí)現(xiàn)基本語(yǔ)句代碼交互和復(fù)雜表達(dá)式交互。
① 語(yǔ)句交互。RGIDE的語(yǔ)句交互主要實(shí)現(xiàn)在圖形代碼編輯區(qū)完成語(yǔ)句內(nèi)容實(shí)質(zhì)編輯??蓪?shí)現(xiàn)的語(yǔ)句交互類(lèi)型為定義變量交互,賦值語(yǔ)句交互,if/if…else…交互,for循環(huán)交互,while循環(huán)交互和return交互。如圖9,第0行和第1行為定義變量交互編輯,第2行和第6行組成if交互編輯,第3行和第5行為while循環(huán)交互編輯。由此可見(jiàn),此控制系統(tǒng)降低了對(duì)用戶編程水平的要求。
圖9 語(yǔ)句圖形交互
② 復(fù)雜表達(dá)式交互。用戶可通過(guò)復(fù)雜表達(dá)式交互的點(diǎn)擊調(diào)用,將變量、常量和函數(shù)自由組合在一起,如圖所示,通過(guò)點(diǎn)擊相應(yīng)圖形輸入單元格,可完成復(fù)雜編程程序的設(shè)計(jì),如圖10所示。
圖10 復(fù)雜表達(dá)式圖形交互
RGIDE為用戶提供了簡(jiǎn)單易學(xué)編程平臺(tái),使得編程知識(shí)欠缺用戶也可為該控制系統(tǒng)編寫(xiě)控制程序。使用RGIDE為該多核異構(gòu)服務(wù)機(jī)器人通用可編程控制系統(tǒng)編程方便易學(xué)。圖11展示了RGIDE為控制系統(tǒng)編寫(xiě)程序的編輯過(guò)程。
提出了一種面向服務(wù)機(jī)器人的基于多核異構(gòu)模式的通用可編程控制器系統(tǒng)平臺(tái)。完成了控制器系統(tǒng)的功能向各個(gè)微控制板的分配,實(shí)現(xiàn)了多核異構(gòu)的模式設(shè)計(jì),增加了系統(tǒng)的實(shí)時(shí)性和可靠性。通過(guò)客戶監(jiān)控系統(tǒng),將傳感器數(shù)據(jù)以動(dòng)態(tài)文本和動(dòng)態(tài)曲線形式,顯示在移動(dòng)終端的屏幕上,方便了系統(tǒng)平臺(tái)現(xiàn)場(chǎng)維修和維護(hù)。同時(shí)基于EngineerC語(yǔ)言的圖形化編程系統(tǒng),降低了平臺(tái)對(duì)用戶的編程能力要求,實(shí)現(xiàn)了對(duì)系統(tǒng)平臺(tái)的快速二次開(kāi)發(fā)。經(jīng)測(cè)試,該低成本控制器系統(tǒng)平臺(tái)達(dá)到了較高可靠性和實(shí)時(shí)性,且該系統(tǒng)運(yùn)行穩(wěn)定可靠。
圖11 RGIDE 編輯系統(tǒng)