關(guān) 閉

新聞中心

EEPW首頁 > 工控自動化 > 設(shè)計(jì)應(yīng)用 > 基于手勢識別的小車運(yùn)動控制系統(tǒng)設(shè)計(jì)

基于手勢識別的小車運(yùn)動控制系統(tǒng)設(shè)計(jì)

作者:李芊均1,胡立夫1,冉興強(qiáng)2,吳佳銘1(1.沈陽航空航天大學(xué)自動化學(xué)院,沈陽 110036;2.沈陽航空航天大學(xué)航空發(fā)動機(jī)學(xué)院,沈陽 110036) 時間:2023-02-22 來源:電子產(chǎn)品世界 收藏
編者按:設(shè)計(jì)了一種基于手勢識別的小車運(yùn)動控制系統(tǒng),該系統(tǒng)采用Arduino Nano作為微控制器,利用姿態(tài)角度傳感器采集并處理手勢指令數(shù)據(jù),實(shí)現(xiàn)手勢信息的識別,通過無線通信模塊將手勢指令發(fā)送給小車運(yùn)動端,目標(biāo)角度與實(shí)際角度等通過顯示屏實(shí)時顯示,最終達(dá)到手勢控制小車前進(jìn)、后退、轉(zhuǎn)彎、停止等動作。本文完成了基于手勢識別的小車運(yùn)動控制系統(tǒng)的軟硬件設(shè)計(jì),將手勢識別技術(shù)與移動機(jī)器人結(jié)合一體,在疫情環(huán)境下無接觸運(yùn)動控制方向研究具有實(shí)用意義。

手勢是人類社會長期存在的重要肢體語言。它具有簡單、直接、高效、清晰,內(nèi)容豐富的特點(diǎn),是指跟蹤人類手勢并識別其表示含義的整個過程。靜態(tài)實(shí)現(xiàn)運(yùn)動控制的研究目的是在不直接觸摸設(shè)備的情況下使用的手勢的位置信息識別作為輸入[1],并將命令映射到輸出。

本文引用地址:http://m.butianyuan.cn/article/202302/443617.htm

本文設(shè)計(jì)的基于的小車運(yùn)動控制系統(tǒng),用戶佩戴傳感器裝置,傳感器將人與機(jī)器進(jìn)行連接,傳感器通過對數(shù)據(jù)進(jìn)行采集,得到角度等相關(guān)數(shù)據(jù)信息,然后將信息傳遞給單片機(jī),單片機(jī)內(nèi)部對傳感器傳輸過來的數(shù)據(jù)進(jìn)行分析處理,最終得到用戶指令并實(shí)現(xiàn)運(yùn)動控制。與語音識別、觸摸屏識別、鍵盤和鼠標(biāo)等其他人機(jī)交互技術(shù)相比,人機(jī)距離限制小,語言獨(dú)立等優(yōu)點(diǎn)。在應(yīng)用層面,手勢識別小車的發(fā)展可以使人機(jī)交互更加精確、穩(wěn)定,范圍更廣,有利于推廣應(yīng)用。

1   系統(tǒng)總體方案設(shè)計(jì)

該系統(tǒng)的總體結(jié)構(gòu)分為兩部分:手部控制端和小車運(yùn)動端,由五大模塊構(gòu)成:單片機(jī)最小系統(tǒng)、傳感器模塊、模塊、顯示模塊和電機(jī)驅(qū)動模塊。軟件設(shè)計(jì)主要包括:手部控制程序設(shè)計(jì)和小車運(yùn)動程序設(shè)計(jì)。系統(tǒng)總體方案設(shè)計(jì)框圖如圖1 所示。

1677050669868497.png

圖1 系統(tǒng)總體方案設(shè)計(jì)框圖

