基于六维力传感器运动意图的识别
2024-01-03刘环宇陈明祥高孟扬田启磊
刘环宇, 王 钰, 陈明祥, 高孟扬, 田启磊
(青岛大学机电工程学院, 山东 青岛 266071)
随着中国老龄化情况的加剧,脑中风成为老年人第一大杀手[1],引起运动功能障碍的患者人数也明显增加[2-3]。人工康复和多次训练的差异性给卒中患者带来了巨大的经济成本和恢复效果的低效性[4-6],再加上人工康复成本高、任务重、周期长[7-9],耽误脑卒中患者康复的最佳时间,造成永久性偏瘫。随着辅助设备需求的增长,开发适合患者需求的辅助康复系统和康复设备[10-13]非常必要。因此,康复机器人与患者之间的交互控制至关重要,建立人机交互系统机制可以提高卒中患者的康复医疗效果[14-15]。张大林[16]提出了一种使用图表示和分层注意机制上的基于脑电信号的意图识别,通过注意状态检测模块判断上肢运动实时的状态,然后运动意图识别模块使用集中和分心状态下建立的模型。Sirintuna研发了一种基于人工神经网络的分类器,通过从人体手臂肌肉获得的肌电图信号判断人体的运动意图,并在一个导纳控制体中使用该分类器约束手臂运动,达到预期的方向[17]。但是由于生物电信号具有非线性、时变性、易受干扰等性质[18],并且信号特征很大程度上依赖于患者,患者本身也因为卒中的影响导致信号识别成功率降低。因此,基于生物电信号的意图检测不仅在信号处理中比较复杂[19-20],而且还存在很大的误判概率。基于此,本文提出了基于六维力传感器进行运动意图判断的方法,通过外部六维力传感器采集人机交互力,人体的运动意图可以基于该信号做进一步分析,具有采集简便、稳定性高的优点。相较于其他研发外骨骼式的力传感器识别运动意图,本研究提出借助UR协作机器人作为一种非捆绑式辅助康复设备,依靠OptoForce六维力传感器的灵敏性和稳定性建立数据接收系统,提高对运动信号的准确识别。
1 六维力传感器数据的收集与处理
六维力传感器采用的是OptoForce六维力传感器,可用于测量3个相互垂直力(Fx,Fy,Fz)的大小和方向,以及绕3轴的力矩(Mx,My,Mz)的大小和方向。
1.1 六维力传感器数据接收实现算法
数据接收算法主要用于获取机器人运动过程中详细的状态信息,如位置、速度、关节电流及力矩等,并将实时采集的数据通过网线传输通信的方式传输到上位机。该算法程序是基于Visual studio 2019版平台实现,用C++汇编语言编写,实现了实时采集力和力矩数据功能。程序流程如图1所示。首先,对程序进行系统的初始化操作,定义数组结构,便于对3个力分量和3个力矩分量进行接收。在程序运行的过程中,手动设置服务端与客户端的IP和端口,然后运行程序且采集机器人的实时运动力数据。客户端连接成功后,对采集的数据进行相应的转换,把处理过的数据按照顺序存储到文本文档。
图1 程序流程
关于客户端与服务端之间的网络通信,采用的是套接字。在Winsock(windows socket)中,通过操作该句柄实现网络通信和管理。套接字有3种,本文采用的是流式套接字,可提供双向、有序、可靠的数据传输。socket通信方式的面向连接流分为4部分,分别是将套接字绑定(bind)到本地的地址和端口;服务端的监听(listen);服务端的接收(accept)连接及数据的互相传输。socket通讯框架如图2所示。
上位机进行数据传输需要设置IP和端口地址进行连接。监听模块用来检查是否连接成功,当连接成功时,显示已监听,否则显示监听失败。
1.2 数据处理
当患者在运动过程中,除了手部抖动产生的误差外,也可能会由于六维力传感器本身和外部环境的影响,原始数据会产生随机的噪音,对系统的稳定性造成一定影响。因此,需要进行滤波处理。该系统采用了二阶低通滤波对数据进行滤波处理。
二阶低通滤波频率传递函数Gs表达式为
(1)
式中,ωn为截止频率;ξ为阻尼比;s为复变量。
通过收集一组力值数据,采样时间为0.008 s(机器人以125 Hz的频率向用户发一次数据),利用Matlab中的Curve Fitting工具箱对采集的数据进行8项sum of sine拟合,传感器数据拟合如图3所示。得出8个拟合截止频率,拟合曲线各阶所对应的频率如表1所示。设阻尼比为1,将第一阶、二阶、三阶频率代入,比较滤波效果,截止频率对比如图4所示。
表1 拟合曲线各阶所对应的频率
图3 传感器数据拟合
由图4可以看出,当取第一阶对应频率作为截止频率时,滤波数据具有较大的延时性,随着各阶频率的增大,延时性减小,但是数据中所夹杂的噪音逐渐增多,其中第三阶对应频率的滤波效果最佳,因此,将该频率作为截止频率。但是,低通滤波的截止频率除了衰减高频信号外,也会在一定程度上衰减角频率临近截止频率的信号,因此最后截止频率需要比第三阶对应的频率稍大,即取截止频率为ωn=2.90 rad/s。
选定截止频率后,本文通过Matlab中的阶跃响应函数step确定阻尼比。分别取各阻尼比为0.5、0.7、0.8、1代入系统的传递函数中,进行仿真,各阻尼比对应的滤波如图5所示,对比阶跃响应进入稳态范围时所对应的调整时间,选择最佳阻尼比为0.7。二阶低通滤波效果如图6所示,滤波数据滞后性仅0.2 s,滤波效果满足系统要求。
图5 各阻尼比对应的滤波
2 运动意图算法的建立
在主动运动的控制过程中,运动意图判断算法通过判断患者手部对于六维力传感器作用力的方向,决定UR10机器人对应电机的运动方向,即X的正负方向、Y的正负方向、Z的正负方向。
2.1 运动意图的识别
主动运动的过程中,需要实时判断患者的运动意图,即判断往哪个方向运动。初始状态是当UR10机器人启动时,传感器实时显示力值的大小。机器人末端运动意图判断公式为
kact=Fact-Fini
(2)
式中,Fact为传感器实时的数据;Fini为传感器初始状态数据;kact为传感器的相对变化。
由于外部环境以及人体颤动的干扰易使得系统对手部运动意图产生误判,因此需要给系统加入容积偏差σ,六维力传感器的相对变化如图7所示。
图7 六维力传感器的相对变化
由图7可以看出,在t=0.85以后,力值大小变化幅度增大,这是患者手部进行运动前抖动造成,在此之前,力值变化均匀。为了避免患者抖动对实验产生的误差,本文中的值在原来的基础扩大,取3 N为其容积偏差。当-σ≤kact≤+σ时,表示患者手作用力处于容积偏差范围内,患者手部处于静止运动状态;当kact≥+σ时,表示患者手部朝着坐标轴正方向运动;当kact≤-σ时,表示患者手部朝着坐标轴负方向运动。
其中,容积偏差的公式为
(3)
(4)
式中,N表示采样点数,xi表示采样值,单位为牛顿。
2.2 主动运动算法的建立
从六维力传感器中收集UR10机器人末端执行器所受到的患者给予施加的六个自由度的力和力矩,即[Fx,Fy,Fz,Mx,My,Mz]。沿x,y,z方向的力介绍,六维力传感器坐标如图8所示。主动运动算法是指系统判断患者施加合力大小来判断是否跟随移动。运动意图识别算法如图9所示。
图8 六维力传感器坐标
首先系统判断患者的运动意图,当-σ≤kact≤+σ,患者手部处于静止运动趋势,此时末端执行器的速度为零。反之,设定阻抗力切换阀值Fres,Fres为主动运动正常运动时所需的主动力,不同患者其值是不同的。通过六维力传感器获取x、y、z方向的力Fax、Fay、Faz,合成实时状态下患者施加在TCP末端的力Fact,如果Fact>Fres且小于20 N,那么末端执行器会按照相应的速度进行康复运动。
3 实验与分析
3.1 六维力传感器
OptoForce六维力传感器基于光学原理,用光学传感器测量物体对传感器的力和扭矩,与UR10机器人搭配使用,实现更高级的自动化和控制功能。六维力传感器如图10所示。传感器安装在UR10机器人末端执行器上,通过电缆连接到UR10控制器传输传感器采集的数据。其内置的数据处理软件将原始传感器数据转化为物体的力和扭矩值,使机器人能够理解物体与末端执行器之间的相互作用。为保证其精度,使用传感器之前,必须进行校准,并对机器人进行负载辨识,避免其本身的重量产生力信号的误差。
图10 六维力传感器
3.2 实验原理与分析
为了实现精确的空间运动控制,本文采用的movel(pose,a,v)是一种笛卡尔运动指令,用于控制机器人末端执行器的空间运动方向,pose参数表示机器人末端执行器的目标点的三维坐标;a表示运动过程的TCP加速度;v表示运动过程的TCP速度。运动算法流程如图11所示。
图11 运动算法流程
线程一通过对患者施加的力与容积偏差判断识别患者是否有运动意图。如果判定成功,那线程二将会通过机器人内部算法将合力Fact分解到x轴、y轴、z轴,并且通过合力与位置之间的函数关系式,从而获取下一个位置点(Fact[0]为x轴方向的力大小,Fact[1]为y轴方向的力大小,Fact[2]为z轴方向的力大小,r值大小为患者小臂的长度)。
通过计算出的三维位置坐标赋予到UR10机器人的movel指令中,UR10机器人则会根据运动参数运动到下一个目标点。为了保护患者安全,设置UR10碰撞检测墙,超过碰撞力最大值则紧急制停,建立速度与合力的关系式,限制机器人末端的速度。
在机器人末端运动过程中,六维力传感器实时监测机器人末端受到的外力变化情况。根据合力大小与方向,动态计算施加的减速度,以调整机器人末端的运动速度。具体地,当外力与机器人的运动方向相反时,系统会计算需要施加的正向减速度,以减缓机器人的运动速度;而当外力与机器人的运动方向相同时,系统会计算需要施加的反向减速度,以避免机器人加速前进。
3.3 实验测试
为了更好地体现机器人能够很好地识别患者的意图方向,患者进行了主动取杯实测,实验测试如图12所示。患者从初始位置出发,去抓远处取装有水的杯子,然后患者把有水的杯子拿到眼前,最后,患者回到初始位置。机器人末端能够跟随患者的取水意而运动,证明了运动算法的准确性。
图12 实验测试
4 结束语
本文为了提升人机交互中运动意图信号识别的稳定性,提出了将六维力传感器进行数据的采集与运动意图的识别。与普通传感器相比,六维力传感器能够更准确、更稳定的识别3个互相垂直的力的大小与方向。实验测试结果表明,本设计的数据采集、处理与识别系统,能够很好地运用在上肢康复运动中,满足患者的运动需求,达到了预期的期望,为上肢主动康复的有效控制提供了新的解决方案。接下来将会在患者特定的运动轨迹和运动姿态上进行进一步研究。