基于MediaPipe的手势识别用于挖掘机遥操作控制
2022-10-27王如斌窦全礼
王如斌 窦全礼,2 张 淇 周 诚
(1.华中科技大学 土木与水利工程学院,武汉 430074;2.潍柴动力股份有限公司,潍坊 261061)
引言
挖掘机是普遍应用于土石方工程施工的工程机械之一,传统的人工操作挖掘机的方式有其局限性:一方面,挖掘机操作员在执行重复任务时处在噪声与振动环境中,需要时刻保持专注,以便进行高效的工作[6-7]; 另一方面,挖掘机通常在比较恶劣的环境下作业,有时被应用于污染土壤修复、抢险救灾等危险工况,此类情况下如采用人工现场操作挖掘机的作业方式,会对操作者的人身安全构成威胁[3],因此需要找寻一种远程、无人的作业方式。挖掘机的机器人化是现在急需解决的问题,在全自动智能挖掘机研制出来之前,通过遥操作控制挖掘机在未来相当长的一段时间内都会占有重要的地位,其中基于人机交互的遥操作方式的设计与研究也受到了广泛的关注[4]。
手势交互是一种重要的自然交互方式,因而手势识别成为人机交互的一个重要分支领域[5]。近些年来,国内外的研究机构曾成功开发了大量能够实现遥操作的设备和算法,目前存在一些将手势识别和遥操作结合的相关研究,大致可分为基于穿戴设备的手势识别[1-2]和基于视觉的手势识别[8]两大类。后者又可分为静态手势识别和动态手势识别两类,静态研究时间节点上的图像,动态识别时序图像[9]。
本文针对传统的人工现场操作挖掘机的方式与现存的挖掘机遥控方式中存在的控制精度低、复合作业程度低等缺点,提出一种基于MediaPipe机器视觉的手势识别用于挖掘机遥操作控制的方案。该遥操作方式能较好地满足挖掘机作业的需求,为挖掘机的远程控制提供了一种更人性化的人机交互形式,具有实际的应用价值和研究价值。
1 基于MediaPipe的手势识别用于挖掘机遥操作的方法框架
反铲挖掘机器人遥操作系统由单目相机、挖掘机、远程操作硬件系统和远程操作软件系统构成,如图1所示。在整个人机交互系统当中,单目相机是主要的外界信息输入设备,其通过采集数据图像并实时传输给手势识别模块,通过MediaPipe算法生成控制指令; 挖掘机作为被控制的对象,操作人员可以在工作场地或者通过外设监视器观察挖掘机的工作情况,操作挖掘机,进而对挖掘机的运动状态进行调整。
图1 交互系统示意图
主端(操作人员+单目相机+计算机)通过改变手势,能够实现控制从端(挖掘机)完成各种工作所需的动作。从端做出与预期不符的动作时,操作者能够及时调整。在熟悉数据手套操作后,挖掘机操作人员能够通过相对省力、简便的动作实现与使用操作杆同样的控制水平。
2 实验用挖掘机遥操作控制系统
2.1 工作装置结构
反铲液压挖掘机的工作装置由铲斗、铲斗液压油缸、斗杆、斗杆液压油缸、动臂、动臂液压缸和连杆机构组成,且均被铰接,通过缸体的膨胀和收缩来驱动杆,以执行挖掘过程中所需的各种动作,如图2所示。动臂、斗杆和铲斗的动作可分别进行,也可同时进行,挖掘时动作灵活、效率较高。正常挖掘机液压挖掘机在正常排气运动工作时,机体通常通过依靠三组液压缸的动力支持而分别移动。
图2 挖掘机整体结构简化图
2.2 运动学分析
(1)基本原理
采用D-H(Denavit-Hartenberg)坐标变换法[10]对实验用挖掘机模型进行运动学分析,通过对工作装置的齐次坐标变换建立工作装置运动方程。如图3,平行于关节轴建立两个标准坐标系xi-1yi-1zi-1和xiyizi,在运用D-H法建模时,有严格的固定的定义变量、参数和表示字符的方式。
图3 标准D-H法连杆坐标系
连杆参数作定义如下:
ai-1:沿着xi-1轴测量的从zi-1轴到zi轴的距离
αi-1:zi-1轴和zi轴绕xi-1轴的角
di:zi轴测量的从xi-1轴到xi轴的距离
θi:xi-1轴和xi轴绕zi轴的角
两相邻坐标变换时矩阵为:
(2-1)
右乘坐标变换矩阵的几何意义即是相邻坐标系之间的转换,故重复右乘的操作可完成多个相邻坐标系之间的转换。
(2)连杆坐标系
根据D-H坐标变换法建立挖掘机模型工作装置连杆坐标系如图4所示:
图4 挖掘机工作装置连杆坐标系简图
其中,O0为旋转中心,O1为动臂铰接点,O2为斗杆铰接点,O3为铲斗铰接点,O4为工作装置末端。
由D-H法确立各个杆件的参数如表1所示。
表1 工作装置D-H参数表
(3)运动学正解
根据坐标系变换原则,可以求出由旋转中心O0的基础坐标系表示对工作装置末端O4的位姿矩阵:
(2-2)
其中,
si=sinθi,sij=sin(θi+θj),sijk=sin(θi+θj+θk),
ci=cosθi,cij=cos(θi+θj),cijk=cos(θi+θj+θk)
3 基于 MediaPipe 的手势识别
Google基于 MediaPipe框架实现了一种全新的手部感知方法,该方法利用机器学习(ML)推断出单帧内的21 个3D 手部关键点,如图5所示,从而提供手部与手指的高保真追踪轨迹[11]。
图5 手部关键点
基于手势识别系统的搭建需要经过三步:手势检测、手势跟踪、手势识别[12],基于MediaPipe的手势识别同样包含手掌检测模型、手部关键部位模型、手势识别器三个部分。其中,手掌检测模型,用于从图像中识别手掌,定义手部边界区域; 手部关键部位模型,用于对手部边界区域检测并返回3D 手部关键点; 手势识别器,则用根据手部关键点定义并识别各种手势。手势识别系统的架构示意图如图6所示。
图6 交互系统示意图
4 手势识别和遥操作实验
4.1 实验装置与环境
手势识别和遥操作实验是在实验室中进行的,对镭速AC360型号的1∶14仿真合金液压挖掘机进行了模拟沙土挖掘的实验。挖掘机模型的几何尺寸如图7所示(单位:毫米),其可通过直流电源驱动电机与油泵,实现对实际反铲挖掘机的高度仿真。
图7 LESU AC360挖掘机模型几何尺寸
本文提出的方法是在AMD Ryzen 5 3600X 6-Core 六核CPU和Nvidia GeForce GTX 760(2 GB)的台式电脑上利用Python实现的,当然也可以在任何其他安装了Python的PC上执行,需要注意的是要有一个录像规格在1080×720、25FPS以上的摄像头。此外为定义操作指令、控制具体运行程序从而实现对挖掘机的控制,如图8、图9所示,选用主芯片为AT Mega328P(Uno)单片机的Arduino舵机控制器,其有六个可以用于PWM信号输出的接口。
图8 ATmega328P单片机
图9 Arduino舵机控制器接口
实验在两个钢制沙盘中进行,挖掘机放入右侧沙盘中间,其前方设置高于沙土面的沙土堆,以供挖掘机挖掘,示意图和实物图如图10所示。实验过程分为两个主要部分:手势识别和挖掘机控制器。
图10 沙盘示意图和实物图
4.2 静态手势识别实验
(1)手势交互设计
本系统手势交互由一只手和单目相机完成,通过单手手势的变化,可以对挖掘机器人的行走装置、工作装置进行控制。比如呈竖起大拇指状时,油泵启动; 呈大拇指和食指张开的手势“八”状时,车体前进。具体的手势设计如图11所示。
图11 手势交互设计
(2)映射过程建立
映射过程如图12所示,单目相机采集视频图像数据,连接至计算机,打开计算机应用程序上位机,就可以从中实时读取图像中包含的手势信息。由于获取的手势信息不是所需的标准输出,因此需要由servo库函数转化后变化为舵机转动指令,将所对应的控制指令发送到单片机的舵机上,控制挖掘机行走装置和工作装置的动作变换,实现机器人的姿态检测和相应的动作反应。
表2 检测置信度为0.8时各手势识别准确率
图12 手势映射过程示意图
(3)静态手势识别
为了对手势识别的准确率进行测试,首先针对静态图片进行手势识别。作者邀请5位同学表演不同的手势,记录手势时,使一只手掌处于屏幕中心,约占屏幕1/4-1/3,以确保手掌大小相似可识别。根据设计的15种手势,每位同学每种手势表演3次,得到225张手势图像。首先将图像压缩到600×600分辨率,然后利用数据增强代码,通过翻转、旋转、平移、模糊、或调亮的形式扩充数据集,最终得到4 500张手势图像。
如图13依次输入每张手势图像,输出手势识别结果并将结果和手部关键点绘制在图像上,最终统计得到检测置信度为0.8时各手势识别的混淆矩阵,如表2所示。
图13 部分静态手势图像识别输出图像
采用精确率、召回率和F1综合评价指标来评估手势识别的算法性能,得到表3,其中
TP(TruePositive):真正例,即预测为正,真实为正的部分;
FP(FalsePositive):假正例,即预测为正,真实为负的部分;
FN(FalseNegative):假负例,即预测为负,真实为正。
表3 各手势预测模型的精确率、召回率以及 F1综合评价指标
此外,为判断手部动作能否被正常识别与显示,验证手势与控制指令能否正确对应,检测并调整手指动作对应数据的上下边界,还需要对视频流下手势识别的准确度进行试验测试。在实验中依次做出图11所示的15个手势,记录计算机中的上位机显示的数据,判断是否对应了正确的识别手势名称,实验过程中静态手势识别图如图14所示。
表4 Arduino舵机串口指令
图14 静态手势识别
4.3 基于手势识别的主从操控实验
挖掘机行走装置与工作装置的运动以及单目相机识别到的手势变化之间的映射关系是本课题的核心内容。为验证本文所设计的基于手势识别控制挖掘机的系统能否正常运行,设计了基于手势识别的主从操控实验。
(1)主控端设计
在主控端,首先会由单目相机输入视频流,取每秒25帧图像进行静态手势识别,将手势信息转换为单片机的串口指令。
在静态手势识别的实验中,可以得到较为稳定的识别结果,但是,仍然存在识别错误的情况。为了消除这种偶现的错误对主从操控实验稳定性的影响,创建了一个手势缓冲器。当手势识别结果达到一定的阈值(≥0.5s),再传输到串口指令生成单元,输出控制指令。
(2)从控端设计
在挖掘机从控端,利用Arduino IDE写入Arduino程序,包含setup和loop两个主函数。在setup函数中对系统进行初始化操作后,loop函数会循环检测串口,接收并解析串口指令,控制舵机等执行对应操作驱动液压缸,实现动臂落下等动作,表4给出了部分舵机操作串口指令。
(3)通信设计
在挖掘机从控端与计算机主控端,采用蓝牙串口的形式实现双端通信。在计算机端,通过蓝牙模拟串口将手势识别得到的控制指令发送到单片机的蓝牙模块,继而控制挖掘机各部件。
(4)主从操控实验
实验时首先需要调试软硬件系统,随后在沙盘中进行了单动作控制与挖掘沙土的模拟,实验过程部分图像如图15所示。根据运动学分析,通过获取三个液压缸的行程能解算出铲斗相对于挖掘机车体的位置。因此,可以存储一个动作序列,让液压缸以一定速率伸缩一定的时间,使得铲斗依次达到不同的位置,完成的沙土挖卸动作。将某一手势映射到该动作序列指令,即可实现单手势对挖卸沙土的实现。
图15 实验过程部分图像
结果显示控制挖掘机的软件与硬件系统都能够正常运行,对于单动作控制手势识别准确、控制响应迅速,也可以采用此方法实现一个完整的沙土挖掘动作序列。
5 结论
本文的主要研究课题是基于MediaPipe的手势识别用于反铲挖掘机的遥操作控制系统,最终实现的功能是通过识别的手势控制挖掘机,能够通过手势操作使挖掘机实现一个完整的挖掘沙土的动作序列。本文设计了15种不同的手势,通过两个实验,使该系统的可行性和鲁棒性得到了验证,能够较准确地识别手势并远程控制挖掘机,为其遥操作提供了一种新型的人机交互思路。
本研究的局限在于没有在手势识别上进行更深层次的研究,手势P-ON和FORWARD的识别综合评价指标分别为90.69%和89.75%,并不理想。本研究的算法中,主要是通过判别手指的开合来分类识别手势的,在以手背面向摄像头时,就难以实现个别手势的识别。然而,通过这些手势也不能非常流畅地控制挖掘机,无法在挖掘机实际所处的复杂环境下高效施工。
未来研究的目的在于更流畅便捷地通过手势实现对挖掘机的遥操作,并实现部分自动化。本文中使用的手势识别算法、数据集、通信协议都需要做出相应的改进。虽然MediaPipe可以准确地识别出手部关键点,减小了对数据集的需求,但仍应覆盖较多的人和较复杂的手部识别背景。最好能够实现双手协作和动态的手势识别,将行走装置与工作装置的控制剥离,并对一定时序内的动态手势进行识别。