手部端傳感器采集不同手勢的各軸的角度數(shù)據(jù),傳感器將數(shù)據(jù)返回給單片機(jī)最小系統(tǒng),由單片機(jī)對數(shù)據(jù)信息進(jìn)行濾波處理,辨別指令信息,并且通過模塊傳輸給小車端。小車端傳感器采集車體姿態(tài)的各軸的角度數(shù)據(jù),傳感器將數(shù)據(jù)傳輸回單片機(jī)的同時模塊接收手部控制端的指令信息,單片機(jī)將兩部分信息對比處理,對誤差運(yùn)用經(jīng)典PID 算法處理,并將處理結(jié)果反饋給電機(jī)驅(qū)動模塊,調(diào)整小車左右電機(jī)PWM,目的是使小車按照手勢指令行駛并且行駛穩(wěn)定,顯示模塊顯示小車行駛的目標(biāo)角度和實(shí)際角度。

2   硬件電路設(shè)計(jì)

2.1 單片機(jī)最小系統(tǒng)

本設(shè)計(jì)中在手部控制端和小車運(yùn)動端均采用Arduino Nano 作為主控芯片, 其處理器核心是ATmega328(Nano3.0),同時具有14 路數(shù)字輸入/ 輸出口,8 路模擬輸入[2],ATmega328 具有32 個引腳,由于引腳數(shù)量有限,所以很多功能都共同使用一個引腳,具體功能可以通過軟件編程實(shí)現(xiàn)。這款單片機(jī)便捷靈活、方便上手,具有豐富的接口,適用于本系統(tǒng)。Arduino Nano電路原理圖如圖2所示。

1677050766178923.png

圖2 Arduino Nano電路原理圖

2.2 姿態(tài)角度傳感器

本設(shè)計(jì)中采用姿態(tài)角度傳感器JY61采集手勢指令信息和小車姿態(tài)信息, 處理器以高精度陀螺儀MPU6050為核心, 讀取MPU6050的測量數(shù)據(jù), 通過串口輸出[3]JY61模塊工作電壓3.3 V/5 V,測量數(shù)據(jù)包括三維角度、三維加速度和三維角速度數(shù)據(jù),其角度數(shù)據(jù)在X 軸和Z 軸的測量范圍是±180 °,Y 軸的測量范圍是±90 °,動態(tài)測量精度為0.1 °,靜態(tài)測量精度為0.05 ° 。

2.3 藍(lán)牙模塊

本設(shè)計(jì)中采用藍(lán)牙模塊HC05實(shí)現(xiàn)手部控制端和小車運(yùn)動端的數(shù)據(jù)通訊。HC05 是一款主從一體式串口藍(lán)牙模塊,使用方便快捷,配對后只需要當(dāng)成固定波特率的串口一樣使用即可,因此只要是以“固定波特率,8 位數(shù)據(jù)位,無奇偶校檢”通信格式的串口設(shè)備都可以直接取代原來的有線串口而不需要修改程序。HC05 藍(lán)牙模塊電路原理圖3 如圖所示。

1677050883947491.png

圖3 HC05藍(lán)牙模塊電路原理圖

2.4 顯示模塊

本設(shè)計(jì)中使用LCD1602 顯示屏顯示目標(biāo)角度(手部控制姿態(tài))和當(dāng)前角度(小車運(yùn)動姿態(tài)),可以實(shí)時地觀測小車行進(jìn)中的角度變化。本設(shè)計(jì)中采用LCD1602的IIC 驅(qū)動方式,通過IIC 適配器板實(shí)現(xiàn)IIC 接口,只采用兩個IO 端口用于驅(qū)動LCD1602,適配器板的SDA、SCL 分別連接到開發(fā)板A4 和A5。LCD1602 電路原理如圖4 所示。

1677050952946692.png

圖4 LCD1602電路原理圖

2.5 電機(jī)驅(qū)動模塊

本設(shè)計(jì)中使用L298N 電機(jī)驅(qū)動模塊控制小車電機(jī)的正反轉(zhuǎn)和行駛速度。L298N 電機(jī)驅(qū)動模塊擁有發(fā)熱小,無需散熱片、體積小、省電,溫度下降后自動恢復(fù)的優(yōu)點(diǎn)。電機(jī)A 輸出口對應(yīng)IN1 和IN2 控制1 個電機(jī)的旋轉(zhuǎn),電機(jī)B 輸出口對應(yīng)IN3 和IN4 控制另1 個電機(jī)的轉(zhuǎn)動,其操作簡單,穩(wěn)定性好,能滿足直流電機(jī)大電流的驅(qū)動條件[4]。

