基于虚拟现实的网络化上肢康复训练系统
扫描二维码
随时随地手机看文章
现阶段,在国内的康复治疗中,针对患者功能训练的治疗仍旧以治疗师的手法操作为主,或辅助一些简单的训练器械,且训练过程单调无趣,患者容易产生厌烦情绪。治疗师不容易即时了解病人的训练程度和效果 [1][2]。研究表明,如果能够在训练过程中提供多种形式的信息反馈,充分发挥患者的主观能动性,将会使康复训练效果得到很大提高。虚拟现实是一种新兴的并且迅速发展的技术,它的主要特点是:利用计算机和传感技术生成一个具有多种感官刺激的虚拟境界,这种虚拟境界可以使人产生一种身临其境的感觉;人能以自然的方式与虚拟境界中的对象进行交互[3]。将虚拟现实技术应用到康复医疗领域,可以有效的解决现有的康复医疗方法的局限性[4]。
康复机器人技术在欧美等国家己经得到了科研工作者和医疗机构的普遍重视 ,也取得了一些有价值的成果. 06年 Tobias Nef等人研制了基于虚拟现实技术的上肢康复医疗机器人 ARMIn[5]。Rutgers大学和 Stanford医学院在基于虚拟环境的远程康复机器人系统方面做了大量的工作[6]。清华大学研制了一种上肢康复设备 UECM,可以在平面内进行两个自由度的运行训练[1]。
本文针对实验室现有的一种上肢康复训练机器人系统设计开发了虚拟现实的辅助康复训练系统,以激发患者进行康复训练的兴趣和动力,达到提高康复训练效果的目的。
1.系统总体概况
1.1 康复训练机器人系统总体结构图康复训练机器人系统主要可分为上位机远程监控系统和下位机系统。 系统整体结构图如图 1所示。
500)this.style.width=500;" />
1.2 康复机器人机构设计
康复机器人机构部分主要有座椅部分、支撑部分、牵引部分组成,如图 2所示。训练时,病人坐在椅子上,通过悬吊线和肘关节支撑套将病人的手臂吊起,病人的手被固定在康复训练牵引机械臂的托盘上。
500)this.style.width=500;" />
1.3康复机器人系统工作原理
该康复训练系统由 4部分组成:基于虚拟现实技术的辅助训练客户端,康复机器人控制系统(下位机) ,医生端监控计算机(上位机),和网络通讯部分。其中康复机器人控制系统由 ARM主控模块、测量控制电路、键盘及 LCD显示电路、存储器件等主要部分组成。被动训练模式运行时,安装在康复训练牵引机械臂的力和位置传感器将采集的病人运动的力和位置信号经过信号处理后送给 ARM主控模块,主控模块经过预处理后再通过下位机网络模块把力和位置信息通过局域网传送给医生端监控主机,同时监控软件绘制出力度信号和位置信号的实时曲线,并访问后台病案数据库,实时记录训练各项状态参数。医生根据反馈的信息判断病人的康复情况,并通过上位机设置康复训练参数,发送控制指令给下位机,下位机根据医生设置的参数,采用相应的控制算法,发送控制信号,经驱动电路放大后驱动电机,从而控制康复训练牵引机械臂的运动。主动模式和阻抗模式运行时,虚拟现实训练客户端软件和上位机远程监控软件同时通过局域网连接至下位机 ARM嵌入式康复机器人主控模块,主控模块把采集到的力度和位置信号经过预处理后,同时发送给上位机监控程序和虚拟现实训练程序。虚拟现实辅助训练软件利用接收到的网络数据通过相应算法转化为虚拟场景中物体的坐标,同时配合设置好的虚拟场景和人机交互策略实现虚拟现实辅助康复训练过程。本文分别使用 windows GDI 和 OpenGL+3dmax 设计了两套虚拟现实康复训练程序,分别配合主动训练模式和阻抗训练模式。
2、虚拟现实辅助康复训练客户端软件开发
康复病人由于肢体肌肉处于废退状态,很容易对锻炼感到厌烦,这对于病人的康复进程是很不利的。为此本文利用 Windows GDI,OpenGL+3Dmax设计了两个具有良好交互性的游戏程序作为患者辅助康复训练平台,使患者在游戏过程中不知不觉的完成锻炼,变原来的消极锻炼为积极主动的参与锻炼。
2.1配合阻抗训练模式的虚拟现实辅助训练软件设计
2.1.1 阻抗训练模式介绍
该训练模式适用于即将康复的患者,这类患者的患肢已经逐步恢复运动能力,这时就可以根据患者的康复情况,在康复锻炼过程中通过机器人给患者的患肢作用一定大小的阻尼力,使患者完成动作的时候克服阻力,从而增强肌肉的力量,逐步恢复到正常状态。
2.1.2 程序设计
该软件采用 VC++6.0创建的基于单文档的 MFC应用程序。游戏开始后病人通过控制机械臂的水平运动,控制虚拟场景中水平挡板的移动反弹小球,击打上画面上方的矩形砖块。如图 3所示。程序开始运行后,通过 GDI绘制出弹球游戏的基本场景,小球和水平移动挡板,完成游戏参数的基本初始化工作。在创建框架窗体的同时使用 CAsyncSocket类的 MySocket派生类,初始化训练客户端套接字,封装了网络通信消息响应函数。并重载了其中的 OnReceive(), OnAccept(),OnConnect(),OnClose()等消息响应函数,这些函数分别映射 CMyView类中相应的处理函数。完成套接字初始化后,立即与下位机服务器连接,并开始接收下位机传送的位置和力度数据。当有网络数据到达时,程序映射调用 CMyView类中的 OnReceive()函数,完成接收下位机传送的位置信号数据,通过公式(1)
shippositon=(long)(-w*855/180) (1)
其中 w为接收到的机械臂角度值,shippositon为经过换算后的挡板在屏幕上位置的坐标点数值。将机械臂角度值转化为虚拟环境中水平挡板的实际位置值,最后传送至 Moveship()函数中完成移动挡板,碰撞检测,刷新场景等流程。水平挡板在程序运行开始后初始化在视图区域中间位置,即机器人机械臂 90度位置。当病人左右移动机械臂时,由下位机根据与 90度位置偏离程度的大小,通过计算输出相应大小的阻尼力。程序一共分为三个难度等级,每一难度等级的砖块全部击打完毕并进入下一难度等级。每增加一级,程序会加速小球的下落速度来提高游戏难度。运行时程序同时记录病人的得分情况和游戏生命值。
500)this.style.width=500;" />
2.2配合主动训练模式的虚拟现实辅助训练软件设计
2.2.1 主动训练模式介绍 该训练模式适用于病情比较轻的患者,这些的患者的患肢虽然有些运动障碍,但是没有完全丧失运动能力,因此可以通过设计一些具有良好交互性的虚拟场景游戏,使患者完全自主地利用康复机器人进行锻炼。
2.2.2程序设计
整个软件采用VC++6.0创建的 win32 application应用程序,调用 OpenGL的库函数开发。软件所涉及的带有贴图的 3D模型和其他图形素材,采用了现成的资源,这样既保证了图形图像的质量又提高了开发效率。该辅助训练软件结合主动训练模式,给病人提供了宽广的 3D虚拟场景,通过训练臂,并辅助一个罗技游戏摇杆进行漫游,患者通过机械臂控制场景人物平面方位角的改变,辅助游戏摇杆负责场景人物的前进,后退,俯仰角度以及射击击发。患者需要完成的交互训练任务是尽快在该场景中找出移动的目标靶并射击命中。如图 4所示:
500)this.style.width=500;" />
该程序首先由 Win32应用程序框架中的WinMain()函数提供程序的入口。当窗口成功建立时,MsgProc()窗口回调函数调出OpenGL框架中Init()函数对OpenGL视图进行变换调整。Windows窗口生成后就进入 GameLoop()主循环中,在此一直循环调用 OpenGL框架中的Render()函数进行我们需要的图形场景处理和显示,程序退出时,调用 CleanUp()清除OpenGL连接。在交互方面,程序初始化时采用 Winsock 2.0建立了套接字,通过局域网接收下位机传送的机械臂位置数据,通过计算转化为场景人物的平面旋转角度。从而达到实时交互的目的。前进后退,俯仰角度的改变以及子弹的发射,采用键盘按键消息事件的方式实现,再通过游戏摇杆驱动程序关联响应的按键,达到摇杆辅助控制的目的。程序分别使用mciSendString函数和 sndPlaySound函数来实现游戏过程中的各种音效。
3、实验结果
进行康复训练时,病人的手固定在康复训练牵引机械臂的托盘上,医生通过上位机界面(医生端)分别设置运动模式为主动训练和抗阻训练,并调用相应的虚拟现实辅助训练程序进行交互式康复训练,结果明显提高了病人参与康复训练的积极性,训练时间明显增加,同时病人也能保持兴奋愉快的状态。病人训练的同时,上位机界面实时曲线绘制正常,在阻抗训练模式下实时训练参数曲线绘制如图 5所示,能较为准确的反映病人的训练状态。训练结束后打开病案数据库的历史数据记录表,可以看到位置数据和力度数据记录正确。
500)this.style.width=500;" />
5、总结
综上所述,本康复训练机器人系统采用的上下位机联合的方式,通过设计两种基于虚拟现实技术的互动训练程序,为患者的康复训练提供了一个生动的平台,将患者从枯燥乏味的康复训练中解放出来。实验结果证明,所设计的辅助训练程序能够较好的配合患者进行主动训练和抗阻训练模式的要求。在以后的研究中,还需要针对网络时延对病人与虚拟环境交互实时性的影响进行进一步的克服和改进。
本文作者的创新点是:本文针对中风病人和上肢受伤病人在传统的基于康复器械的训练中,人机之间缺乏良好的互动性以及训练模式内容枯燥乏味的缺点,开发了一种新颖的基于虚拟现实和计算机网络的上肢辅助康复训练系统。该系统配合康复训练的主动模式和阻抗模式,可以对病人进行具有趣味性和良好交互性的康复训练过程。