吳 樺
(江西軟件職業(yè)技術(shù)大學(xué) 江西 南昌 330041)
隨著工業(yè)4.0時代來臨,在智能算法、虛擬仿真、深度學(xué)習(xí)等技術(shù)加持下,智能機(jī)器人的應(yīng)用領(lǐng)域和服務(wù)場景愈加多元化,作用優(yōu)勢更加明顯。在抗震救災(zāi)、地質(zhì)探測、航天事業(yè)、運(yùn)輸搬運(yùn)機(jī)器、快遞分揀等領(lǐng)域都取得了較好的效果,有效地提高了社會生產(chǎn)效率。智能機(jī)器人應(yīng)用場景的多元化及復(fù)雜程度導(dǎo)致用戶對智能機(jī)器人的控制要求更加嚴(yán)格,只有借助更為完善、精細(xì)化的控制體系,才能將智能機(jī)器人的功能優(yōu)勢充分挖掘出來,文章依據(jù)智能機(jī)器人的作業(yè)需要,探索了基于ATmega單機(jī)片的智能機(jī)器人控制系統(tǒng)設(shè)計(jì),并借助仿真環(huán)境來驗(yàn)證控制效果。
本系統(tǒng)設(shè)計(jì)旨在實(shí)現(xiàn)智能機(jī)器人的自主化、智能化作業(yè),讓其能在復(fù)雜的地面環(huán)境中高效完成作業(yè)需求。在功能種類方面:一是需要具備自動移動功能,可以自動識別路徑障礙,完成對應(yīng)的路徑規(guī)劃。二是人機(jī)交互功能,通過人機(jī)交互來實(shí)現(xiàn)信息數(shù)據(jù)的高效傳輸;同時系統(tǒng)軟件也能實(shí)時獲取到智能機(jī)器人的運(yùn)行狀態(tài)和可觀測數(shù)據(jù),便于控制系統(tǒng)更好的調(diào)整智能機(jī)器人作業(yè)狀態(tài)和相關(guān)任務(wù)發(fā)布。三是環(huán)境探測功能,智能機(jī)器人需要借助傳感器對周圍環(huán)境進(jìn)行動態(tài)探測,并根據(jù)任務(wù)要求實(shí)時匹配,并借助智能檢測算法生成決策信息。在系統(tǒng)結(jié)構(gòu)上[1],分為機(jī)械結(jié)構(gòu)、驅(qū)動系統(tǒng)、探測系統(tǒng)、控制系統(tǒng);整體系統(tǒng)組成機(jī)構(gòu)如圖1。

