金慧萍, 蘭天翔, 劉 騰, 于佳琳, 陳 勇
(1.南京林業大學a.工程培訓中心;b.機械電子工程學院,南京 210037;2.北京大學現代農業研究院,山東 濰坊 261325)
機器人技術涉及運動控制、計算機視覺、人工智能等領域,是當下熱門且前沿的研究課題之一[1-2],機械臂是機器人技術的重要分支,具有重復定位精度高、可靠性強的優點,廣泛應用于工業制造、高精密零部件制造、國防等領域[3-4]。隨著工業智能化的高速發展,機械臂越來越成為工業生產中不可或缺的工具,且對機械臂的功能有了更高的要求。近年來,許多高校開展了機械臂控制的相關實驗研究[5-6]。王倩男等[7]以ROS機器人系統平臺為依托,設計了機械臂在線實驗系統,可遠程控制機械臂,并結合視頻監控和實驗數據讀取來完成相關實驗。楊楊等[8]運用Matlab 軟件,設計圖形用戶界面實現機械臂各功能模塊的仿真運行,形象地演示機械臂的原理。
隨著計算機深度學習技術的發展,機械臂的運動控制開始與機器視覺相結合。楊亮等[9]將視覺伺服添加進機械臂控制系統,通過攝像頭采集圖像信息,控制機械臂完成目標物體的抓取。郝麗等[10]以Dobot機械臂為主體,設計了視覺輔助的機械臂抓取實驗臺,可以完成目標物的抓取及搬運任務。當前機械臂控制實驗多是基于現有的機械臂本體進行,機械臂系統集成復雜,且造價相對較高,軟件開發是在Linux 系統下進行,難于直接上手學習,不利于在實訓教學中推廣及運用,機械臂功能相對單一,通常只能完成某一種實驗功能,不具備二次開發利用的基礎。
本文提出一種可用于輔助實訓教學的多功能機械臂實驗平臺設計方案,實驗平臺采用自主設計的機械臂本體結構,搭載不同的末端執行器,運用計算機視覺技術,攝像頭采集到目標物體的圖形信息并進行圖像處理,轉換成運動控制指令通過串口通信傳輸到機械本體,來實現多功能控制。
桌面型機械臂實驗平臺的機械臂本體是1 個三自由度的機械臂結構,分別由3 個舵機控制;控制器由STM32 單片機最小系統板和驅動板組成,上、下位機通過串口通信發送指令實現舵機的運動控制;軟件系統基于Python 語言工具開發,運行于Windows 環境下,可實現機械臂的坐標控制、手勢控制、示教復演等功能。實驗平臺原理框圖如圖1 所示。

圖1 實驗平臺原理框圖
實驗平臺的機械本體為關節坐標系結構,共包含4 個關節,分別為腰部結構轉動、大臂移動、小臂移動和開放型末端執行器動作。機械臂底座位于實驗平臺下方,用于固定整個平臺系統;腰部結構位于底座上方,可進行周向旋轉,實現機械臂整體左轉和右轉;大臂與腰部結構及小臂相連接,構成一個連桿結構,大臂的移動帶動小臂在水平方向上的位移,小臂的移動帶動機械臂整體在垂直方向上的位移;機械臂的末端設計了滑槽及銷孔結構,末端執行器可根據工作任務的需求進行設計;機械臂結構的零部件采用3D 打印快速成型制造技術加工成型。對機械臂整體而言,以底座坐標系為系統的坐標原點,腰部結構實現左、右旋轉,大臂實現前、后移動,小臂實現上、下移動,搭載不同結構類型的末端執行器在腰部結構、大臂及小臂的組合運動驅動下完成具體的操作任務,實驗平臺的機械臂結構示意圖如圖2 所示。

圖2 機械臂結構示意圖
機械臂的運動分析采用Denavit 和Hartenberg 提出的D-H(Denavit- Hartenberg)參數法[11]。在機械臂的每個連桿上固連一個坐標系,以此來描述連桿在空間中的位置狀態,通過齊次變換矩陣描述各個坐標系之間的相對關系,從而來表示各連桿之間的相對位姿,在根據各連桿之間的位姿關系建立機械臂的運動學方程,求取機械臂的正逆解。
圖3 所示為機械臂姿態分析圖。由圖3(a)可知,以機械臂底座為基坐標系O-xyz,J1~J4表示機械臂的4 個運動關節,J2~J4處的軸線相互平行,J1~J3的關節由舵機驅動,J4為被動關節,由J2和J3控制,保持自身姿態為0°。由圖3(b)可知,d1為在z軸基坐標系到J1關節公垂線之間的距離;a2,a3分別為J2和J3關節連桿的長度,θ2,θ3分別為J2和J3關節繞z軸的旋轉角度。根據D-H 參數法以及機械臂連桿結構簡圖得到如圖3(c)所示的D-H 坐標系,每次坐標系的變換就得到一個轉換矩陣,矩陣依次相乘則得到最后的變換矩陣。

圖3 機械臂姿態分析圖
根據機械臂的原始尺寸得到D-H模型參數(見表1),其中,i為機械臂各關節序號;α為相鄰2 個z軸之間的角度,即關節扭轉;a為每一條公垂線的長度,即關節偏移;d為在z軸上相鄰2 條公垂線之間的距離;θ為繞z軸的旋轉角。

