如何使用手勢識別和嵌入式機(jī)器學(xué)習(xí)來控制物理模型
掃描二維碼
隨時(shí)隨地手機(jī)看文章
UoM工程大樓的手勢控制模型使用Pi 5 + ML -揮揮手,建筑就會移動。
我們開發(fā)了一個交互式的,由手勢控制的曼徹斯特大學(xué)工程大樓的比例模型,由機(jī)器學(xué)習(xí)和嵌入式系統(tǒng)提供動力。
我們的模型實(shí)時(shí)響應(yīng)手勢:
?向左滑動→左邊的建筑打開
?向右滑動→右側(cè)打開
?舉起雙臂做t字姿勢→整個建筑旋轉(zhuǎn)
這種非接觸式控制系統(tǒng)允許用戶以一種全新的方式與物理結(jié)構(gòu)進(jìn)行交互,為教育工具,展覽和智能環(huán)境提供了無限的可能性。
我們?yōu)槭裁匆ㄔ焖?/strong>
我們開始探索如何使用手勢識別和嵌入式機(jī)器學(xué)習(xí)來控制物理模型。我們的目標(biāo)是展示如何利用這些技術(shù)來創(chuàng)造直觀、身臨其境的體驗(yàn),讓用戶以一種更自然、更免提的方式與模型或環(huán)境互動。
在許多情況下,傳統(tǒng)的交互方法(如按鈕或屏幕)可能會受到限制。通過結(jié)合手勢控制,我們使用戶無需觸摸就能與系統(tǒng)互動,增加了靈活性和可訪問性。這一概念適用于:
?智能建筑:對人類輸入做出反應(yīng)的建筑或空間。
?交互式展覽:用戶可以通過簡單的手勢控制模型或顯示系統(tǒng)。
?公共空間:用于與技術(shù)的非接觸式交互,確保易用性和可達(dá)性。
它是如何工作的
手勢識別該系統(tǒng)使用帶有攝像頭的樹莓派5來實(shí)時(shí)檢測手勢。使用TensorFlow Lite模型進(jìn)行有效的手勢分類。我們訓(xùn)練模型識別特定的手勢:
?向左滑動:啟動模型左側(cè)的打開。
?向右滑動:觸發(fā)右側(cè)打開。
?T-pose:命令模型繞其中心軸旋轉(zhuǎn)。
驅(qū)動(樹莓派Pico)樹莓派Pico作為伺服電機(jī)的實(shí)時(shí)控制器,對模型進(jìn)行物理操作:
?兩個伺服電機(jī)控制著建筑左右兩側(cè)的開口。
?當(dāng)檢測到t姿勢手勢時(shí),一個中央伺服電機(jī)控制模型的旋轉(zhuǎn)。
?Pi 5(用于手勢檢測)和Pico(用于實(shí)時(shí)電機(jī)控制)之間的這種分工確保了系統(tǒng)以最小的延遲高效運(yùn)行。
技術(shù)棧
樹莓派5:
?使用TensorFlow Lite運(yùn)行手勢檢測模型,以實(shí)現(xiàn)高效的基于邊緣的機(jī)器學(xué)習(xí)推理
?使用OpenCV處理攝像頭輸入和檢測手勢。
TensorFlow Lite: TensorFlow的輕量級版本,針對樹莓派等邊緣設(shè)備進(jìn)行了優(yōu)化。它可以實(shí)現(xiàn)高效的實(shí)時(shí)手勢識別。
有限狀態(tài)機(jī):跟蹤用戶手勢并解釋動作序列以確定適當(dāng)?shù)哪P晚憫?yīng)。FSM確保動作只有在正確的手勢執(zhí)行時(shí)才會發(fā)生。
樹莓派Pico:與伺服電機(jī)接口的微控制器,用于實(shí)時(shí)控制模型的運(yùn)動。
伺服電機(jī):控制模型打開和旋轉(zhuǎn)的物理執(zhí)行器。這些都是通過樹莓派Pico供電和控制的。
定制設(shè)計(jì)模型:UoM工程建筑模型是用泡沫板和3d打印部件手工制作的,以創(chuàng)建結(jié)構(gòu)的功能表示。該模型設(shè)計(jì)有三個關(guān)鍵的移動部件:
?左側(cè)開口
?右側(cè)開口
?中心旋轉(zhuǎn)機(jī)構(gòu)
我們學(xué)到了什么
嵌入式設(shè)備上的實(shí)時(shí)機(jī)器學(xué)習(xí):使用樹莓派5進(jìn)行實(shí)時(shí)手勢識別,與TensorFlow Lite配對,證明既高效又響應(yīng)迅速。
伺服控制:管理樹莓派Pico的實(shí)時(shí)驅(qū)動和協(xié)調(diào)伺服運(yùn)動是具有挑戰(zhàn)性的,但展示了使用低成本硬件創(chuàng)建交互式模型的能力。
手勢靈敏度和校準(zhǔn):微調(diào)手勢檢測需要反復(fù)測試,以平衡精度和響應(yīng)在不同的照明條件和環(huán)境。
潛在應(yīng)用
AURA項(xiàng)目展示了基于手勢的控制系統(tǒng)在各個領(lǐng)域應(yīng)用的潛力:
互動展覽:博物館、科學(xué)中心和教育機(jī)構(gòu)可以使用手勢控制模型來吸引游客,并以動手的方式展示復(fù)雜的系統(tǒng)。
智能建筑:這個概念可以演變成一個系統(tǒng),用戶可以通過手勢控制建筑元素,比如百葉窗、窗戶甚至房間。
公共空間:在商場、公共交通或智能城市等環(huán)境中,用戶可以通過手勢與數(shù)字顯示器、模型甚至物理結(jié)構(gòu)進(jìn)行交互,從而減少了對物理接觸點(diǎn)的需求。
結(jié)論
AURA項(xiàng)目表明,機(jī)器學(xué)習(xí)和嵌入式系統(tǒng)可以無縫集成,以創(chuàng)建免提的交互式體驗(yàn)。通過使用簡單的手勢來控制物理模型,我們提供了直觀的、響應(yīng)式架構(gòu)的未來一瞥。
我們相信這個項(xiàng)目只是一個開始,隨著進(jìn)一步的發(fā)展,它可以擴(kuò)展到智慧城市、無障礙技術(shù)和教育工具的應(yīng)用中。
代碼
#include
Servo rightServo;
Servo leftServo;
const int ledPin = 25; // Onboard LED for Pico
const int rightPin = 2; // GP2 (physical pin 4)
const int leftPin = 3; // GP3 (physical pin 5)
const int inp1 = 0; // Right servo control (active HIGH)
const int inp2 = 1; // Left servo control (active HIGH)
// Servo states (FSM)
bool rightServoState = false; // false=0°, true=180°
bool leftServoState = false; // false=0°, true=180°
// Previous input states for edge detection
bool prevInp1 = LOW;
bool prevInp2 = LOW;
void setup() {
pinMode(ledPin, OUTPUT);
rightServo.attach(rightPin);
leftServo.attach(leftPin);
pinMode(inp1, INPUT); // pull low resistor, input from Pi5
pinMode(inp2, INPUT); // pull low resistor, input from Pi5
// Initialize
rightServo.write(0);
leftServo.write(0);
digitalWrite(ledPin, LOW);
}
void loop() {
// Read current inputs
bool currentInp1 = digitalRead(inp1);
bool currentInp2 = digitalRead(inp2);
// Right servo control (trigger on rising edge)
if (currentInp1 == HIGH && prevInp1 == LOW) {
rightServoState = !rightServoState; // Toggle state
if (rightServoState) { // If true, set to 90°
rightServo.write(90);
digitalWrite(ledPin, HIGH);
} else { // If false, set to 0°
rightServo.write(0);
digitalWrite(ledPin, LOW);
}
}
prevInp1 = currentInp1;
// Left servo control (trigger on rising edge)
if (currentInp2 == HIGH && prevInp2 == LOW) {
leftServoState = !leftServoState; // Toggle state
if (leftServoState) { // If true, set to 90°
leftServo.write(90);
} else { // If false, set to 0°
leftServo.write(0);
}
}
prevInp2 = currentInp2;
delay(10); // Minimal delay to prevent busy-waiting
}
本文編譯自hackster.io