圖1 系統(tǒng)組成結(jié)構(gòu)圖
系統(tǒng)硬件設(shè)計(jì)是智能機(jī)器人控制系統(tǒng)設(shè)計(jì)的關(guān)鍵部分,關(guān)乎控制系統(tǒng)的控制力度和有效性。在智能機(jī)器人控制系統(tǒng)硬件設(shè)計(jì)中,包含了微處理器設(shè)計(jì)、舵機(jī)、傳感器模塊電路設(shè)計(jì)、PCB設(shè)計(jì)等。
1.2.1 微處理器模塊設(shè)計(jì)
微處理器作為智能機(jī)器人控制系統(tǒng)的核心零部件,決定著機(jī)器人的控制精準(zhǔn)性和相關(guān)控制功能實(shí)現(xiàn)。因此在智能機(jī)器人控制系統(tǒng)硬件設(shè)計(jì)中,首先要針對功能需求選擇合適的控制器類型。并考慮到智能機(jī)器人的最大電路設(shè)計(jì)、接口電路設(shè)計(jì)等功能需要,本系統(tǒng)選用ATmega128單機(jī)片作為控制核心;如在接口電路設(shè)計(jì)中,該單機(jī)片可以實(shí)現(xiàn)JTAG和ISP兩種形式的在線編程。
1.2.2 舵機(jī)、傳感器模塊電路設(shè)計(jì)
傳感器模塊是智能機(jī)器人的眼睛;驅(qū)動電路設(shè)計(jì)就是為了更好地控制智能機(jī)器人的傳感器和舵機(jī),從而實(shí)現(xiàn)智能機(jī)器人的有效控制。在設(shè)計(jì)中采用的是同步通信方式來實(shí)現(xiàn)信息通信效率提高;指的是在信息通信過程中,控制系統(tǒng)發(fā)送信息后只有得到智能機(jī)器人回應(yīng)后,才能進(jìn)行二次信息通信;這樣有效避免了通信堵塞、行為指令控制精準(zhǔn)度不夠等問題。在舵機(jī)和傳感器連接方式上,采用的多通道串聯(lián),即只有一方供電,另外一方面也能繼續(xù)工作。
1.2.3 PCB設(shè)計(jì)
(1)PCB設(shè)計(jì)要求
PCB設(shè)計(jì)及制作影響著智能機(jī)器人控制系統(tǒng)的穩(wěn)定性和可靠性,也對后期的硬件系統(tǒng)調(diào)試、維護(hù)等起著重要作用。在PCB設(shè)計(jì)中,需從智能機(jī)器人控制系統(tǒng)整體功能出發(fā),充分考慮到各項(xiàng)功能的兼容性,設(shè)計(jì)出準(zhǔn)確性、合理、經(jīng)濟(jì)的印刷電路版。在準(zhǔn)確性方面:準(zhǔn)確性是PCB設(shè)計(jì)的核心內(nèi)容,PCB需要精準(zhǔn)的實(shí)現(xiàn)系統(tǒng)原理圖的電路關(guān)系,確保電氣連接的有效性和精準(zhǔn)性,避免出現(xiàn)短路現(xiàn)象。在可靠性方面:PCB設(shè)計(jì)影響著智能機(jī)器人的運(yùn)行性能,在PCB設(shè)計(jì)中需要從板材選擇、路線設(shè)計(jì)、元器件布局等多維度入手來確保PCB的可靠性,增強(qiáng)硬件性能;如在抗干擾問題中,可以從接地線布置、元器件布置來降低干擾源。在經(jīng)濟(jì)性方面:經(jīng)濟(jì)性的合理規(guī)劃能夠提高智能機(jī)器人控制系統(tǒng)的應(yīng)用程度,控制功能發(fā)揮和經(jīng)濟(jì)優(yōu)勢才能凸顯控制系統(tǒng)軟件的價(jià)值。因此在PCB設(shè)計(jì)中,在滿足功能需求的同時可以從尺寸、板材等方面入手降低經(jīng)濟(jì)成本。
(2)PCB設(shè)計(jì)
一是在設(shè)計(jì)中需要利用好原理圖,生成對應(yīng)的網(wǎng)絡(luò)表,為PCB設(shè)計(jì)打好基礎(chǔ)。
二是采用PCB編輯器來進(jìn)行電路板規(guī)劃和定義,得到明確的尺寸和輪廓后根據(jù)元器件數(shù)量來合理布線;如在布線寬度不宜太窄、走線盡量垂直等。同時也需確定好雙面板結(jié)構(gòu)的跨線規(guī)劃。
三是在元器件布局設(shè)置中,可以采用自動布局的方式借助網(wǎng)絡(luò)表將原理圖加載到PCB中,再進(jìn)行元器件的自動布局。這樣不僅能提高元器件布局的美觀程度,也能避免元器件之間的電磁干擾,實(shí)現(xiàn)PCB布局均勻、大小合適。
四是在PCB元器件布局完成后需進(jìn)行合理布線,在布線前要進(jìn)行布線規(guī)則的詳細(xì)制定,可采用手動布線配合自動布線的方式來提高布線效率和精確性。在具體布線過程中,先是要對敏感信號線、時鐘線等重要線進(jìn)行布置,其次再進(jìn)行信號線布置;最后要進(jìn)行屏蔽導(dǎo)線放置、淚滴放置等相關(guān)處理來提高電路板的可靠性。
五是設(shè)計(jì)PXB電路板信號規(guī)則,并進(jìn)行電路檢測和邏輯檢測,最后得到PCB圖。
系統(tǒng)軟件設(shè)計(jì)是實(shí)現(xiàn)智能機(jī)器人控制的關(guān)鍵,高質(zhì)量的軟件系統(tǒng)開發(fā)能夠進(jìn)一步發(fā)揮硬件電路設(shè)計(jì)的作用。在軟件系統(tǒng)設(shè)計(jì)中需要考慮到實(shí)時性、可靠性、易維護(hù)性、可移植性等特點(diǎn),而軟件架構(gòu)是實(shí)現(xiàn)系統(tǒng)設(shè)計(jì)的基礎(chǔ),根據(jù)系統(tǒng)軟件的功能定位需設(shè)計(jì)為多個模塊,最后將各功能模塊進(jìn)行規(guī)劃架構(gòu)從而形成系統(tǒng)軟件。在本系統(tǒng)軟件架構(gòu)上主要分為初始化模塊、人機(jī)交互模塊、障礙檢測及避障模塊、通信模塊、電機(jī)控制模塊[2]。如圖2所示。

