彭威
摘要:文章設(shè)計(jì)實(shí)現(xiàn)了一個(gè)基于51單片機(jī)的機(jī)械臂控制系統(tǒng)。該控制系統(tǒng)主要采用STM32f407最小系統(tǒng)開(kāi)發(fā)板、機(jī)械臂和JDY-31藍(lán)牙進(jìn)行組裝。其分為8大模塊,分別是:PCA9685控制多路舵機(jī)模塊、矩陣按鍵模塊、LCD1702顯示模塊、DS18B20溫度檢測(cè)模塊、獨(dú)立按鍵模塊、步進(jìn)電機(jī)、ULN2003步進(jìn)電機(jī)控制模和DS1302時(shí)鐘模塊。各模塊協(xié)調(diào)工作,可顯示當(dāng)前年月日時(shí)分秒和步進(jìn)電機(jī)開(kāi)關(guān)狀態(tài),可通過(guò)矩陣按鍵模塊調(diào)整時(shí)間,控制步進(jìn)電機(jī)的開(kāi)關(guān)。此機(jī)械臂由紅外遙控器控制,LCD1702顯示舵機(jī)狀態(tài)。
關(guān)鍵詞:?jiǎn)纹瑱C(jī);機(jī)械臂;藍(lán)牙;紅外遙控
中圖分類(lèi)號(hào):TP241文獻(xiàn)標(biāo)志碼:A
1 背景及意義
隨著科學(xué)技術(shù)的發(fā)展,機(jī)器人技術(shù)被廣泛應(yīng)用到各種結(jié)構(gòu)化的場(chǎng)景,比如,3C消費(fèi)電子和汽車(chē)工廠(chǎng)等標(biāo)準(zhǔn)化制造業(yè)流程[1]。這類(lèi)場(chǎng)景,一般不需要復(fù)雜的規(guī)劃算法,借助簡(jiǎn)單的正逆解計(jì)算工具,機(jī)器人可以一遍又一遍地執(zhí)行相同的動(dòng)作。但與這些標(biāo)準(zhǔn)化的加工制造行業(yè)不同,非結(jié)構(gòu)化環(huán)境,如:家庭、醫(yī)院和超市等,給機(jī)器人規(guī)劃帶來(lái)了更多挑戰(zhàn)[2]。在這種情況下,機(jī)器人技術(shù)還沒(méi)有準(zhǔn)備好處理不同種類(lèi)的任務(wù)無(wú)限數(shù)量的組合,甚至與人類(lèi)合作。機(jī)械臂在近70年的發(fā)展中,從粗糙的工業(yè)生產(chǎn)用具變?yōu)槎鄬W(xué)科交叉融合的工業(yè)藝術(shù),進(jìn)入社會(huì)的各個(gè)角落。其應(yīng)用領(lǐng)域遍及科研教育、機(jī)器視覺(jué)、醫(yī)療手術(shù)、智能輪椅和服務(wù)機(jī)器人等。機(jī)械臂的亮點(diǎn)強(qiáng)調(diào)支持ROS、嵌入式視覺(jué)、無(wú)限關(guān)節(jié)旋轉(zhuǎn)、自由度冗余控制和全關(guān)節(jié)內(nèi)置扭矩傳感等[3]。
單片機(jī)集成CPU、程序儲(chǔ)存器ROM、數(shù)據(jù)儲(chǔ)存器RAM和輸入輸出接口,有的單片機(jī)內(nèi)還集成了電機(jī)驅(qū)動(dòng)電路、視頻解碼電路、AD轉(zhuǎn)換器、無(wú)線(xiàn)傳輸電路等,使得單片機(jī)功能變得非常強(qiáng)大。單片機(jī)的特長(zhǎng)在于可用單個(gè)芯片和簡(jiǎn)單外部電路去實(shí)現(xiàn)復(fù)雜的控制操作,因此非常適合機(jī)器人控制。在絕大多數(shù)機(jī)器人中都由單片機(jī)控制。簡(jiǎn)單的和中等復(fù)雜的機(jī)器人可用單片機(jī)直接控制,高度復(fù)雜的機(jī)器人用“個(gè)人電腦”或者“超級(jí)計(jì)算機(jī)”指揮許多單片機(jī)來(lái)完成機(jī)器人控制。本文實(shí)現(xiàn)的機(jī)械手臂使用51單片機(jī)進(jìn)行控制,采用電源、晶振、LED和ISP接口組建單片機(jī)最小系統(tǒng)[4]。
2 分析與設(shè)計(jì)
2.1 需求分析與總體框架
本文設(shè)計(jì)的機(jī)械臂控制系統(tǒng)的軟硬件部分由電源及調(diào)理模塊、單片機(jī)控制系統(tǒng)、自由度機(jī)械臂機(jī)械結(jié)構(gòu)、姿態(tài)控制藍(lán)牙手柄、舵機(jī)組成,主控芯片為STM32單片機(jī)。首先,上位機(jī)使得用戶(hù)在其界面拖動(dòng)滑條,可以通過(guò)串口發(fā)送指令到單片機(jī)控制板;其次,單片機(jī)控制板中的固件程序,接收上位機(jī)發(fā)過(guò)來(lái)的串口指令并解析,根據(jù)指令控制機(jī)械臂的舵機(jī)運(yùn)動(dòng);最后,單片機(jī)控制板采用一塊Arduino板。機(jī)械臂的控制主要是通過(guò)控制父節(jié)點(diǎn)的旋轉(zhuǎn),帶動(dòng)子節(jié)點(diǎn)移動(dòng),子節(jié)點(diǎn)的旋轉(zhuǎn)再帶動(dòng)自己的子節(jié)點(diǎn)移動(dòng)以此類(lèi)推。每個(gè)節(jié)點(diǎn)的旋轉(zhuǎn)單一,通常是水平方向和垂直方向,即x軸旋轉(zhuǎn)和y軸旋轉(zhuǎn),也有可能出現(xiàn)z軸旋轉(zhuǎn)。本文系統(tǒng)的總體框架如圖1所示。
2.2 機(jī)械臂的相關(guān)技術(shù)分析
2.2.1 單片機(jī)控制多個(gè)舵機(jī)
本文設(shè)計(jì)的硬件使用的是STC89C52,P30-P31 IO口對(duì)應(yīng)控制的6個(gè)按鍵,一個(gè)舵機(jī)由兩個(gè)按鍵控制,P24-P27對(duì)應(yīng)舵機(jī)的控制端(SG90的橙色線(xiàn))。按鍵可焊接,從IO口接出到按鍵再到GND。有關(guān)占空比的工作原理是利用定時(shí)器的分時(shí)復(fù)用。51的T0定時(shí)器50ms溢出一次,每溢出一次產(chǎn)生一次中斷。本文利用這個(gè)概念給它加上一個(gè)標(biāo)志flag,每一個(gè)flag對(duì)一個(gè)舵機(jī)進(jìn)行控制,每當(dāng)一個(gè)flag=1時(shí),即產(chǎn)生中斷,對(duì)應(yīng)的舵機(jī)就會(huì)啟動(dòng)。算法流程闡述如下:首先,標(biāo)定機(jī)械臂各關(guān)節(jié),從KinectV2獲取圖像,經(jīng)過(guò)處理得到關(guān)節(jié)點(diǎn)在空間中的坐標(biāo),通過(guò)幾何運(yùn)動(dòng)學(xué)解算出此時(shí)各關(guān)節(jié)角的角度;其次,從KinectV2獲取圖像,經(jīng)過(guò)處理得到目標(biāo)物體位置,通過(guò)幾何運(yùn)動(dòng)學(xué)解算出機(jī)械臂要抓到物體所要的角度(目標(biāo)角度);再次,計(jì)算目標(biāo)角度與當(dāng)前角度的誤差,使用反饋控制減少誤差;最后,循環(huán)前3步,當(dāng)誤差足夠小時(shí)即可命令機(jī)械臂抓起物體。
2.2.2 大臂和小臂設(shè)計(jì)技術(shù)
大臂設(shè)計(jì)在中座的右側(cè),由一個(gè)SG90的舵機(jī)驅(qū)動(dòng),帶動(dòng)大臂連桿進(jìn)行旋轉(zhuǎn),大臂左右有兩個(gè)連桿,兩個(gè)連桿之間由一個(gè)連接板進(jìn)行連接。大臂和連接板連接時(shí),采用緊固方式,將凹槽設(shè)計(jì)的與螺栓長(zhǎng)度相同,使螺栓擰緊時(shí),螺母和螺栓都能恰巧頂?shù)竭B板。為了使連接可靠,同時(shí)設(shè)計(jì)2個(gè)緊固結(jié)構(gòu)和4個(gè)插槽,保證連接的穩(wěn)定性。
小臂則將SG90驅(qū)動(dòng)舵機(jī)放置在中座的左側(cè),電機(jī)軸通過(guò)花鍵與小臂曲柄連接,然后通過(guò)曲柄搖桿結(jié)構(gòu)帶動(dòng)從動(dòng)搖臂旋轉(zhuǎn),實(shí)現(xiàn)小臂的旋轉(zhuǎn),這樣的設(shè)計(jì)可以減輕小臂的承重,對(duì)于亞克力板以及SG90這樣小驅(qū)動(dòng)力的電機(jī)非常合適。同時(shí),在左右兩條小臂之間,加一個(gè)鷹鉤連接凹槽的連板,并且在小臂上加一塊三角連板,三角連板連接兩條從動(dòng)桿,這樣可以保證小臂連桿的穩(wěn)定性,也可保證在小臂與鉗子連接的穩(wěn)定性。
2.2.3 組裝技術(shù)分析
在組裝過(guò)程中,為了減少螺母的使用或防止螺母對(duì)運(yùn)動(dòng)的阻礙,本文設(shè)計(jì)將大部分孔設(shè)計(jì)為M3的孔,并將某些終止孔設(shè)計(jì)為略小于M3,這樣在擰螺栓時(shí),可通過(guò)這樣的預(yù)緊力緊固,而不需要使用螺母。
同時(shí),在整個(gè)組裝過(guò)程中不能用力過(guò)大,防止將零件撐壞。在組裝中座時(shí),原件是將中座分為4個(gè)部分,中間還有一個(gè)“小豬”,但是在中座與底座電機(jī)連接時(shí),要用一個(gè)小螺栓連接擰緊,這時(shí)不要按裝配說(shuō)明上的順序裝,可先擰緊螺母,再安裝中座。在擰小臂曲柄連桿結(jié)構(gòu)的螺栓時(shí),不要擰得太近,摩擦力過(guò)大的話(huà),可能會(huì)導(dǎo)致電機(jī)帶不動(dòng)。
2.2.4 軌跡優(yōu)化技術(shù)
從控制角度看,軌跡優(yōu)化本質(zhì)上是最優(yōu)控制論的應(yīng)用,即通過(guò)計(jì)算出一連串合適的系統(tǒng)狀態(tài)和控制,在實(shí)現(xiàn)任務(wù)的同時(shí)盡可能降低完成任務(wù)需要付出的代價(jià)。在機(jī)械臂的運(yùn)動(dòng)規(guī)劃中,優(yōu)化類(lèi)算法扮演了兩個(gè)重要的角色:一是作為后處理算法,將其他運(yùn)動(dòng)規(guī)劃器的輸出路徑(比如采樣類(lèi)算法輸出的折線(xiàn)軌跡)做平滑處理或者細(xì)節(jié)簡(jiǎn)化。二是作為軌跡重規(guī)劃算法,可以將一條直觀(guān)但是存在碰撞(比如簡(jiǎn)單的點(diǎn)到點(diǎn)直線(xiàn)路徑)的運(yùn)動(dòng)軌跡,轉(zhuǎn)變成無(wú)碰撞且任務(wù)代價(jià)盡可能低的局部最優(yōu)路徑。軌跡優(yōu)化類(lèi)規(guī)劃算法最大的特點(diǎn)是利用了實(shí)際生產(chǎn)(或者設(shè)計(jì))場(chǎng)景中物理環(huán)境的變化往往是連續(xù)的這一特質(zhì)。
使用軌跡優(yōu)化算法的代價(jià)是其背后復(fù)雜的物理建模和數(shù)值求解技巧。實(shí)現(xiàn)這類(lèi)基于優(yōu)化的算法通常需要將機(jī)械臂、環(huán)境碰撞、目標(biāo)工藝等工程問(wèn)題通過(guò)高保真的方式翻譯成由矩陣描述的優(yōu)化問(wèn)題并通過(guò)合適的數(shù)值方法進(jìn)行求解。首先,建立層級(jí)凸包碰撞模型,即描述物理世界和機(jī)械臂之間的準(zhǔn)靜態(tài)關(guān)系;其次,優(yōu)化問(wèn)題的運(yùn)動(dòng)學(xué)近似,描述物理世界和機(jī)械臂之間的動(dòng)態(tài)關(guān)系及工藝任務(wù);最后,逐步二次規(guī)劃求解器,調(diào)整機(jī)械臂狀態(tài)來(lái)滿(mǎn)足動(dòng)/靜態(tài)關(guān)系和工藝任務(wù)。
3 機(jī)械臂控制系統(tǒng)的實(shí)現(xiàn)
3.1 電機(jī)的控制實(shí)現(xiàn)
使用can等通信協(xié)議方式控制機(jī)械臂步進(jìn)電機(jī),可周期性同步位置到驅(qū)動(dòng)器,實(shí)現(xiàn)位置的自由控制。脈沖加方向方式也可抽象為使用通信協(xié)議在與驅(qū)動(dòng)器通信,只不過(guò)是使用增量方式在通信,通過(guò)對(duì)脈沖的累計(jì)得到目標(biāo)位置。
程序使用兩個(gè)定時(shí)器,一個(gè)中斷頻率為1k,用于周期采樣目標(biāo)位置,并計(jì)算當(dāng)前速度。當(dāng)前速度值用于修改另一個(gè)定時(shí)器中斷頻率,所以在第二個(gè)定時(shí)器中判斷目標(biāo)位置與當(dāng)前位置的偏差,然后翻轉(zhuǎn)電平,實(shí)現(xiàn)對(duì)脈沖發(fā)送,同時(shí)判斷方向,對(duì)應(yīng)控制方向控制IO電平。在其他函數(shù)中可給定任意形式的位置變化,根據(jù)采樣定理,應(yīng)該位置變化頻率不大于500 Hz的都能被1k的定時(shí)器中斷正常采樣。由于發(fā)送脈沖需要以一定的頻率發(fā)送,所以第二個(gè)定時(shí)器頻率根據(jù)目標(biāo)位置變化率而改變,可以讓速度平滑,也可以減小CPU帶寬占用。以此方式可實(shí)現(xiàn)對(duì)機(jī)械臂步進(jìn)電機(jī)的自由控制,可使用編碼器或函數(shù)隨意控制電機(jī)。
3.2 藍(lán)牙模塊的連接與通信實(shí)現(xiàn)
為了降低單片機(jī)在非工作狀態(tài)下的功耗,需要實(shí)現(xiàn)通過(guò)手機(jī)端軟件和藍(lán)牙通信的方式,發(fā)送待機(jī)指令,實(shí)現(xiàn)單片機(jī)進(jìn)入待機(jī)模式、藍(lán)牙通信模塊實(shí)現(xiàn)低功耗運(yùn)行。上述功能的手機(jī)端軟件類(lèi)似于機(jī)械臂的遙控器的功能,能夠遙控單片機(jī)電路進(jìn)入開(kāi)機(jī)或待機(jī)狀態(tài)下。
本文設(shè)計(jì)的機(jī)械臂工作在透?jìng)髂J较?,能配置?biāo)準(zhǔn) ibeacon 功能,或者發(fā)送自定義廣播數(shù)據(jù)。默認(rèn)情況下,模塊啟動(dòng)后會(huì)自動(dòng)進(jìn)行廣播,使用 BLE 主機(jī)對(duì)其進(jìn)行掃描連接,連接成功之后就可以通過(guò)BLE在模塊和 BLE主機(jī)之間進(jìn)行數(shù)據(jù)透?jìng)?。機(jī)械臂可以通過(guò)特定的串口 AT 指令,對(duì)某些通信參數(shù)進(jìn)行修改。
單片機(jī)的管腳與藍(lán)牙模塊的連接為:PA9-USART1_TX;PA10-USART1_RX;PA0-P0.20;PA2-BL_RST。采用PA0口做一鍵喚醒用,PA0即WKUP引腳的上升沿,可以使MCU退出待機(jī)模式。
總體實(shí)現(xiàn)思路在需要省電待機(jī)時(shí),手機(jī)App軟件發(fā)送待機(jī)命令給MCU,MCU接收到后再發(fā)送低功耗設(shè)置的AT命令給藍(lán)牙模塊,藍(lán)牙模塊進(jìn)入低功耗模式下,此時(shí)P0.20引腳由高電平變?yōu)榈碗娖?,設(shè)置PA0為下降沿外部中斷,中斷服務(wù)程序中執(zhí)行程序,使得MCU進(jìn)入待機(jī)模式。本文設(shè)計(jì)中,因?yàn)檎G闆r下,藍(lán)牙模塊處于透?jìng)髂J?,手機(jī)App軟件直接發(fā)送AT命令控制機(jī)械臂,藍(lán)牙模塊不會(huì)執(zhí)行,只能透?jìng)鞯組CU接收變量的數(shù)據(jù)區(qū)內(nèi)。當(dāng)需要喚醒工作時(shí),利用上述設(shè)置的低功耗模式,手機(jī)App軟件發(fā)送任意數(shù)據(jù),藍(lán)牙模塊接收到BLE數(shù)據(jù)可被喚醒,從而P0.20引腳由低電平變?yōu)楦唠娖?,此時(shí),PA0引腳的上升沿實(shí)現(xiàn)MCU退出待機(jī)模式,進(jìn)入正常工作狀態(tài)。
3.3 顯示與按鍵的實(shí)現(xiàn)
本文機(jī)械臂的顯示屏采用LED顯示器。該LED顯示器必須清晰顯示機(jī)械臂的舵機(jī)轉(zhuǎn)動(dòng)角度,以方便手機(jī)App的操控。在數(shù)據(jù)連接線(xiàn)上,每個(gè)P0口連接對(duì)應(yīng)的限流電阻,以便實(shí)時(shí)進(jìn)行動(dòng)態(tài)掃描。
本文采用獨(dú)立按鍵查詢(xún)工作方式,通過(guò) 12個(gè)(6組)按鍵控制舵機(jī)的轉(zhuǎn)動(dòng)。即通過(guò)P2口低四位和P1口控制六個(gè)自由度的舵機(jī)正反轉(zhuǎn)動(dòng)。由于系統(tǒng)接口充足,所以采用獨(dú)立按鍵即可。當(dāng)有按鍵按下時(shí),可控制不同的舵機(jī)轉(zhuǎn)動(dòng),其中兩個(gè)按鍵控制一個(gè)舵機(jī),分別控制舵機(jī)的正向轉(zhuǎn)動(dòng)和反向轉(zhuǎn)動(dòng)。轉(zhuǎn)動(dòng)的度數(shù)可以通過(guò)按鍵時(shí)間的長(zhǎng)短控制,最大的轉(zhuǎn)動(dòng)角度為 180°。
3.4 PID 仿真與優(yōu)化實(shí)現(xiàn)
由于在實(shí)際工作過(guò)程中會(huì)出現(xiàn)一定誤差,對(duì)自由度機(jī)械臂的每個(gè)關(guān)節(jié)單獨(dú)引入PID控制,可減少機(jī)械臂在工作中受到外部因素的干擾。通過(guò)調(diào)整比例,可以提高系統(tǒng)的速度和響應(yīng)峰值時(shí)間;通過(guò)改變積分,可以提高系統(tǒng)的穩(wěn)態(tài)精度,減小系統(tǒng)的響應(yīng)誤差;通過(guò)改變微分,可以提前減小系統(tǒng)響應(yīng)的超調(diào)量,提高系統(tǒng)的穩(wěn)定性。在機(jī)械臂系統(tǒng)前加入PID控制環(huán)節(jié)實(shí)現(xiàn)對(duì)機(jī)械臂系統(tǒng)的校正,實(shí)際上各個(gè)機(jī)械臂的傳遞函數(shù)均不相同,一般通過(guò)實(shí)驗(yàn)輸入單位階躍得到輸出,結(jié)合數(shù)學(xué)方法求出機(jī)械臂的實(shí)際傳遞函數(shù)。PID輸出系統(tǒng)框圖如圖2所示。
4 結(jié)語(yǔ)
本文包含自由度機(jī)械臂的仿真和控制全過(guò)程,可應(yīng)用至實(shí)際項(xiàng)目中并實(shí)現(xiàn)多種復(fù)雜環(huán)境下各關(guān)節(jié)的控制。該機(jī)械手臂承載能力較好,手臂的移動(dòng)速度合適,慣性較小。機(jī)械臂動(dòng)作較為靈活,在動(dòng)臂上增加滾動(dòng)軸承使得動(dòng)臂輕快、平穩(wěn)地運(yùn)動(dòng)。此外,由于該機(jī)械臂的剛度較低、重量力矩和慣性力等較高,使得手臂的位置精度不高,需要在后續(xù)研究中進(jìn)一步改進(jìn)。
參考文獻(xiàn)
[1]莊艷.基于單片機(jī)的機(jī)械臂電子系統(tǒng)設(shè)計(jì)與實(shí)踐[J].科學(xué)技術(shù)創(chuàng)新,2020(28):50-51.
[2]王勇,陳薈西.基于機(jī)器視覺(jué)與單片機(jī)結(jié)合的機(jī)械臂抓取系統(tǒng)[J].自動(dòng)化技術(shù)與應(yīng)用,2021(1):78-84.
[3]陳心怡,張春雨,朱麗華.基于單片機(jī)的六自由度機(jī)械手臂控制系統(tǒng)設(shè)計(jì)[J].銅陵學(xué)院學(xué)報(bào),2021(2):106-109.
[4]高玉健,史小龍,馮俊.基于OneNET物聯(lián)網(wǎng)的機(jī)械臂澆花系統(tǒng)[J].中國(guó)科技信息,2021(2):96-97,100.
(編輯 傅金睿)