王瑜,李曉玲,陳健康
(西安航空學(xué)院機(jī)械工程學(xué)院,陜西西安 710077)
隨著社會經(jīng)濟(jì)發(fā)展,國家的基礎(chǔ)設(shè)施包括車輛、道路等增速明顯,中國道路交通需求旺盛,但全國的交警數(shù)量增速卻滯后于前者。交警是有風(fēng)險的職業(yè),其一,交警需要執(zhí)行大量勞累的執(zhí)法任務(wù);其二,因警力不足,交警工作時間長,且長時間得不到及時的休息和調(diào)整;其三,交警的工作環(huán)境較差,持續(xù)受到環(huán)境污染的侵害,如噪音、汽車尾氣等,這使得很多交警精疲力竭,疾病纏身。
為了降低交警的勞動強(qiáng)度,緩解交通壓力,國內(nèi)外學(xué)者們開展了大量相關(guān)研究工作,2019 年,北京工業(yè)大學(xué)信息學(xué)部李超軍等針對復(fù)雜動態(tài)背景下交警手勢檢測難的問題,提出了一種基于LK 光流法的優(yōu)化算法,用于交警上肢運動區(qū)域檢測[1]。2020 年,河北大學(xué)電子信息工程學(xué)院董陽等針對實際路況下自動駕駛系統(tǒng)需要從四個不同的方位面對交警的八種指揮動作進(jìn)行識別,因此利用交警人體寬度、人體高度、雙臂位置、頭部轉(zhuǎn)動、動作步數(shù)五種運動特征值對三十二種交警指揮動作建模,經(jīng)過綜合分析,實現(xiàn)交警指揮動作識別[2]。2021 年寧夏大學(xué)物理與電子電氣工程學(xué)院郭宗鑫等對預(yù)處理后的視頻序列進(jìn)行交警骨骼關(guān)節(jié)點提取,獲得骨骼關(guān)節(jié)點幀序列,并對交警骨骼關(guān)節(jié)點幀序列進(jìn)行時間特征提取及分類識別[3]。
文中設(shè)計一種基于Arduino 的手勢控制機(jī)器人,通過特定的手勢來控制仿人機(jī)器人做出交警手勢動作實現(xiàn)交通管理功能。利用“人機(jī)協(xié)作”的方式減輕交警的工作壓力,提升交警工作效率和執(zhí)法能力,緩解交通壓力[4]。該系統(tǒng)將交警所執(zhí)行的手勢進(jìn)行分析簡化,得到機(jī)器人各關(guān)節(jié)的初始數(shù)據(jù)。使用PAJ7620 手勢識別模塊檢測控制手勢,并通過ESP8266 傳輸數(shù)據(jù)。Arduino 收到手勢控制數(shù)據(jù)后,控制九路舵機(jī)使機(jī)器人做出八種交警手勢動作。
基于Arduino 的手勢控制機(jī)器人系統(tǒng)的無線數(shù)據(jù)發(fā)送端結(jié)構(gòu)圖如圖1 所示,系統(tǒng)無線數(shù)據(jù)發(fā)送端用于實現(xiàn)機(jī)器人控制手勢識別、發(fā)送等功能,主要由PAJ7620 手勢識別模塊、電源模塊、ESP8266 WiFi 模塊組成[5-7]。系統(tǒng)無線數(shù)據(jù)發(fā)送端實現(xiàn)數(shù)據(jù)發(fā)送端的硬件狀態(tài)初始化,主要包括串口初始化、WiFi 模式初始化、通信協(xié)議初始化及PAJ7620 手勢識別模塊初始化。
圖1 系統(tǒng)無線數(shù)據(jù)發(fā)送端結(jié)構(gòu)圖
基于Arduino 的手勢控制機(jī)器人系統(tǒng)無線數(shù)據(jù)接收、控制端結(jié)構(gòu)圖如圖2 所示。
圖2 系統(tǒng)無線數(shù)據(jù)接收、控制端結(jié)構(gòu)圖
系統(tǒng)無線數(shù)據(jù)接收、控制端用于實現(xiàn)機(jī)器人控制手勢接收、控制等功能,主要由Arduino UNO 開發(fā)板、電源模塊、ESP8266 WiFi 模塊、舵機(jī)控制器、九路舵機(jī)等組成[8]。系統(tǒng)無線數(shù)據(jù)接收、控制端實現(xiàn)無線數(shù)據(jù)接收、控制端的硬件狀態(tài)初始化,主要包括串口初始化、WiFi 模式初始化及通信協(xié)議初始化。系統(tǒng)上電后,根據(jù)手勢規(guī)劃獲得的數(shù)據(jù),計算相應(yīng)PWM信號占空比,輸出九路PWM 控制信號,驅(qū)動舵機(jī)旋轉(zhuǎn),實現(xiàn)控制機(jī)器人做出八種交警手勢動作。
系統(tǒng)選用PAJ7620 手勢識別模塊實現(xiàn)控制手勢識別,選用ESP8266 WiFi 模塊實現(xiàn)控制手勢數(shù)據(jù)傳輸?shù)裙δ堋AJ7620 手勢控制模塊的VCC 和GND 接線端分別連接ESP8266 WiFi 模塊的電源和地接線端[9-10];PAJ7620 手勢控 制模塊 的SCL 接線端連接ESP8266 WiFi 模塊的GPIO5 接線端;PAJ7620 手 勢控制模塊的SDA 接線端連接ESP8266 WiFi 模塊的GPIO4 接線端。
系統(tǒng)選用Arduino UNO 作為控制核心,Arduino UNO、ESP8266 WiFi 模塊、舵機(jī)控制器、九路舵機(jī)的連接電路圖如圖3 所示[11]。
圖3 Arduino UNO、ESP8266 WiFi模塊、舵機(jī)控制器、九路舵機(jī)的連接電路圖
Arduino UNO 的D4 接線端和ESP8266 開發(fā)板的GPIO3 相 連;Arduino UNO 的D3 接線端 和ESP8266開發(fā)板的GPIO1 相連;Arduino UNO 開發(fā)板的TX 接線端和舵機(jī)控制器的RX1 接線端相連;Arduino UNO開發(fā)板的RX 接線端和舵機(jī)控制器的TX1 接線端相連;Arduino UNO 的GND 接線端和ESP8266 開發(fā)板的GND 接線端相連[12];九路舵機(jī)的5 V 接線端和舵機(jī)控制器的5 V 接線端相連;九路舵機(jī)的GND 接線端和舵機(jī)控制器的GND 接線端相連;九路舵機(jī)的PWM接線端分別和舵機(jī)控制器對應(yīng)的PWM 接線端相連。
系統(tǒng)基于仿生學(xué)原理,先分析交警執(zhí)行手勢的姿勢特征,得到關(guān)節(jié)的角度變化,并將獲取的姿勢特征數(shù)據(jù)用在交警機(jī)器人的關(guān)節(jié)轉(zhuǎn)角中。根據(jù)交警執(zhí)行的手勢動作,系統(tǒng)主要分為左轉(zhuǎn)彎、右轉(zhuǎn)彎、直行、停止等八個模塊[13]。
系統(tǒng)無線數(shù)據(jù)發(fā)送端實現(xiàn)數(shù)據(jù)發(fā)送端的硬件狀態(tài)初始化,主要包括PAJ7620 手勢識別模塊初始化等。系統(tǒng)無線數(shù)據(jù)發(fā)送端程序流程圖如圖4 所示。系統(tǒng)初始化后,判斷PAJ7620 手勢識別模塊是否初始化成功,初始化成功后,利用PAJ7620 手勢識別模塊讀取手勢數(shù)據(jù),并判斷機(jī)器人執(zhí)行哪種交警手勢,通過ESP8266 WiFi模塊將機(jī)器人手勢控制數(shù)據(jù)發(fā)送到數(shù)據(jù)接收、控制端。
圖4 系統(tǒng)無線數(shù)據(jù)發(fā)送端程序流程圖
系統(tǒng)無線數(shù)據(jù)接收、控制端實現(xiàn)數(shù)據(jù)接收、控制端的硬件狀態(tài)初始化,主要包括串口初始化、WiFi 模式初始化、舵機(jī)控制板初始化、舵機(jī)角度初始化等。系統(tǒng)無線數(shù)據(jù)接收、控制端程序流程圖如圖5 所示。系統(tǒng)初始化后,判斷無線數(shù)據(jù)接收、控制端是否成功讀取數(shù)據(jù),讀取數(shù)據(jù)成功后,判斷機(jī)器人執(zhí)行哪種交警手勢,并計算相應(yīng)PWM 信號占空比,輸出九路PWM 控制信號,驅(qū)動舵機(jī)旋轉(zhuǎn),完成規(guī)定的交警手勢動作[14-16]。機(jī)器人完成的交警手勢包括直行、停止、左轉(zhuǎn) 彎、右轉(zhuǎn)彎等八種交警手勢動作,手勢控制對照表如表1 所示。
表1 手勢控制對照表
圖5 系統(tǒng)無線數(shù)據(jù)接收、控制端程序流程圖
系統(tǒng)上電后,首先進(jìn)行初始化,機(jī)器人呈現(xiàn)上身筆直、手臂下垂、頭部正視的默認(rèn)狀態(tài),接著執(zhí)行機(jī)器人交警手勢子程序,然后判斷是否執(zhí)行新的交警手勢,如果執(zhí)行新的交警手勢,控制舵機(jī)旋轉(zhuǎn);否則等待讀取數(shù)據(jù)。機(jī)器人交警手勢子程序流程圖如圖6 所示。
圖6 機(jī)器人交警手勢子程序流程圖
交警機(jī)器人根據(jù)控制者的手勢而做出不同的動作,控制者以遠(yuǎn)程遙控的方式控制機(jī)器人做出左轉(zhuǎn)彎、右轉(zhuǎn)彎、直行、停止等八種交警手勢動作。機(jī)器人的測試過程分為關(guān)節(jié)測試和整機(jī)測試,并通過測試調(diào)整優(yōu)化初始姿態(tài),以實現(xiàn)機(jī)器人良好的執(zhí)行交警手勢。機(jī)器人底層板上安裝電路板,上身支架上安裝兩條手臂和頭部,關(guān)節(jié)之間用舵機(jī)進(jìn)行連接[17]。
關(guān)節(jié)測試時,首先進(jìn)行單關(guān)節(jié)測試,接著進(jìn)行關(guān)節(jié)組合測試。單關(guān)節(jié)測試數(shù)據(jù)如表2 所示。表2 中的數(shù)據(jù)說明機(jī)器人關(guān)節(jié)的機(jī)械結(jié)構(gòu)均正常工作,軟件正常運行,控制效果良好。關(guān)節(jié)組合測試實現(xiàn)通過九個關(guān)節(jié)舵機(jī)協(xié)調(diào)運轉(zhuǎn),機(jī)器人成功做出交警手勢,例如機(jī)器人在默認(rèn)狀態(tài)下開始執(zhí)行左轉(zhuǎn)彎動作。首先在程序中寫入左轉(zhuǎn)彎手勢動作數(shù)據(jù),再基于實際效果對數(shù)據(jù)進(jìn)行優(yōu)化,使機(jī)器人做出左轉(zhuǎn)彎對應(yīng)的交警手勢。
表2 單關(guān)節(jié)測試數(shù)據(jù)
通過單關(guān)節(jié)測試和關(guān)節(jié)組合測試,機(jī)器人可以做出交警手勢動作,接著通過反復(fù)整機(jī)測試,尋找最適合機(jī)器人執(zhí)行優(yōu)化動作的舵機(jī)角度數(shù)據(jù),使機(jī)器人執(zhí)行交警手勢美觀。優(yōu)化的機(jī)器人執(zhí)行直行手勢時舵機(jī)轉(zhuǎn)角如表3 所示。
表3 優(yōu)化的機(jī)器人執(zhí)行直行手勢時舵機(jī)轉(zhuǎn)角
文中設(shè)計了一種基于Arduino 的手勢控制機(jī)器人。系統(tǒng)無線數(shù)據(jù)發(fā)送端通過PAJ7620 手勢識別模塊識別控制手勢,利用ESP8266 WiFi 模塊發(fā)送控制手勢數(shù)據(jù)。系統(tǒng)無線數(shù)據(jù)接收、控制端通過ESP8266 WiFi 模塊根據(jù)接收的控制手勢數(shù)據(jù),判斷機(jī)器人需要執(zhí)行的交警手勢,按照手勢規(guī)劃的數(shù)據(jù),計算相應(yīng)PWM 信號占空比,輸出九路PWM 控制信號,控制舵機(jī)旋轉(zhuǎn),實現(xiàn)機(jī)器人根據(jù)控制手勢做出八種交警手勢動作的功能,緩解交警的工作壓力。