CN110275610A - 一种基于LeapMotion体感控制器的协同手势控制采煤仿真控制方法 - Google Patents
一种基于LeapMotion体感控制器的协同手势控制采煤仿真控制方法 Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/017—Gesture based interaction, e.g. based on a set of recognized hand gestures
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/02—Total 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体感控制器的协同手势控制采煤仿真控制方法,采用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函数创建服务器时更改设置允许连入的客户端数目,实现两人到更多人的网络协同。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112509668A (zh) * | 2020-12-16 | 2021-03-16 | 成都翡铭科技有限公司 | 一种识别手部是否在进行抓握的方法 |
Citations (6)
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与机器视觉的人机协作采摘机器人及其控制方法 |
-
2019
- 2019-05-27 CN CN201910443450.0A patent/CN110275610B/zh active Active
Patent Citations (6)
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)
Title |
---|
黄乐亭等: "大采高综采智能化工作面开采关键技术研究", 《煤矿开采》 * |
Cited By (1)
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和局域网内协同的虚拟装配方法 | |
CN110020633A (zh) | 姿态识别模型的训练方法、图像识别方法及装置 | |
CN106601062A (zh) | 一种用于模拟矿井灾害逃生训练的交互方法 | |
CN106406544B (zh) | 一种语义式人机自然交互控制方法及系统 | |
CN109313493A (zh) | 用于基于手的运动和位置控制计算机的装置 | |
CN103699219B (zh) | 一种智能眼镜交互系统及智能交互方法 | |
CN103716324B (zh) | 一种基于多智能体虚拟矿井风险行为实现系统及方法 | |
CN111897431B (zh) | 展示方法及装置、显示设备、计算机可读存储介质 | |
CN103064514A (zh) | 沉浸式虚拟现实系统中的空间菜单的实现方法 | |
CN109782907A (zh) | 一种基于多混合现实设备的虚拟装填协同训练系统 | |
CN106094203A (zh) | Vr系统、用于控制vr设备的穿戴设备及其方法 | |
CN107943282A (zh) | 一种基于增强现实和可穿戴设备的人机交互系统及方法 | |
CN109993308A (zh) | 基于云平台共享学习系统及方法、共享平台及方法、介质 | |
CN106708255A (zh) | 虚拟界面交互控制方法及系统 | |
CN107832001A (zh) | 信息处理方法、装置、电子设备及存储介质 | |
CN111667560A (zh) | 一种基于vr虚拟现实角色的交互结构及交互方法 | |
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) | 情報処理システム、情報処理方法、情報処理プログラム | |
CN104363439B (zh) | 一种信息处理方法及电子设备 |
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 |