請注意,本文所體現的信息、用途及應用完全是 Video-Touch 客座作者的觀點。
您可能看過一些科幻電影,電影中的人可以用身體動作來控制機器人。如今,借助現代計算機視覺和機器人方法,我們能夠把這種體驗變成現實,而且和電影一樣精彩奇妙。
受新冠病毒影響,在如此艱難的時期,為了讓遠程控制和遠程操作變得切實可用,我們開啟了 VideoTouch 項目。
Video-Touch 是第一個人機交互系統(tǒng)。它允許多名用戶,在世界任何地方通過視頻通話應用(例如 Google Meet、Zoom、Skype)對其進行控制。
我們考慮過,是否有可能只用自己的手來遠程控制機器人,而不借助手套、操縱桿等任何額外的設備,同時不產生明顯的延遲。于是,我們決定使用計算機視覺來實時識別動作,并實時傳遞給機器人。在 MediaPipe 的幫助下,我們將其變?yōu)榱爽F實。
操作系統(tǒng)大致如下:
1. 通過視頻會議應用,在用戶設備上獲取網絡攝像頭視頻,然后將其發(fā)送至機器人計算機(“服務器”);
2. 用戶的網絡攝像頭視頻串流通過 OBS 虛擬攝像頭工具被捕捉到機器人的計算機顯示器上;
3. 識別模塊在 MediaPipe 的幫助下讀取用戶的動作和手勢,并通過 ZeroMQ 發(fā)送給下一個模塊;
4. 在動作捕捉數據的基礎上,機械臂及其抓手由 Python 控制。
從方案中可以清楚地看出,用戶在操作機器人時只需穩(wěn)定的互聯網連接和一個視頻會議應用。所有的如屏幕捕捉、手部追蹤、手勢識別和機器人控制等計算,都可以在 Wi-Fi 與機器人連接的單獨設備上進行(只是另一臺筆記本電腦)。接下來,我們將對流水線的各個環(huán)節(jié)進行詳細說明。
視頻串流和屏幕捕捉
用戶可以使用任何一臺能夠實現跨設備傳輸視頻的軟件。在實驗中,我們使用的是視頻會議的桌面應用。用戶在其設備上呼叫一臺顯示器與機器人相連的計算機。這樣,機器人就可以看到來自用戶網絡攝像頭的視頻串流。
現在,我們需要某種機制來把用戶的視頻從視頻會議傳遞到識別模塊。我們使用的是 Open Broadcaster Software (OBS) 及其虛擬攝像頭工具來捕捉打開視頻會議的窗口。這樣我們就獲得了一個虛擬攝像頭,它現在有來自用戶網絡攝像頭的幀及其獨特的設備索引,可以在識別模塊中進一步使用。
識別模塊
識別模塊的作用是捕捉用戶的動作并將其傳遞給機器人控制模塊。MediaPipe 會在此發(fā)揮作用。我們?yōu)椴蹲绞植縿幼鲗ふ伊俗钣行?、最精確的計算機視覺軟件。我們發(fā)現了許多令人興奮的解決方案,但事實證明,對于如此具有挑戰(zhàn)性的任務(實時設備端手部運動精確識別),MediaPipe 是唯一適合的工具。
我們對 MediaPipe 手部追蹤模塊進行了兩項關鍵修改:增加了手勢識別計算器并集成了 ZeroMQ 消息傳遞機制。
兩項關鍵修改
https://github.com/Arxtage/videotouch.github.io/tree/main
在上次發(fā)表文章的時候,我們有兩個版本的手勢識別實現。第一個版本如下圖 3 所示,所有的計算均在手部姿勢識別計算器內進行。計算器將特征點作為輸入進行縮放,也就是說,這些特征點根據手的邊界框大小(而非整個圖像的大?。┻M行標準化。接下來,它會識別 4 種手勢(另見圖 4):“移動”、“傾斜”、“抓取”和“無手勢”(論文中的“手指距離”手勢是實驗性內容,沒有包括在最終演示版中),并輸出手勢類名稱。盡管這個版本十分穩(wěn)健實用,但它只是基于簡單的啟發(fā)式規(guī)則,如:“如果此特征點 [i].x 《 特征點 [j].x,那么它是一個‘移動’手勢”,而且對于手部旋轉這類現實生活中的情況,此版本無法識別。
發(fā)表文章
https://dl.acm.org/doi/10.1145/3415255.3422892
為了緩解泛化不良的問題,我們實施了第二個版本。我們在手動收集和加標簽的 1000 個關鍵點的數據集上訓練了來自 scikit-learn 的梯度提升分類器:“移動”、“傾斜”和“抓取”類各有 200 個,而“無手勢”類有 400 個。順便說一下,如今可以通過最近發(fā)布的 Jesture AI SDK repo(注:我們團隊部分成員的另一個項目)輕松獲取此類數據集。
Jesture AI SDK
https://github.com/jesture-ai/jesture-sdk/tree/main/python#annotation-tool
我們使用縮放的特征點、關節(jié)間的角度以及成對的特征點距離作為模型的輸入,來預測手勢類。接下來,我們嘗試只傳遞縮放的特征點,而不傳遞任何角度和距離,結果在 200 個關鍵點的本地驗證集上獲得了 91% 的類似多類準確率。對于這個版本的手勢分類器,還有一點是我們無法直接在 C++ 中運行 scikit-learn 模型,所以我們用 Python 進行實現,作為機器人控制模塊的一部分。
發(fā)表后,我們立即推出了一個在 Keras 中訓練的全連接神經網絡,它采用的數據集與梯度提升模型相同,而得到的結果更好,準確率達到 93%。我們將這個模型轉換為 TensorFlow Lite 格式,現在我們可以在手部姿勢識別計算器中直接運行手勢識別 ML 模型。
得到當前手部位置和當前手勢類后,我們需要將其傳遞給機器人控制模塊。進行這一步時,我們借助了高性能的異步消息功能庫 ZeroMQ。為了在 C++ 中實現這一點,我們使用了 libzmq 庫和 cppzmq 標頭。利用 請求-回復 方案:識別模塊 C++ 代碼中的 REP(服務器)和機器人控制模塊 Python 代碼中的 REQ(客戶端)。
libzmq
https://github.com/zeromq/libzmq
cppzmq
https://github.com/zeromq/cppzmq
請求-回復
https://learning-0mq-with-pyzmq.readthedocs.io/en/latest/pyzmq/patterns/client_server.html
因此,借助我們修改過的手部追蹤模塊,現在能夠將運動捕捉信息實時傳遞給機器人。
機器人控制模塊
機器人控制模塊是一個 Python 腳本,它將手部特征點和手勢類作為輸入,并輸出機器人移動命令(在每一幀上)。運行該腳本的計算機通過 Wi-Fi 與機器人連接。我們的實驗中使用了搭載 Nvidia GTX 1050 Ti GPU 的 MSI 筆記本電腦。同時嘗試在 Intel Core i7 CPU 上運行整個系統(tǒng),由于有高度優(yōu)化的 MediaPipe 計算圖實現,該運行也是實時的,延遲可以忽略不計。
在目前的流水線中,我們使用了 Universal Robotics 的 6DoF UR10 機器人。由于使用的抓手是雙指的,我們不需要每個特征點與機器人手指關鍵點的完整映射,只需要手中心的位置。借助此中心坐標和 python-urx 軟件包,我們現在能夠在所需的方位和方向上改變機器人的速度:在每一幀上,我們計算當前手中心坐標與前一幀坐標之差,從而得出速度變化矢量或角度。最后,此機制看起來與人們用操縱桿控制機器人的方式非常相似。
python-urx
https://github.com/SintefManufacturing/python-urx
源視頻
https://www.youtube.com/watch?v=F4X4jJwDBy4
高密度觸覺傳感器的觸覺感知
靈巧的操縱要求具有較高的空間分辨率和對物體和環(huán)境的高保真觸覺感知。最新的傳感器數組非常適合機器人操縱,因為它們可以很容易地掛接到任何機器人末端執(zhí)行器上,并適應任何接觸面。
源發(fā)布文章
https://dl.acm.org/doi/10.1145/3415255.3422892
Video-Touch 嵌入了一種高密度的觸覺傳感器數組。它們安裝在雙指機器人抓手中。每個指尖上都掛接一個傳感器數組。單個電極數組可以感應 5.8 平方厘米的幀面積,每幀分辨率為 100 點。感應頻率等于 120 赫茲。每個點的力檢測范圍為 1 至 9 牛頓。因此,機器人以 200 點的分辨率(每個手指為 100 點)檢測施加在機器人手指抓取的固體或柔性物體上的壓力。
從傳感器數組處收集的數據經過處理后,以動態(tài)手指接觸映射圖的形式向用戶顯示。壓力傳感器數組讓用戶能夠感知被抓物體的順應性、硬度、粗糙度、形狀、方向等物理特性。
圖 8:多用戶機械臂控制功能。用戶能夠在常規(guī)的視頻通話過程中執(zhí)行 COVID-19 檢測 [源視頻]
源視頻
尾注
如此一來,借助 MediaPipe 和機器人,我們建立了一個有效的多用戶機器人遠程操作系統(tǒng)。在未來,遠程操作系統(tǒng)的潛在用途將包括醫(yī)療檢測,以及在難以進入的環(huán)境(例如外太空)中進行的實驗。該系統(tǒng)的多用戶功能解決了有效遠程協作的實際問題,允許在多人小組中進行需要手動遠程控制的項目工作。
我們流水線的另一個優(yōu)勢特點是,人們可以使用任何帶有攝像頭的設備,例如手機,來控制機器人。除了機械臂,人們還可以操作其他如,邊緣設備、移動機器人或無人機等硬件設備。當然,目前的解決方案具有一定的局限性:延遲時間、z 坐標(深度)的利用,以及手勢類型的便利性都有改進的空間。我們十分期待試用 MediaPipe 團隊的更新,并期待著嘗試新類型的抓手(帶手指的抓手)、雙手控制,甚至是全身控制(期待“鐵甲鋼拳”!)。
希望這篇文章對您和您的工作有所幫助。保重身體,堅持編碼。非常感謝您的關注!
責任編輯:haq
-
機器人
+關注
關注
211文章
28483瀏覽量
207440 -
機器視覺
+關注
關注
162文章
4386瀏覽量
120426
原文標題:Video-Touch:手勢識別助力 Google Meet 實現多用戶遠程控制機器人
文章出處:【微信號:tensorflowers,微信公眾號:Tensorflowers】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論