左軒塵,韓亮亮,莊 杰,石琪琦,黃 煒
(1.電子科技大學 通信與信息工程學院,四川 成都611731;2.上海宇航系統工程研究所,上海201109)
隨著空間機器人技術的發展,傳統的搖桿按鍵等遠程機器人操控方式[1,2]越來越展現出操作繁瑣、臨場感不強等缺點,因此基于姿態識別[3]和語音識別[4,5]的人機交互方式越來越受到人們的關注,但空間機器人的各項人機交互能力日趨完善的同時,為機器人編寫軟件這一工作也變得越來越復雜繁重,大量的冗余代碼、可移植性差的平臺、功能層次性差、仿真的通用性差等各種問題也凸顯出來。機器人操作系統ROS (robot operating system)很好地解決了機器人軟件開發過程中的代碼冗余、可移植性差等問題[6],同時兼有多編程語言、跨平臺、軟件資源豐富等多個優點于一身[7],越來越多地成為機器人開發領域的首選工具。
本文在基于ROS平臺的基礎上,設計了操作者使用手臂姿態和語音控制的空間機器人人機交互系統,并通過雙虛擬機械臂反饋的方式,來避免視頻反饋帶來的延遲感,從而實現操作者在虛擬現實環境中對空間機器人的遙操作,改善了傳統機器人操作繁瑣、臨場感差等缺點,為新型空間機器人的人機交互方式提供了基礎。
ROS起源于2007年斯坦福大學人工智能實驗室與Willow Garage公司的個人機器人項目PRP (personal robots program)之間的合作。隨著2010年Willow Garage正式發布了開源ROS系統,機器人領域展開了學習和使用ROS的熱潮[8]。
ROS是開源的機器人軟件平臺,能為異質計算機集群提供用于機器人的次級操作系統,目標是在機器人研發領域提高代碼復用率,主要特點有點對點設計、多語言支持、精簡與集成、豐富的工具包、免費開源等。ROS的總體框架結構如圖1所示。

圖1 ROS總體框架
計算圖級主要是描述程序是如何運行的,這一級主要包括節點 (node)、消息 (message)、主題 (topic)和服務(service),其中節點是指執行運算任務的進程,節點之間通過消息進行通訊,消息以一種發布或訂閱主題的方式進行傳遞,ROS控制器則提供了主題發布的服務。其結構如圖2所示。

圖2 ROS計算圖級組織結構
圖2中,節點1 將發送數據給需要的節點,因此在ROS控制器上注冊了對應的主題和服務;而節點2需要接收對應的消息,因此節點2在ROS控制器上訂閱了對應的主題,從而獲得該主題發布者的地址與端口,進而與節點1進行通信協商,最終接收到需要的消息數據[9]。ROS計算圖級結構可以允許同時多個節點發布或者訂閱同一個主題的消息,因此發布節點和接收節點僅需要知道自己所需要的消息的主題,而不必記住其發布節點的名稱,這樣便可以保證傳輸的簡潔性、統一性和可靠性。
文件系統級主要包括包 (package)和堆 (stack)兩個結構。ROS的軟件以包的方式組織起來,并提供一種易于使用的結構以便于重復使用。堆是包的集合,提供一個完整的功能給開發者或用戶使用,如圖3所示。

圖3 ROS的文件系統級組織結構
社區級的概念是指網絡上發布代碼的軟件倉庫,開發者可以很方便的將自己開發的ROS包或ROS堆共享到社區,也可以從分布式社區結構中找到自己需要的資源。
空間機器人人機交互系統的ROS整體結構包括人機交互控制端的ROS堆和遠程機械臂端的ROS堆兩部分組成,如圖4所示。

圖4 空間機器人人機交互系統ROS結構
人機交互控制端ROS堆通過人體姿態識別和語音識別獲取人的控制信息,將人體的控制信息顯示在雙虛擬機械臂顯示系統上。遠程機械臂端的ROS堆負責將收到的控制端姿態信息進行解算,并驅動機械臂進行工作,同時對機械臂當前的姿態情況進行識別,并反饋機械臂的指令執行情況和周圍環境情況到人機交互控制端。兩個ROS堆之間通過無線網絡進行數據的實時同步和交互,并顯示在雙虛擬機械臂的主顯示界面上。
人機交互控制端ROS堆包括人體姿態識別包、自適應語音識別包和雙虛擬機械臂演示包3個部分。人機交互控制端通過人體姿態識別和語音識別獲取人的控制信息,并同時接收來自遠程機械臂端的機械臂姿態信息和機械臂周邊環境的激光數據,將人體姿態、機械臂姿態及虛擬現實環境顯示在雙虛擬機械臂顯示系統上。
人體姿態識別包的工作流程如圖5所示。ROS人體姿態識別包通過陀螺儀傳感器和加速度傳感器實時獲取手臂姿態的角速度信息與加速度信息,采用遞歸濾波器組的方法進行濾波后,解算出姿態角信息,將獲取到的姿態角主題發布到ROS控制端,雙虛擬機械臂顯示系統通過訂閱該主題獲得姿態角信息。

