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