手勢是人類社會長期存在的重要肢體語言。它具有簡單、直接、高效、清晰,內(nèi)容豐富的特點,手勢識別是指跟蹤人類手勢并識別其表示含義的整個過程。靜態(tài)手勢識別實現(xiàn)運動控制的研究目的是在不直接觸摸設備的情況下使用的手勢的位置信息識別作為輸入[1],并將命令映射到輸出。
本文引用地址:http://www.eepw.com.cn/article/202302/443617.htm
本文設計的基于手勢識別的小車運動控制系統(tǒng),用戶佩戴傳感器裝置,傳感器將人與機器進行連接,傳感器通過對數(shù)據(jù)進行采集,得到角度等相關數(shù)據(jù)信息,然后將信息傳遞給單片機,單片機內(nèi)部對傳感器傳輸過來的數(shù)據(jù)進行分析處理,最終得到用戶指令并實現(xiàn)運動控制。與語音識別、觸摸屏識別、鍵盤和鼠標等其他人機交互技術相比,人機距離限制小,語言獨立等優(yōu)點。在應用層面,手勢識別小車的發(fā)展可以使人機交互更加精確、穩(wěn)定,范圍更廣,有利于推廣應用。
圖1 系統(tǒng)總體方案設計框圖
1 系統(tǒng)總體方案設計
該系統(tǒng)的總體結(jié)構(gòu)分為兩部分:手部控制端和小車運動端,由五大模塊構(gòu)成:單片機最小系統(tǒng)、傳感器模塊、無線通信模塊、顯示模塊和電機驅(qū)動模塊。軟件設計主要包括:手部控制程序設計和小車運動程序設計。系統(tǒng)總體方案設計框圖如圖1 所示。
手部端傳感器采集不同手勢的各軸的角度數(shù)據(jù),傳感器將數(shù)據(jù)返回給單片機最小系統(tǒng),由單片機對數(shù)據(jù)信息進行濾波處理,辨別指令信息,并且通過無線通信模塊傳輸給小車端。小車端傳感器采集車體姿態(tài)的各軸的角度數(shù)據(jù),傳感器將數(shù)據(jù)傳輸回單片機的同時無線通信模塊接收手部控制端的指令信息,單片機將兩部分信息對比處理,對誤差運用經(jīng)典PID 算法處理,并將處理結(jié)果反饋給電機驅(qū)動模塊,調(diào)整小車左右電機PWM,目的是使小車按照手勢指令行駛并且行駛穩(wěn)定,顯示模塊顯示小車行駛的目標角度和實際角度。
圖2 Arduino Nano電路原理圖
2 硬件電路設計
2.1 單片機最小系統(tǒng)
本設計中在手部控制端和小車運動端均采用Arduino Nano 作為主控芯片, 其處理器核心是ATmega328(Nano3.0),同時具有14 路數(shù)字輸入/ 輸出口,8 路模擬輸入[2],ATmega328 具有32 個引腳,由于引腳數(shù)量有限,所以很多功能都共同使用一個引腳,具體功能可以通過軟件編程實現(xiàn)。這款單片機便捷靈活、方便上手,具有豐富的接口,適用于本系統(tǒng)。Arduino Nano電路原理圖如圖2所示。
2.2 姿態(tài)角度傳感器
本設計中采用姿態(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 藍牙模塊
本設計中采用藍牙模塊HC05實現(xiàn)手部控制端和小車運動端的數(shù)據(jù)通訊。HC05 是一款主從一體式串口藍牙模塊,使用方便快捷,配對后只需要當成固定波特率的串口一樣使用即可,因此只要是以“固定波特率,8 位數(shù)據(jù)位,無奇偶校檢”通信格式的串口設備都可以直接取代原來的有線串口而不需要修改程序。HC05 藍牙模塊電路原理圖3 如圖所示。
圖3 HC05藍牙模塊電路原理圖
2.4 顯示模塊
本設計中使用LCD1602 顯示屏顯示目標角度(手部控制姿態(tài))和當前角度(小車運動姿態(tài)),可以實時地觀測小車行進中的角度變化。本設計中采用LCD1602的IIC 驅(qū)動方式,通過IIC 適配器板實現(xiàn)IIC 接口,只采用兩個IO 端口用于驅(qū)動LCD1602,適配器板的SDA、SCL 分別連接到開發(fā)板A4 和A5。LCD1602 電路原理如圖4 所示。
圖4 LCD1602電路原理圖
2.5 電機驅(qū)動模塊
本設計中使用L298N 電機驅(qū)動模塊控制小車電機的正反轉(zhuǎn)和行駛速度。L298N 電機驅(qū)動模塊擁有發(fā)熱小,無需散熱片、體積小、省電,溫度下降后自動恢復的優(yōu)點。電機A 輸出口對應IN1 和IN2 控制1 個電機的旋轉(zhuǎn),電機B 輸出口對應IN3 和IN4 控制另1 個電機的轉(zhuǎn)動,其操作簡單,穩(wěn)定性好,能滿足直流電機大電流的驅(qū)動條件[4]。
圖5 手部控制程序流程
3 軟件設計
3.1 手部控制程序設計
手部控制程序主要實現(xiàn)內(nèi)容如下:上電后系統(tǒng)初始化,進入循環(huán)程序,對X、Y、Z 軸基準角度進行數(shù)據(jù)校準。傳感器采集當前X、Y、Z 軸角度,將當前角度與基準角度相減所得偏差角度作為手勢指令,采集數(shù)據(jù)后進行手勢識別,通過Z 軸角度判斷0°、45°、90°、?45°、?90°五種轉(zhuǎn)彎狀態(tài),通過 X 軸角度判斷前進、后退、停止3 種行進狀態(tài),濾波處理后,發(fā)送至小車運動端;若未讀到低開始信號則表示手勢指令無效,小車靜止。
手部控制程序流程圖如圖5 所示。進行手勢檢測時,將姿態(tài)角度傳感器JY61 佩戴在用戶右手中指上方,杜邦線所在一側(cè)貼著食指。在前進、停止、后退指令中定義掌心向下指尖向前為停止,掌心向前指尖向上為前進,掌心向后指尖向下為后退。在0° 、45°、90°、?45°、?90°指令中定義掌心向下指尖向前為0° 轉(zhuǎn)彎,掌心向下指尖向左為90° 轉(zhuǎn)彎,掌心向下指尖向右為 ?90°轉(zhuǎn)彎。
根據(jù)不同手勢姿態(tài)其各軸角度不同,進行數(shù)據(jù)處理做出判斷后發(fā)送至小車端,最終小車依照手勢指令實現(xiàn)前進、后退、轉(zhuǎn)彎、停止等行駛狀態(tài)。角度數(shù)據(jù)內(nèi)容如表1 所示。
表1 角度數(shù)據(jù)
各軸角度計算公式如下:
確定轉(zhuǎn)彎狀:確定 0°、 45°、 90°、 ?45°、?90°轉(zhuǎn)彎狀態(tài)的手勢指令信息,需要對 Z 軸角度進行判斷。不同人所給出的手勢指令不同,以及演示手勢指令存在一定角度誤差,所以判斷條件都在一定區(qū)間范圍內(nèi)。轉(zhuǎn)彎狀態(tài)手勢指令信息表如表2 所示。
表2 轉(zhuǎn)彎狀態(tài)手勢指令信息表
確定前進、停止、后退狀態(tài):確定前進、后退、停止行駛狀態(tài)的手勢指令信息,需要對X軸角度進行判斷。行駛狀態(tài)手勢指令信息表如表3 所示。
表3 行駛狀態(tài)手勢指令信息表
3.2 小車運動程序設計
小車運動程序主要實現(xiàn)內(nèi)容:上電后系統(tǒng)初始化,進入循環(huán)程序,行進過程中設定小車左右電機的PWM均為80,采用位置式PID 算法減小擾動和誤差,將PID運算結(jié)果PID_out 加在右側(cè)電機PWM,實現(xiàn)小車沿直線行駛和準確轉(zhuǎn)彎。若藍牙模塊未接收到字符“0”,則手勢指令無效,小車靜止。小車運動端程序流程圖如圖6 所示。
圖6 小車運動端程序流程
在本設計中,基于手勢識別的小車運動控制系統(tǒng)要實現(xiàn)沿直線行駛和準確轉(zhuǎn)彎,首選簡單高效的PID 控制算法,以保證控制系統(tǒng)快速到達并穩(wěn)定于目標值[5]。PID控制算法公式為:
本設計中小車沿直線行駛時先給左右電機相同的PWM,在行進過程中由于誤差和擾動肯定會走偏,此時傳感器采集各軸角度,采用位置式PID 算法控制的目的就是使小車轉(zhuǎn)到目標角度并沿目標角度走直線,控制方法是將PID 運算結(jié)果PID_out 加在右側(cè)電機PWM。小車運動狀態(tài)控制策略如表4 所示。
表4 小車運動狀態(tài)控制策略
4 系統(tǒng)測試
經(jīng)過硬件和軟件的聯(lián)合調(diào)試,基于手勢識別的小車運動控制系統(tǒng)實現(xiàn)了以下功能:手部控制端可以識別不同的手勢指令,手部端與小車端能進行數(shù)據(jù)傳輸、小車接收手勢指令后可以實現(xiàn)前進、后退、停止、轉(zhuǎn)彎等不同行駛狀態(tài),顯示屏可以顯示目標角度和實際角度。測試結(jié)果表明,基于手勢識別的小車運動控制系統(tǒng)可以準確、穩(wěn)定地運行,證明了該系統(tǒng)的可行性和識別算法的有效性。系統(tǒng)調(diào)試結(jié)果如圖7 所示。
圖7 系統(tǒng)調(diào)試結(jié)果
5 結(jié)束語
隨著科技的進步與社會的發(fā)展,人類生活趨于智能化,智能識別技術與智能機器人一定是未來研究的熱門課題,基于手勢識別的小車運動控制系統(tǒng)將手勢識別技術與移步機器人結(jié)合為一體,高效地實現(xiàn)了人與小車的交互控制,同時因其智能、安全、工作效率高等特點,有效節(jié)約了人力資源,可以在很多場合中得到應用。身處于疫情時期,采用無接觸模式實現(xiàn)手勢控制小車幫助人們安全、高效地完成一些工作,具有一定的實際意義,做到了真正方便人們的生活,具有廣闊的市場前景與實用意義。
參考文獻:
[1] 孫亞星,黃帥銘,王宇鵬,等.基于電容傳感器的手勢識別系統(tǒng)設計[J].自動化儀表,2020,41(2):10-19.
[2] 倪文彬,毛耀,陸廣華.基于Arduino的體感機械手設計[J].機床與液壓,2017,45(23):5-9.
[3] 張金山.四足步行機器人的3-5R并聯(lián)腿機構(gòu)設計與步態(tài)規(guī)劃[D].濟南:山東大學,2019.
[4] 楊小博,胡強,蘇玉香.基于STC12C5A60S2的循跡避障智能小車的設計[J].福建電腦,2017,33(11):19-20.
[5] 候帥.多自由度機器人搬運平臺調(diào)平控制系統(tǒng)研究[D].西安:長安大學,2017.
(本文來源于《電子產(chǎn)品世界》雜志2023年2月期)
更多信息可以來這里獲取==>>電子技術應用-AET<<