孟慶仙
(云南機(jī)電職業(yè)技術(shù)學(xué)院,云南 昆明 650203)
機(jī)器人是一種自動(dòng)控制的裝置,它能夠接受來(lái)自人類(lèi)的語(yǔ)音或者按鍵的指揮,也可以去運(yùn)行一系列我們輸入的編寫(xiě)好的程序。它目前主要是服務(wù)于人類(lèi)的車(chē)間生產(chǎn)、建筑行業(yè),還有一些非常危險(xiǎn)消防這些工作。所以它對(duì)人類(lèi)起到了至關(guān)重要的作用。近幾年國(guó)內(nèi)外涌現(xiàn)的控制系統(tǒng)大多數(shù)都是采用分散控制,沒(méi)有統(tǒng)一的主控系統(tǒng),但是機(jī)器人作為一個(gè)類(lèi)人的產(chǎn)品,它必須能夠保證每個(gè)關(guān)節(jié)之間的信息傳遞,那么該系統(tǒng)的控制就需要大量的I/O口,并且對(duì)數(shù)據(jù)采集的實(shí)時(shí)性要求非常高。由于FPGA具有豐富的I/O接口,高速的數(shù)據(jù)處理能力,所以采用當(dāng)下比較流行的FPGA作為中央主控系統(tǒng)的主控板,可以高速、準(zhǔn)確地傳遞信息,并且開(kāi)啟舵機(jī)等待及運(yùn)行模式,控制舵機(jī)的實(shí)時(shí)角度,本文主要是制定一系列動(dòng)作編排的策略,編寫(xiě)相應(yīng)的程序,讓機(jī)器人能夠按照指定的動(dòng)作平穩(wěn)運(yùn)行[1]。
本文所使用的機(jī)器人是一個(gè)具有多自由度的類(lèi)似人體的組織結(jié)構(gòu),那么這種機(jī)器人在運(yùn)動(dòng)過(guò)程中就需要多個(gè)關(guān)節(jié)同時(shí)運(yùn)動(dòng),那么也就需要大量I/O口來(lái)控制。在控制方面有機(jī)械控制和手持設(shè)備兩種控制方式,該實(shí)驗(yàn)使用手持設(shè)備通過(guò)無(wú)線(xiàn)裝置來(lái)控制機(jī)器人的運(yùn)動(dòng)[2]。同時(shí),針對(duì)機(jī)器人的特殊要求,根據(jù)它的重量,功耗,以及考慮它的穩(wěn)定性、平衡性,提出了一整套完整的解決方案??刂葡到y(tǒng)結(jié)構(gòu)如圖1所示。
圖1 機(jī)器人主控系統(tǒng)結(jié)構(gòu)
該系統(tǒng)把機(jī)器人的主控制系統(tǒng)分為上位機(jī)和下位機(jī)兩個(gè)部分。上位機(jī)它主要的是處理是在使用ARM芯片來(lái)完成的,它還負(fù)責(zé)完成無(wú)線(xiàn)遙控器的信號(hào)發(fā)射和信號(hào)的接收。ARM芯片中包括了兩個(gè)主要的功能模塊:信號(hào)調(diào)制和解調(diào)模塊。而下位機(jī)就是我們的機(jī)器人主控系統(tǒng)的核心部分,它主要由FPGA以及控制機(jī)器人運(yùn)動(dòng)的舵機(jī)組成,當(dāng)FPGA接收到ARM芯片傳遞過(guò)來(lái)的動(dòng)作指令信號(hào),就會(huì)將其按照之前預(yù)設(shè)的轉(zhuǎn)換模式,將其轉(zhuǎn)換成驅(qū)動(dòng)舵機(jī)的PWM脈沖信號(hào),通過(guò)實(shí)時(shí)改變脈沖的占空比,就可以改變舵機(jī)所運(yùn)動(dòng)的角度,并且我們?cè)谏衔粰C(jī)中設(shè)計(jì)了幾個(gè)地址線(xiàn),通過(guò)地址線(xiàn)來(lái)選擇哪個(gè)舵機(jī)工作。FPGA是整個(gè)下位機(jī)的主控核心部分,也是我們整個(gè)機(jī)器人平穩(wěn)運(yùn)行的最重要的組成部分[3]。
該控制系統(tǒng)的上位機(jī)采用無(wú)線(xiàn)遙控器的發(fā)射接收兩個(gè)模塊信號(hào)來(lái)控制,ARM芯片作為上位機(jī)的核心控制系統(tǒng),負(fù)責(zé)處理來(lái)自遙控器的信息請(qǐng)求。下位機(jī)使用FPGA作為主控器,來(lái)完成機(jī)器人舵機(jī)角度的精準(zhǔn)控制。最終實(shí)現(xiàn)機(jī)器人平穩(wěn)運(yùn)行。
(1)機(jī)器人能夠在舵機(jī)的轉(zhuǎn)動(dòng)角度范圍內(nèi)自由活動(dòng)。
(2)多個(gè)舵機(jī)能夠同時(shí)被控制,完成指定動(dòng)作的協(xié)調(diào)與分配。
(3)控制舵機(jī)的各個(gè)系統(tǒng)、舵機(jī)還有一些外圍電路都放在了機(jī)器人身體內(nèi)部,不至于放在外面影響機(jī)器人運(yùn)動(dòng)。
(4)手持的無(wú)線(xiàn)遙控器可以遠(yuǎn)距離控制機(jī)器人的機(jī)械運(yùn)動(dòng)。(5)利用FPGA控制機(jī)器人的準(zhǔn)確運(yùn)動(dòng)。(6)編寫(xiě)高速有效的verilog程序。
目前國(guó)內(nèi)大多采用一個(gè)伺服驅(qū)動(dòng)器控制一個(gè)伺服電機(jī)的方式,這種方式機(jī)器人體積龐大,項(xiàng)目之間配合時(shí)出現(xiàn)延遲,而本課題采用一個(gè)FPGA主控芯片作為伺服驅(qū)動(dòng)器,來(lái)完成驅(qū)動(dòng)機(jī)器人腿部的伺服電機(jī)的工作,使機(jī)器人重量減輕,體積減小,達(dá)到精準(zhǔn)控制。
在該實(shí)驗(yàn)中,我們所使用的機(jī)器人一共有18個(gè)舵機(jī),他們分別由PWM的內(nèi)核模塊集中控制,每個(gè)舵機(jī)占用一個(gè)I/O口。每個(gè)舵機(jī)之間我們加入了光電耦合器TLP521-4。因?yàn)樾盘?hào)在傳輸過(guò)程中經(jīng)過(guò)了反向,那么就必須把光電耦合出來(lái)的信號(hào)再次經(jīng)過(guò)反向才能還原成原來(lái)的信號(hào)。系統(tǒng)整體硬件由一個(gè)能夠獨(dú)立行走的機(jī)器人,以及一個(gè)手持的遙控設(shè)備,還有一個(gè)arm板、FPGA主控系統(tǒng)構(gòu)成,最終控制18路舵機(jī)分時(shí)運(yùn)轉(zhuǎn),達(dá)到讓機(jī)器人運(yùn)動(dòng)的目的[4]。系統(tǒng)實(shí)驗(yàn)中FPGA管腳配置硬件接口電路分配圖如圖2所示。
圖2 硬件接口電路管腳分配圖
基于FPGA的工業(yè)機(jī)器人控制系統(tǒng)不但可以讓機(jī)器人平穩(wěn)地行走,而且能夠穿越一些坡度較陡的路,甚至樓梯,為機(jī)器人重心與行走的穩(wěn)定性最佳參數(shù)配合的研究與開(kāi)發(fā)起到指導(dǎo)作用。
該控制系統(tǒng)由上下兩部分構(gòu)成,一部分是來(lái)自上位機(jī)的ARM板子和無(wú)線(xiàn)遙控器,另一部分是下位機(jī)中的FPGA主控系統(tǒng)。無(wú)線(xiàn)遙控器經(jīng)過(guò)調(diào)制解調(diào)后輸出4個(gè)控制信號(hào),信號(hào)連接至ARM板子作為他的輸入信號(hào),arm將其轉(zhuǎn)換成可以控制的1位confirm線(xiàn),1位run線(xiàn),3位地址輸入線(xiàn),1位讀寫(xiě)信號(hào)線(xiàn),2位數(shù)據(jù)信號(hào)線(xiàn);最后由arm板子編譯后輸出到相對(duì)應(yīng)得FPGA主控板上,3位地址輸入線(xiàn)主要是控制9個(gè)舵機(jī)選擇哪個(gè)舵機(jī)運(yùn)動(dòng),2位數(shù)據(jù)信號(hào)線(xiàn)主要是控制對(duì)應(yīng)的舵機(jī)轉(zhuǎn)動(dòng)相應(yīng)的角度,這個(gè)角度就代表了機(jī)器人動(dòng)作的變化模式。
使用無(wú)線(xiàn)遙控器按下某個(gè)按鍵,它將觸發(fā)系統(tǒng)模塊產(chǎn)生相應(yīng)的動(dòng)作編碼,然后經(jīng)過(guò)arm板處理后送到FPGA來(lái)處理[5]。而動(dòng)作譯碼模塊主要功能就是在接收到的編碼信號(hào)后,對(duì)信號(hào)進(jìn)行分析,判斷按鍵的動(dòng)作,并進(jìn)行舵機(jī)的選擇。我們將根據(jù)動(dòng)作的不同產(chǎn)生相應(yīng)的控制信號(hào),F(xiàn)PGA產(chǎn)生不同的PWM波來(lái)控制舵機(jī)的轉(zhuǎn)動(dòng)角度,那么機(jī)器人也就完成了動(dòng)作變化。
在實(shí)驗(yàn)過(guò)程中對(duì)控制機(jī)器人的舵機(jī)進(jìn)行了相應(yīng)的簡(jiǎn)化,一共使用8個(gè)舵機(jī),無(wú)線(xiàn)遙控器的1到8按鈕主要是針對(duì)8個(gè)舵機(jī)的選擇,當(dāng)按下某個(gè)按鍵的時(shí)候,系統(tǒng)鎖存器進(jìn)行鎖存,那么后面所有的操作都是針對(duì)該舵機(jī)進(jìn)行控制,其余均不受到影響。遙控器上第9個(gè)按鍵和第10個(gè)按鍵是針對(duì)機(jī)器人的動(dòng)作進(jìn)行控制,如果按下第9鍵,那么代表該舵機(jī)要在原有角度的基礎(chǔ)上轉(zhuǎn)動(dòng)加上45度,如果按下第10鍵,那么代表該舵機(jī)要在原有的角度基礎(chǔ)上減去45度,按下11鍵的時(shí)候,系統(tǒng)確認(rèn)該操作,機(jī)器人開(kāi)始執(zhí)行相應(yīng)的轉(zhuǎn)動(dòng)。按下12鍵得時(shí)候,系統(tǒng)恢復(fù)初始化,回到初始狀態(tài)。
實(shí)驗(yàn)所用機(jī)器人模型主要是描繪出機(jī)器人在完成規(guī)定動(dòng)作時(shí)舵機(jī)安裝的位置,各姿態(tài)下PWM信號(hào)參數(shù)如表1所示(空格處參數(shù)與相應(yīng)的直立時(shí)參數(shù)相同),論文主要完成了以下工作:主要是設(shè)計(jì)FPGA來(lái)控制兩個(gè)以上的舵機(jī)的控制策略,它們能夠同時(shí)完成機(jī)器人一系列動(dòng)作的協(xié)調(diào),并且在保持機(jī)器人平衡上準(zhǔn)確地調(diào)整角度,來(lái)改變由于重心變化引起的不平衡。完成了FPGA引腳的分配,PWM 信號(hào)的發(fā)生程序設(shè)計(jì),使用verilog語(yǔ)言實(shí)現(xiàn)了對(duì)機(jī)器人角度的精確控制,使得機(jī)器人能夠平穩(wěn)運(yùn)動(dòng)。
表1 仿人機(jī)器人各姿態(tài)下PWM 信號(hào)參數(shù) 單位:0.1 ms
基于FPGA的工業(yè)機(jī)器人控制系統(tǒng)的研究具有很大的現(xiàn)實(shí)意義,現(xiàn)在我國(guó)新增工業(yè)機(jī)器人中超過(guò)70%依賴(lài)國(guó)外進(jìn)口,而我國(guó)近幾年工業(yè)機(jī)器人需求量增大,學(xué)生如果可以掌握該技術(shù),那么對(duì)于學(xué)生的就業(yè)有很大的幫助。目前高職高專(zhuān)組進(jìn)行的工業(yè)機(jī)器人大賽就是為了促進(jìn)機(jī)器人技術(shù)的推廣與發(fā)展,而這個(gè)項(xiàng)目的研究正是對(duì)大賽后續(xù)的一個(gè)補(bǔ)充,讓學(xué)生可以多方面地掌握機(jī)器人運(yùn)動(dòng)的控制技術(shù)?,F(xiàn)在學(xué)院開(kāi)設(shè)了FPGA項(xiàng)目化教學(xué),該系統(tǒng)的研究正是與這門(mén)課程的融合,既體現(xiàn)了當(dāng)代機(jī)器人物聯(lián)網(wǎng)要求,又拓展了學(xué)生對(duì)FPGA學(xué)習(xí)的動(dòng)手能力,讓學(xué)生對(duì)課程融會(huì)貫通,不再獨(dú)立教學(xué)就能夠讓學(xué)生綜合運(yùn)用所學(xué)知識(shí)。