吳 樺
(江西軟件職業(yè)技術(shù)大學(xué) 江西 南昌 330041)
隨著工業(yè)4.0時(shí)代來(lái)臨,在智能算法、虛擬仿真、深度學(xué)習(xí)等技術(shù)加持下,智能機(jī)器人的應(yīng)用領(lǐng)域和服務(wù)場(chǎng)景愈加多元化,作用優(yōu)勢(shì)更加明顯。在抗震救災(zāi)、地質(zhì)探測(cè)、航天事業(yè)、運(yùn)輸搬運(yùn)機(jī)器、快遞分揀等領(lǐng)域都取得了較好的效果,有效地提高了社會(huì)生產(chǎn)效率。智能機(jī)器人應(yīng)用場(chǎng)景的多元化及復(fù)雜程度導(dǎo)致用戶(hù)對(duì)智能機(jī)器人的控制要求更加嚴(yán)格,只有借助更為完善、精細(xì)化的控制體系,才能將智能機(jī)器人的功能優(yōu)勢(shì)充分挖掘出來(lái),文章依據(jù)智能機(jī)器人的作業(yè)需要,探索了基于ATmega單機(jī)片的智能機(jī)器人控制系統(tǒng)設(shè)計(jì),并借助仿真環(huán)境來(lái)驗(yàn)證控制效果。
本系統(tǒng)設(shè)計(jì)旨在實(shí)現(xiàn)智能機(jī)器人的自主化、智能化作業(yè),讓其能在復(fù)雜的地面環(huán)境中高效完成作業(yè)需求。在功能種類(lèi)方面:一是需要具備自動(dòng)移動(dòng)功能,可以自動(dòng)識(shí)別路徑障礙,完成對(duì)應(yīng)的路徑規(guī)劃。二是人機(jī)交互功能,通過(guò)人機(jī)交互來(lái)實(shí)現(xiàn)信息數(shù)據(jù)的高效傳輸;同時(shí)系統(tǒng)軟件也能實(shí)時(shí)獲取到智能機(jī)器人的運(yùn)行狀態(tài)和可觀測(cè)數(shù)據(jù),便于控制系統(tǒng)更好的調(diào)整智能機(jī)器人作業(yè)狀態(tài)和相關(guān)任務(wù)發(fā)布。三是環(huán)境探測(cè)功能,智能機(jī)器人需要借助傳感器對(duì)周?chē)h(huán)境進(jìn)行動(dòng)態(tài)探測(cè),并根據(jù)任務(wù)要求實(shí)時(shí)匹配,并借助智能檢測(cè)算法生成決策信息。在系統(tǒng)結(jié)構(gòu)上[1],分為機(jī)械結(jié)構(gòu)、驅(qū)動(dòng)系統(tǒng)、探測(cè)系統(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ì)中,首先要針對(duì)功能需求選擇合適的控制器類(lèi)型。并考慮到智能機(jī)器人的最大電路設(shè)計(jì)、接口電路設(shè)計(jì)等功能需要,本系統(tǒng)選用ATmega128單機(jī)片作為控制核心;如在接口電路設(shè)計(jì)中,該單機(jī)片可以實(shí)現(xiàn)JTAG和ISP兩種形式的在線(xiàn)編程。
1.2.2 舵機(jī)、傳感器模塊電路設(shè)計(jì)
傳感器模塊是智能機(jī)器人的眼睛;驅(qū)動(dòng)電路設(shè)計(jì)就是為了更好地控制智能機(jī)器人的傳感器和舵機(jī),從而實(shí)現(xiàn)智能機(jī)器人的有效控制。在設(shè)計(jì)中采用的是同步通信方式來(lái)實(shí)現(xiàn)信息通信效率提高;指的是在信息通信過(guò)程中,控制系統(tǒng)發(fā)送信息后只有得到智能機(jī)器人回應(yīng)后,才能進(jìn)行二次信息通信;這樣有效避免了通信堵塞、行為指令控制精準(zhǔn)度不夠等問(wèn)題。在舵機(jī)和傳感器連接方式上,采用的多通道串聯(lián),即只有一方供電,另外一方面也能繼續(xù)工作。
1.2.3 PCB設(shè)計(jì)
(1)PCB設(shè)計(jì)要求
PCB設(shè)計(jì)及制作影響著智能機(jī)器人控制系統(tǒng)的穩(wěn)定性和可靠性,也對(duì)后期的硬件系統(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ì)中需要從板材選擇、路線(xiàn)設(shè)計(jì)、元器件布局等多維度入手來(lái)確保PCB的可靠性,增強(qiáng)硬件性能;如在抗干擾問(wèn)題中,可以從接地線(xiàn)布置、元器件布置來(lái)降低干擾源。在經(jīng)濟(jì)性方面:經(jīng)濟(jì)性的合理規(guī)劃能夠提高智能機(jī)器人控制系統(tǒng)的應(yīng)用程度,控制功能發(fā)揮和經(jīng)濟(jì)優(yōu)勢(shì)才能凸顯控制系統(tǒng)軟件的價(jià)值。因此在PCB設(shè)計(jì)中,在滿(mǎn)足功能需求的同時(shí)可以從尺寸、板材等方面入手降低經(jīng)濟(jì)成本。
(2)PCB設(shè)計(jì)
一是在設(shè)計(jì)中需要利用好原理圖,生成對(duì)應(yīng)的網(wǎng)絡(luò)表,為PCB設(shè)計(jì)打好基礎(chǔ)。
二是采用PCB編輯器來(lái)進(jìn)行電路板規(guī)劃和定義,得到明確的尺寸和輪廓后根據(jù)元器件數(shù)量來(lái)合理布線(xiàn);如在布線(xiàn)寬度不宜太窄、走線(xiàn)盡量垂直等。同時(shí)也需確定好雙面板結(jié)構(gòu)的跨線(xiàn)規(guī)劃。
三是在元器件布局設(shè)置中,可以采用自動(dòng)布局的方式借助網(wǎng)絡(luò)表將原理圖加載到PCB中,再進(jìn)行元器件的自動(dòng)布局。這樣不僅能提高元器件布局的美觀程度,也能避免元器件之間的電磁干擾,實(shí)現(xiàn)PCB布局均勻、大小合適。
四是在PCB元器件布局完成后需進(jìn)行合理布線(xiàn),在布線(xiàn)前要進(jìn)行布線(xiàn)規(guī)則的詳細(xì)制定,可采用手動(dòng)布線(xiàn)配合自動(dòng)布線(xiàn)的方式來(lái)提高布線(xiàn)效率和精確性。在具體布線(xiàn)過(guò)程中,先是要對(duì)敏感信號(hào)線(xiàn)、時(shí)鐘線(xiàn)等重要線(xiàn)進(jìn)行布置,其次再進(jìn)行信號(hào)線(xiàn)布置;最后要進(jìn)行屏蔽導(dǎo)線(xiàn)放置、淚滴放置等相關(guān)處理來(lái)提高電路板的可靠性。
五是設(shè)計(jì)PXB電路板信號(hào)規(guī)則,并進(jìn)行電路檢測(cè)和邏輯檢測(cè),最后得到PCB圖。
系統(tǒng)軟件設(shè)計(jì)是實(shí)現(xiàn)智能機(jī)器人控制的關(guān)鍵,高質(zhì)量的軟件系統(tǒng)開(kāi)發(fā)能夠進(jìn)一步發(fā)揮硬件電路設(shè)計(jì)的作用。在軟件系統(tǒng)設(shè)計(jì)中需要考慮到實(shí)時(shí)性、可靠性、易維護(hù)性、可移植性等特點(diǎn),而軟件架構(gòu)是實(shí)現(xiàn)系統(tǒng)設(shè)計(jì)的基礎(chǔ),根據(jù)系統(tǒng)軟件的功能定位需設(shè)計(jì)為多個(gè)模塊,最后將各功能模塊進(jìn)行規(guī)劃架構(gòu)從而形成系統(tǒng)軟件。在本系統(tǒng)軟件架構(gòu)上主要分為初始化模塊、人機(jī)交互模塊、障礙檢測(cè)及避障模塊、通信模塊、電機(jī)控制模塊[2]。如圖2所示。
圖2 智能機(jī)器人軟件架構(gòu)圖
初始化模塊設(shè)計(jì)旨在執(zhí)行系統(tǒng)硬件的狀態(tài)初始化工作,在智能機(jī)器人通電運(yùn)行時(shí)執(zhí)行。其中主要包含端口初始化、串口初始化、舵機(jī)控制初始化等。在端口初始化上,采用數(shù)據(jù)寄存器、方向寄存器等設(shè)置某一pin腳為輸入并使能內(nèi)部上拉電阻;在串口初始化上,通過(guò)串口0和1的設(shè)置來(lái)實(shí)現(xiàn)相關(guān)控制[3]。在舵機(jī)初始化上選用無(wú)限旋轉(zhuǎn)模式、普通模式兩種;無(wú)限旋轉(zhuǎn)模式適用于車(chē)輪舵機(jī),普通模式適用于轉(zhuǎn)向、機(jī)械作業(yè)方面。在動(dòng)作初始化上,在通電后完成一次初步的作業(yè)動(dòng)作并恢復(fù)作業(yè)初始狀態(tài)[4]。
人機(jī)交互模塊設(shè)計(jì)包括智能機(jī)器人數(shù)據(jù)采集、場(chǎng)景分析、功能服務(wù)匹配等內(nèi)容,同時(shí)也能實(shí)現(xiàn)控制系統(tǒng)指令高效傳輸;如控制系統(tǒng)通過(guò)智能機(jī)器人傳感器收集場(chǎng)景數(shù)據(jù)并傳達(dá)對(duì)應(yīng)指令來(lái)提高智能機(jī)器人作業(yè)效率。在模塊系統(tǒng)框架上,為控制系統(tǒng)終端—TSP平臺(tái)—大數(shù)據(jù)平臺(tái)—機(jī)器人傳感器[5]。在交互指令執(zhí)行上,智能機(jī)器人傳感器將數(shù)據(jù)信息上傳至大數(shù)據(jù)平臺(tái),大數(shù)據(jù)平臺(tái)通過(guò)智能檢測(cè)算法模型基于功能服務(wù)進(jìn)行分析,將處理結(jié)果回傳至TSP平臺(tái),TSP平臺(tái)根據(jù)數(shù)據(jù)結(jié)果判斷指令推送條件從而形成特定的編碼傳至智能機(jī)器人控制系統(tǒng)終端[6]。
障礙檢測(cè)及避障模塊設(shè)計(jì)主要是為了幫助智能機(jī)器人更好的檢測(cè)障礙,通過(guò)障礙物大小、種類(lèi)等特征識(shí)別形成對(duì)應(yīng)的避障路線(xiàn),提高智能機(jī)器人的行駛安全性[7]。本系統(tǒng)為了提高避障模塊的方向性,采用的是紅外線(xiàn)避障檢測(cè)方式通過(guò)特定數(shù)量的脈沖發(fā)射和接收量來(lái)判斷障礙物情況。具體流程如圖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ù)儲(chǔ)存。在整個(gè)通信過(guò)程中只有第一次通信得到反饋后才能下達(dá)第二次指令[8]。
電機(jī)控制模塊主要是為了實(shí)現(xiàn)智能機(jī)器人的速度測(cè)速和控制,以此來(lái)提高智能機(jī)器人的穩(wěn)定性,首先在調(diào)速功能實(shí)現(xiàn)上,采用的是PWM信號(hào)來(lái)調(diào)節(jié),工作原理是借助輸出波形占比空間來(lái)獲取電機(jī)電驅(qū)端電壓,其次對(duì)輸出電壓大小調(diào)節(jié)來(lái)實(shí)現(xiàn)電機(jī)速度的變化,從而做到智能機(jī)器人速度有效控制[9]。最后在電機(jī)測(cè)速方面本系統(tǒng)主要通過(guò)反射式光學(xué)編碼器進(jìn)行測(cè)試,對(duì)電機(jī)單元時(shí)間內(nèi)產(chǎn)生的脈沖數(shù)量來(lái)輸出波形,形成碼盤(pán)條紋、依據(jù)公式s=2πr×cnt/(N×T),T為單元周期,N為條紋數(shù),r為智能機(jī)器人車(chē)輪半徑,s為行進(jìn)距離,根據(jù)距離s和時(shí)間周期T從而得出電機(jī)速度。
硬件電路調(diào)試是電路設(shè)計(jì)的重點(diǎn)內(nèi)容。只有通過(guò)連續(xù)性設(shè)計(jì)才能更好地發(fā)現(xiàn)問(wèn)題,從而找到系統(tǒng)缺陷并進(jìn)一步完善相關(guān)功能,設(shè)計(jì)出符合目標(biāo)要求的軟件系統(tǒng)。為了提高開(kāi)發(fā)效率,本次測(cè)試采用的是邊安裝邊測(cè)試的方式。
(1)電路圖檢測(cè):對(duì)PCB板的電路焊接、元器件通電情況、短路等情況,如采用萬(wàn)用表檢測(cè)。
(2)電壓測(cè)試:在PCB焊接前需要進(jìn)行靜態(tài)測(cè)試,對(duì)各芯片、元器件的電源引腳電壓進(jìn)行檢測(cè),避免出現(xiàn)燒壞。
(3)總體調(diào)試:通過(guò)仿真器連接來(lái)判斷系統(tǒng)工作情況,如果能進(jìn)入到仿真環(huán)境就說(shuō)明系統(tǒng)軟件正常[10]。
在軟件調(diào)試上,利用仿真測(cè)試來(lái)進(jìn)行軟件系統(tǒng)調(diào)試,通過(guò)驗(yàn)證相關(guān)功能模塊的運(yùn)行狀態(tài)來(lái)提高功能模塊開(kāi)發(fā)效率。軟件調(diào)試方式常用軟件級(jí)仿真和芯片級(jí)仿真,由于ATmega128設(shè)計(jì)有JTAG仿真調(diào)試接口如圖4,故本次軟件調(diào)試采用芯片級(jí)仿真?;驹硎窃谠骷?nèi)部定義一個(gè)TAP(Test Access Port:測(cè)試訪(fǎng)問(wèn)口),通過(guò)專(zhuān)用的JTAG測(cè)試工具對(duì)內(nèi)部節(jié)點(diǎn)進(jìn)行測(cè)試。JTAG測(cè)試允許多個(gè)器件通過(guò)JTAG接口串聯(lián)在一起,形成一個(gè)JTAG鏈,實(shí)現(xiàn)對(duì)各個(gè)器件分別測(cè)試。目前JTAG接口還常用于對(duì)FLASH等器件進(jìn)行編程[11]。
圖4 仿真調(diào)試JTAG接口電路圖
綜上所述,工業(yè)4.0時(shí)代智能機(jī)器人勢(shì)必會(huì)替代人工從事高頻性、危險(xiǎn)性、復(fù)雜性等工作領(lǐng)域。其控制系統(tǒng)的設(shè)計(jì)逐漸受到重視,智能機(jī)器人控制系統(tǒng)開(kāi)發(fā)與設(shè)計(jì)是一項(xiàng)持續(xù)性工程,需要隨著智能機(jī)器人的應(yīng)用場(chǎng)景、功能需求進(jìn)行轉(zhuǎn)變,要綜合考慮各方面的因素,同時(shí)掌握各個(gè)子系統(tǒng)的基礎(chǔ)功能和設(shè)計(jì)要求。本設(shè)計(jì)實(shí)現(xiàn)了基于ATmega系列AVR單片機(jī)的智能機(jī)器人控制系統(tǒng)開(kāi)發(fā),并通過(guò)障礙檢測(cè)及避障功能、速度控制功能、轉(zhuǎn)向功能、人機(jī)交互等模塊來(lái)確保智能機(jī)器人控制的有效性和準(zhǔn)確性。