徐 軍, 孟月霞, 王天倫, 馬 靜
(哈爾濱理工大學 自動化學院 ,黑龍江 哈爾濱 150080)
基于Kinect的仿人機器人控制系統
徐 軍, 孟月霞, 王天倫, 馬 靜
(哈爾濱理工大學 自動化學院 ,黑龍江 哈爾濱 150080)
為實現對具有16個自由度仿人機器人的姿態控制,采用Kinect傳感器對人體姿態的坐標數據進行采集,根據坐標信息利用Processing軟件開發基于SimpleOpenNI庫的上位機軟件,建立人體關節模型,并利用空間向量法對仿人機器人的步態規劃以及重心控制算法分析,解析各關節的轉動角度,經由無線WiFi模塊向仿人機器人發送指令以控制舵機的運動,最終實現對機器人的控制,搭建了基于Kinect傳感器的測試平臺。測試結果表明:仿人機器人上肢在運動范圍內無死角,通過對重心的控制,下肢可實現簡單的步行,符合預期效果。
Kinect傳感器; 仿人機器人; 空間向量法; 人體關節模型; 測試平臺
仿人機器人的研究已成為當今社會最熱門的課題之一,與傳統的輪式、四角式機器人相比,仿人機器人具有明顯的優勢:更靈活的行走能力、更強的越障能力、更廣闊的做作空間[1]。
1996年,第一款人型無纜仿人機器人由日本成功研制,極大地推動了仿人機器人的研究。2003年,第一款跑步仿人機器人由索尼公司研制成功,實現了以0.82 km/h的速度跑步。2005年,日本生產的HRP—2機器人實現了俯身、起立、一字步以及交叉步等仿人行為,步行速度提高到了2.5 km/h。2007年,HRP—3較HRP—2增加了5個自由度,可以使用電鉆、螺絲刀等工具。目前,國內對于仿人機器人的研究還處于相對落后的階段[2,3]。2002年,清華大學研制的THBIP—I樣機,實現了穩定步行、打太極以及端水等動作。2003年,北京理工大學推出的BHR—1實現了在復雜環境下保持平衡。
上海交通大學的錢鶴慶在構建人體模型時應用Kinect技術[4,5],成功設計出虛擬地球儀;清華大學的韓峰等人運用Kinect成功設計出了簡易的桌面清理系統。
本文主要研究基于Kinect體感傳感器的無線WiFi網絡控制的仿人機器人。通過Kinect采集人體姿態的數據信息,對機器人的步態規劃算法進行解析,通過上位機建立人體關節模型,利用無線WiFi模塊向仿人機器人發送命令,通過控制舵機實現對機器人運動軌跡的控制,并搭建了仿人機器人的控制系統,完成對機器人的調試工作[6~8]。
仿人機器人上半身的運動是隨動過程,不需要考慮重心變化,只需要注意運動的獨立性,不需要為達到單個自由度的運動而引起其他自由度的誤運動,通過Kinect傳感器采集人體數據并使其轉換成舵機控制器指令,上肢的隨動匹配即基本完成了。
為了簡化計算,實現穩定的步行,將機器人各部分看成質量均勻、形狀規則的剛性連桿,對各關節進行簡化,同時假設各關節之間無摩擦力的作用,建立仿人機器人的動力學模型,如圖1所示。機器人有16個自由度,上肢有6個自由度,分別為左、右肩關節各2個,肘關節各1個。下肢有10個自由度,分別為左右髖關節各2個,膝關節各1個,踝關節各2個。為了簡化研究,將下肢的運動簡化為在徑向平面(ZOX平面)與側向平面(ZOY平面)的運動的合成,以靜止時雙腳的重心為原點O,前進方向為X軸正方向,左方為Y軸正方向,豎直向上為Z軸正方向。

圖1 仿人機器人連桿模型二維視圖
計算關節轉角時,約束條件為,機器人腳掌始終與地面平行,則踝側向關節角度和髖轉向關節角度在數據值上相等。重心移動和屈伸示意如圖2所示。