圖5 人體姿態識別包工作流程
佩戴在人體上的多維傳感器陣列會受到人體自然輕微抖動的干擾,產生頻率較為集中的干擾噪聲。本文中,人體姿態識別包采用復雜度低的均值濾波、卡爾曼濾波(Kalman filter)和利用凱撒 (Kaiser)窗函數設計的有限沖擊響應 (finite impulse response,FIR)低通濾波組成的濾波器組,來針對性地濾除人體自然抖動的噪聲,從而輸出穩定可靠的加速度信號。圖6為一次人體姿態運動采集到的加速度信號在經過上述濾波器前后的對比。
姿態傳感器采集到的原始加速度數據與真實值的噪聲方差約為2.125×10-3,濾波后的噪聲方差約為1.76×10-8,較傳統卡爾曼濾波后的10-5數量級噪聲方差有了明顯的提高,可見該濾波器組對于人體自然抖動噪聲有了很好的抑制,從而獲得了更為精準的人體姿態數據。
姿態角解算采用地理坐標系與設備坐標系兩種坐標系對姿態的變化進行研究[10],其中地理坐標系為參考坐標系。傳感器運動時,設備坐標系與參考坐標系產生的角度即為姿態角,分別為旋轉角γ(Roll)、傾斜角θ(Pitch)和偏移角φ(Yaw)來表示,如圖7所示。

圖6 姿態傳感器加速度信號濾波前后對比

圖7 傳感器姿態角
若通過角速度求解姿態角,四元素法與坐標系變換理論相結合的方法[11]可以對姿態角進行解算,但涉及到大量的矩陣變換和系數反解,運算復雜度較高。為降低運算復雜度,本文采用歐拉角法進行姿態角解算[12]。傳感器三軸姿態角速度分別為wx、wy和wz,從參考坐標系依次轉過γ、θ和φ 角則可以得到設備坐標系,即

對式 (1)進行矩陣運算后可以得出

求解式 (2)中矩陣的逆,得到姿態角的表達式

對式 (3)求解便可得到γ、θ和φ 這3個姿態角參數。本文中,雙虛擬機械臂顯示包通過訂閱姿態角發布主題/robot/attitude來獲得姿態角信息。
ROS使用CMU Sphinx和Festival開源項目中的代碼,發布了獨立的語音識別包,可以將識別出來的語音轉換成文字,并交給雙虛擬機械臂顯示系統進行實時處理[8]。其中的核心文件recognizer.py通過麥克風收集語音消息,并調用語音識別庫進行識別生成文本信息,如圖8所示。

圖8 ROS語音識別程序框架
本系統中添加了up (向上)、down (向下)、turn left(向左)、turn right(向右)、left rotate(向左旋轉)、right rotate(向右旋轉)、catch (抓取)和release (釋放)8 個語音指令到離線語音包robocup.corpus文件中,將其在線生成的語音字典robocup.dic文件和語法文件robocup.lm下載并導入到本地,使用命令roslaunch 來運行語音識別程序robocup.launch即可實現語音識別并控制機械臂執行簡單的動作。識別生成的文本信息通過/recognizer/output主題發布消息,其余節點訂閱該主題即可獲得文本消息。
為了改進視頻反饋方式的實時性差、不能真實模擬工作環境的缺陷,提高遙操作機器人的精度,本文采用在虛擬現實的主顯示界面同時顯示雙虛擬機械臂的方法。其中虛擬機械臂1訂閱了人體姿態識別包的姿態角主題,實時顯示人體姿態的運動情況,同時發送姿態信息到遠程機械臂端的ROS堆;虛擬機械臂2則接收來自遠程機械臂堆的真實機械臂姿態和周圍環境的情況,并通過虛擬現實技術實時顯示在主顯示界面上,達到操作者通過觀看主界面遙操作機械手的目的,如圖9所示。

圖9 虛擬機械臂1 (左)和虛擬機械臂2 (右)顯示界面
雙虛擬機械臂顯示ROS包接收來自遠程機械臂姿態識別系統中激光傳感器和深度傳感器測量出來的周邊環境的激光數據,然后使用gmaping工具包生成虛擬現實的環境地圖,通過ROS 中的3D 可視化工具rviz顯示在主顯示界面上。
遠程機械臂端ROS堆包括機械臂舵機控制包、機械臂姿態識別包和機械臂姿態運算包3個部分,負責將收到的控制端姿態信息進行解算,并驅動機械臂進行工作,同時采用傳感器組對機械臂當前的姿態和周圍環境進行探測,并反饋探測到的數據到人機交互控制端。
機械臂姿態運算ROS包接收來自人機交互控制端的人體姿態數據,將姿態信息進行運算,分解成機械手每個舵機的運動角度。機械臂舵機控制包則通過遠程ROS控制核心訂閱這些舵機運動角度信息,實時驅動機械臂進行運動。本實驗系統以六自由度的舵機控制機械手為例,演示了姿態控制機械手的具體實現過程。圖10為機械臂舵機控制包根據人體姿態控制機械臂的實驗。

圖10 遠程ROS機械手控制堆演示實驗
機械臂姿態識別ROS包通過讀取機械臂上的曲度傳感器和激光傳感器,獲取機械臂的運動姿態和周圍環境的深度數據,反饋給本地人機交互系統進行處理,操作者便可以通過主顯示界面直觀地看到遠程機械臂的工作狀態。
本文設計了一種基于ROS機器人操作系統的空間機器人人機交互系統。該系統通過采集人體的姿態信息和語音控制信息,通過對采集到的信息進行分析處理來控制遠程機械臂進行運動,并將機械臂的實時姿態反饋至主顯示界面;同時,系統采用激光傳感器采集激光數據,并使用ROS包生成機械臂周圍的虛擬現實環境,解決了傳統空間機器人操控方式的操作繁瑣、系統延時大、現場感不強等缺點,使操作人員有如身臨其境地操作遠程機械臂,能高效地完成機械臂控制作業。
[1]TANG Xinxing,NI Tao,Hironao Yamada,et al.Haptic feedback for master-slave construction tele-robot based on virtual reality technology [J].Machine Tool & Hydraulics,2013,41 (21):29-33 (in Chinese). [唐新星,倪濤,山田宏尚,等.主從遙操作工程機器人的虛擬觸覺反饋 [J].機床與液壓,2013,41 (21):29-33.]
[2]TIAN Guo.Research of control strategies on tele-operated construction robot system based on wireless network [D].Guangdong:Guangdong University of Technology,2014 (in Chinese).[田果.基于無線通信網絡的遙操作工程機器人系統控制策略研究 [D].廣東:廣東工業大學,2014.]
[3]CHEN Yimin,ZHANG Yunhua.Research on human-robot interaction technique based on hand gesture recognition [J].Robot,2009,31 (4):351-356 (in Chinese). [陳一民,張云華.基于手勢識別的機器人人機交互技術研究 [J].機器人,2009,31 (4):351-356.]
[4]SU Minfa.Home service robot control system based on speech signals recognition [D].Guangdong:Guangdong University of Technology,2014 (in Chinese). [蘇敏發.基于語音識別的家用服務機器人控制系統 [D].廣東:廣東工業大學,2014.]
[5]JIN Zuguang,CHEN Chao,TANG Jian.Design of the RFIDbased voice interaction system of indoor guide robot for the blind [J].Process Automation Instrumentation,2014,35(3):73-76 (in Chinese). [靳祖光,陳超,唐堅.一種室內導盲機器人的RFID-語音交互系統設計 [J].自動化儀表,2014,35 (3):73-76.]
[6]HUANG Kaihong,YANG Xingrui,ZENG Zhiwen,et al.Design of outdoor mobile robot software system based on ROS[J].Robot Technique and Application,2013,26 (4):37-41(in Chinese).[黃開宏,楊興銳,曾志文,等.基于ROS戶外移動機器人軟件系統構建 [J].機器人技術與應用,2013,26 (4):37-41.]
[7]ZHANG Jianwei,ZHANG Liwei,HU Ying,et al.Opensource robot operating system—ROS [M].Beijing:Science Press,2012 (in Chinese).[張建偉,張立偉,胡穎,等.開源機器人操作系統—ROS [M].北京:科學出版社,2012.]
[8]ROS Summarize [EB/OL]. [2013-10-1].http://robotdu.com/thread-213-1-1.html,2013 (in Chinese). [ROS探索總結 [EB/OL]. [2013-10-1].http://robotdu.com/thread-213-1-1.html,2013.]
[9]GAO Ya,LI Xiaojuan,GUAN Yong,et al.Theorem prover ACL2-based verification of node communication in the robot operating system ROS [J].Journal of Chinese Computer Systems,2014,35 (9):2126-2130 (in Chinese).[高雅,李曉娟,關永,等.運用定理證明器ACL2 驗證機器人操作系統ROS節點間通信 [J].小型微型計算機系統,2014,35 (9):2126-2130.]
[10]XIAO Qian,YANG Ping,XU Libo.A gesture recognition method based on MEMS IMU [J].Journal of Transduction Technology,2013,26 (5):611-615 (in Chinese). [肖茜,楊平,徐立波.一種基于MEMS慣性傳感器的手勢識別方法[J].傳感技術學報,2013,26 (5):611-615.]
[11]Yun X,Bachmann E R,McGhee R B.A simplified quaternion-based algorithm for orientation estimation from earth gravity and magnetic field measurements[J].IEEE Transactions on Instrumentation and Measurement,2008,57 (3):638-650.
[12]LIU Xing.The attitude test algorithm based on MEMS multidimensional inertial sensors [D].Harbin:Harbin Engineering University,2013 (in Chinese).[劉星.多維MEMS慣性傳感器的姿態解算算法研究 [D].哈爾濱:哈爾濱工程大學,2013.]