CN110275610A - 一种基于LeapMotion体感控制器的协同手势控制采煤仿真控制方法 - Google Patents

一种基于LeapMotion体感控制器的协同手势控制采煤仿真控制方法 Download PDF

Info

Publication number
CN110275610A
CN110275610A CN201910443450.0A CN201910443450A CN110275610A CN 110275610 A CN110275610 A CN 110275610A CN 201910443450 A CN201910443450 A CN 201910443450A CN 110275610 A CN110275610 A CN 110275610A
Authority
CN
China
Prior art keywords
gesture
control
function
server
user
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201910443450.0A
Other languages
English (en)
Other versions
CN110275610B (zh
Inventor
彭延军
司潇
彭海欣
王元红
卢新明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong University of Science and Technology
Original Assignee
Shandong University of Science and Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shandong University of Science and Technology filed Critical Shandong University of Science and Technology
Priority to CN201910443450.0A priority Critical patent/CN110275610B/zh
Publication of CN110275610A publication Critical patent/CN110275610A/zh
Application granted granted Critical
Publication of CN110275610B publication Critical patent/CN110275610B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/017Gesture based interaction, e.g. based on a set of recognized hand gestures
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

本发明公开了一种基于LeapMotion体感控制器的协同手势控制采煤仿真控制方法,属于多人协同手势控制采煤仿真控制技术领域。本发明在导入采煤设备与场景的三维虚拟场景的基础上,设计采煤设备的控制手势,利用LeapMotion传感器实时获取手势数据,并进行手势识别,实现单人手势操控采煤仿真控制;采用C/S模式,并利用RPC协议和状态同步策略,实现多用户多终端联机协同手势仿真控制采煤设备的协同运作。本发明应用于采煤设备的手势操控和多人网络协同操作仿真控制,极大提高了原有采煤生产仿真控制效率,方便用户仿真模拟采煤设备操控,为以后智慧矿山中智能装备的研究提供了技术基础。

Description

一种基于LeapMotion体感控制器的协同手势控制采煤仿真控 制方法
技术领域
本发明属于多人协同手势控制采煤仿真控制技术领域,具体涉及一种基于LeapMotion体感控制器的协同手势控制采煤仿真控制方法。
背景技术
采煤工作因在地下作业,具有作业空间狭小、视觉环境差、机械设备多等特点,安全事故频发。虚拟现实技术借助计算机等辅助设备载体生产逼真的三维画面,创建虚拟三维场景来模拟真实场景供用户体验与交互。随着虚拟现实技术的发展,更多的运用到煤矿开采行业,为智慧矿山的研究提供了技术基础。然而,现在采煤仿真控制系统只局限于单人简单操控,缺乏手势操控的自然化、人性化,也不能满足多人协同控制,不符合实际的工作情况。
发明内容
针对现有技术中存在的上述技术问题,本发明提出了一种基于LeapMotion体感控制器的协同手势控制采煤仿真控制方法,设计合理,克服了现有技术的不足,具有良好的效果。
为了实现上述目的,本发明采用如下技术方案:
一种基于LeapMotion体感控制器的协同手势控制采煤仿真控制方法,采用Hands.Count、FingerType、FingerCount函数完成手势识别,采用InitializeServer、TextField函数创建服务器端Server、客户端Client并实现互连,采用Instantiate、Spawn函数实现虚拟场景的网络化同步,采用SpawnWithClientAuthority、OnStartAuthority、CmdMoveShearer函数实现协同手势控制采煤设备,采用Serialize、Deserialize、isWriting函数实现序列化反序列化,采用SceneSyn函数实现同步变量的最新数据自动同步到各客户端,包括以下步骤:
步骤1:基于LeapMotion,设计采煤设备的控制手势并进行识别;
分析各采煤设备功能,设计各自对应的控制手势;分析各手势特征,获取手掌运动追踪数据,通过实时获取手上各点三维坐标数据,完成手势识别;
步骤2:实现单人手势操控采煤仿真控制;
用户单人操作,通过键盘W、A、S、D键控制场景内相机移动实现场景漫游,设计的控制手势为:单手展开左右挥手、上下挥手、食指正反转画圈、数字手势控制采煤机左右行、摇臂升降、滚筒正反转和牵引速度;左手握拳右手展开前后挥动、双手展开上下挥动、双手握拳向前手势控制液压支架收伸护帮板、升降柱和向前牵引;单手握拳前后左右移动、双手握拳上下挥动、左手握拳右手展开上下挥动手势控制铲运机前进倒车左右转、力臂抬放、铲斗上翻下放,实现单人手势操控采煤仿真控制;
步骤3:实现虚拟场景的网络化;
采用C/S模式以及授权服务器方案,在同一局域网中通过IP地址和端口号匹配完成虚拟场景服务器端与客户端的授权与分配,实现不同客户端与服务端同一场景的实时同步漫游,实现虚拟场景的网络化;
步骤4:实现多人多终端协同手势控制和采煤仿真控制;
多用户在不同客户端连接服务器,通过各客户端的LeapMotion,协同手势控制同一个虚拟场景,实现不同用户分别控制采煤机、液压支架的协同运作完成采煤工作;多台铲运机协同完成运煤工作。
优选地,在步骤1中,控制手势包括单手手势和双手手势;单手手势和双手手势分别包括静态手势和动态手势;其中,数字手势控制牵引速度为单手静态手势;左右挥动、画圈手势控制左右牵引、正反转动为单手动态手势;双手事指交叉手势控制设备紧急停止为双手静态手势;双手展开上下挥动、双手握拳上下挥动手势控制升降柱、力臂抬放为双手动态手势。
优选地,在步骤1中,完成手势识别的具体步骤如下:
步骤1.1:通过Hands.Count函数获得当前视野中手的个数,判断当前手的个数为一只还是两只;
若:判断结果是当前手的个数为一只,则执行步骤1.2;
或判断结果是当前手的个数为两只,则执行步骤1.3;
步骤1.2:单手手势识别;
获取手掌在x、y、z方向上的速度PalmVelocity.x、PalmVelocity.y、PalmVelocity.z,根据公式(1)求出手掌掌心速度PalmVelocity:
通过比较当前帧中手掌掌心速度PalmVelocity和设置的最小移动速度smallestVelocity,判断手势状态;
若:判断结果是掌心速度小于最小移动速度,则手势为静态,执行步骤1.2.1;
或判断结果是掌心速度大于或者等于最小移动速度,则手势为动态,执行步骤1.2.2;
步骤1.2.1:判断当前是否有手指伸出,通过判断出哪几根手指伸出,实现包括单手静态手势张开、数字手势和握拳在内的单手静态手势的识别;
具体为:获取指尖坐标TipPosition(x1,y1,z1)、掌心坐标PalmPosition(x2,y2,z2),根据公式(2)求出指尖与掌心的距离distance:
获取手指向量手掌法向量根据公式(3)求出手指与手掌法向量角度θ:
当指尖与掌心距离distance大于最大距离MaxDistance并且手指与手掌法向量角度θ为90°时,则判定该手指伸出,然后通过FingerType函数获取伸出手指的名称,通过FingerCount函数确定伸出手指的个数,通过添加手势识别判断条件,识别出张开、数字手势;否则判定当前无手指伸出,则识别出握拳手势;
步骤1.2.2:通过判断手掌或手指运动情况,实现包括单手动态手势前后左右挥动、单指画圈在内的单手动态手势的识别;
具体为:获取手掌在x、y、z方向上的速度PalmVelocity.x、PalmVelocity.y、PalmVelocity.z,得到手掌的包括运动方向、速度在内的具体运动状态,添加手势的识别判断条件,实现单手动态手势的识别;
步骤1.3:双手手势识别;
通过IsLeft、IsRight函数分别识别出左手、右手,添加左手、右手同时识别判断条件,实现双手手势识别。
优选地,设置的最小移动速度smallestVelocity取0.4mm/s,最大距离MaxDistance取100mm。
优选地,在步骤3中,具体包括如下步骤:
步骤3.1:创建服务器端Server、客户端Client,使它们互连;
采用C/S模式,多用户在同一局域网中,选择界面中的“Sever”按钮作为服务器端,选择界面中的按钮“Client”作为客户端,服务器端通过InitializeServer函数创建服务器,并在网内广播其IP地址和指定端口号;客户端用户输入服务器端IP地址和指定端口号,通过TextField函数获取用户输入的信息,并通过Connect函数完成匹配,实现客户端与服务器端连接;
步骤3.2:实现虚拟场景的网络化同步;
为虚拟场景中物体创建各自的预制件并在网络管理器上进行注册,分配各自的身份标识net ID,然后通过Instantiate函数使预制件在服务器上实例化为网络物体,当服务器创建后在本地生成一个网络物体的同时,所有连接的客户端触发连接到服务器的事件OnConnectedToServer,并通过Spawn函数派生相同net ID的物体,同时建立物体对象之间的通信关系,实现采煤仿真控制场景的网络化同步;
步骤3.3:实现多用户在虚拟场景中同步漫游;
多用户联入同一局域网后,服务器为每个终端生成一个工人Worker,用户通过键盘W、A、S、D键控制工人行走,通过FollowCamera函数将工人绑定为主像机的追踪目标,设置主像机始终位于距离工人模型2.9m远、1m高的位置,使用户界面始终为第三人称视角跟随本地工人行走变动;利用远程过程调用协议,将用户控制本地工人移动操作同步给所有联网的其他终端设备,当服务器端用户控制工人移动,服务器端程序响应,并给客户端程序发送消息作出相同响应;当客户端用户控制工人移动,客户端发送消息到服务器更新位置方向,服务器将新数据反序列化到所有客户端,实现多用户在虚拟场景中同步漫游,用户通过漫游能够近距离观察各采煤设备的构造和协同运行状况。
优选地,将采煤仿真控制场景基于3D谷歌纸盒眼镜Google Carboard开发,打包安卓APK文件安装到手机上,使移动终端用户与服务器连接,通过佩戴Google Carboard,结合手机能够看到更真实的立体虚拟场景,同时通过LeapMotion完成控制操作,给用户沉浸式的虚拟现实体验。
优选地,在步骤4中,通过完成协同手势控制和运行状态同步两个步骤,实现多人多终端协同手势仿真控制采煤设备的协同运作,具体包括如下步骤:
步骤4.1:实现协同手势控制,具体包括如下步骤:
步骤4.1.1:客户端授权;
用户在客户端获得网络物体权限手势控制物体,通过SpawnWithClientAuthority函数派生该物体并传入网络连接,在客户端物体控制权限属性hasAuthority为true、控制对象标识符playerControllerID为-1,客户端调用OnStartAuthority函数发起控制这个物体的命令;
步骤4.1.2:协同控制采煤机、液压支架;
用户1手势控制采煤机,使用远程过程调用协议向服务器发送控制请求,发送模式选择只向服务器发送,在服务器端,为相关手势控制采煤机的方法MoveShearer添加[Command]指令,方法名改为CmdMoveShearer;
用户2手势控制液压支架,为相关控制液压支架的方法MoveZhijia同样添加[Command]指令,客户端远程调用[Command]指令下的控制函数,使其在服务器端运行;不同用户在不同终端,通过isLocal函数使当前终端只能控制本地派生的一个网络物体,实现不同用户在不同终端对采煤机、综采支架的协同控制;
步骤4.1.3:协同控制多台铲运机;
不同用户协同控制多台铲运机;
步骤4.2:实现运行状态同步,具体包括如下步骤:
步骤4.2.1:参数传递;
利用远程过程调用协议从远程计算机程序上进行函数调用,将重要参数通过网络传递给其他所有联网的终端设备,发送模式选择发送给除自己之外的每个终端,重要参数包括采煤机Vector3类型的位置坐标、float类型的速度值、Vector3类型的齿轮旋转轴坐标,综采支架Vector3类型的位置坐标、Vector3类型的支柱升降移动坐标,实现采煤机和综采支架的运行状态同步;
步骤4.2.2:序列化和反序列化;
使用远程过程调用协议传递过多参数增加网络占用,多台铲运机采用序列化、反序列化进行网络数据同步,序列化是指通过Serialize函数将铲运机的实时信息存储到信息类然后写入字节流,然后反序列化,反序列化是指通过Deserialize函数读取字节流还原所有数据,同步数据以字节数组的形式传输,其中特殊数据类型Vector3先转换为字符串形式再进行序列化;多用户终端通过isWriting函数判断本地是否写入,用户通过手势控制铲运机时处于写入状态进行序列化,其他终端处于读取状态进行反序列化;
步骤4.2.3:同步变量;
仅服务器授权的物体,通过[SyncVar]标签把相关成员变量配置成同步变量,使用hook指定函数SceneSyn,当变量发生改变,服务器调用指定函数,并自动发送同步变量的最新数据到各客户端,实现场景的动态同步。
优选地,在同一局域网中,同一时间内只允许一个终端创建服务器,通过InitializeServer函数创建服务器时更改设置允许连入的客户端数目,实现两人到更多人的网络协同。
本发明所带来的有益技术效果:
(1)本发明应用虚拟现实技术模拟采煤仿真控制场景,添加设备声音及运动效果等,致力于还原真实场景,结合Google Carboard给用户沉浸式的虚拟现实体验。
(2)本发明分析设计自然化、人性化的采煤设备控制手势,借助LeapMotion传感器使用户摆脱传统的输入方式,通过手势就可以操控采煤设备。
(3)本发明还利用RPC协议和状态同步策略实现场景的网络化以及多人联机协同操控,弥补了相关的技术需求,方便用户仿真模拟采煤设备操控,极大提高了原有采煤生产仿真控制效率。
附图说明
图1为本发明方法的流程图。
图2(a)为本发明单手手势识别方法的流程图。
图2(b)为本发明双手手势识别方法的流程图。
图3为本发明手势识别效果图。
图4为本发明整体网络结构示意图。
图5为本发明多人协同手势控制采煤仿真实现的原理图。
图6为本发明多人协同控制采煤机、液压支架示意图。
具体实施方式
下面结合附图以及具体实施方式对本发明作进一步详细说明:
一种基于LeapMotion体感控制器的协同手势控制采煤仿真控制方法,其流程如图1所示,包括以下步骤:
步骤1:导入采煤仿真控制虚拟场景,分析各采煤设备功能设计各自对应的控制手势,包括单手手势、双手手势,分别包括静态手势和动态手势,其中单手静态手势如数字手势控制牵引速度;单手动态手势如左右挥动、画圈手势控制左右牵引、正反转动;双手静态手势如双手事指交叉手势控制设备紧急停止;双手动态手势如双手展开上下挥动、双手握拳上下挥动手势控制升降柱、力臂抬放。
通过LeapMotion传感器获取手掌运动追踪数据,利用深度数据帧完成手势识别方法的设计并进行识别,单手、双手手势识别方法的流程分别如图2(a)、图2(b)所示,具体流程如下:
步骤1.1:通过Hands.Count函数获得当前视野中手的个数,判断当前手的个数是否为一只或者两只;
若:判断结果是当前手的个数为一只,则执行步骤1.2;
或判断结果是当前手的个数为两只,则执行步骤1.3;
步骤1.2:单手手势识别;
获取手掌在x、y、z方向上的速度PalmVelocity.x、PalmVelocity.y、PalmVelocity.z,根据公式(1)求出手掌掌心速度PalmVelocity:
通过比较当前帧中手掌掌心速度PalmVelocity和设置的最小移动速度smallestVelocity,判断手势状态;
若:判断结果是掌心速度小于最小移动速度,则手势为静态,执行步骤1.2.1;
或判断结果是掌心速度大于或者等于最小移动速度,则手势为动态,执行步骤1.2.2;
步骤1.2.1:判断当前是否有手指伸出,通过判断出哪几根手指伸出,实现包括单手静态手势张开、数字手势和握拳在内的单手静态手势的识别;
具体为:获取指尖坐标TipPosition(x1,y1,z1)、掌心坐标PalmPosition(x2,y2,z2),根据公式(2)求出指尖与掌心的距离distance:
获取手指向量手掌法向量根据公式(3)求出手指与手掌法向量角度θ:
当指尖与掌心距离distance大于最大距离MaxDistance并且手指与手掌法向量角度θ为90°时,则判定该手指伸出,然后通过FingerType函数获取伸出手指的名称,通过FingerCount函数确定伸出手指的个数,通过添加手势识别判断条件,识别出张开、数字手势;否则判定当前无手指伸出,则识别出握拳手势;
步骤1.2.2:通过判断手掌或手指运动情况,实现包括单手动态手势前后左右挥动、单指画圈在内的单手动态手势的识别;
具体为:获取手掌在x、y、z方向上的速度PalmVelocity.x、PalmVelocity.y、PalmVelocity.z,得到手掌的包括运动方向、速度在内的具体运动状态,添加手势的识别判断条件,实现单手动态手势的识别;
步骤1.3:双手手势识别;
通过IsLeft、IsRight函数分别识别出左手、右手,左右手分别返回步骤1.2完成单手手势识别,再添加左右手同时识别判断条件,如左手握拳右手向后挥动手势确定左手没有手指伸出同时右手PalmVelocity.z小于smallestVelocity的负值,实现双手手势识别。本发明部分手势识别效果如图3所示。
步骤2:用户单人操作,通过键盘W、A、S、D键控制场景内相机移动实现场景漫游,通过设计的控制手势可操控采煤机摇臂升降、液压支架收伸护帮板以及铲运机前进倒车等一系列设备运行。控制手势及对应功能如表1所示:
步骤3:采用C/S模式以及授权服务器方案,在同一局域网中通过IP地址和端口号匹配完成虚拟场景服务器端与客户端的授权与分配,实现不同客户端与服务端同一场景的实时同步漫游,整体网络结构如图4所示,具体流程如下:
步骤3.1:采用C/S模式,多用户在同一局域网中,通过点击界面中的按钮“Sever”或“Client”选择作为服务器端或客户端,服务器端通过InitializeServer函数创建服务器,并在网内广播其IP地址和指定端口号;客户端用户输入服务器端IP地址和端口号,通过TextField函数获取用户输入的信息,并通过Connect(服务器IP,服务器端口)函数完成匹配,实现客户端与服务器端连接;
步骤3.2:为虚拟场景中物体创建各自的预制件并在网络管理器上注册,分配各自的身份标识net ID,然后通过Instantiate函数使预制件在服务器上实例化为网络物体,当服务器创建后在本地生成一个网络物体的同时,所有连接的客户端触发连接到服务器的事件OnConnectedToServer,并通过Spawn函数派生相同net ID的物体,同时建立物体对象之间的通信关系,实现采煤仿真控制场景的网络化同步;
步骤3.3:多用户联入同一局域网后,服务器为每个终端生成一个工人Worker,用户通过键盘W、A、S、D键控制工人行走,通过FollowCamera函数将工人绑定为主像机的追踪目标,设置主像机始终位于距离工人模型2.9m远、1m高的位置,使用户界面始终为第三人称视角跟随本地工人行走变动;利用RPC(Remote Procedure Call)远程过程调用协议,将用户控制本地工人移动操作同步给所有联网的其他终端设备,当服务器端用户控制工人移动,服务器端程序响应,并给客户端程序发送消息作出相同响应;当客户端用户控制工人移动,客户端发送消息到服务器更新位置方向,服务器将新数据反序列化到所有客户端,实现多用户在虚拟场景中同步漫游,用户通过漫游可近距离观察各采煤设备的构造和协同运行状况。
将采煤仿真控制场景基于3D谷歌纸盒眼镜Google Carboard开发,打包安卓APK文件安装到手机,移动终端用户连接服务器,通过佩戴Google Carboard结合手机可以看到更真实的立体虚拟场景,同时通过LeapMotion完成控制操作,给用户沉浸式的虚拟现实体验。
步骤4:多用户在不同客户端连接服务器,通过各客户端的LeapMotion协同手势控制同一虚拟场景,不同用户分别控制采煤机、液压支架的协同运作完成采煤工作;多台铲运机协同完成运煤工作,主要包括协同手势控制和运行状态同步,如图5所示,具体流程如下:
步骤4.1:实现协同手势控制,具体包括如下步骤:
步骤4.1.1:用户在客户端获得网络物体权限手势控制物体,通过SpawnWithClientAuthority函数派生该物体并传入网络连接,在客户端物体控制权限属性hasAuthority为true、控制对象标识符playerControllerID为-1,客户端调用OnStartAuthority函数发起控制这个物体的命令;
步骤4.1.2:多用户联机协同控制采煤机、液压支架,用户1手势控制采煤机,使用RPC向服务器发送控制请求,发送模式RPCMode选择只向服务器发送,在服务器端,为相关手势控制采煤机的方法MoveShearer添加[Command]指令,方法名改为CmdMoveShearer,用户2手势控制液压支架,为相关控制液压支架的方法MoveZhijia同样添加[Command]指令,方法名改为CmdMoveZhijia,当客户端远程调用[Command]指令下的控制函数在服务器端运行;不同用户在不同终端,通过isLocal函数使当前终端只能控制本地派生的一个网络物体,实现不同用户在不同终端对采煤机、综采支架的协同控制如图6所示;
步骤4.1.3:不同用户协同控制多台铲运机原理同上;
步骤4.2:实现运行状态同步,具体包括如下步骤:
步骤4.2.1:利用RPC协议远程函数调用请求服务,可将重要参数通过网络传递给其他所有联网的终端设备,发送模式RPCMode选择发送给除自己之外的每个终端,重要参数包括采煤机Vector3类型的位置坐标、float类型的速度值、Vector3类型的齿轮旋转轴坐标,综采支架Vector3类型的位置坐标、Vector3类型的支柱升降移动坐标等,实现采煤机和综采支架的运行状态同步;
步骤4.2.2:使用RPC传递过多参数增加网络占用,多台铲运机采用序列化、反序列化进行网络数据同步,序列化是通过Serialize函数将铲运机的实时信息存储到信息类然后写入字节流,然后反序列化通过Deserialize函数读取字节流还原所有数据,同步数据以字节数组的形式传输,其中特殊数据类型Vector3先转换为字符串形式再进行序列化;多用户终端通过isWriting函数判断本地是否写入,用户通过手势控制铲运机时处于写入状态进行序列化,则其他终端处于读取状态进行反序列化;
步骤4.2.3:仅服务器授权的物体,如应用粒子系统模拟的煤块、传送带及部分场景模型,通过[SyncVar]标签把相关成员变量配置成同步变量,使用hook指定函数SceneSyn,当变量发生改变,服务器调用指定函数,并自动发送同步变量的最新数据到各客户端,实现场景的动态同步。
本实施例中,在同一局域网中,同一时间内只允许一个终端创建服务器,通过InitializeServer函数创建服务器时更改设置允许连入的客户端数目,可实现两人到更多人的网络协同;本发明应用三台电脑两个LeapMotion传感器实现用户分别手势控制采煤机、液压支架及多台铲运机,用户在一个终端只能手势控制该终端授权的物体,对其他物体没有控制权。
当然,上述说明并非是对本发明的限制,本发明也并不仅限于上述举例,本技术领域的技术人员在本发明的实质范围内所做出的变化、改型、添加或替换,也应属于本发明的保护范围。

Claims (8)

1.一种基于LeapMotion体感控制器的协同手势控制采煤仿真控制方法,其特征在于:采用Hands.Count、FingerType、FingerCount函数完成手势识别,采用InitializeServer、TextField函数创建服务器端Server、客户端Client并实现互连,采用Instantiate、Spawn函数实现虚拟场景的网络化同步,采用SpawnWithClientAuthority、OnStartAuthority、CmdMoveShearer函数实现协同手势控制采煤设备,采用Serialize、Deserialize、isWriting函数实现序列化反序列化,采用SceneSyn函数实现同步变量的最新数据自动同步到各客户端,包括以下步骤:
步骤1:基于LeapMotion,设计采煤设备的控制手势并进行识别;
分析各采煤设备功能,设计各自对应的控制手势;分析各手势特征,获取手掌运动追踪数据,通过实时获取手上各点三维坐标数据,完成手势识别;
步骤2:实现单人手势操控采煤仿真控制;
用户单人操作,通过键盘W、A、S、D键控制场景内相机移动实现场景漫游,设计的控制手势为:单手展开左右挥手、上下挥手、食指正反转画圈、数字手势控制采煤机左右行、摇臂升降、滚筒正反转和牵引速度;左手握拳右手展开前后挥动、双手展开上下挥动、双手握拳向前手势控制液压支架收伸护帮板、升降柱和向前牵引;单手握拳前后左右移动、双手握拳上下挥动、左手握拳右手展开上下挥动手势控制铲运机前进倒车左右转、力臂抬放、铲斗上翻下放,实现单人手势操控采煤仿真控制;
步骤3:实现虚拟场景的网络化;
采用C/S模式以及授权服务器方案,在同一局域网中通过IP地址和端口号匹配完成虚拟场景服务器端与客户端的授权与分配,实现不同客户端与服务端同一场景的实时同步漫游,实现虚拟场景的网络化;
步骤4:实现多人多终端协同手势控制和采煤仿真控制;
多用户在不同客户端连接服务器,通过各客户端的LeapMotion,协同手势控制同一个虚拟场景,实现不同用户分别控制采煤机、液压支架的协同运作完成采煤工作;多台铲运机协同完成运煤工作。
2.根据权利要求1所述的基于LeapMotion体感控制器的协同手势控制采煤仿真控制方法,其特征在于:在步骤1中,控制手势包括单手手势和双手手势;单手手势和双手手势分别包括静态手势和动态手势;其中,数字手势控制牵引速度为单手静态手势;左右挥动、画圈手势控制左右牵引、正反转动为单手动态手势;双手事指交叉手势控制设备紧急停止为双手静态手势;双手展开上下挥动、双手握拳上下挥动手势控制升降柱、力臂抬放为双手动态手势。
3.根据权利要求1所述的基于LeapMotion体感控制器的协同手势控制采煤仿真控制方法,其特征在于:在步骤1中,完成手势识别的具体步骤如下:
步骤1.1:通过Hands.Count函数获得当前视野中手的个数,判断当前手的个数为一只还是两只;
若:判断结果是当前手的个数为一只,则执行步骤1.2;
或判断结果是当前手的个数为两只,则执行步骤1.3;
步骤1.2:单手手势识别;
获取手掌在x、y、z方向上的速度PalmVelocity.x、PalmVelocity.y、PalmVelocity.z,根据公式(1)求出手掌掌心速度PalmVelocity:
通过比较当前帧中手掌掌心速度PalmVelocity和设置的最小移动速度smallestVelocity,判断手势状态;
若:判断结果是掌心速度小于最小移动速度,则手势为静态,执行步骤1.2.1;
或判断结果是掌心速度大于或者等于最小移动速度,则手势为动态,执行步骤1.2.2;
步骤1.2.1:判断当前是否有手指伸出,通过判断出哪几根手指伸出,实现包括单手静态手势张开、数字手势和握拳在内的单手静态手势的识别;
具体为:获取指尖坐标TipPosition(x1,y1,z1)、掌心坐标PalmPosition(x2,y2,z2),根据公式(2)求出指尖与掌心的距离distance:
获取手指向量手掌法向量根据公式(3)求出手指与手掌法向量角度θ:
当指尖与掌心距离distance大于最大距离MaxDistance并且手指与手掌法向量角度θ为90°时,则判定该手指伸出,然后通过FingerType函数获取伸出手指的名称,通过FingerCount函数确定伸出手指的个数,通过添加手势识别判断条件,识别出张开、数字手势;否则判定当前无手指伸出,则识别出握拳手势;
步骤1.2.2:通过判断手掌或手指运动情况,实现包括单手动态手势前后左右挥动、单指画圈在内的单手动态手势的识别;
具体为:获取手掌在x、y、z方向上的速度PalmVelocity.x、PalmVelocity.y、PalmVelocity.z,得到手掌的包括运动方向、速度在内的具体运动状态,添加手势的识别判断条件,实现单手动态手势的识别;
步骤1.3:双手手势识别;
通过IsLeft、IsRight函数分别识别出左手、右手,添加左手、右手同时识别判断条件,实现双手手势识别。
4.根据权利要求3所述的基于LeapMotion体感控制器的协同手势控制采煤仿真控制方法,其特征在于:设置的最小移动速度smallestVelocity取0.4mm/s,最大距离MaxDistance取100mm。
5.根据权利要求1所述的基于LeapMotion体感控制器的协同手势控制采煤仿真控制方法,其特征在于:在步骤3中,具体包括如下步骤:
步骤3.1:创建服务器端Server、客户端Client,使它们互连;
采用C/S模式,多用户在同一局域网中,选择界面中的“Sever”按钮作为服务器端,选择界面中的按钮“Client”作为客户端,服务器端通过InitializeServer函数创建服务器,并在网内广播其IP地址和指定端口号;客户端用户输入服务器端IP地址和指定端口号,通过TextField函数获取用户输入的信息,并通过Connect函数完成匹配,实现客户端与服务器端连接;
步骤3.2:实现虚拟场景的网络化同步;
为虚拟场景中物体创建各自的预制件并在网络管理器上进行注册,分配各自的身份标识net ID,然后通过Instantiate函数使预制件在服务器上实例化为网络物体,当服务器创建后在本地生成一个网络物体的同时,所有连接的客户端触发连接到服务器的事件OnConnectedToServer,并通过Spawn函数派生相同net ID的物体,同时建立物体对象之间的通信关系,实现采煤仿真控制场景的网络化同步;
步骤3.3:实现多用户在虚拟场景中同步漫游;
多用户联入同一局域网后,服务器为每个终端生成一个工人Worker,用户通过键盘W、A、S、D键控制工人行走,通过FollowCamera函数将工人绑定为主像机的追踪目标,设置主像机始终位于距离工人模型2.9m远、1m高的位置,使用户界面始终为第三人称视角跟随本地工人行走变动;利用远程过程调用协议,将用户控制本地工人移动操作同步给所有联网的其他终端设备,当服务器端用户控制工人移动,服务器端程序响应,并给客户端程序发送消息作出相同响应;当客户端用户控制工人移动,客户端发送消息到服务器更新位置方向,服务器将新数据反序列化到所有客户端,实现多用户在虚拟场景中同步漫游,用户通过漫游能够近距离观察各采煤设备的构造和协同运行状况。
6.根据权利要求1所述的基于LeapMotion体感控制器的协同手势控制采煤仿真控制方法,其特征在于:将采煤仿真控制场景基于3D谷歌纸盒眼镜Google Carboard开发,打包安卓APK文件安装到手机上,使移动终端用户与服务器连接,通过佩戴Google Carboard,结合手机能够看到更真实的立体虚拟场景,同时通过LeapMotion完成控制操作,给用户沉浸式的虚拟现实体验。
7.根据权利要求1所述的基于LeapMotion体感控制器的协同手势控制采煤仿真控制方法,其特征在于:在步骤4中,通过完成协同手势控制和运行状态同步两个步骤,实现多人多终端协同手势仿真控制采煤设备的协同运作,具体包括如下步骤:
步骤4.1:实现协同手势控制,具体包括如下步骤:
步骤4.1.1:客户端授权;
用户在客户端获得网络物体权限手势控制物体,通过SpawnWithClientAuthority函数派生该物体并传入网络连接,在客户端物体控制权限属性hasAuthority为true、控制对象标识符playerControllerID为-1,客户端调用OnStartAuthority函数发起控制这个物体的命令;
步骤4.1.2:协同控制采煤机、液压支架;
用户1手势控制采煤机,使用远程过程调用协议向服务器发送控制请求,发送模式选择只向服务器发送,在服务器端,为相关手势控制采煤机的方法MoveShearer添加[Command]指令,方法名改为CmdMoveShearer;
用户2手势控制液压支架,为相关控制液压支架的方法MoveZhijia同样添加[Command]指令,客户端远程调用[Command]指令下的控制函数,使其在服务器端运行;不同用户在不同终端,通过isLocal函数使当前终端只能控制本地派生的一个网络物体,实现不同用户在不同终端对采煤机、综采支架的协同控制;
步骤4.1.3:协同控制多台铲运机;
不同用户协同控制多台铲运机;
步骤4.2:实现运行状态同步,具体包括如下步骤:
步骤4.2.1:参数传递;
利用远程过程调用协议从远程计算机程序上进行函数调用,将重要参数通过网络传递给其他所有联网的终端设备,发送模式选择发送给除自己之外的每个终端,重要参数包括采煤机Vector3类型的位置坐标、float类型的速度值、Vector3类型的齿轮旋转轴坐标,综采支架Vector3类型的位置坐标、Vector3类型的支柱升降移动坐标,实现采煤机和综采支架的运行状态同步;
步骤4.2.2:序列化和反序列化;
使用远程过程调用协议传递过多参数增加网络占用,多台铲运机采用序列化、反序列化进行网络数据同步,序列化是指通过Serialize函数将铲运机的实时信息存储到信息类然后写入字节流,然后反序列化,反序列化是指通过Deserialize函数读取字节流还原所有数据,同步数据以字节数组的形式传输,其中特殊数据类型Vector3先转换为字符串形式再进行序列化;多用户终端通过isWriting函数判断本地是否写入,用户通过手势控制铲运机时处于写入状态进行序列化,其他终端处于读取状态进行反序列化;
步骤4.2.3:同步变量;
仅服务器授权的物体,通过[SyncVar]标签把相关成员变量配置成同步变量,使用hook指定函数SceneSyn,当变量发生改变,服务器调用指定函数,并自动发送同步变量的最新数据到各客户端,实现场景的动态同步。
8.根据权利要求1所述的基于LeapMotion体感控制器的协同手势控制采煤仿真控制方法,其特征在于:在同一局域网中,同一时间内只允许一个终端创建服务器,通过InitializeServer函数创建服务器时更改设置允许连入的客户端数目,实现两人到更多人的网络协同。
CN201910443450.0A 2019-05-27 2019-05-27 一种基于LeapMotion体感控制器的协同手势控制采煤仿真控制方法 Active CN110275610B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910443450.0A CN110275610B (zh) 2019-05-27 2019-05-27 一种基于LeapMotion体感控制器的协同手势控制采煤仿真控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910443450.0A CN110275610B (zh) 2019-05-27 2019-05-27 一种基于LeapMotion体感控制器的协同手势控制采煤仿真控制方法

Publications (2)

Publication Number Publication Date
CN110275610A true CN110275610A (zh) 2019-09-24
CN110275610B CN110275610B (zh) 2022-09-30

Family

ID=67960104

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910443450.0A Active CN110275610B (zh) 2019-05-27 2019-05-27 一种基于LeapMotion体感控制器的协同手势控制采煤仿真控制方法

Country Status (1)

Country Link
CN (1) CN110275610B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112509668A (zh) * 2020-12-16 2021-03-16 成都翡铭科技有限公司 一种识别手部是否在进行抓握的方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120326961A1 (en) * 2011-06-21 2012-12-27 Empire Technology Development Llc Gesture based user interface for augmented reality
CN104750397A (zh) * 2015-04-09 2015-07-01 重庆邮电大学 一种基于体感的虚拟矿井自然交互方法
CN105128012A (zh) * 2015-08-10 2015-12-09 深圳百思拓威机器人技术有限公司 一种开放式智能服务机器人系统及其多种控制方法
CN107515674A (zh) * 2017-08-08 2017-12-26 山东科技大学 一种基于虚拟现实与增强现实的采矿操作多交互实现方法
CN108549490A (zh) * 2018-05-03 2018-09-18 林潼 一种基于Leap Motion设备的手势识别互动方法
CN109202848A (zh) * 2018-09-12 2019-01-15 西南大学 基于Leap Motion与机器视觉的人机协作采摘机器人及其控制方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120326961A1 (en) * 2011-06-21 2012-12-27 Empire Technology Development Llc Gesture based user interface for augmented reality
CN104750397A (zh) * 2015-04-09 2015-07-01 重庆邮电大学 一种基于体感的虚拟矿井自然交互方法
CN105128012A (zh) * 2015-08-10 2015-12-09 深圳百思拓威机器人技术有限公司 一种开放式智能服务机器人系统及其多种控制方法
CN107515674A (zh) * 2017-08-08 2017-12-26 山东科技大学 一种基于虚拟现实与增强现实的采矿操作多交互实现方法
CN108549490A (zh) * 2018-05-03 2018-09-18 林潼 一种基于Leap Motion设备的手势识别互动方法
CN109202848A (zh) * 2018-09-12 2019-01-15 西南大学 基于Leap Motion与机器视觉的人机协作采摘机器人及其控制方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
黄乐亭等: "大采高综采智能化工作面开采关键技术研究", 《煤矿开采》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112509668A (zh) * 2020-12-16 2021-03-16 成都翡铭科技有限公司 一种识别手部是否在进行抓握的方法

Also Published As

Publication number Publication date
CN110275610B (zh) 2022-09-30

Similar Documents

Publication Publication Date Title
CN104750397B (zh) 一种基于体感的虚拟矿井自然交互方法
CN110515455B (zh) 一种基于Leap Motion和局域网内协同的虚拟装配方法
CN106601062A (zh) 一种用于模拟矿井灾害逃生训练的交互方法
CN106406544B (zh) 一种语义式人机自然交互控制方法及系统
CN103699219B (zh) 一种智能眼镜交互系统及智能交互方法
CN103716324B (zh) 一种基于多智能体虚拟矿井风险行为实现系统及方法
CN111667560B (zh) 一种基于vr虚拟现实角色的交互结构及交互方法
CN107203272A (zh) 基于肌电感知技术的可穿戴增强现实作业指导系统及方法
CN103064514A (zh) 沉浸式虚拟现实系统中的空间菜单的实现方法
CN109782907A (zh) 一种基于多混合现实设备的虚拟装填协同训练系统
CN106094203A (zh) Vr系统、用于控制vr设备的穿戴设备及其方法
CN107943282A (zh) 一种基于增强现实和可穿戴设备的人机交互系统及方法
CN109993308A (zh) 基于云平台共享学习系统及方法、共享平台及方法、介质
CN106708255A (zh) 虚拟界面交互控制方法及系统
CN106886284A (zh) 一种基于Kinect的博物馆文物交互系统
CN106468917A (zh) 一种可触摸现场实时视频图像的远程呈现交互方法和系统
CN110275610A (zh) 一种基于LeapMotion体感控制器的协同手势控制采煤仿真控制方法
Tao et al. Ship fire-fighting training system based on virtual reality technique
CN106648095A (zh) 一种基于可穿戴设备控制vr头盔的方法及系统
CN110083238A (zh) 基于增强现实技术的人机互动方法与系统
US20190213798A1 (en) Hybrid hand and finger movement blending to create believable avatars
JP2024012557A (ja) 情報処理システム、情報処理方法、情報処理プログラム
CN108553888A (zh) 增强现实交互方法及装置
CN104363439B (zh) 一种信息处理方法及电子设备
CN206805464U (zh) Vr环境与现实环境实现真实交互的触感手套

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant