Mirru 應用是用來做什么的?
Mirru 是一款正在開發中的免費開源 Android 應用,可以通過追蹤手部 (Hand Tracking) 來控制機械手。通過這款應用,用戶可以將其真手的抓握動作實時映射到機械手,而這種機械手可以通過 3D 打印和自行組裝得到,成本低廉。通過 Mirru,我們希望為當前昂貴、繁瑣的專有技術提供一種廉價、直觀和開放的端到端替代方案。
Mirru 團隊由 Violeta López 和 Vladimir Hermand 合作成立,這兩位獨立設計師和技術專家目前居住在巴黎。為了啟動這個項目,該團隊參加了 Tweag 的 Open Source Fellowship program 計劃,從該計劃的工程師之一 Dorran Howell 處獲取資金支持、指導和數據工程專業知識。該計劃幫助 Mirru 從基礎開始啟動項目。
Tweag
https://tweag.io
Open Source Fellowship program 計劃
https://www.tweag.io/blog/2020-02-14-os-fellowship/
我們這一計劃為期 3 個月,旨在開發出一個可以利用計算機視覺技術控制任何藍牙開源機械假肢的初版 Android 應用,并在 Google Play 商店免費提供,讓用戶可以根據自己的手打印機械手并進行組裝,然后下載應用來操控。在 MediaPipe 的幫助下,我們無需構建自己的機器學習模型(因為沒有相關資源或訓練數據)即可快速構建應用原型。
為什么要使用手部追蹤?
利用手機和帶有手部追蹤功能的前置攝像頭,您能夠用一種新穎實惠、簡單易用且功能繁多的方式控制假肢。
假設我左手截肢,擁有一個機械假肢。每天,我都需要使用機械手來執行許多不同的抓握動作。例如,我需要使用雙指張合或三點抓握的手勢來拾取小物品,或需要用整個手拿起水果或杯子等物品。我通過肌電傳感器來改換和執行這些抓握動作,例如,讓我可以通過繃緊和放松上肢肌肉來張開手掌和進行抓握。這種肌電傳感器在身體和機械手之間起主要的連接作用。
然而,借助傳感器生活并不像看起來那么容易。人們可能需要很長時間才能適應如何控制肌電傳感器,而且很多人永遠都適應不了。同樣,找假肢師安裝這種傳感器的費用也可能非常高,特別是對于發展中國家/地區或沒有健康保險的人士。最后,目前市面上大多數設備的抓握動作僅有不到 10 種,僅少數型號能夠創建自定義抓握動作,但通常比較麻煩。
Mirru 提供了一個替代方法。只需使用大眾普及的手機,您就可以通過數字化方式將真手的動作實時映射到機械手上,用一種直觀的方式控制機械手。如此一來,用戶不再需要向假肢師支付昂貴的安裝費用,也能夠快速設置不限數量的抓握動作。
目前,Mirru 完全不涉及肌電圖,因為可靠的肌肉傳感器價格昂貴。設置的抓握動作需要通過 Android 手機觸發,所以,該應用的首個版本更適合掃地、手握書閱讀、或者拿取杯子或購物袋這樣的活動。在未來,我們希望將肌電傳感器與手部追蹤相結合,發揮二者的優勢。
下面介紹了如何通過 Mirru 應用設置一個抓握動作:假設,我想用機械手抓住一個物品。我需要將機械手放到該物品前面,然后用健全的手在 Android 手機前面擺出相應的抓握動作,這時 Mirru 會將這個動作實時映射到機械手。然后,我可以鎖定機械手的這一新抓握動作,收回健全的那只手。最后,我可以保存這個抓握動作供日后使用,并將其添加到我的抓握動作庫中。
Brunel Hand 和 Mirru Arduino Sketch
我們的目標是讓盡可能多的用戶打印、組裝和控制自己的機械手,為此我們設計了 Mirru 這個 Android 應用,可兼容通過支持藍牙的 Arduino 板和伺服電機進行控制的機械手。
對于我們的項目,我們打印并組裝了一個由 Open Bionics 制造的開源機械手 Brunel Hand。首先,我們 3D 打印了 Brunel Hand 的 可 3D 打印文件,這些文件依據 CC Attribution-Sharealike 4.0 國際許可的規定使用。然后,我們購買了必要的伺服電機、彈簧和螺絲來組裝機械手。加上 3D 打印資料和購買伺服電機的費用,購買和組裝機械手的成本大約為 500 歐元。
Brunel Hand
https://openbionicslabs.com/shop/brunel-hand
可 3D 打印文件
https://www.thingiverse.com/thing:3000641
Brunel Hand 配備了基于肌電的固件和由 Open Bionics 開發的 PCB 板,但由于機械手只有 4 個伺服電機,對使用的微控制器類型沒有限制。我們最終選擇使用 Adafruit ESP32 Feather Board 開發板來實現藍牙功能,并創建了 Arduino Sketch 供需要打印和組裝機械手的用戶下載、定制和上傳。然后,用戶可以下載 Mirru 應用,并將其用作打印機械手的控制臺。
Arduino Sketch
https://github.com/mirru-app/mirru-android
用 MediaPipe 進行手部追蹤
業內有一系列手部追蹤計算機視覺解決方案可用于這個項目,但我們需要一個快速、開源的解決方案,不需要自行訓練模型,并能夠在便攜式設備可靠運行,例如手機。
MediaPipe 為手部追蹤提供了出色的開箱即用支持,由于我們沒有可用的訓練數據或資源從零開始創建模型,因此它非常適合我們的團隊。我們能夠輕松構建 Android 示例應用,同時應用的出色性能也令我們驚喜。更好的是,我們不需要對現成的手部追蹤模型或圖表進行任何調整,因為 Hand Landmark 模型為我們的原型提供了所有必要的輸出。
MediaPipe
https://mediapipe.dev
手部追蹤
https://google.github.io/mediapipe/solutions/hands.html
在讓真實用戶測試機械手時,我們很高興聽到其中很多用戶都對這款應用快速的動作轉換效率感到印象深刻,而且市場上目前還沒有任何應用能夠如此迅速地支持用戶自定義抓握方式。
將3D MediaPipe點轉換為機械手的輸入
為實現 Mirru 應用的目標,我們需要使用手部追蹤來實時、獨立地控制 Brunel Hand 的每根手指。在 Brunel Hand 中,食指、中指和無名指通過伺服電機驅動,在 0-180 度的角度范圍中移動;0 度表示手指完全豎直,180 度表示手指完全向下彎曲。
由于缺乏足夠的訓練數據,我們無法從零開始創建模型來為我們計算這些伺服角度,所以我們選擇使用一種啟發式方法,將默認的手部追蹤標志點輸出與原型初始版本的硬件所需的輸入相關聯。
我們一開始不確定 3D 標志點中的估計深度 (Z) 坐標的精確度是否足以用于轉換輸入,或者該標志點是否僅用于二維。首先,我們記錄了一個示例數據集,并在 Jupyter Notebook 中用 Plotly 使抓握點可視。
鑒于這項技術只使用一個攝像頭,沒有任何深度傳感器,坐標的質量和精度立刻給我們留下了深刻的印象。正如 MediaPipe 文檔所述,Z 坐標與 X/Y 坐標的比例略有不同,但看起來這并沒有對我們的原型構成重大挑戰。
由于 3D 標志點足夠精確,我們選擇使用 3D 計算關聯標志點輸出與機械手所需的輸入。在我們的方法中,我們通過計算手指方向和手掌定義的平面法線之間的角度,來計算手指相對于手掌的銳角。角度為 0° 表示手指完全收回,角度為 180° 則表示手指完全伸出。我們能夠通過計算從指根標志點到指尖標志點的向量來計算手指的方向。
我們通過選擇手掌平面的三個點來計算手掌法線。使用標志點 0 作為參考點,我們計算邊 1 和邊 2 的向量,并計算這些向量的叉積以得到手掌法線。最后,我們計算手指方向與手掌法線的夾角。這將以弧度為單位返回用于計算度數的角度。
我們必須進行額外的處理來匹配機械手拇指的自由度。拇指的移動方式比其他手指更復雜。為使應用能夠處理拇指的動作,我們對拇指方向和手掌法線進行了類似的計算,但使用了不同的標志點。
在 Android 手機上計算了伺服角度后,我們就可以通過藍牙將相關值發送到 Arduino 板,Arduino 板驅使伺服電機移動到正確的位置。由于模型輸出中存在一定的噪點,我們在管道中添加了一個平滑步驟,這一步驟非常重要,可以避免機械手指在運動時因為過于抖動而無法精確抓握。
總結
Mirru 應用和 Mirru Arduino Sketch 的設計旨在幫助任何人用自己的真手和 Android 手機來控制一個開源的機械手。這是一種新穎和低成本的肌肉傳感替代方案,MediaPipe 也已經證明這是完整應用中用于實現手部追蹤組件的正確工具。
Mirru 團隊能夠使用 MediaPipe 的現成解決方案快速啟動項目,無需收集任何訓練數據或從零開始設計模型。從手部追蹤點到機械手的實時轉換速度特別快,這讓 Mirru 的用戶感到非常高興,這也為假肢的未來應用開辟了眾多可能性。
我們很高興看到 MediaPipe 手部追蹤功能與現有肌電機械手結合蘊藏的巨大潛力,因為這將為實時創建和保存定制機械手抓握方式提供強大而先進的方法。
另外,在 MediaPipe 的幫助下,我們能夠提供一種開源的專有假肢替代方法,無需使用肌電傳感器,也無需尋求假肢師的幫助,成本也要比市場中的已有方案要低得多,同時源代碼可以由其他開發者定制和構建。我們非常期待聽到開源社區的其他想法,以及手部追蹤技術能夠對假肢用戶和制造商帶來的助益。
對于 Mirru 應用的當前狀態,我們尚不能夠記錄和保存序列長于靜態抓握手點位置的移動手勢。例如,記錄手指在鋼琴上彈奏低音線的連續動作,就像可循環的 gif 動圖一樣。機械手應用存在著諸多可能性,我們很高興 MediaPipe 為我們的探索提供了支持。
我們期待著這一領域出現更多的貢獻者。如果您對這一應用有任何想法或意見,請發送郵件至 mirruapp@gmail.com,或訪問我們的 GitHub。
GitHub
https://github.com/mirru-app
本文由 Google AI 機器學習研究產品經理 Igor Kibalchich 策劃。
客座博文 / 來自 Mirru 和 Tweag 工程團隊
編輯:jq
-
傳感器
+關注
關注
2551文章
51147瀏覽量
753998 -
機械手
+關注
關注
7文章
335瀏覽量
29660 -
計算機視覺
+關注
關注
8文章
1698瀏覽量
46011 -
3D 打印
+關注
關注
0文章
11瀏覽量
4231
原文標題:利用 MediaPipe 的手部追蹤來控制您的 Mirru 機械手
文章出處:【微信號:Nullmax,微信公眾號:Nullmax紐勱】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論