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