圖2 智能機(jī)器人軟件架構(gòu)圖
初始化模塊設(shè)計(jì)旨在執(zhí)行系統(tǒng)硬件的狀態(tài)初始化工作,在智能機(jī)器人通電運(yùn)行時執(zhí)行。其中主要包含端口初始化、串口初始化、舵機(jī)控制初始化等。在端口初始化上,采用數(shù)據(jù)寄存器、方向寄存器等設(shè)置某一pin腳為輸入并使能內(nèi)部上拉電阻;在串口初始化上,通過串口0和1的設(shè)置來實(shí)現(xiàn)相關(guān)控制[3]。在舵機(jī)初始化上選用無限旋轉(zhuǎn)模式、普通模式兩種;無限旋轉(zhuǎn)模式適用于車輪舵機(jī),普通模式適用于轉(zhuǎn)向、機(jī)械作業(yè)方面。在動作初始化上,在通電后完成一次初步的作業(yè)動作并恢復(fù)作業(yè)初始狀態(tài)[4]。
人機(jī)交互模塊設(shè)計(jì)包括智能機(jī)器人數(shù)據(jù)采集、場景分析、功能服務(wù)匹配等內(nèi)容,同時也能實(shí)現(xiàn)控制系統(tǒng)指令高效傳輸;如控制系統(tǒng)通過智能機(jī)器人傳感器收集場景數(shù)據(jù)并傳達(dá)對應(yīng)指令來提高智能機(jī)器人作業(yè)效率。在模塊系統(tǒng)框架上,為控制系統(tǒng)終端—TSP平臺—大數(shù)據(jù)平臺—機(jī)器人傳感器[5]。在交互指令執(zhí)行上,智能機(jī)器人傳感器將數(shù)據(jù)信息上傳至大數(shù)據(jù)平臺,大數(shù)據(jù)平臺通過智能檢測算法模型基于功能服務(wù)進(jìn)行分析,將處理結(jié)果回傳至TSP平臺,TSP平臺根據(jù)數(shù)據(jù)結(jié)果判斷指令推送條件從而形成特定的編碼傳至智能機(jī)器人控制系統(tǒng)終端[6]。
障礙檢測及避障模塊設(shè)計(jì)主要是為了幫助智能機(jī)器人更好的檢測障礙,通過障礙物大小、種類等特征識別形成對應(yīng)的避障路線,提高智能機(jī)器人的行駛安全性[7]。本系統(tǒng)為了提高避障模塊的方向性,采用的是紅外線避障檢測方式通過特定數(shù)量的脈沖發(fā)射和接收量來判斷障礙物情況。具體流程如圖3所示:

圖3 避障模塊流程圖
轉(zhuǎn)向避障程序代碼:
#Direction control and Package into a function
# left
def robot_turn_left():
GPIO.output(frontMotorEnableGPIO.HIGH)
GPIO.output(11GPIO.HIGH) GPIO.output(7,GPIO.LOW)
backMotorPwm.ChangeDutyCycle(66)
time.sleep(1)
# RIGHT
def robot turn right():
GPIO.output(frontMotorEnableGPIO.HIGH)
GPIO.output(11GPIO.LOW GPIO.output(7GPIO.HIGH)
backMotorPwmChangeDutyCycle(66) time.sleep(1)
本系統(tǒng)采用的是同步通信方式的形式:在通信流程上,首先控制系統(tǒng)向智能機(jī)器人舵機(jī)發(fā)送指令包;其次接收智能機(jī)器人傳感器及舵機(jī)信息反饋;最后進(jìn)行下一步指令發(fā)送和數(shù)據(jù)儲存。在整個通信過程中只有第一次通信得到反饋后才能下達(dá)第二次指令[8]。
電機(jī)控制模塊主要是為了實(shí)現(xiàn)智能機(jī)器人的速度測速和控制,以此來提高智能機(jī)器人的穩(wěn)定性,首先在調(diào)速功能實(shí)現(xiàn)上,采用的是PWM信號來調(diào)節(jié),工作原理是借助輸出波形占比空間來獲取電機(jī)電驅(qū)端電壓,其次對輸出電壓大小調(diào)節(jié)來實(shí)現(xiàn)電機(jī)速度的變化,從而做到智能機(jī)器人速度有效控制[9]。最后在電機(jī)測速方面本系統(tǒng)主要通過反射式光學(xué)編碼器進(jìn)行測試,對電機(jī)單元時間內(nèi)產(chǎn)生的脈沖數(shù)量來輸出波形,形成碼盤條紋、依據(jù)公式s=2πr×cnt/(N×T),T為單元周期,N為條紋數(shù),r為智能機(jī)器人車輪半徑,s為行進(jìn)距離,根據(jù)距離s和時間周期T從而得出電機(jī)速度。
硬件電路調(diào)試是電路設(shè)計(jì)的重點(diǎn)內(nèi)容。只有通過連續(xù)性設(shè)計(jì)才能更好地發(fā)現(xiàn)問題,從而找到系統(tǒng)缺陷并進(jìn)一步完善相關(guān)功能,設(shè)計(jì)出符合目標(biāo)要求的軟件系統(tǒng)。為了提高開發(fā)效率,本次測試采用的是邊安裝邊測試的方式。
(1)電路圖檢測:對PCB板的電路焊接、元器件通電情況、短路等情況,如采用萬用表檢測。
(2)電壓測試:在PCB焊接前需要進(jìn)行靜態(tài)測試,對各芯片、元器件的電源引腳電壓進(jìn)行檢測,避免出現(xiàn)燒壞。
(3)總體調(diào)試:通過仿真器連接來判斷系統(tǒng)工作情況,如果能進(jìn)入到仿真環(huán)境就說明系統(tǒng)軟件正常[10]。
在軟件調(diào)試上,利用仿真測試來進(jìn)行軟件系統(tǒng)調(diào)試,通過驗(yàn)證相關(guān)功能模塊的運(yùn)行狀態(tài)來提高功能模塊開發(fā)效率。軟件調(diào)試方式常用軟件級仿真和芯片級仿真,由于ATmega128設(shè)計(jì)有JTAG仿真調(diào)試接口如圖4,故本次軟件調(diào)試采用芯片級仿真。基本原理是在元器件內(nèi)部定義一個TAP(Test Access Port:測試訪問口),通過專用的JTAG測試工具對內(nèi)部節(jié)點(diǎn)進(jìn)行測試。JTAG測試允許多個器件通過JTAG接口串聯(lián)在一起,形成一個JTAG鏈,實(shí)現(xiàn)對各個器件分別測試。目前JTAG接口還常用于對FLASH等器件進(jìn)行編程[11]。

圖4 仿真調(diào)試JTAG接口電路圖
綜上所述,工業(yè)4.0時代智能機(jī)器人勢必會替代人工從事高頻性、危險(xiǎn)性、復(fù)雜性等工作領(lǐng)域。其控制系統(tǒng)的設(shè)計(jì)逐漸受到重視,智能機(jī)器人控制系統(tǒng)開發(fā)與設(shè)計(jì)是一項(xiàng)持續(xù)性工程,需要隨著智能機(jī)器人的應(yīng)用場景、功能需求進(jìn)行轉(zhuǎn)變,要綜合考慮各方面的因素,同時掌握各個子系統(tǒng)的基礎(chǔ)功能和設(shè)計(jì)要求。本設(shè)計(jì)實(shí)現(xiàn)了基于ATmega系列AVR單片機(jī)的智能機(jī)器人控制系統(tǒng)開發(fā),并通過障礙檢測及避障功能、速度控制功能、轉(zhuǎn)向功能、人機(jī)交互等模塊來確保智能機(jī)器人控制的有效性和準(zhǔn)確性。