(1.國營長虹機械廠,廣西 桂林 541003; 2.北京航天測控技術有限公司,北京 100041)
動作捕捉技術是通過數字測量技術實時獲取人體的三維運動信息,然后對信息進行分析和使用。弗萊舍在1915年發明的動態遮罩技術被認為是動作捕捉技術的始祖。20世紀70年代,紐約計算機圖形實驗室設計了一種光學動作捕捉裝置,能夠實時地在屏幕上顯示演員的動作,成為了現代動作捕捉技術的起始[1]。現代動作捕捉系統基于捕捉原理的不同,包括聲學式、電磁式、光學式、機械式、視頻捕捉式和慣性式[2]。聲學式和電磁式的捕捉系統精度比較差,且受環境噪聲和磁場的影響比較大[3];光學式的捕捉系統精度高,但安裝復雜,成本高和對環境要求高;機械式的動作系統穿戴困難,且會影響人體的自由活動;視頻捕捉式的捕捉系統雖然不需要在人體身上佩戴傳感節點,但算法復雜,實現難度大。基于慣性傳感器的動作捕捉系統,其具有便攜穿戴、操作簡單和成本低廉的特點,能夠不受時間和地點的限制,持續不斷地采集人體各個部位的實時運動信息,在跌倒監測、體育訓練、軍事訓練、體感游戲、虛擬現實和增強現實方面都得到了廣泛應用[4]。例如在跌倒監測方面,通過在手腕或其他部位佩戴慣性傳感器,實時采集佩戴部位的加速度、角速度等信息,當人體突然跌倒時,佩戴部位的慣性數據會發生突然變化,從而判斷出人體發生跌倒,及時向家屬和醫護人員進行求助。
典型的基于慣性傳感器的動作捕捉系統主要由慣性傳感器節點、數據傳輸節點和遠程數據處理終端三部分組成[5-6]。慣性傳感器節點通過采集人體相應部位的運動慣性數據如:加速度和角速度等數據;數據傳輸節點將傳感器節點采集的慣性信息進行整合和處理,通過有線或無線的方式發送到處理終端。遠程數據處理終端對接收自傳輸節點的數據進行處理、存儲和顯示,以備下一步的應用。
目前,美國Inertiallabs公司已經推出了商業化的慣性式動作捕捉系統3Dsuit,荷蘭的Xsens公司也推出了自己的Xsens MVN慣性動作捕捉系統[7],兩者都可以實時采集人體各部位的姿態數據,快速地完成人體姿態地測量,已經廣泛應用與國外的CG電影制作。當前國內慣性式動作捕捉系統的商業化的程度比較低,大多數仍停留在實驗室階段,浙江大學的李啟雷等人研發的慣性式動作捕捉系統[8],可以采集人體運動的加速度和磁力數據;中國科學院大學的汪俊等人所設計的慣性動作捕捉系統[9],各慣性傳感器節點通過無線WIFI模塊進行連接,節點的體積較大;馬杰和劉莉琛兩人所在的團隊設計了基于Zigbee通訊的慣性式動作捕捉系統[10-11],但Zigbee的通訊速率限制了捕捉系統的采樣速度與精度。
本文基于當前對慣性式動作捕捉系統的研究,提出了一種基于慣性傳感器的動作捕捉系統,各慣性傳感器節點與數據傳輸節點間通過485總線進行連接,數據傳輸節點與數據處理終端間通過無線WIFI通訊進行數據交換[12],在減小傳感器節點體積的同時,提高了動作捕捉系統數據傳輸速率,極大提高了人體的活動范圍,具有成本低、可靠性高和穿戴方便等特點。
本文所設計的慣性式動作捕捉系統的總體結構如圖1所示。慣性式動作捕捉系統包括MEMS慣性傳感器節點、數據傳輸節點、數據接收節點和數據處理終端四部分組成。慣性傳感器節點佩戴在人體的手部、腳部等各個部位,實時采集各部位的慣性運動數據。數據傳輸節點按照一定的采樣頻率通過485總線向各個傳感器節點發送請求慣性數據的指令,傳感器節點在接收到請求指令后,通過485總線將慣性運動數據發送到數據傳輸節點。數據傳輸節點在完成一次對485總線上所有傳感器節點的數據采集后,對數據進行打包,然后通過WIFI發送到數據接收節點。數據接收節點在接收到數據傳輸節點發送來的數據后,通過USB將數據發送至數據處理終端。數據處理終端對接收到的慣性運動數據包進行校驗、處理、存儲和顯示,完成一次完整的慣性運動數據的傳輸流程。

圖1 慣性式動作捕捉系統總體結構圖
圖2所示是慣性傳感器節點的硬件設計圖,慣性傳感器節點板載一個型號為MPU9150的九軸慣性傳感器芯片,STM32F051主控芯片通過I2C接口即可讀取慣性傳感器所采集的三軸加速度數據、角速度數據與磁力計數據。節點擴展多路AD采集接口,擴展接口可以連接肌電傳感器等生理信號傳感器,從而實現對更多人體運動生理數據的采集。各個傳感器、主控芯片與485通訊芯片通過一個3.3V的低壓差線性穩壓芯片進行供電,以減少電源的紋波噪聲對傳感器輸出信號的影響。

圖2 慣性傳感器節點的硬件設計
數據傳輸節點的硬件設計圖如圖3所示,節點上各個芯片通過3.3 V線性穩壓芯片進行供電,STM32F405主控芯片通過485總線向各個傳感器節點發送慣性數據請求指令,然后接收各個傳感器節點發送來的慣性數據。對數據進行校驗和打包后,通過SPI總線發送至CC3200芯片。

圖3 數據傳輸節點的硬件設計
CC3200是TI公司推出的一款具有片上SOC的WIFI通信芯片,支持站點(STA,Station)和無線接入點(AP,Access Point)兩種工作模式,在TCP通信協議下可以達到12 Mbps的通信速率,在UDP連接下可以達到16 Mbps的通信速率。同時CC3200內部具有一個Cortex-M4核心的專用ARM CPU,負責建立兩個設備之間的WIFI連接和協議通訊,使得主控芯片可以免于無線通信的處理負擔,提高數據的處理速度。CC3200在通過SPI接收到自STM32F405發送的慣性數據后,通過WIFI通訊發送至數據接收節點。
圖4所示是數據接收節點的硬件設計圖,數據接收節點的CC3200在接收到數據傳輸節點發送來的運動慣性數據幀后,向主控芯片發送外部中斷,主控芯片在接收到外部中斷后,通過SPI接口讀取CC3200接收到的慣性數據幀,然后通過ULIP接口將數據經USB3300芯片發送至數據處理設備。USB3300是一款支持USB2.0 High Speed 的PHY芯片,其最高可以達到480 Mbps的通信速度,滿足所設計的動作捕捉系統對數據傳輸速率的要求。

圖4 數據接收節點的硬件設計
慣性傳感器節點的軟件流程圖如圖5所示,傳感器節點在上電后,stm32主控MCU按照設定的采樣頻率對定時器中斷進行初始化,然后對I2C和USART通訊接口進行初始化,等待定時器中斷的置位,通過I2C接口讀取MPU9150傳感器的三軸加速度、角速度和磁力計數據,將數據保持到緩存buffer中,等待下次定時中斷的出現,對緩存buffer中的數據進行更新。在循環采集的過程中,當數據傳輸節點向傳感器節點發送請求指令的數據幀后,傳感器節點的串口接收中斷置位,程序進入串口中斷服務函數中,首先對接收的數據幀進行校驗,保證接收數據幀是完整無誤的,然后判斷數據幀是否為針對本節點的請求數據指令幀,如果指令請求地址與本節點地址相同,程序將對緩存buffer中存儲的數據進行打包和校驗,然后使能串口將節點慣性數據幀發送至數據傳輸節點,最后退出串口接收中斷服務函數。

圖5 慣性傳感器節點的軟件流程圖
為保證慣性傳感器節點與數據傳輸節點之間的數據傳輸的可靠性,防止由于數據丟包而產生數據異常,節點之間的數據交換采用ModBus通信協議,通過數據幀中的CRC16校驗碼保證數據的有效性,表1所示為慣性傳感器節點發送的慣性數據幀定義。如果數據傳輸節點接收數據幀異常,數據傳輸節點將向相應節點重新發送請求數據指令。

表1 傳感器節點慣性數據幀定義
圖6所示,數據傳輸節點在上電后,對stm32的各個外設進行初始化,首先按照系統允許的傳感器節點地址范圍,依次發送對應各節點地址的請求慣性數據指令幀,如果485總線上存在相應地址的傳感器節點,該節點將回復慣性數據幀。當數據傳輸節點接收到傳感器節點發送來的數據,且校驗成功后,就將對應的節點地址存儲到節點輪詢地址表中,生成完整的節點輪詢地址表。按照系統設定的采樣頻率使能定時器中斷,當中斷標志置位后,數據傳輸節點按照節點輪詢地址表依次向各個傳感器節點發送指令幀,請求慣性數據,在接收到慣性數據幀并校驗成功后,保存至緩存buffer中。完成節點輪詢地址表中所有傳感器節點的輪詢后,對接收到的數據進行校驗和打包,生成數據傳輸節點的慣性數據幀,通過SPI接口發送至CC3200無線通信芯片,通過WIFI通訊發送至數據接收節點。
數據傳輸節點的程序設計中,主控處理器的串口接收和發送,SPI接口的發送和接收,均采用DMA傳輸,在數據發送和接收的過程中,不需要處理器參與操作,可以大大減少處理器的負擔。

圖6 數據傳輸節點的軟件流程圖
數據接收節點作為數據處理終端與數據傳輸節點之間的通訊橋梁,完成數據透傳,其程序的運行流程如圖7所示。在上電完成stm32外設和CC3200的初始化后,當數據處理終端通過USB接口向數據接收節點發送使能數據接收的指令后,主控MCU使能外部中斷。當CC3200接收到數據傳輸節點發送來的慣性數據幀后,向主控MCU發送一個脈沖信號,主控MCU在接收到脈沖信號,外部中斷標志位置位,主控MCU通過SPI接口讀取CC3200接收到的慣性數據幀,然后通過USB接口將慣性數據幀發送至數據處理終端,完成一次數據處理終端與數據傳輸節點之間的數據交換。

圖7 數據接收節點的軟件流程圖
圖8所示是數據傳輸節點和數據接收節點上WIFI通信芯片CC3200各自的軟件流程圖。數據傳輸節點的WIFI通信芯片被配置為STA模式,其在無線局域網中是一般客戶端,可以認為是我們日常使用的接入無線網的智能手機。數據接收節點的WIFI通信芯片被配置為AP模式,其可以認為是日常生活中所使用的無線路由器,當用戶識別碼(SSID,Service Set Identifier)被設置后,數據接收節點向周圍設備廣播自己的SSID。數據傳輸節點在掃描到數據接收節點廣播的SSID后,向數據接收節點發送連接請求命令,數據接收節點在接受連接請求后,向數據傳輸節點分配IP地址,建立數據傳輸節點與數據接收節點之間的WIFI通信鏈路。

圖8 WIFI通信的軟件流程圖
數據鏈路層和網絡層建立連接后,動作捕捉系統使用具有重傳功能的TCP通訊協議實現數據傳輸節點與數據接收節點之間的數據通訊,以保證節點之間數據通訊的正確性和完整性。如圖所示,配置數據接收節點為TCP服務器,創建一個TCP套接字(Socket),綁定IP地址、端口等信息到套接字上,開啟監聽,等待TCP客戶端的連接。當接收到來自TCP客戶端的連接請求后,接受請求,建立TCP連接,創建新的套接字用于與TCP客戶端進行連接,循環等待TCP客戶端發送慣性數據幀,在接收到慣性數據幀后,向主控MCU發送脈沖信號。數據傳輸節點配置為TCP客戶端,創建套接字以連接到TCP服務器上,當接收到主控MCU發送來的慣性數據幀后,通過TCP連接將數據幀發送至TCP服務器。
數據處理終端的軟件程序由數據處理模塊、數據存儲模塊和數據顯示模塊三部分組成,數據處理終端通過USB接口接收數據接收節點發送來的慣性數據幀,對數據進行校驗和處理,顯示各個節點的慣性運動數據,同時將各節點的慣性數據儲存到本地文件中,以備后續進一步的處理和使用。
基于上述設計,本文完成了慣性動作捕捉系統的硬件與軟件調試工作,并進行了慣性數據采集試驗。將慣性傳感器節點附著在身體的腳踝、手腕和手臂等各個部位,數據傳輸節點以100Hz的采樣頻率采集實驗者在慢走、快走和跑步等多種動作下各個傳感器節點測量的慣性運動數據,通過WIFI發送到數據接收節點,數據處理終端通過USB讀取數據接收節點接收到的數據,保存到本地存儲中。經試驗驗證,所設計的動作捕捉系統能夠長時間穩定地采集人體各個部位的慣性運動數據,圖9所示為數據處理終端保存在本地的節點慣性運動數據文件。

圖9 慣性運動數據保存文件

圖10 慢走和跑步下手腕和腳踝加速度信號
使用存儲的慣性運動數據繪制了人體的手腕和腳踝在慢走和跑步兩種動作下加速度的變化曲線,如圖10所示。由圖可以看出,在跑步動作下,人體腳踝部位的加速度信號的變化頻率比慢走動作要快,且跑步動作加速度信號的峰值超出慢走動作10m/s2左右,這是由于跑步動作下人體的步頻比慢走要快,且腳部對地面的沖擊比慢走動作要大。相反,在跑步動作下手腕部位的加速度信號比慢走動作下要規律地多,且跑步動作下的加速度峰值為60m/s2左右,慢走動作下只有20m/s2左右,這是由于人在跑步動作時手部要進行大幅度且有規律的擺動,從而保持人體平衡。而慢走狀態對人的手部運動沒有要求,手部的運動會更加的自由和隨意。由以上可知,所設計的慣性式動作捕捉系統采集的不同動作下人體各關節部位的運動慣性數據的變化特征符合人體運動的一般規律,驗證了本文所設計慣性式動作捕捉系統的有效性。
本文基于MPU9150九軸慣性傳感器、CC3200無線通信芯片等設備,設計了一款基于慣性傳感器的動作捕捉系統。通過在人體各部位佩戴復數慣性傳感器節點,實時采集人體不同部位的運動加速度、角速度和磁力計數據,通過WIFI無線通信發送至數據處理終端,對數據進行存儲和顯示。所設計的系統成本低、可靠性高,穿戴方便,能夠最大限度地減少捕捉系統對人體活動的限制,具有實際應用意義。后續將增加數據處理終端對采集的運動數據進行進一步地處理和分析的功能,將其應用于健康監測、康復訓練、體育訓練和軍事等多個領域。