鄧三星,楊蒙蒙,李克強(qiáng),韓鑫龍,肖翔宇
(黃河交通學(xué)院 河南省智能制造技術(shù)與裝備工程技術(shù)研究中心,河南焦作,454950)
2022 年8 月12 日,科技部、教育部、工業(yè)和信息化部、交通運(yùn)輸部、農(nóng)業(yè)農(nóng)村部、國(guó)家衛(wèi)生健康委發(fā)布《關(guān)于加快場(chǎng)景創(chuàng)新以人工智能高水平應(yīng)用促進(jìn)經(jīng)濟(jì)高質(zhì)量發(fā)展的指導(dǎo)意見(jiàn)》[1],8 月15 日,科技部發(fā)布《關(guān)于支持建設(shè)新一代人工智能示范應(yīng)用場(chǎng)景的通知》[2],還與財(cái)政部聯(lián)合發(fā)布《企業(yè)技術(shù)創(chuàng)新能力提升行動(dòng)方案(2022—2023 年)》[3],國(guó)家對(duì)人工智能領(lǐng)域科學(xué)研究支持力度高。目前,仿人機(jī)器人在諸多領(lǐng)域應(yīng)用廣泛,如地震救援、醫(yī)療服務(wù)等[4~6],本文以STM32 單片機(jī)為控制核心,設(shè)計(jì)一種仿人機(jī)器人,可實(shí)現(xiàn)直立行走、轉(zhuǎn)彎、翻滾功能,并對(duì)系統(tǒng)進(jìn)行步態(tài)測(cè)試。
仿人機(jī)器人的步態(tài)行走設(shè)計(jì)系統(tǒng)由意法半導(dǎo)體公司的STM32F103RBT6 單片機(jī)主控芯片、舵機(jī)控制板、舵機(jī)與電源四大部分構(gòu)成[7]。為節(jié)約設(shè)計(jì)成本,未使用彈性連接件和無(wú)線傳感器。
仿人機(jī)器人的控制原理是在整個(gè)電路通電后,對(duì)單片機(jī)的復(fù)位引腳施加一個(gè)電平信號(hào),以此完成單片機(jī)復(fù)位;然后將Keil 軟件中編譯好的操作程序下載到STM32 單片機(jī)中,并通過(guò)STM32 單片機(jī)向開(kāi)源舵機(jī)控制器發(fā)出控制信號(hào);最后由開(kāi)源舵機(jī)控制器控制相應(yīng)的舵機(jī)動(dòng)作,完成預(yù)先設(shè)計(jì)的動(dòng)作,實(shí)現(xiàn)步態(tài)行走。
仿人機(jī)器人的步態(tài)行走設(shè)計(jì)采用的核心部件為STM-32F103RBT6 單片機(jī),最小系統(tǒng)由上電復(fù)位電路、電源供電電路與時(shí)鐘電路三部分構(gòu)成,其中電源電路中有5 個(gè)數(shù)字電源正極;主時(shí)鐘晶振頻率為8MHz,晶振電路為單片機(jī)提供定時(shí)計(jì)數(shù)功能;NRET 引腳正常工作時(shí)接3.3V 高電平,同時(shí)并聯(lián)一個(gè)按鈕開(kāi)關(guān),按鈕開(kāi)關(guān)接地,在需要進(jìn)行初始化操作時(shí),按下開(kāi)關(guān)復(fù)位引腳被賦予低電平即可。
STM32F103RBT6 單片機(jī)的核心是 ARM?的Cortex ?-M3,并且內(nèi)置有閃存和SRAM,ARM 的Cortex-M3 處理器是新一代的嵌入式ARM 處理器,它為實(shí)現(xiàn)MCU 的需要提供了低成本的平臺(tái)、縮減了引腳數(shù)目、降低了系統(tǒng)功耗,同時(shí)提供卓越的計(jì)算性能和先進(jìn)的中斷系統(tǒng)響應(yīng)。
仿人機(jī)器人的步態(tài)行走設(shè)計(jì)采用的是開(kāi)源舵機(jī)控制器,該控制器擁有多種給外設(shè)模塊提供電源的接口,供給遙控的手柄接收器接口,以及總線舵機(jī)的接口與PWM 舵機(jī)的接口,脫機(jī)運(yùn)行按鍵等強(qiáng)大的功能與多種多樣的外部接口。
由于本設(shè)計(jì)采用的是總線舵機(jī),所以需用舵機(jī)線連接舵機(jī)與總線舵機(jī)的接口,上電調(diào)試后,就可燒錄程序給單片機(jī)經(jīng)開(kāi)源舵機(jī)控制器后就可控制舵機(jī)的精準(zhǔn)運(yùn)動(dòng)。
開(kāi)源舵機(jī)控制器結(jié)構(gòu)圖如圖1 所示。
圖1 開(kāi)源舵機(jī)控制器結(jié)構(gòu)圖
開(kāi)源舵機(jī)控制器的具體功能參數(shù)如表1 所示。
表1 開(kāi)源舵機(jī)控制器功能參數(shù)表
舵機(jī)是一種位置(角度)伺服的驅(qū)動(dòng)器,適用于角度不斷變化并可以保持的控制系統(tǒng),在高檔遙控玩具,如飛機(jī)、潛艇模型、遙控機(jī)器人中已經(jīng)得到了普遍應(yīng)用。采用總線舵機(jī)控制方案,具有在線調(diào)試、下載程序模塊、離線程序執(zhí)行功能特點(diǎn)[8]。
舵機(jī)的內(nèi)部結(jié)構(gòu)如圖2 所示,由一組變速齒輪組、一個(gè)微小的直流馬達(dá)、一個(gè)提供反饋并可調(diào)電位器及一塊電子控制板組成。其中,高轉(zhuǎn)速的直流馬達(dá)提供了原始動(dòng)力,帶動(dòng)減速齒輪組,使之產(chǎn)生高扭力的輸出。
圖2 舵機(jī)結(jié)構(gòu)示意圖
舵機(jī)是一個(gè)經(jīng)典的閉環(huán)反饋系統(tǒng),原動(dòng)力由電機(jī)提供,進(jìn)而帶動(dòng)齒輪箱,承擔(dān)終端位置檢測(cè)反饋任務(wù)的為電位器,線性電位器以比例電壓的形式將轉(zhuǎn)角坐標(biāo)反饋給控制電路板,控制電路板將該信號(hào)與輸入的控制信號(hào)相比較,然后發(fā)生修正脈沖信號(hào),同時(shí)驅(qū)動(dòng)電機(jī)正向或反方向的轉(zhuǎn)動(dòng)。
電源模塊最核心元件為電池,所選用的電池應(yīng)滿(mǎn)足安全、電池容量大、電池可循環(huán)次數(shù)多、重量小、體積小等條件,還要根據(jù)單片機(jī)所需供電電壓等級(jí),設(shè)計(jì)電壓等級(jí)轉(zhuǎn)換電路。鋰離子電池同等體積下,其電池容量及放電電壓要優(yōu)于其他電池,本設(shè)計(jì)采用1500mAh 鋰電池組,電壓轉(zhuǎn)換電路采用AMS1117 穩(wěn)壓器芯片[9]。接通電源開(kāi)關(guān)后,7.4V 電壓通過(guò)兩個(gè)不同輸出電壓的AMS1117 穩(wěn)壓器芯片,一路電壓變?yōu)?.3V,供給STM32 單片機(jī)使用,另一路電壓輸出為5V。電源模塊如圖3 所示。
圖3 電源模塊電路
當(dāng)系統(tǒng)通電后,初始化程序運(yùn)行,STM32 單片機(jī)為總處理單元,舵機(jī)反饋位置、電壓、溫度等信號(hào),通過(guò)開(kāi)源舵機(jī)控制器處理經(jīng)過(guò)AD 轉(zhuǎn)換后,傳輸至單片機(jī)處理,若舵機(jī)沒(méi)有復(fù)位,則需要先進(jìn)行復(fù)位操作,復(fù)位后即可運(yùn)行機(jī)器人動(dòng)作組程序。系統(tǒng)主程序流程圖如圖4 所示。
圖4 系統(tǒng)主程序流程圖
本設(shè)計(jì)采用的為開(kāi)源雙足機(jī)器人上位機(jī)軟件,該上位機(jī)軟件界面清晰,軟件主界面如圖5 所示。
圖5 上位機(jī)軟件主界面圖
仿人機(jī)器人上位機(jī)軟件的操作界面為三個(gè)區(qū)域,左方六個(gè)藍(lán)色圖標(biāo)為舵機(jī)控制區(qū)域,每個(gè)圖標(biāo)對(duì)應(yīng)一個(gè)舵機(jī),圖標(biāo)上方有舵機(jī)的標(biāo)號(hào),方便區(qū)分,圖標(biāo)下方有白色滑軌和滑塊,用以改變舵機(jī)的位置,因?yàn)槭褂玫氖腔瑝K調(diào)節(jié),故可實(shí)現(xiàn)無(wú)級(jí)調(diào)節(jié)。
右方靠上位置的方框?yàn)閯?dòng)作編輯詳情列表,可以顯示設(shè)定動(dòng)作的舵機(jī)位置,動(dòng)作執(zhí)行時(shí)間與修改動(dòng)作執(zhí)行順序等,最多可輸入1020 個(gè)動(dòng)作。
右方靠下位置的區(qū)域?yàn)榘存I區(qū)域,實(shí)現(xiàn)動(dòng)作組功能設(shè)置,動(dòng)作編輯完成后可以執(zhí)行保存、修改、更新等操作。
使用上位機(jī)軟件時(shí),用USB 數(shù)據(jù)連接PC 端和仿人機(jī)器人,打開(kāi)電腦的設(shè)備管理器,找到連接的仿人機(jī)器人設(shè)備,記下COM 端標(biāo)號(hào),打開(kāi)串口,指示燈變綠,即可進(jìn)行機(jī)器人動(dòng)作的編輯。每設(shè)置好一個(gè)動(dòng)作,點(diǎn)擊添加動(dòng)作按鈕設(shè)定動(dòng)作的數(shù)值,將編輯好的動(dòng)作組文件下載到STM32 單片機(jī)中,下載完成后關(guān)閉串口并斷開(kāi)連接線,按下控制按鍵即可運(yùn)行動(dòng)作。
根據(jù)設(shè)計(jì)要求,選配系統(tǒng)元器件。主要有六個(gè)舵機(jī)、舵機(jī)之間連接的金屬件、開(kāi)源舵機(jī)控制器、STM32 單片機(jī)與亞克力板等。組裝后機(jī)器人如圖6 所示。
圖6 仿人機(jī)器人整體效果圖
由于組裝時(shí)可能對(duì)舵機(jī)進(jìn)行轉(zhuǎn)動(dòng),上電后機(jī)器人不是處于直立狀態(tài),因而需要通過(guò)舵機(jī)調(diào)試板連接舵機(jī)與調(diào)試軟件分別對(duì)舵機(jī)的ID、中位進(jìn)行設(shè)置,使得機(jī)器人處于直立狀態(tài)。
將仿人機(jī)器人主控芯片與USB 口連接,打開(kāi)KEIL 軟件,將編寫(xiě)好的主程序燒錄至單片機(jī)中,圖7 為電腦與仿人機(jī)器人連接調(diào)試效果圖。
圖7 電腦與仿人機(jī)器人連接調(diào)試效果圖
打開(kāi)上位機(jī)軟件,將上位機(jī)與機(jī)器人連接成功后,就可通過(guò)調(diào)整上位機(jī)軟件的舵機(jī)控制區(qū)來(lái)操控舵機(jī)轉(zhuǎn)動(dòng)。
測(cè)試一:行走
首先測(cè)試機(jī)器人的行走,直立狀態(tài)下,行走的第一步首先要改變機(jī)器人的重心分布,從而使機(jī)器人單腳站立,此時(shí)控制另一只腿上的舵機(jī),向前邁步,邁步后調(diào)整好落地角度,注意與另一只腿部舵機(jī)的配合,實(shí)現(xiàn)平穩(wěn)落地。行走動(dòng)作組舵機(jī)各數(shù)值如表2 所示。
表2 行走動(dòng)作組舵機(jī)數(shù)值表
測(cè)試二:轉(zhuǎn)彎
由于本設(shè)計(jì)每個(gè)關(guān)節(jié)只有兩個(gè)自由度,轉(zhuǎn)彎動(dòng)作需要機(jī)器人單腳站立并保持較大的傾斜角度,另一條腿向前邁步,落地的同時(shí),兩條腿上的舵機(jī)同時(shí)復(fù)位,在舵機(jī)扭矩的作用下,機(jī)器人即可向單腳傾斜的方向完成轉(zhuǎn)彎。如圖8 所示。
圖8 轉(zhuǎn)彎測(cè)試效果圖
轉(zhuǎn)彎動(dòng)作組舵機(jī)數(shù)值如表3 所示。
表3 轉(zhuǎn)彎動(dòng)作組舵機(jī)數(shù)值表
測(cè)試三:翻滾
翻滾時(shí)需要兩條腿上的舵機(jī)同步轉(zhuǎn)動(dòng),第一步需要完成機(jī)器人的頭部和腳部同時(shí)著地,第二步用頭部支撐,抬起腿部,使機(jī)器人呈現(xiàn)出倒立的形態(tài),第三步將機(jī)器人腿部執(zhí)行第一、第二步機(jī)器人頭部動(dòng)作,即可完成翻轉(zhuǎn)操作。
翻滾動(dòng)作組舵機(jī)數(shù)值如表4 所示。
表4 翻滾動(dòng)作組舵機(jī)數(shù)值表
首先需將測(cè)試完畢的動(dòng)作文件保存,將動(dòng)作組文件命名并保存,方便后續(xù)修改,保存完畢后,點(diǎn)擊動(dòng)作組序號(hào),選擇“100”,因?yàn)闄C(jī)器人默認(rèn)設(shè)置 100 號(hào)動(dòng)作組為脫機(jī)起始動(dòng)作組號(hào)碼,而其余動(dòng)作組號(hào)碼則不能作為脫機(jī)動(dòng)作組起始號(hào)碼,下載完成后,如圖9 所示。
圖9 脫機(jī)調(diào)試圖
此時(shí)點(diǎn)擊關(guān)閉串口按鈕,斷開(kāi)機(jī)器人的連接,將其放在較為平整的地面上,按下控制器上的按鍵,機(jī)器人就能脫機(jī)運(yùn)行編輯的動(dòng)作組文件。
仿人機(jī)器人的步態(tài)行走設(shè)計(jì),利用STM32 單片機(jī)來(lái)控制開(kāi)源舵機(jī)控制器,進(jìn)而操作舵機(jī),完成仿人機(jī)器人的行走、轉(zhuǎn)彎、翻滾動(dòng)作,可實(shí)現(xiàn)在線調(diào)試與脫機(jī)運(yùn)行,動(dòng)作相對(duì)穩(wěn)定、姿態(tài)標(biāo)準(zhǔn)。仿人機(jī)器人脫機(jī)調(diào)試時(shí),能夠做到斷開(kāi)與上位機(jī)的連接后,脫機(jī)自動(dòng)運(yùn)行編寫(xiě)好的動(dòng)作組文件,各模塊配合運(yùn)行平穩(wěn),舵機(jī)角度可無(wú)級(jí)調(diào)節(jié)、扭矩大,能勝任一些較復(fù)雜動(dòng)作,動(dòng)作運(yùn)行流暢,但是也存在一些問(wèn)題,例如受限于電池包的重量體積等,故機(jī)器人續(xù)航時(shí)間較短,不能連續(xù)長(zhǎng)時(shí)間運(yùn)行,這些都需要在后期的改進(jìn)中逐步優(yōu)化,本設(shè)計(jì)為國(guó)內(nèi)外相關(guān)仿人機(jī)器人的研究提供了一些借鑒。