www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 工業(yè)控制 > 電路設(shè)計(jì)項(xiàng)目集錦
[導(dǎo)讀]我們開始探索如何使用手勢識別和嵌入式機(jī)器學(xué)習(xí)來控制物理模型。我們的目標(biāo)是展示如何利用這些技術(shù)來創(chuàng)造直觀、身臨其境的體驗(yàn),讓用戶以一種更自然、更免提的方式與模型或環(huán)境互動。

UoM工程大樓的手勢控制模型使用Pi 5 + ML -揮揮手,建筑就會移動。

我們開發(fā)了一個交互式的,由手勢控制的曼徹斯特大學(xué)工程大樓的比例模型,由機(jī)器學(xué)習(xí)嵌入式系統(tǒng)提供動力。

我們的模型實(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í)時檢測手勢。使用TensorFlow Lite模型進(jìn)行有效的手勢分類。我們訓(xùn)練模型識別特定的手勢:

?向左滑動:啟動模型左側(cè)的打開。

?向右滑動:觸發(fā)右側(cè)打開。

?T-pose:命令模型繞其中心軸旋轉(zhuǎn)。

驅(qū)動(樹莓派Pico)樹莓派Pico作為伺服電機(jī)的實(shí)時控制器,對模型進(jìn)行物理操作:

?兩個伺服電機(jī)控制著建筑左右兩側(cè)的開口。

?當(dāng)檢測到t姿勢手勢時,一個中央伺服電機(jī)控制模型的旋轉(zhuǎn)。

?Pi 5(用于手勢檢測)和Pico(用于實(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í)時手勢識別。

有限狀態(tài)機(jī):跟蹤用戶手勢并解釋動作序列以確定適當(dāng)?shù)哪P晚憫?yīng)。FSM確保動作只有在正確的手勢執(zhí)行時才會發(fā)生。

樹莓派Pico:與伺服電機(jī)接口的微控制器,用于實(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í)時機(jī)器學(xué)習(xí):使用樹莓派5進(jìn)行實(shí)時手勢識別,與TensorFlow Lite配對,證明既高效又響應(yīng)迅速。

伺服控制:管理樹莓派Pico的實(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

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀
關(guān)閉