3   軟件設(shè)計(jì)

3.1 手部控制程序設(shè)計(jì)

手部控制程序主要實(shí)現(xiàn)內(nèi)容如下:上電后系統(tǒng)初始化,進(jìn)入循環(huán)程序,對X、Y、Z 軸基準(zhǔn)角度進(jìn)行數(shù)據(jù)校準(zhǔn)。傳感器采集當(dāng)前X、Y、Z 軸角度,將當(dāng)前角度與基準(zhǔn)角度相減所得偏差角度作為手勢指令,采集數(shù)據(jù)后進(jìn)行手勢識別,通過Z 軸角度判斷0°、45°、90°、?45°、?90°五種轉(zhuǎn)彎狀態(tài),通過 X 軸角度判斷前進(jìn)、后退、停止3 種行進(jìn)狀態(tài),濾波處理后,發(fā)送至小車運(yùn)動端;若未讀到低開始信號則表示手勢指令無效,小車靜止。

手部控制程序流程圖如圖5 所示。進(jìn)行手勢檢測時,將姿態(tài)角度傳感器JY61 佩戴在用戶右手中指上方,杜邦線所在一側(cè)貼著食指。在前進(jìn)、停止、后退指令中定義掌心向下指尖向前為停止,掌心向前指尖向上為前進(jìn),掌心向后指尖向下為后退。在0° 、45°、90°、?45°、?90°指令中定義掌心向下指尖向前為0° 轉(zhuǎn)彎,掌心向下指尖向左為90° 轉(zhuǎn)彎,掌心向下指尖向右為 ?90°轉(zhuǎn)彎。

1677051021236772.png

圖5 手部控制程序流程

根據(jù)不同手勢姿態(tài)其各軸角度不同,進(jìn)行數(shù)據(jù)處理做出判斷后發(fā)送至小車端,最終小車依照手勢指令實(shí)現(xiàn)前進(jìn)、后退、轉(zhuǎn)彎、停止等行駛狀態(tài)。角度數(shù)據(jù)內(nèi)容如表1 所示。

表1 角度數(shù)據(jù)

1677051216264909.png

各軸角度計(jì)算公式如下:

1677051286251551.png

確定轉(zhuǎn)彎狀:確定 0°、 45°、 90°、 ?45°、?90°轉(zhuǎn)彎狀態(tài)的手勢指令信息,需要對 Z 軸角度進(jìn)行判斷。不同人所給出的手勢指令不同,以及演示手勢指令存在一定角度誤差,所以判斷條件都在一定區(qū)間范圍內(nèi)。轉(zhuǎn)彎狀態(tài)手勢指令信息表如表2 所示。

表2 轉(zhuǎn)彎狀態(tài)手勢指令信息表

1677051357164999.png

確定前進(jìn)、停止、后退狀態(tài):確定前進(jìn)、后退、停止行駛狀態(tài)的手勢指令信息,需要對X軸角度進(jìn)行判斷。行駛狀態(tài)手勢指令信息表如表3 所示。

表3 行駛狀態(tài)手勢指令信息表

1677051458337966.png

3.2 小車運(yùn)動程序設(shè)計(jì)

小車運(yùn)動程序主要實(shí)現(xiàn)內(nèi)容:上電后系統(tǒng)初始化,進(jìn)入循環(huán)程序,行進(jìn)過程中設(shè)定小車左右電機(jī)的PWM均為80,采用位置式PID 算法減小擾動和誤差,將PID運(yùn)算結(jié)果PID_out 加在右側(cè)電機(jī)PWM,實(shí)現(xiàn)小車沿直線行駛和準(zhǔn)確轉(zhuǎn)彎。若藍(lán)牙模塊未接收到字符“0”,則手勢指令無效,小車靜止。小車運(yùn)動端程序流程圖如圖6 所示。

