1.本发明涉及机械臂领域,尤其涉及基于体感控制器的机械臂控制系统及方法。
背景技术:2.随着科学技术和经济的发展,机械臂在生产生活中的应用也越来越广泛。当今的机械臂控制方式多种多样,可以通过固定的程序、手柄对机械臂的各个关节实现控制,也可以通过穿戴设备的方式进行控制。但是这些控制方式存在不灵活、不直观等诸多问题。在一些救援场景、救灾场景、防爆场景等人员不方便进入的场景,也需要由控制方式简便的可移动机械臂来完成本应由人员直接进行操作的工作。
3.接触式手势交互虽然精准度很高,但是最大的弊端是繁杂冗余的穿戴设备会给操作者的动作造成阻碍,从而影响操作者的操作体验。非接触式手势交互的方式比较多样化。有些通过从图像中提取特征值的方式进行手势数据的预处理,然后通过算法进行手势模型的建立,这种方式往往获取到的手势特征不精准,且难以获取深度信息等其他重要的手部特征。
4.在leapmotion收集到操作者手部中心点的位置信息后,将这些位置信息输入到操作系统中用来控制机械臂末端点跟随手部移动,操作者手部中心点的位置和机械臂末端点位置是相映射的关系。然后通过fabrik逆运动学算法计算出每个自由度应该偏转的角度实现机械臂的运动。但是操作者的手部并不是一直保持平滑稳定的运动状态,经常出现一些不可避免的抖动,这就会对机械臂末端点的移动造成影响,使其也会跟随者操作者手部出现抖动。
技术实现要素:5.本发明所要解决的技术问题总的来说是提供一种基于体感控制器的机械臂控制系统及方法。
6.为解决上述问题,本发明所采取的技术方案是:一种基于体感控制器的机械臂控制系统及方法,系统包括机械臂、计算机、体感控制器与车体;体感控制器,采用手部数据传感器, 用于采集、识别并提取操作者的手部信息;手部信息包括操作者的手部位置和手势类别,并将手部信息转换为控制指令,传输给计算机;手势类别,输入给计算机并控制机械臂和车体,手势类别包括静态手势及动态手势;手部位置包括右手手掌位置信息,手势类别信息包括右手手势信息及左手手势信息;右手位置信息,用来控制机械臂的移动,机械臂的末端执行器与右手手部中心点建立映射,经过在计算机中进行坐标转换后,机械臂的末端执行器跟随右手手掌中心点进
行移动,在unity3d中根据逆运动学算法求解出机械臂各个自由度的偏转角度,最后将各个自由度的偏转角度实时的通过无线串口模块发送给真实的机械臂来驱动舵机的转动,从而实现整个机械臂的移动;右手手势信息,用来控制机械臂末端执行器的打开和闭合,右手手势的张开和握拳对应末端执行器的开合;左手手势信息,用来控制承载机械臂的车体的移动,左手的动态和静态手势对应控制车体的前进、后退、左转和右转;机械臂,采用四自由度机械臂,具有夹爪、单片机、通讯模块及连接电缆;单片机操控夹爪执行动作,单片机连接通讯模块,单片机通过通讯模块连接计算机;计算机,采用unity3d作为系统开发平台,计算机接收并处理手部数据传感器采集的手部信息,对机械臂进行逆运动学的计算以及虚拟模型的仿真,处理数据的传输集成在unity3d内;逆运动学采用fabrik的逆运动学算法手部位置信息,首先,通过计算机直接转换为机械臂末端执行器位置;然后,通过fabrik逆运动学算法计算出每个自由度应该偏转的角度实现机械臂的运动;其次,在采集到操作者手部中心点位置信息后,对其进行百分位形态滤波和高斯滤波相结合的滤波方式进行处理;再将处理后的手部中心点位置信息输入到计算机中;计算机,在unity3d中建立了机械臂和车体的模型,计算机集成有视频采集模块、ui界面及示教模块;在示教模块中采用了三次贝塞尔曲线进行运动轨迹的拟合,用以平滑示教路径。;控制方法包括以下步骤;s1,首先,操作者的手部动作和手势作为输入信号;然后,手部动作和手势信息经过体感控制器采集后进入到unity3d中进行处理;其次,unity3d接收到体感控制器传来的手部动作和手势信息后将其分为三组数据,三组数据包括右手位置信息、右手手势信息及左手手势信息;控制手部位置,首先,通过计算机直接转换为机械臂末端执行器位置;其次,通过fabrik逆运动学算法计算出每个自由度应该偏转的角度实现机械臂的运动;然后,在采集到操作者手部中心点位置信息后,对其进行百分位形态滤波和高斯滤波相结合的滤波方式进行处理;最后将处理后的手部中心点位置信息输入到计算机中;s2,首先,通过unity,右手手掌位置信息通过位置转换使得计算机中的机械臂模型的末端点跟随右手手掌位置信息移动;然后,通过逆运动学算法计算出机械臂各个自由度需要偏转的角度并发送给真实机械臂的舵机,使得真实机械臂也可以跟随手掌位置移动,另外,unity3d根据已经设定好的手势识别程序识别出操作者的手势信息,通过手势来控制机械臂末端夹爪的张开与闭合来实现夹取以及控制车体前进与后退,从而操作者使用手部来控制系统进行物体的搬运和抓取工作。
附图说明
7.图1为本发明的硬件连接示意图。
8.图2为本发明的架构图。
具体实施方式
9.如图1-2,作为一实施例,一种基于体感控制器的机械臂控制系统,包括机械臂8、计算机5、体感控制器4与车体7,体感控制器4 为手部数据传感器,检测精度在0.01mm,用于提取操作者的手部信息;人1 、左手3、右手2、相机6;机械臂为四自由度机械臂,还包括夹爪、单片机、通讯模块、连接电缆等其它附件。
10.计算机的软件部分采用unity3d作为系统开发平台,将手部信息的处理、机械臂逆运动学的计算、虚拟模型的仿真以及数据的传输都集成在unity3d内,得到一个完整的系统。
11.手势识别部分为采集并识别出操作者的手部位置和手势类别,并将结果转换为系统的控制指令。
12.逆运动学算法为fabrik(forward and backward reaching inverse kinematics)算法,它一种启发式的迭代算法,会在迭代的进程中实现来回搜索,分为:向前搜索、向后搜索,本发明将性能优越的fabrik算法应用于本四自由度机械臂的逆运动学部分。
13.手部位置会直接转换为机械臂末端执行器位置,然后通过fabrik逆运动学算法计算出每个自由度应该偏转的角度实现机械臂的运动。但是操作者的手部并不是一直保持平滑稳定的运动状态,经常出现一些不可避免的抖动,这就会对机械臂末端点的移动造成影响,从而降低了系统的稳定性和鲁棒性。为了解决这类问题,在采集到操作者手部中心点位置信息后,对其进行百分位形态滤波和高斯滤波相结合的滤波方式进行处理,再将处理后的手部中心点位置信息输入到系统中去。
14.fabrik算法在本机械臂中具有优越性,本发明分别将基于fabrik的逆运动学算法与雅克比迭代算法和基于ccd的逆运动学算法在本机械臂中就运算速率和解算姿态上进行了对比,最终确定将基于fabrik的逆运动学算法作为本系统最终的逆运动学解算方法。
15.机械臂和车体需要通过手势实现控制,其中有些动作通过静态手势实现,有些则需要通过动态手势实现,本发明通过leapmotion实现了静态手势识别和动态手势识别。
16.系统在unity3d中建立了机械臂和车体的模型、视频采集模块、ui界面、示教模块等,以便于更好的展示和控制系统。
17.如图1-2,作为一实施例, 机械臂操作者可以直接通过手部来控制整个系统的运行,此系统简化了机械臂的操作流程,提升了操作者的操控体验。
18.具体控制流程如下:操作者的手部动作和手势是主要的输入信号,手部动作和手势信息经过leapmotion采集后进入到unity3d中进行处理,unity3d接收到leapmotion传来的手部动作和手势信息后将其分为右手位置信息、右手手势信息和左手手势信息,三组数据分别执行不同的控制任务;右手位置信息主要用来控制机械臂的移动,机械臂的末端执行器与右手手部中心点相映射,经过坐标转换后机械臂的末端执行器会跟随右手手掌中心点进行移动,并且unity3d会根据逆运动学算法求解出机械臂各个自由度的偏转角度,最后将各个自由度的偏转角度实时的通过无线串口模块发送给真实的机械臂来驱动舵机的转动,从而实现整个机械臂的移动;
右手手势信息主要用来控制机械臂末端执行器的打开和闭合,手势的张开和握拳正好对应末端执行器的开合;左手手势信息用来控制承载机械臂的车体的移动,左手的动态和静态手势可以控制车体的前进、后退、左转和右转;这样系统就可以接收到具体的控制指令进而执行相应的动作。
19.如图1-2,作为一实施例,还可以采用以下技术方案:对机械臂的运动学部分展开研究,以保障系统的流畅运行,将基于fabrik的逆运动学算法作为本机械臂的逆运动学解算方法。
20.如图1-2,作为一实施例,手部位置会直接转换为机械臂末端执行器位置,然后通过fabrik逆运动学算法计算出每个自由度应该偏转的角度实现机械臂的运动。但是操作者的手部并不是一直保持平滑稳定的运动状态,经常出现一些不可避免的抖动,这就会对机械臂末端点的移动造成影响,从而降低了系统的稳定性和鲁棒性。为了解决这类问题,在采集到操作者手部中心点位置信息后,对其进行百分位形态滤波和高斯滤波相结合的滤波方式进行处理。
21.如图1-2,作为一实施例,本发明分别将基于fabrik的逆运动学算法与雅克比迭代算法和基于ccd的逆运动学算法在本机械臂中就运算速率和解算姿态上进行了对比,最终确定将基于fabrik的逆运动学算法作为本系统最终的逆运动学解算方法。
22.如图1-2,作为一实施例,系统在unity3d中建立了机械臂和车体的模型、视频采集模块、ui界面、示教模块等,以便于更好的展示和控制系统。
23.如图1-2,作为一实施例,在示教模块中采用了三次贝塞尔曲线进行运动轨迹的拟合使机械臂可以平滑的进行路径示教。如图1-2,作为一实施例,整个系统由机械臂、计算机、leapmotion与车体组成。leapmotion负责捕捉操作者的手部信息并发送给unity3d进行处理,unity3d将手部信息分为手掌位置信息和手势信息。其中手掌位置信息会通过位置转换使得中的机械臂模型的末端点跟随其位置移动,然后通过逆运动学算法计算出机械臂各个自由度需要偏转的角度并发送给真实机械臂的舵机,使得真实机械臂也可以跟随手掌位置移动。unity3d还会根据已经设定好的手势识别程序识别出操作者的手势信息,例如通过手势来控制机械臂末端夹爪的张开与闭合来实现夹取功能,以及控制车体前进与后退等功能。
24.作为一实施例, 如图2所示,为一种基于体感控制器的机械臂控制系统的流程图,具体的实施步骤如下:步骤1:操作者的手部动作和手势是主要的输入信号,手部动作和手势信息经过leapmotion采集后进入到unity3d中进行手势识别、手势分类以及手部位置提取;步骤2:unity3d接收到leapmotion传来的手部动作和手势信息后将其分为右手位置信息、右手手势信息和左手手势信息,三组数据分别执行不同的控制任务,右手位置信息主要用来控制机械臂的移动,机械臂的末端执行器与右手手部中心点相映射,经过坐标转换后机械臂的末端执行器会跟随右手手掌中心点进行移动,并且unity3d会根据逆运动学算法求解出机械臂各个自由度的偏转角度,最后将各个自由度的偏转角度实时的通过无线串口模块发送给真实的机械臂来驱动舵机的转动,从而实现整个机械臂的移动,右手手势信息主要用来控制机械臂末端执行器的打开和闭合,手势的张开和握拳正好对应末端执行
器的开合,左手手势信息用来控制承载机械臂的车体的移动,左手的动态和静态手势可以控制车体的前进、后退、左转和右转;步骤3:右手位置信息主要用来控制机械臂的移动,机械臂的末端执行器与右手手部中心点相映射,经过坐标转换后机械臂的末端执行器会跟随右手手掌中心点进行移动,并且unity3d会根据fabrik逆运动学算法求解出机械臂各个自由度的偏转角度,最后将各个自由度的偏转角度实时的通过无线串口模块发送给真实的机械臂来驱动舵机的转动,从而实现整个机械臂的移动;步骤4:右手手势信息主要用来控制机械臂末端执行器的打开和闭合,手势的张开和握拳正好对应末端执行器的开合;步骤5:左手手势信息用来控制承载机械臂的车体的移动,左手的动态和静态手势可以控制车体的前进、后退、左转和右转;步骤6:这样,操作者就可以使用手部来控制系统进行物体的搬运和抓取工作。本发明充分描述是为了更加清楚的公开,而对于现有技术就不再一一列举。
25.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;作为本领域技术人员对本发明的多个技术方案进行组合是显而易见的。而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。本发明未详尽描述的技术内容均为公知技术。