王瑜,李晓玲,陈健康
(西安航空学院机械工程学院,陕西西安 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 控制信号,控制舵机旋转,实现机器人根据控制手势做出八种交警手势动作的功能,缓解交警的工作压力。