表1 D-H模型參數表
機械臂的正向運動學為已知機械臂各個關節參數與變量,求解機械臂末端執行器的位置與姿態的運動分析[12]。機械臂相鄰連桿之間坐標系的齊次變換矩陣用i-1Ti表示,其變換通式為
式中:c =cos;s =sin。
令:C1=cos θ1,C2=cos θ2,C3=cos θ3,C23=cos(θ2+θ3),S1=sin θ1,S2=sin θ2,S3=sin θ3,S23=sin(θ2+θ3),根據式(1)可得各坐標系轉換矩陣:
求得底座與末端執行器之間的變換矩陣:
當已知機械臂各關節的角度和參數,即可得到機械臂末端執行器的位姿。
逆向運動學是已知機械臂末端執行器的位置與姿態,反向求解機械臂各關節的空間坐標的運動分析[12]。逆向運動學分析方法有解析法、迭代法和幾何法等,由于機械臂關節數量較少,本研究采用幾何學方法來分析,幾何學逆運動學分析如圖4 所示。

圖4 幾何學逆運動學分析
機械臂的幾何投影三維示意圖如4(a)所示,關節末端位置為p點,分別分析機械臂關節在O-xy平面和機械臂所在空間O-zp平面的投影計算出關節的角度值。
(1)O-xy平面投影。由圖4(b)可知,由反正切函數得到:
(2)O-zp平面投影。由圖4(c)可知,關節2 和點pz形成了1 個三角形,r、s分別為該三角形兩直角邊,先計算其斜邊長,找出獲得其他2 個角度值的共同因素,得到:
結合上述幾何條件,求解θ3:
沿a2及過點p做輔助線構成直角三角形,其直角邊分別為k1、k2,γ為三角形一內角,可得:
進而求得:
至此,得到機械臂逆向運動學方程,由目標位置逆向計算出各關節旋轉角度θ1、θ2、θ3的值。
本文應用Python的Tkinter模塊進行界面開發,選用Notebook選項卡組件進行布局,可顯示多個選項,方便二次開發。開發的實驗平臺界面包括串口調試、基礎控制、手勢控制、示教復演界面,將不同的功能界面分別放入不同子組件中,通過類的繼承方式進行模塊化的程序設計,實現不同界面及功能單獨設計的需求,并可以方便地調用已有的功能模塊和添加新的功能模塊,上位機軟件界面如圖5 所示。

圖5 上位機軟件界面
(1)坐標控制。坐標控制是對機械臂的基礎控制,是實現其他控制功能的前提。上位機向下位機發送相應動作指令,下位機反饋實時狀態信息至上位機,打印上位機接收區相應位置供操作者監控機械臂的當前狀態。操作面板包括直角坐標控制、關節坐標控制、速度控制功能。直角坐標控制是下位機解析出上位機發送指令中相應的直角坐標參數,通過機械臂逆運動學方程計算出關節角度值,最后控制舵機運動到相應角度,從而實現直角坐標控制;關節坐標控制是系統通過向舵機發送相應脈沖寬度的PWM 信號實現;速度控制是通過改變脈沖發送頻率來實現。操作面板界面主要包括直角坐標控制部分、關節坐標控制部分、速度控制部分。在直角坐標控制中加入畫布組件,可更加直觀的觀測機械臂將要運動到的位置,坐標控制界面如圖6 所示。
(2)手勢控制。手勢控制通過捕捉手勢圖像進行圖形處理,手勢檢測跟蹤使用cvzone 模塊中HandTrackingModule庫實現。捕捉并獲取到手指在圖像中的坐標后,將該坐標值映射至機械臂的工作空間,獲得機械臂運動的目標位置坐標,向下位機發送運動控制指令即可實現手勢控制機械臂,手勢控制效果如圖7 所示。

圖7 手勢控制效果
(3)示教復演。示教復演即可重復再現示教編程存儲的作業程序。在設計中,以鼠標在指定的區域運動做示教,機械臂按鼠標的軌跡運動做復演。示教復演界面主要包括圖形繪制部分和操作部分,圖形繪制部分由畫布組件組成,在鼠標按下并拖動時留下鼠標運動的軌跡并記錄數據;操作部分由按鈕、進度條等組件組成,用于示教復演功能的基礎控制。示教界面和演示實驗分別如圖8、9 所示。

圖8 示教界面

圖9 演示實驗實景
本文提出并設計了基于計算機視覺技術的桌面型機械臂實驗平臺,并通過演示實驗進行了測試。結果表明,該實驗平臺可有效實現機械臂的坐標控制、手勢控制及示教復演功能,充分驗證了正逆運動學分析的正確性,并可在現有功能上進行二次開發,實現多功能控制目標。該機械臂實驗平臺采用3D 打印快速成型技術加工制造,具有體積小、加工成本低、聯調方便等優點,可應用于“機器人創新實訓”課程中,能讓學生掌握機械結構設計、電路設計、硬件控制、軟件開發等技術的應用,并充分了解學科知識之間的關聯性與融合性。