王瑜,李曉玲,陳健康
(西安航空學院機械工程學院,陜西西安 710077)
隨著社會經濟發展,國家的基礎設施包括車輛、道路等增速明顯,中國道路交通需求旺盛,但全國的交警數量增速卻滯后于前者。交警是有風險的職業,其一,交警需要執行大量勞累的執法任務;其二,因警力不足,交警工作時間長,且長時間得不到及時的休息和調整;其三,交警的工作環境較差,持續受到環境污染的侵害,如噪音、汽車尾氣等,這使得很多交警精疲力竭,疾病纏身。
為了降低交警的勞動強度,緩解交通壓力,國內外學者們開展了大量相關研究工作,2019 年,北京工業大學信息學部李超軍等針對復雜動態背景下交警手勢檢測難的問題,提出了一種基于LK 光流法的優化算法,用于交警上肢運動區域檢測[1]。2020 年,河北大學電子信息工程學院董陽等針對實際路況下自動駕駛系統需要從四個不同的方位面對交警的八種指揮動作進行識別,因此利用交警人體寬度、人體高度、雙臂位置、頭部轉動、動作步數五種運動特征值對三十二種交警指揮動作建模,經過綜合分析,實現交警指揮動作識別[2]。2021 年寧夏大學物理與電子電氣工程學院郭宗鑫等對預處理后的視頻序列進行交警骨骼關節點提取,獲得骨骼關節點幀序列,并對交警骨骼關節點幀序列進行時間特征提取及分類識別[3]。
文中設計一種基于Arduino 的手勢控制機器人,通過特定的手勢來控制仿人機器人做出交警手勢動作實現交通管理功能。利用“人機協作”的方式減輕交警的工作壓力,提升交警工作效率和執法能力,緩解交通壓力[4]。該系統將交警所執行的手勢進行分析簡化,得到機器人各關節的初始數據。使用PAJ7620 手勢識別模塊檢測控制手勢,并通過ESP8266 傳輸數據。Arduino 收到手勢控制數據后,控制九路舵機使機器人做出八種交警手勢動作。
基于Arduino 的手勢控制機器人系統的無線數據發送端結構圖如圖1 所示,系統無線數據發送端用于實現機器人控制手勢識別、發送等功能,主要由PAJ7620 手勢識別模塊、電源模塊、ESP8266 WiFi 模塊組成[5-7]。系統無線數據發送端實現數據發送端的硬件狀態初始化,主要包括串口初始化、WiFi 模式初始化、通信協議初始化及PAJ7620 手勢識別模塊初始化。

圖1 系統無線數據發送端結構圖
基于Arduino 的手勢控制機器人系統無線數據接收、控制端結構圖如圖2 所示。

圖2 系統無線數據接收、控制端結構圖
系統無線數據接收、控制端用于實現機器人控制手勢接收、控制等功能,主要由Arduino UNO 開發板、電源模塊、ESP8266 WiFi 模塊、舵機控制器、九路舵機等組成[8]。系統無線數據接收、控制端實現無線數據接收、控制端的硬件狀態初始化,主要包括串口初始化、WiFi 模式初始化及通信協議初始化。系統上電后,根據手勢規劃獲得的數據,計算相應PWM信號占空比,輸出九路PWM 控制信號,驅動舵機旋轉,實現控制機器人做出八種交警手勢動作。
系統選用PAJ7620 手勢識別模塊實現控制手勢識別,選用ESP8266 WiFi 模塊實現控制手勢數據傳輸等功能。PAJ7620 手勢控制模塊的VCC 和GND 接線端分別連接ESP8266 WiFi 模塊的電源和地接線端[9-10];PAJ7620 手勢控 制模塊 的SCL 接線端連接ESP8266 WiFi 模塊的GPIO5 接線端;PAJ7620 手 勢控制模塊的SDA 接線端連接ESP8266 WiFi 模塊的GPIO4 接線端。
系統選用Arduino UNO 作為控制核心,Arduino UNO、ESP8266 WiFi 模塊、舵機控制器、九路舵機的連接電路圖如圖3 所示[11]。