1677051501553055.png

圖6 小車運(yùn)動端程序流程

在本設(shè)計(jì)中,基于手勢識別的小車運(yùn)動控制系統(tǒng)要實(shí)現(xiàn)沿直線行駛和準(zhǔn)確轉(zhuǎn)彎,首選簡單高效的PID 控制算法,以保證控制系統(tǒng)快速到達(dá)并穩(wěn)定于目標(biāo)值[5]。算法公式為:

1677051597668696.png

本設(shè)計(jì)中小車沿直線行駛時先給左右電機(jī)相同的PWM,在行進(jìn)過程中由于誤差和擾動肯定會走偏,此時傳感器采集各軸角度,采用位置式PID 算法控制的目的就是使小車轉(zhuǎn)到目標(biāo)角度并沿目標(biāo)角度走直線,控制方法是將PID 運(yùn)算結(jié)果PID_out 加在右側(cè)電機(jī)PWM。小車運(yùn)動狀態(tài)控制策略如表4 所示。

表4 小車運(yùn)動狀態(tài)控制策略

1677051657163662.png

4   系統(tǒng)測試

經(jīng)過硬件和軟件的聯(lián)合調(diào)試,基于手勢識別的小車運(yùn)動控制系統(tǒng)實(shí)現(xiàn)了以下功能:手部控制端可以識別不同的手勢指令,手部端與小車端能進(jìn)行數(shù)據(jù)傳輸、小車接收手勢指令后可以實(shí)現(xiàn)前進(jìn)、后退、停止、轉(zhuǎn)彎等不同行駛狀態(tài),顯示屏可以顯示目標(biāo)角度和實(shí)際角度。測試結(jié)果表明,基于手勢識別的小車運(yùn)動控制系統(tǒng)可以準(zhǔn)確、穩(wěn)定地運(yùn)行,證明了該系統(tǒng)的可行性和識別算法的有效性。系統(tǒng)調(diào)試結(jié)果如圖7 所示。

1677051714603813.png

圖7 系統(tǒng)調(diào)試結(jié)果

5   結(jié)束語

隨著科技的進(jìn)步與社會的發(fā)展,人類生活趨于智能化,智能識別技術(shù)與智能機(jī)器人一定是未來研究的熱門課題,基于手勢識別的小車運(yùn)動控制系統(tǒng)將手勢識別技術(shù)與移步機(jī)器人結(jié)合為一體,高效地實(shí)現(xiàn)了人與小車的交互控制,同時因其智能、安全、工作效率高等特點(diǎn),有效節(jié)約了人力資源,可以在很多場合中得到應(yīng)用。身處于疫情時期,采用無接觸模式實(shí)現(xiàn)手勢控制小車幫助人們安全、高效地完成一些工作,具有一定的實(shí)際意義,做到了真正方便人們的生活,具有廣闊的市場前景與實(shí)用意義。

參考文獻(xiàn):

[1] 孫亞星,黃帥銘,王宇鵬,等.基于電容傳感器的手勢識別系統(tǒng)設(shè)計(jì)[J].自動化儀表,2020,41(2):10-19.

[2] 倪文彬,毛耀,陸廣華.基于Arduino的體感機(jī)械手設(shè)計(jì)[J].機(jī)床與液壓,2017,45(23):5-9.

[3] 張金山.四足步行機(jī)器人的3-5R并聯(lián)腿機(jī)構(gòu)設(shè)計(jì)與步態(tài)規(guī)劃[D].濟(jì)南:山東大學(xué),2019.

[4] 楊小博,胡強(qiáng),蘇玉香.基于STC12C5A60S2的循跡避障智能小車的設(shè)計(jì)[J].福建電腦,2017,33(11):19-20.

[5] 候帥.多自由度機(jī)器人搬運(yùn)平臺調(diào)平控制系統(tǒng)研究[D].西安:長安大學(xué),2017.

(本文來源于《電子產(chǎn)品世界》雜志2023年2月期)



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