毛潤,張珈龍
(成都大學 電子信息與電氣工程學院,四川成都,610106)
隨著社會信息化技術的發(fā)展,工業(yè)、農業(yè)、科研、國防等各個領域越來越需要高性能的自動化系統(tǒng)。機械臂能模仿手臂的某些動作功能,用以按固定程序抓取、搬運物件或操作工具的自動操作裝置[1~3]。它可代替人的繁重勞動以實現生產的機械化和自動化,能在有害環(huán)境下操作以保護人身安全,因而廣泛應用于機械制造、冶金、電子、輕工和原子能等部門,智能機械臂是具有感知、思維和行動的機器人,可獲取、處理和識別多種信息,自主完成較為復雜的操作任務[4~5]。
在后疫情時代,很多應用場景需要員工減少人與人之間的互動,例如機場、地鐵等人流量特別大的地方,這些場所又需要員工與客人進行近距離接觸,還需要員工幫助客人進行行李的搬運,這無疑會使疫情的風險更大,并且搬運行李也是有一定勞動強度,將機械臂運用于這些場所,可以一定程度上減少人與人之間的交互和節(jié)省勞動力[6~8]。
本設計采用雙控制器方案,控制器2 為QT 控制器(ARM處理器),其運行服務器代碼實現用戶賬號登錄注冊、機械臂控制信號接收以及打包發(fā)送功能。機械臂的硬件構造主要分為核心驅動模塊和舵機模塊兩個部分,機械臂核心驅動模塊主要由控制器1(STM32F103C8T6 單片機)來控制,控制器1 為一個機械臂控制器,舵機模塊包含六個自由度,每個舵機通過相應的PWM 的占空比脈沖信號加以控制[9]。兩控制器合作完成賬號登錄注冊以及機械臂手動和自動搬運系統(tǒng)的設計。
QT 上位機控制界面的設計,包括賬號注冊登錄、機械臂控制界面;QT 控制器運行多線程服務器代碼,使用三個線程分別負責各個功能;機械臂控制器對機械臂控制信息進行解析處理,通過控制信息對PWM 占空比進行控制從而實現舵機轉動,最終實現機械臂的手動和自動搬運系統(tǒng)的設計。
圖1 是一個基于雙控制器的民航機場行李自動搬運系統(tǒng)設計的硬件框架圖。這里的控制器1 為STM32F103C8T6 單片機,其是作為一個機械臂控制器,而控制器2 為FS4412開發(fā)板的核心模塊,其為一個QT 控制器。程序沒有開始前,QT 控制器的源代碼都是存放在SD 卡中,機械臂控制器的源代碼存放在Flash 中,上電后,程序啟動,QT 控制器運行服務器代碼,用戶登錄客戶端進入到賬號登錄界面,然后輸入賬號信息后會通過網口傳輸發(fā)送到QT 控制器,賬號與QT控制器上的數據庫進行對比,比對成功后再通過網口傳輸回客戶端進行登錄,登錄成功后進入到機械臂操作,客戶端發(fā)出機械臂控制信息后,控制信息會通過網口傳遞給QT控制器,然后封裝成協議包通過串口傳遞給機械臂控制器進行解析,解析出機械臂控制信息后,進行舵機控制。
圖1 硬件架構圖
本設計使用六軸機械臂,硬件連接實物圖如圖2 所示。六軸機械臂主要包含六個自由度,分別由六個舵機分別來進行控制,每一個舵機關節(jié)都可以轉動180°,而舵機一般是由舵盤、減速齒輪組、位置反饋電位計、直流電機、控制電路幾部分組成。機械臂的六個舵機分別連接STM32 上的M4(TIM3_CH4)、M5(TIM3_CH3)、M6(TIM3_CH2)、M7(TIM3_CH1)、M8(TIM4_CH4)、M9(TIM4_CH3)時鐘引腳,舵機通過輸入線接收控制系統(tǒng)發(fā)出的PWM 波從而控制電機轉動,電機帶動一系列減速齒輪組,減速后傳動至輸出舵盤,舵機的輸出軸帶動位置反饋電位器,電位器將相應角度的輸出電壓信號與到控制電路板的PWM控制信號進行比較,然后控制電路板根據所在位置決定電機轉動的方向和角度。其工作原理就是將脈沖信號轉換為角位移,閉環(huán)控制電機轉動。步進電機由單片機控制,控制信號為數字信號,不用經過A/D 數模轉換,具有快速啟/停功能,迅速地實現啟動或停止,且步距角越小、延時越短,定位越準確,旋轉精度越高。其工作流程為:控制信號→控制電路板→電機轉動→齒輪組減速→舵盤轉動→位置反饋電位計→控制電路板反饋[10]。
圖2 硬件實物圖
軟件設計的主進程如圖3 所示,首先通過QT 設計一個用戶登錄的界面,用戶進入到賬號登錄界面,然后輸入賬號與密碼,成功登錄后會進入到用戶操作界面,程序同時通過線程執(zhí)行,互不干擾,它們的控制界面都顯示在QT 界面上,用戶可以通過其來進行機械臂手動和自動控制。
圖3 主程序設計
用戶在客戶端的操作界面按下手動控制按鈕后,控制六根滑桿即可控制6 個舵機的轉動,最終實現手動控制,手動控制的程序框圖如圖4 所示。首先進行時鐘初始化、機械臂初始化、串口初始化。初始化完成后,從用戶界面選擇控制方式,客戶端將進行手動控制的信號發(fā)送給QT 控制器的服務器,QT 控制器再通過串口將控制信號發(fā)送給機械臂控制器,機械臂控制器接收到該手動控制信號,進入手動控制模式。用戶控制指定舵機旋轉。舵機的控制信息從用戶界面?zhèn)鬏斀oQT 控制器,并被打包成協議包通過串口發(fā)送給機械臂控制器,此時機械臂控制器會檢測到有數據在串口通道中,產生串口中斷,機械臂控制器接收該控制協議包。機械臂控制器接收到數據協議包后進行數據驗證,通過協議頭和協議尾來判斷是否為需要的控制信息,如果不正確,重新進行接收。當確認為需要的控制信息后,按照信息中所提供的舵機號和旋轉角度,進行改變相應舵機的占空比,實現指定舵機的旋轉。最后通過串口中斷接收用戶的控制信息,實現各個舵機的旋轉,最終實現機械臂的手動控制。
圖4 手動控制流程圖
用戶按下自動控制按鈕后,進入到機械臂自動控制模式,機械臂會自動完成貨物搬運的操作,自動控制的程序框圖如圖5 所示。首先進行時鐘、舵機、串口的初始化,初始化完成后進行控制方式的選擇。進入自動模式后,調用運動軌跡點位,QT 控制器將點位信息逐一放入串口通道中。機械臂控制器檢測到串口中有數據信息,將該數據信息取出進行解析和校驗,確定為正確信息后,通過改變對應舵機進行旋轉。當運動軌跡點位都傳輸完成后,完成自動控制。
圖5 自動控制流程圖
QT 控制器的程序中有著一套完整的運動軌跡代碼(即從固定點位將物體搬運到另一個固定點位的集合),每一次通過串口傳輸一個點位信息給機械臂控制器,機械臂控制器通過串口接收到該信息后,進行解析驗證,數據正確后改變舵機的占空比從而實現一個點位的運行,隨后將第二個點位信息放入到串口通道中,讓機械臂控制器進行讀取和解析,按照控制信息再次控制對應舵機運行,如此重復,直到機械臂完成所有設置好的運動軌跡點位,機械臂就完成了一個自動搬運的過程。
由于QT 控制器沒有屏幕,所以使用PC 機的超級終端來模擬QT 控制器的操作界面,作為其“顯示器”方便用戶進行調試和使用。進入到LINUX 操作界面后直接運行服務器代碼,即可啟動服務器,服務器程序運行后,打開客戶端程序,在終端界面上出現了客戶端的IP 和端口號意味著服務器和客戶端連接成功,如圖6 所示。
圖6 連接界面
進入到操作界面后,會出現六根滑桿,通過滑動滑桿完成對六個舵機的旋轉控制。用戶需要通過六根滑桿逐一對0到5 號舵機進行控制,每一次選擇滑動一根滑桿就可控制一個關節(jié)進行旋轉,逐漸控制6 個關節(jié)去合作實現搬運物品的運動軌跡,最終就實現了手動搬運。在這之前首先要按下操作界面上的自動/手動轉換按鈕,當按鈕顯示為手動時,即可以進行手動測試。
如圖7(a)所示,機械臂進行初始化后所有舵機都是旋轉0°,此時滑動客戶端界面的6根滑桿進行相應舵機的操作。首先讓0 號舵機旋轉至對向瓶子,并控制1 號舵機使機械臂彎向瓶子,再控制2 號和3 號舵機將機械臂前端夾子移動至瓶子上方和讓5 號舵機將夾子張開,然后控制1 號舵機使前端夾子下降至能夾起瓶子處,此時機械臂已完成夾起前的工作,隨后控制5 號舵機使夾子夾緊,成功夾住瓶子,此圖表示瓶子已經成功被夾住。
圖7 手動控制結果
如圖7(b)所示,夾起瓶子后,控制1 號舵機使機械臂將瓶子抬起脫離桌面,然后控制0 號舵機將瓶子移動至目標位置上方,此圖表示瓶子已被移動至目標位置上方。
如圖7(c)所示,此時機械臂已經將瓶子移動到了目標位置上方,用戶控制1 號舵機將瓶子放置桌面上,此時機械臂仍夾著瓶子,然后控制5 號舵機使夾子松開瓶子,再控制1 號舵機使機械臂脫離瓶子,此圖表示機械臂已經完成了瓶子搬運,并且使夾子脫離了瓶子口。
自動抓取是在手動抓取的基礎上,事先將實現自動搬運的運動軌跡點位代碼寫入程序中。在用戶控制界面按下自動/手動切換按鈕后,切換到自動抓取模式,自動抓取信號就會發(fā)送給QT 控制器,它再將信息發(fā)送給機械臂控制器,然后機械臂控制器控制機械臂執(zhí)行事先寫進程序的運動軌跡點位程序,從而實現機械臂自動抓取。
再進行使用機械臂調試器工具進行調試時,需要調試一號舵機,就需要給ID 為1 的選擇框打鉤,然后在后面的數據一欄填寫想要舵機旋轉的度數,通過發(fā)送給機械臂控制器,機械臂的1 號舵機就會旋轉相應的度數。
通過對各個舵機點位調試后,成功確認了點位,并將點位寫進程序進行調試。
①初始位置:0 號到5 號舵機都是旋轉0°。
②就位:將機械臂旋轉到準備抓取物品的位置,需要將1 號舵機旋轉35°,2 號舵機旋轉-34°,3 號舵機旋轉39°,4 號舵機旋轉60°,5 號舵機旋轉-30°。
③抓?。簷C械臂進行抓取物品,需要將1 號舵機旋轉43°,5 號舵機旋轉28°。
④抬起:將物品抓起離開桌面,只需將2 號舵機旋轉至25°。
⑤偏轉:抬起物品后,旋轉至目標位置,使0 號舵機旋轉40°,1 號舵機旋轉15°。
⑥放下:將物品放下,使1 號舵機旋轉30°,5 號舵機旋轉-30°。
將這些點位按順序寫入到源程序當中,并且在每個動作之間加入了延遲函數,這樣串口接收數據時才能完整接收。自動模式下可以抓取放置在固定位置的物體,并且將其放到固定位置去,實現物品的自動搬運。因為指令傳輸過快會導致數據丟失,所以各個關節(jié)指令間加入一秒的延遲,所以自動模式下機械臂動作稍微有些卡頓,成功實現機械臂自動控制。
基于雙控制器的六軸機械臂的設計,最終實現了機械臂手動抓取、自動抓取貨物等功能,文章具體研究內容如下:
(1)用戶能夠進行登錄注冊賬號的功能。用戶在客戶端輸入賬號和密碼然后通過網絡傳輸給服務器中,服務器調用數據庫信息進行賬號密碼對比,對比正確則成功登錄。
(2)用戶可以通過六個滑桿來手動控制機械臂進行手動抓取物品的功能。每一個滑桿代表著六軸機械臂的0 到5號舵機,通過滑動滑桿即可控制機械臂相應舵機旋轉的角度。
(3)機械臂能夠自動抓取物品放到目標位置的功能,實現了自動抓取。