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