圖3 Arduino UNO、ESP8266 WiFi模塊、舵機控制器、九路舵機的連接電路圖
Arduino UNO 的D4 接線端和ESP8266 開發板的GPIO3 相 連;Arduino UNO 的D3 接線端 和ESP8266開發板的GPIO1 相連;Arduino UNO 開發板的TX 接線端和舵機控制器的RX1 接線端相連;Arduino UNO開發板的RX 接線端和舵機控制器的TX1 接線端相連;Arduino UNO 的GND 接線端和ESP8266 開發板的GND 接線端相連[12];九路舵機的5 V 接線端和舵機控制器的5 V 接線端相連;九路舵機的GND 接線端和舵機控制器的GND 接線端相連;九路舵機的PWM接線端分別和舵機控制器對應的PWM 接線端相連。
系統基于仿生學原理,先分析交警執行手勢的姿勢特征,得到關節的角度變化,并將獲取的姿勢特征數據用在交警機器人的關節轉角中。根據交警執行的手勢動作,系統主要分為左轉彎、右轉彎、直行、停止等八個模塊[13]。
系統無線數據發送端實現數據發送端的硬件狀態初始化,主要包括PAJ7620 手勢識別模塊初始化等。系統無線數據發送端程序流程圖如圖4 所示。系統初始化后,判斷PAJ7620 手勢識別模塊是否初始化成功,初始化成功后,利用PAJ7620 手勢識別模塊讀取手勢數據,并判斷機器人執行哪種交警手勢,通過ESP8266 WiFi模塊將機器人手勢控制數據發送到數據接收、控制端。

圖4 系統無線數據發送端程序流程圖
系統無線數據接收、控制端實現數據接收、控制端的硬件狀態初始化,主要包括串口初始化、WiFi 模式初始化、舵機控制板初始化、舵機角度初始化等。系統無線數據接收、控制端程序流程圖如圖5 所示。系統初始化后,判斷無線數據接收、控制端是否成功讀取數據,讀取數據成功后,判斷機器人執行哪種交警手勢,并計算相應PWM 信號占空比,輸出九路PWM 控制信號,驅動舵機旋轉,完成規定的交警手勢動作[14-16]。機器人完成的交警手勢包括直行、停止、左轉 彎、右轉彎等八種交警手勢動作,手勢控制對照表如表1 所示。

表1 手勢控制對照表

圖5 系統無線數據接收、控制端程序流程圖
系統上電后,首先進行初始化,機器人呈現上身筆直、手臂下垂、頭部正視的默認狀態,接著執行機器人交警手勢子程序,然后判斷是否執行新的交警手勢,如果執行新的交警手勢,控制舵機旋轉;否則等待讀取數據。機器人交警手勢子程序流程圖如圖6 所示。

圖6 機器人交警手勢子程序流程圖
交警機器人根據控制者的手勢而做出不同的動作,控制者以遠程遙控的方式控制機器人做出左轉彎、右轉彎、直行、停止等八種交警手勢動作。機器人的測試過程分為關節測試和整機測試,并通過測試調整優化初始姿態,以實現機器人良好的執行交警手勢。機器人底層板上安裝電路板,上身支架上安裝兩條手臂和頭部,關節之間用舵機進行連接[17]。
關節測試時,首先進行單關節測試,接著進行關節組合測試。單關節測試數據如表2 所示。表2 中的數據說明機器人關節的機械結構均正常工作,軟件正常運行,控制效果良好。關節組合測試實現通過九個關節舵機協調運轉,機器人成功做出交警手勢,例如機器人在默認狀態下開始執行左轉彎動作。首先在程序中寫入左轉彎手勢動作數據,再基于實際效果對數據進行優化,使機器人做出左轉彎對應的交警手勢。

表2 單關節測試數據
通過單關節測試和關節組合測試,機器人可以做出交警手勢動作,接著通過反復整機測試,尋找最適合機器人執行優化動作的舵機角度數據,使機器人執行交警手勢美觀。優化的機器人執行直行手勢時舵機轉角如表3 所示。

表3 優化的機器人執行直行手勢時舵機轉角
文中設計了一種基于Arduino 的手勢控制機器人。系統無線數據發送端通過PAJ7620 手勢識別模塊識別控制手勢,利用ESP8266 WiFi 模塊發送控制手勢數據。系統無線數據接收、控制端通過ESP8266 WiFi 模塊根據接收的控制手勢數據,判斷機器人需要執行的交警手勢,按照手勢規劃的數據,計算相應PWM 信號占空比,輸出九路PWM 控制信號,控制舵機旋轉,實現機器人根據控制手勢做出八種交警手勢動作的功能,緩解交警的工作壓力。