圖2 重心移動和屈伸示意
為了實現對仿人機器人的控制,利用Kinect傳感器采集人體關節的坐標數據,采用空間向量法解析各關節的角度。由于向量法使用的坐標系與Kinect坐標系有所不同,需將Kinect坐標系映射到數學坐標戲中,然后再進行計算。
仿人機器人下肢運動時,首先進行重心移動,一只腳向前屈伸,另一只腳會向后伸維持重心穩定保持平衡,此時對于單只腳運動來說3個自由度,即3個舵機均參與了運動。以向左移動重心為例,如圖2(a)所示,機器人在側向平面運動,設髖關節移動Ymm,大腿和小腿的長度分別為L1,L2,則根據三角函數關系可以計算出左、右髖關節應該轉動的角度θ
θ=arcsin(Y/(L1+L2))
(1)
屈伸情況如圖2(b)所示,機器人在ZOX運動,設髖關節移動Zmm,可得髖關節與膝關節的轉動角度θ1與θ3
(2)
為了最大限度增大機器人穩定性的同時簡化計算,設定仿人機器人腳部關節向前或向后運動的前提是保持腳面與地面時刻平行。相當于以髖關節為坐標原點,建立坐標系,向前行走的方向為X軸正方向,同時上下方向為Z。機器人前后移動的示意如圖3所示。

圖3 前后移動示意
設定θa,θb,θc分別為∠(θ1+θ0),∠(θ1+θ3),∠(θ3-θ0),即θa,θb,θc分別為各個關節彎曲的角度、髖關節、膝關節、踝關節。計算h的長度可以得到式(3)

(3)
根據三角函數關系可以得到以下結果
(4)
由式 (2)、式(4)可以知下肢各個關節的旋轉角度,但下肢的運動較復雜,僅知道角度還不能保證重心的穩定。
2.1 實驗平臺搭建
為調試基于Kinect的雙足機器人的步行效果,搭建了機器人的測試平臺。首先利用Kinect傳感器采集人體各關節的坐標信息,通過KinectAPI獲得人體信息接口將信息傳至上位機,經由Processing軟件中的SimpleOpenN庫對人體姿態信息建立人體節點數據模型,運用算法解析得到各關節相應的旋轉角度,再由無線網卡發送相應的指令給機器人,最后由機器人的WiFi模塊將命令發送至舵機控制器,舵機控制器根據指令驅動機器人舵機旋轉相應的角度,并通過機器人模型的穩定特性,對機器人的運動做相應的調整,以此控制機器人的運動,實現機器人與人體運動一致的隨動控制系統。測試平臺如圖4所示。采用的機器人的控制系統電路如圖5所示。

圖4 測試平臺

圖5 機器人控制系統電路
通信模塊采用ESP8266無線WiFi模塊,內置了WiFi射頻單元。設計中通信模塊的功能為收發UDP數據、驅動姿態傳感器,收集機器人運動數據、驅動舵機控制器實現機器人運動控制。
機器人的舵機控制器采用,型號為ATmega328P的AVR芯片,驅動板采用PCA9685驅動,該芯片可以產生16路12位精度的脈寬調制(pulsewidthmodulation,PWM),其中,PWM刷新頻率最高可以達到百兆,其通信管腳由I2C總線控制。
電源模塊分別為3.3,5,6~12V用于控制和動力部分。
姿態讀取模塊采用的MPU6050姿態傳感器,可以讀取機器人重心位置的加速度、角速度參數等。通過WiFi將數據反饋給上位機,實現了對機器人姿態變化的實時檢測。
2.2 軟件設計
軟件設計主要分為上位機程序設計和下位機程序設計2個部分。上位機程序包括網絡部分、傳感器部分、算法部分、模型建立部分,下位機程序主要包括WiFi模塊程序,驅動板控制程序。
雙足仿人機器人的軟件設計首先根據Kinect讀取的數據建立人體模型,通過Processing軟件中相應的類函數,解析機器人的運動軌跡。根據相應的算法將人體關節的變化信息轉換為機器人相應舵機角度的變化,經由WiFi模塊控制舵機。具體上位機程序總體流程如圖6(a)所示。步態算法部分需考慮多種情況,如站立、前進、后退、下蹲等。以抬左腿為例流程如圖6(b)所示。而前進、后退等均在可單腿站立的基礎上實現,重復以上步驟即可。

圖6 軟件設計流程
Arduino開發板通過綁定了2個I2C地址,拓展2個16通道的PCA9685,即支持32位舵機驅動。由于WiFi通過串口與單片機通信,因此,單片機Arduino需要初始化串口,設置通信波特率,初始化2個I2C器件,設定器件PWM輸出的刷新頻率等。具體流程如圖7所示。

