王 可,黃曉華,張 健,仇家強
(南京理工大學(xué) 機械工程學(xué)院,南京 210094)
ARM 是一種當(dāng)前最為流行的嵌入式處理器架構(gòu),也是各類半導(dǎo)體廠商設(shè)計嵌入式低功耗、高性能SoC 的首選架構(gòu)[1]?;贏RM v7 架構(gòu)的Cortex 系列分為A、R和M 三類,旨在服務(wù)于不同的應(yīng)用需求:“A”系列面向尖端的基于虛擬內(nèi)存的操作系統(tǒng)和高性能計算應(yīng)用,除了ARM 多內(nèi)核之外,SoC 常整合DSP 與圖形加速芯片以提高系統(tǒng)處理能力;“R”系列針對實時系統(tǒng),常用于要求嚴(yán)苛的工業(yè)現(xiàn)場;“M”系列針對高性能微控制器,常用于對于價格、功耗敏感的領(lǐng)域,以取代傳統(tǒng)的8位或16 位單片機[2]。
基于視覺的AGV(Automated Guided Vehicle)車載控制器一方面需要高性能的處理器進(jìn)行實時圖像處理[3-4]和實現(xiàn)圖形化的人機界面[5-6],另一方面需要實時可靠的工控技術(shù)來實現(xiàn)AGV 的機電動作,并且需要盡可能的降低系統(tǒng)功耗[7-8]。本研究利用ARM Cor?tex-A 系列高性能計算技術(shù)和Cortex-M 系列微控制器技術(shù)的集成[9],能夠發(fā)揮各自的優(yōu)勢[10],為操舵型視覺導(dǎo)航AGV 小車Anrot-I 設(shè)計與實現(xiàn)雙核控制器。
操舵型AGV 小車Anrot-I 是一個基于視覺導(dǎo)航的靈活的、低成本輪式移動機器人,它可以根據(jù)設(shè)定在地面上的黑色導(dǎo)引線,實現(xiàn)跟蹤直線路徑、識別十字路口、圓弧轉(zhuǎn)彎等基本運動功能。借助于超聲波傳感器和觸碰開關(guān)實現(xiàn)障礙物檢測的二級安全動作,即在接近障礙物時減慢車身速度,在碰撞到障礙物時能急停。
操舵型AGV 示意圖如圖1 所示,小車的后驅(qū)單元(4)是通用的400W 無刷直流電機和差速器,配合電機驅(qū)動器反饋的表征速度的相線電壓信號,實現(xiàn)速度閉環(huán)控制。實現(xiàn)轉(zhuǎn)向的是60W 空心杯有刷直流電機(5),裝有大比率行星齒輪減速箱和光電編碼器,通過伺服驅(qū)動器內(nèi)置的閉環(huán)控制實現(xiàn)精確的位置動作。另一只前輪是萬向自由輪,起支撐和跟轉(zhuǎn)作用。
圖1 操舵型AGV 示意圖
48 V 酸鉛蓄電池和DC-DC 隔離電源為AGV 的所有功率和控制部件提供穩(wěn)定的電壓,控制器是AGV 的核心,收集來自CMOS 攝像頭、超聲波傳感器、觸碰開關(guān)、驅(qū)動電機速度反饋、轉(zhuǎn)舵電機位置反饋、蓄電池電壓等信息,向后驅(qū)電機驅(qū)動器、前舵輪伺服驅(qū)動器和其他執(zhí)行器輸出控制信號。
本研究選擇三星公司基于Cortex-A8 內(nèi)核SoC 芯片“S5PV210”作為實現(xiàn)圖像處理與人機界面的單元,選擇意法半導(dǎo)體公司基于Cortex-M3 內(nèi)核SoC 芯片“STM32F103”作為實時工控單元,配合輸入/輸出接口單元、LCD 電容觸摸屏、WIFI 無線網(wǎng)卡、蓄電池與隔離電源模塊、電機驅(qū)動器及其他部件,共同實現(xiàn)AGV 車載控制系統(tǒng)運行和調(diào)試所需的功能。控制器的硬件系統(tǒng)如圖2 所示。
基于Cortex-A8 ARM 內(nèi)核的S5PV210 有32 K 一級緩存、512 K 二級緩存,支持VFP 硬浮點指令,工作頻率1 GHz 時能達(dá)到2 000 MIPS 的計算性能。外設(shè)集成的USB 控制器、64 位多層總線、GPU 單元、音/視頻編解碼硬處理單元等,這讓多媒體應(yīng)用更加獨立于CPU 內(nèi)核。本研究搭載該SoC 的電路板運行Linux 2.6 操作系統(tǒng),豐富的外設(shè)驅(qū)動資源能夠用于輕易地搭建基于USB CMOS 攝像頭的導(dǎo)航單元,通過內(nèi)置圖像處理算法識別路徑。7″LCD 電容觸摸屏作為人機界面(Human Machine Interface HMI)可以顯示功能配置、路徑、實時狀態(tài)等信息,并且能夠進(jìn)行在線的AGV 人機交互。系統(tǒng)通過WIFI 無線網(wǎng)卡實現(xiàn)PC 機對AGV 的遠(yuǎn)程控制。
基于Cortex-M3 ARM 內(nèi)核的STM32F103,工作溫度-40℃~80℃,主頻最高72 MHz,SoC 內(nèi)部集成512 K Flash,64 K SRAM,可以外擴512 K SRAM 和16 M NorFlash,集成了微控制器常見的外設(shè),并且外設(shè)可以通過程序配置任意向某個GPIO 映射,保證了硬件設(shè)計的靈活性。搭載該微控制器的電路板運行實時操作系統(tǒng)(RTOS),便于程序的編寫與擴展。通過輸入/輸出接口板,連接AGV 的開關(guān)、傳感器及執(zhí)行器。
圖2 控制器硬件系統(tǒng)圖
微控制器的外部連接主要分為3 個部分:①通過UART 接口或者USB 接口,接收來自A8 板的控制與導(dǎo)航信息,發(fā)送AGV 運動狀態(tài)信息;②通過UART 接口向前舵輪的伺服控制器發(fā)送位置信息,通過ADC 模數(shù)轉(zhuǎn)換后接收來自后輪驅(qū)動器的電壓(速度)信號,控制信號通過DAC 數(shù)模轉(zhuǎn)換后發(fā)送至后輪驅(qū)動器;③ 通過光耦隔離輸入來自觸碰開關(guān)、接近開關(guān)、超聲波傳感器、急停與啟停開關(guān)的信號,通過繼電器輸出功率電源通斷信號、警示燈和聲音信號等。典型的光耦隔離輸入與繼電器輸出接口如圖3 和圖4 所示。④留出保留的I/O 接口,包括光耦隔離輸入和繼電器輸出,以控制AGV 的特定輔助功能如移載貨物等。
圖3 光耦隔離輸入
圖4 繼電器輸出
控制器的電能由兩組24 V~20 AH 的酸鉛蓄電池提供,經(jīng)過隔離的DC-DC 電源模塊,轉(zhuǎn)換成各個控制器所需的電壓。其中,后驅(qū)輪的驅(qū)動器的48 V 電壓和前舵輪的伺服驅(qū)動器的24 V 電壓直接由蓄電池引出。系統(tǒng)的供電原則是控制電源和電機功率電源完全隔離,電源模塊的功率容積留出安全余量。
雙核控制器的設(shè)計目的是為了能夠處理兩種不同的控制任務(wù),這里使用了基于分層(高層–低層)的信息模型。分層功能模型如圖5 所示,是程序設(shè)計的主要框架。運行Linux 2.6 的A8 處理器承擔(dān)了圖像采集與處理、HMI 顯示與指令輸入、遠(yuǎn)程WIFI 控制信號的任務(wù),并且將這些所有的外部高層信息通過集中決策,產(chǎn)生動作控制指令并傳遞給M3 處理器。這個板級之間的指令是一串預(yù)先明確定義的字符串,A8 和M3 都有專門的板級通訊模塊來處理。由于Linux 是一個完善而且強大的操作系統(tǒng),從程序開發(fā)的角度來看,基于Linux 圖像采集與處理、人機界面和遠(yuǎn)程通訊的功能都是便于實現(xiàn)的。
圖5 分層功能模型
M3 處理器運行的是實時操作系統(tǒng),與非實時的Linux 操作系統(tǒng)不同的是,對于緊急事件,如優(yōu)先級最高的外部碰撞中斷、急停開關(guān)等,系統(tǒng)總是能夠以最快的速度響應(yīng),這從實際的AGV 動作執(zhí)行層面確保了系統(tǒng)的安全性與可靠性。另外,由于實時系統(tǒng)本身的設(shè)計理念以及其復(fù)雜度較小,也易于實現(xiàn)時序準(zhǔn)確的功能。
從板級通訊模塊得到的上層控制信息主要有AGV 工作模式、路徑偏差值、路徑的曲率、何時需要轉(zhuǎn)彎或者停車等,這由“信號解釋器”任務(wù)進(jìn)行解讀,并通過“定時器任務(wù)同步與分發(fā)器”進(jìn)行各種功能的觸發(fā)。在AGV 正常沿直線路徑行駛時,“路徑跟蹤器”產(chǎn)生后驅(qū)輪的目標(biāo)速度以及前舵輪的目標(biāo)轉(zhuǎn)角位置,通過“后輪控制器”和“前輪控制器”發(fā)出實際的電機控制指令。由于Anrot-I 型AGV 車實際的電機與驅(qū)動器選用,這里的“前輪控制器”只需要單向地通過串口向Elmo 驅(qū)動器發(fā)出位置、速度和加速度指令,而“后輪控制器”則需要通過ADC 轉(zhuǎn)換得到的速度進(jìn)行閉環(huán)算法,最終由DAC 得到驅(qū)動器所需的模擬控制電壓,這個過程的示意在圖2 中展現(xiàn)。
在收到上層傳達(dá)的十字路口轉(zhuǎn)彎或者圓弧路徑跟蹤信號時,“路徑跟蹤器”可以執(zhí)行與正常沿直線路徑行駛不同的算法,以保證在這種狀態(tài)下的AGV 的最佳運動軌跡。
在收到上層傳達(dá)的定點停車或者外部急停開關(guān)、超聲波傳感器、碰撞開關(guān)得到的信號時,一個優(yōu)先級最高的任務(wù)被觸發(fā),進(jìn)入“緊急事件處理器”進(jìn)行動作。
根據(jù)以上小車的機電系統(tǒng)設(shè)計方案,本研究在自主研制的Anrot-I 型AGV 平臺上進(jìn)行實驗。雙核控制器的實物示意圖如圖6 所示,操舵型AGV 跟蹤弧線時的實驗如圖7 所示。具體實現(xiàn)AGV 導(dǎo)航和運動功能的程序模塊主要有以下幾種:
(1)圖像處理算法(A8)。從CMOS 攝像頭采集圖像并提取路徑信息,能夠得到路徑的距離偏差與角度偏差量;能識別道路分叉口,并提取轉(zhuǎn)彎信息。
(2)上層信息決策算法(A8)。根據(jù)3 個信息源決策產(chǎn)生給下層CPU 發(fā)送的指令序列。
(3)基于RTOS 的任務(wù)同步算法(M3)?;赗TOS 的程序編寫中,將各個相對獨立的功能劃分為不同的模塊,稱為任務(wù)。首先,不同的任務(wù)之間需要有先后的次序,任務(wù)之間的同步與通訊是通過OS 提供的API 實現(xiàn)的;其次,重要的任務(wù)需要較高的優(yōu)先級,以保證系統(tǒng)設(shè)計的可靠性與安全性;再次,每個控制周期都需要保證執(zhí)行特定的任務(wù)。例如從上層CPU 發(fā)送來的控制信息周期是100ms,則實現(xiàn)運動控制的周期就需要小于100ms,才能滿足最好的實時性指標(biāo)。
(4)路徑跟蹤算法(M3)。本研究根據(jù)從上層控制器接收到的“直線跟蹤”、“弧線跟蹤”和“岔路轉(zhuǎn)彎”信息,選擇不同的算法。算法的輸入信息是速度設(shè)定值、當(dāng)前路徑的曲率大小、距離偏差量和角度偏差量,輸出信息是控制前舵輪的轉(zhuǎn)角和后驅(qū)輪的速度。
(5)后驅(qū)輪控制算法(M3)。本研究根據(jù)后輪反饋的速度信號,產(chǎn)生輸入后輪電機驅(qū)動器的控制電壓。
圖6 雙核控制器
圖7 Anrot-I 型AGV 小車
為了進(jìn)行基于視覺導(dǎo)航的AGV 路徑跟蹤實驗,本研究在地面上設(shè)置了黑色的標(biāo)示線,含有直線與弧線的不同路段。在一定的初始位姿偏差狀態(tài)下開始路徑的跟蹤。試驗中控制器記錄的AGV 相對于路徑的位姿偏差如圖8 所示。
圖8 路徑跟蹤實驗
實驗結(jié)果顯示,本研究研制的操舵型AGV 能夠在較大初始位姿偏差的情況下快速、協(xié)調(diào)地跟蹤路徑,在直線路段能達(dá)到近似零偏差的穩(wěn)定行駛狀態(tài),該狀態(tài)保持在預(yù)設(shè)最大允許角度偏差(3 °)和距離偏差(10 mm)之內(nèi)。在路徑變化導(dǎo)致偏差突變的情況下,該控制器能自動開啟車身調(diào)整周期,重新返回到正常的路徑跟蹤狀態(tài)。
筆者通過實驗證實了本研究設(shè)計研制的基于ARM Cortex 系列高性能嵌入式SoC 的雙核控制器對操舵型AGV 具備有效的控制性能。在視覺導(dǎo)航的實驗中,Cor?tex-A8 內(nèi)核的S5PV210 處理器以低能耗實現(xiàn)了實時運行圖像處理算法,Cortex-M3 內(nèi)核STM32 處理器能高速、穩(wěn)定地運行實時操作系統(tǒng),實現(xiàn)AGV 底層的可靠執(zhí)行。輸入/輸出接口板能夠兼容常見種類的車載傳感器,并使它們與控制板電氣隔離,增強了系統(tǒng)的適應(yīng)性和穩(wěn)定性。
(References):
[1]刁智華.ARMv7 的Cortex 系列微處理器技術(shù)特點[J].單片機與嵌入式系統(tǒng)應(yīng)用,2007(4):12-16.
[2]陶友龍,趙安璞,陳海波.基于ARM Cortex-M3 核的SoC 架構(gòu)設(shè)計及性能分析[J].電子技術(shù)應(yīng)用,2012,38(8):53-55.
[3]李西鋒,魏生民,閆小超.視覺引導(dǎo)AGV 的數(shù)字圖像處理方法研究[J].科學(xué)技術(shù)與工程,2010,10(10):2515-2519.
[4]林文森,李鐘慎,洪 健.基于ARM 嵌入式圖像處理系統(tǒng)設(shè)計與實現(xiàn)[J].福州大學(xué)學(xué)報:自然科學(xué)版,2008,36(Z1):13-16.
[5]彭一準(zhǔn),原 魁,王 輝.具有友好人機界面遙操作移動機器人的合作控制[J].計算機工程與應(yīng)用,2006,8:212-214.
[6]陳滿儒,張大偉.基于人機界面發(fā)展模式的研究及其應(yīng)用分析[J].包裝工程,2007,28(4):113-115.
[7]關(guān) 海,馮大政.μCOSⅡ在基于Cortex-M3 核的ARM 處理器上的移植[J].電子科技,2009,22(1):69-74.
[8]桂 欣.基于ARM 的無刷直流電機控制系統(tǒng)設(shè)計[J].信息系統(tǒng)工程,2012(3):33-34.
[9]怯肇乾,吳金壘.基于Cortex-Ax 的Android 硬體操作軟件設(shè)計[J].單片機與嵌入式系統(tǒng)應(yīng)用,2012,12(5):36-39.
[10]趙德云,楊厚華,王 哲.基于模糊神經(jīng)網(wǎng)絡(luò)控制的AGV避障路徑規(guī)劃仿真[J].機電工程,2010,27(9):27-31.