圖7 舵機控制器設計流程
ESP8266WIFI模塊的程序編程之前,要對I/O口、網絡、串口等進行初始化。初始化網絡通信為UDP,接收UDP發來數據,設定定時器及其回調函數,在系統內建立任務。網絡獲取數據是通過TCP協議推送,即存在一個網頁代碼,支持該網頁,輸入對應的表單通過TCP反饋至WiFi重新加載,通過網頁信息配置WiFi的通信參數。具體程序實現流程如圖8所示。

圖8 ESP8266WiFi模塊設計流程
利用已經搭建好的測試系統對機器人進行調試。首先,進行Kinect傳感器與上位機連接,機器人準備就緒后,使用無線WiFi模塊將機器人與上位機連接,打開上位機上的Processing軟件程序。
經過測試,仿人機器人上半身跟隨人體自由活動,且運動范圍無死角。下肢部分可實現簡單的步行,能保持重心穩定。測試結果如圖9所示,分別為雙手叉腰站立、平舉雙手、扭胯與抬腿的測試界面。以圖9(a)為例,每個測試界面在上位機運行后會出現圖9(a)中左邊3個界面,左上角為人體圖形,左下角為經過解析后的深度圖形,中間圖形為基于SimpleOpenNI庫建立的解析后人體深度圖的骨骼模型,右邊為機器人運行圖片。

圖9 測試結果
利用Kinect傳感器采集人體坐標,建立了人體關節模型,通過空間向量法對仿人機器人的步態規劃以及重心控制的算法解析各個關節的運動角度,并通過無線WiFi向機器人發送指令,控制舵機運動。搭建仿人機器人控制系統,利用Processing軟件開發基于SimpleOpenNI庫的上位機軟件,完成了仿人機器人的調試。測試結果表明:仿人機器人上肢可跟隨人體自由活動,運動范圍無死角,下肢部分可實現簡單的步行,能保持重心的穩定。
[1] 趙建敏,許曉偉,賈慧媛.基于Kinect體感傳感器的心理宣泄系統的實現[J].傳感器與微系統,2014,33(8):119-122.
[2] 余 濤,葉金永,邵菲杰,等.Kinect核心技術之骨架追蹤技術[J].數字技術與應用,2012,4(10):115-115.
[3] 韓 崢,劉華平,黃文炳,等.基于多傳感器的人體行為識別系統[J].傳感器與微系統,2016,35(3):89-95.
[4] 張雪華,劉華平,孫富春,等.采用Kinect的移動機器人目標跟蹤[J].智能系統學報,2014,9 (1):34-39.
[5] 甄成方,劉文怡,蘇淑靖.無線傳感器網絡的時間同步技術研究[J].傳感器與微系統,2013,32(10):48-51.
[6] 戰蔭偉,張 昊.基于Kinect傳感器的人體行為分析算法[J].傳感器與微系統,2015,34(1): 142-144.
[7] 陳 鵬,劉 璐,余 飛,等. 一種仿人機械臂的運動學逆解的幾何求解方法[J].機器人,2012,34(2):211-216.
[8] 周 浩,浦劍濤,梁嵐珍,等.基于體感的仿人機器人步態學習與控制[J].計算機應用,2015,35 (3):787- 791,801.
Control system for humanoid robot based on Kinect
XU Jun, MENG Yue-xia, WANG Tian-lun, MA Jing
(School of Automation, Harbin University of Science and Technology,Harbin 150080,China)
The test system based on Kinect sensor is established to realize attitude control of humanoid robot with 16 degrees of freedom.The sensor of Kinect is used to collect the coordinates of the human body for the purpose of establishing joint model of human body by the way of developing PC software using the processing software based on SimpleOpenNI library.The analysis on humanoid robot gait planning and gravity control algorithm by using space vector method,analyze on rotation angle of each joint.Through module of WiFi wireless,send instructions to control steering engines,so as to realize the control of humanoid robot.The results of the experiment show that,the arm of humanoid can move freely in the range of motion and lower limbs can walk simply by controlling gravity,which accords with expected effect.
Kinect sensor; humanoid robot; space vector method; joint model of human body; test platform
10.13873/J.1000—9787(2017)09—0097—04
2016—09—28
TP 242.6
A
1000—9787(2017)09—0097—04
徐 軍(1968-),男,博士,教授,研究生導師,主要從事石英晶體傳感器、無線傳感器網絡、智能機器人等方面的教學與科研工作,E—mail:hljlgxj@126.com。
孟月霞(1989-),女,通訊作者,碩士研究生,主要研究方向為體感機器人、傳感器與虛擬技術,E—mail:286704673@qq.com。