混合现实在医学领域的应用学习日志

混合现实在医学领域的应用学习日志

  • 理论知识
    • 混合现实
    • 追踪系统
    • 硬件
    • 场景
    • 可扩展性
  • 应用
    • 教育
    • 培训
    • 手术
      • 远程手术
        • da Vinci Research Kit (dVRK)

理论知识

混合现实

保罗-米尔格拉姆创造了混合现实(MR)的概念来涵盖reality-virtuality (RV)中所有可能的应用,可以理解为一个用来估计设备在应用环境中的位置的跟踪系统以及显示系统,AR可以使用这个位置在现实环境中明确现实虚拟内容,VR则可以形成一个虚拟世界。

追踪系统

光学追踪、磁力追踪和使用平面标记(图案或条形码)都已被用于MR的医疗应用。一些光学标记是用碘和钆元素专门制作的,因此它们在X射线/CT图像和MR图像中都能高强度显示。然而,光学追踪系统也需要在光学标记和摄像机之间有自由的视线,因此不适用于摄像机在病人体内时,如这种技术不可能用于MIS。由于受到诊断设备或其他铁磁性物体的干扰,医疗应用中的磁跟踪也缺乏稳健性。到目前为止,平面标记是AR中最流行的跟踪方法,并已成功地用于医疗应用。然而,必须注意的是,平面标记也很容易被遮挡,而且检测范围和方向都很有限。

无标记追踪是一种替代方法,它利用真实世界的场景,采用计算机视觉算法来提取图像特征作为标记。无标记追踪的质量取决于照明条件、视角、图像失真以及所使用的计算机视觉算法的稳健性。如果图像是在一组时间步长中获取的,也可以用光流来计算摄像机的运动和跟踪特征点。光流被定义为图像亮度模式的表观速度分布,可用于跟踪基于亮度/光线变化的每个像素的运动。最近在医学磁共振领域的一些工作就是将计算特征跟踪与轻量级的光流跟踪相结合来克服性能问题的。

追踪技术使用不同的传感方式,如相机、惯性传感器、机械系统等。通常情况下,选择跟踪系统是为了在定位精度和成本/复杂度之间找到最佳的平衡点。对于AR来说,视觉跟踪系统被广泛使用,因为使用低成本的商业相机(如手机中的相机)就可以实现高度精确的跟踪。视觉跟踪系统又被进一步细分为由外向内和由内向外的跟踪系统。

由外向内跟踪系统由几个静态放置在环境中的摄像机组成,利用视觉特征的多视角定位(例如,OptiTrack系统使用反射标记)对该区域进行高精度跟踪覆盖。这种系统可以为规模有限的特定应用环境提供可靠的跟踪,但成本增加,流动性低。另一方面,由于摄像机的静态放置,系统不会受到图像质量下降的影响,并且可以跟踪快速移动的目标。

由内向外追踪使用附着在用户身上的相机输入,例如,放置在智能手机、平板电脑/PC或头戴式显示器上的相机。大多数AR应用都是基于这样的跟踪系统,因为它们成本低、灵活性强。由于这些追踪器依赖于视觉特征,由于运动模糊、光线变化或遮挡等原因导致的图像质量下降会导致追踪的损失。通常将相机定位与其他具有互补特性的传感器(如惯性传感器)融合使用。

基于相机的跟踪需要了解一些环境的三维信息,以建立与二维图像特征的对应关系,并通过计算6自由度(6DOF)来进行设备的定位来替代传统上通过放置具有可识别图案的用于检测的特殊视觉标记来获得信息的方法。利用三维重建物体或各自的CAD1模型,并通过纹理特征或线条匹配,将它们作为与真实物体匹配的模板。在大多数情况下,事先没有关于环境的三维信息。同步定位和绘图(SLAM)系统可用于跟踪设备在未知区域内的位置,同时创建该区域的3D地图。SLAM是一个具有挑战性的领域,也是机器人技术和AR的一个关键话题。虽然到目前为止已经推出了几个单眼SLAM系统,但一个缺点是无法确定重建地图的真实比例,也无法在动态或无特征的环境中发挥作用。这些问题中的一些可以通过使用双目摄像系统或额外的惯性或深度传感器来加以缓解。

硬件

根据硬件,MR显示技术在可以分成两个主要的子类型:光学透视(OS)和视频透视(VS)。对于光学透视来说,透明的屏幕允许用户直接感知现实,而视频透视的现实是由摄像头捕捉的,由此产生的视频流被增强显示。操作系统显示器的例子有HoloLens、MagicLeap、DAQRI智能眼镜等。VS显示器的例子有HTC VIVE Pro、Oculus Rift S/Quest、VRgineers XTAL等。

AR可视化有几种选择,最终的选择取决于手头的应用。

手持设备,如平板电脑或智能手机,兼具可用性和低成本,虚拟增强物并不直接显示在现实世界中。相反,它们被放置在由设备摄像头捕获的实时视频上,导致固有的延迟和沉浸感的丧失。此外,它要求用户将设备指向感兴趣的区域,这使设备无法同时执行复杂的任务。在医疗领域,这种设备在交流信息时最有用,例如用于病人教育,也用于医疗专家之间的讨论。

头戴式显示器(HMD)为移动显示设备提供了一种替代方案,特别是光学透视(OS)版本,它可以直接在用户的真实世界视图上投射增强物。HMD提供一个嵌入式跟踪系统,比如谷歌眼镜,但是这类设备提供的计算资源相对较少,对跟踪算法的要求也高。微软HoloLens、Oculus Rift S和Oculus Quest以及其他许多支持Windows混合现实或Steam VR框架的系统的推出,彻底改变了这一领域。所有这些系统都使用视觉和惯性传感器来提供一个嵌入式SLAM跟踪系统,为许多AR应用的开发铺平了道路。

另一种解决方案是利用投影仪、半透镜或屏幕将信息直接增强到物理空间,不需要佩戴任何额外的显示设备。这被称为空间增强现实(SAR)。通过在一个开放的空间中增强信息,SAR实现了共享和协作。空间AR的限制是不能显示3D数据。视频透视SAR已被用于MIS指导,增强内窥镜的视频输出。不太常见的是光学透视SAR,但已经建立了使用半透明镜子进行手术引导的例子,还有一个用于解剖学教育的魔镜系统。另一种SAR方法是在手术显微镜中插入一个分光器,使用户能够通过微型投影仪的增强图像看到显微镜的视图。还有一种方法是直接增强SAR将采用投影仪或激光发射器将图像直接投射到物理物体的表面,例如,人体空间增强现实(SARP)系统将解剖结构直接投射到人类主体上。

即使目前的移动设备拥有先进的GPU和硬件,有限的计算能力、内存和能源消耗将继续成为实时移动设备3D图像的瓶颈。例如,下一代移动GPU的理论性能估计为400-500 GFLOPS,但其中50%将因功率和热量的限制而降低。现在,未来移动应用的一个主要要求将是极高分辨率的显示(即4K+)。对于医学MR应用所需的逼真渲染、物理和触觉反应,性能目标至少是30帧(5000-6000 GFLOPS),这意味着要比目前的技术水平提高20倍。因此,医学MR的未来可能依赖于大规模的云操作和并行化。

场景

目前的MR系统已经被证明在静态场景中表现良好。手术室就是这样一个受控环境的例子。然而,大量的应用需要在SLAM系统的高动态场景中实现强大的跟踪功能。同样地,当涉及到刚性物体时,物体跟踪技术已经接近成熟,但还不能处理铰接和非刚性物体。人体作为一个整体可以被看作是一个有关节的物体,而器官一般来说是高度非刚性的。由于身体和单个器官都只有几个特征,它们对任何系统来说都是一个巨大的挑战。

场景理解是系统的一个关键挑战。大多数现有的SLAM系统创建了一个稀疏的环境地图,这样的几何模型表示对定位是有用的。然而,对于MR来说,密集的场景映射是首选,因为它可以实现虚拟和真实物体的充分互动。当对场景的语义理解在纯几何理解的基础上实现时,进一步的能力将被释放出来。将SLAM系统地图与提供分割和标记的深度神经网络的输出相融合是计算机视觉中一个活跃的研究课题。

可扩展性

除了跟踪技术外,可扩展性是AR的另一个主要问题。系统需要在任何环境下运作,而不是许多准备步骤(如校准)或者手动设置。

应用

教育

教育主要是分享知识,通过使用文本、图像、视频等其他媒介进行。由于在医学上主要处理的是三维物体,即人体及其器官。与具有固定或预定视点的图像和视频相比,VR允许对三维场景进行自由检查。用辅助信息对虚拟场景进行操纵和增强是相对直接的。此外,呈现的数据的某些方面可以被强调,以便用户可以直观地感知关键内容。但同样,VR也可能阻碍虚拟内容与现实世界的联系,特别是在教育病人的时候。而MR可以极大地改善这种情况,通过使用Magical Mirror设备镜像显示虚拟信息,可以大大增强学习体验。使用头戴式设备对空间信息的直观感知与使用VR时的感知相似,且参与者的不良反应,如恶心、头痛、头晕或迷失方向感更少。Parkhomenko的研究通过沉浸式VR头盔,基于患者特定解剖的模型可以在经皮肾镜取石术前确定患者的肾脏解剖结构和经皮取石的最佳位置,还可以通过患者教育来帮助减轻患者的焦虑。

据估计,50-60%的人对牙科手术和与牙科有关的刺激有特定的恐惧或焦虑。与恐惧有关的行为被认为是牙科病人管理中最困难的方面,并可能干扰正常的牙科护理,因为患有牙科恐惧症(名为 “odonto-phobia”)的病人在临床情况严重时才去看牙医。在治疗恐惧症中,最有效的治疗技术是体内暴露疗法(IVET)和虚拟现实暴露疗法(VRET)。IVET是一种基于病人直接面对一个物体或一系列焦虑情况的技术,以减少随之而来的焦虑反应。这种暴露疗法被认为是黄金标准疗法。最近,在治疗特定恐惧症方面,VRET已成为IVET的一个可行的替代品。使用计算机生成的VR环境,病人会逐渐暴露在有可能导致焦虑的环境下。与IVET相比,VRET更安全,因为病人以可控的方式更缓慢地面对他们的威胁的虚拟表现。众所周知,VRET能引起一种在虚拟环境中 "存在 "的感觉,这也是VRET有效的主要原因。

NeuroVR平台可用于创建不同的环境,如客厅、超市或公园,旨在对患有各种恐惧症的病人进行行为康复,如飞行恐惧症、广场恐惧症、恐高症和饮食紊乱。它的特点之一是根据开放协议收集生物反馈,并根据病人的互动对虚拟环境中的物体进行实时修改。由于担心病人暴露过量可能会增加恐惧症发作的风险,康复教育不能超过20分钟,病人还会被要求坐着以避免模拟器病。使用AR进行暴露治疗通常会增加小动物恐惧症病人的接受度,因为他们不是在现实中的动物。这在技术上是通过光学标记实现的,病人可以看到并使用他们的手进行互动。

在临床上,认知行为治疗、一氧化二氮和在牙科治疗期间使用静脉镇静剂等可以最大限度地减少病人在牙科治疗期间的疼痛和不适感。除了这些侵入性方法,用电影分散病人的注意力也有助于减少疼痛。因此,VR可以作为一种有效的非药物镇痛剂来治疗牙痛。病人沉浸在VR中,以至于不经常思考他们的疼痛。同时,病人也无法看到牙科医生和器械。VR分散治疗的效果可能取决于患者在虚拟环境中的感受。对于VR的应用,最好是在三维空间产生声音,特别是在双耳模式下。用简单的耳机重现身临其境的音频,不需要复杂的硬件设备的帮助,3D声音会增加人们对虚拟现实的沉浸感。此外,沉浸式音频中的配乐比立体声格式的配乐更有可能改变病人心理状态。

将VR和AR用于口腔家庭护理来改善儿童和成人的口腔卫生,激励预防口腔疾病也是可行的。特别是儿童,使用游戏的优势在于:每当玩家错误地执行刷牙技术时,系统就会提供一个视觉反应,使患者能够纠正刷牙技术。在中风康复领域,MR也可以减少病人和康复机构的康复训练成本。与游戏非常相似,病人必须在应用程序的指导下完成任务,并通过游戏控制器的虚拟手套获得结果。

解剖学教学是VR的一个核心应用。利用美国国家医学图书馆提供的计算机断层扫描、磁共振成像和组织图像的数据集可以创建一个虚拟的人类。使用SURFdriver软件对预分割图像进行分割,以确定各身体器官结构。其间还可以使用手势与3D模型进行互动,以显示被掩盖的器官。将每个解剖结构建模为一个单独的3D对象可以帮助医学专业的学生学习解剖学,也有可以在向病人解释疾病的过程中帮助医生。

培训

对于年轻的外科医生来说,获得手术经验是一个挑战。培训主要限于使用手术模拟训练器、动物尸体。VR和特别是MR可以提供理想的替代品,特别是使用头戴式设备作为内窥镜屏幕可以显著提高手术表现。2015年,Hung等人为机器人肾脏部分切除术开发了一个新的模拟平台,将AR和VR结合起来使用,培训住院医生、研究员和没有经验的外科医生的机器人肾脏部分切除术。**必要的可视化可以按需虚拟地生成,物理仿真可以用来计算由切口引起的变形。**由于大多数机器人平台目前不包括触觉反馈,与真实手术的唯一区别应该是仿真和可视化的质量。虚拟指导模块也可以很容易地适用于更容易获得的界面,如手机、平板电脑和计算机,如商业上可用的Touch SurgeryTM智能手机应用程序,它可以将逐步认知任务分析风格的指导与手机和平板电脑的3D插图相结合。PalpSim系统是一个增强的虚拟系统,受训者可以看到他们自己的手在触摸虚拟的病人和拿着虚拟的针头。

一场手术需要考虑是:

  1. 目标和解剖学考虑。
  2. 常见的危险和错误。
  3. 挽救和预防错误的提示和技术。

手术中的每个步骤都可以被分解成一个 “故事板”,用Paint 3D (Microsoft) 和Blender Animation (Blender Foundation) 来制作额外的原始3D动画,并与相应的专家评论相匹配。专家教学可以用电子学习制作软件Adobe Captivate 9 的Adobe Voices转换为音频评论,当学习者观看模拟传统的术中指导经验时,这将通过虚拟现实头盔扬声器传输。

模拟器需要以下四个要素。
(1) 视觉真实,即视觉模拟必须足够逼真,能反映真实的医疗情况。
(2) 物理真实,例如,组织在被抓住时需要包含动态真实性,模拟器设备需要对受训者施加的力量做出正确的反应。
(3) 生理真实,肌肉应显示收缩,出血应像在真实情况下一样发生。
(4) 触觉现实,受训者需要真实地体验阻力和力量,以达到良好的模拟效果。

此外,为了防止被培训者对自己知识掌握的信心与他们的实际知识水平之间存在潜在偏差,可以实施有标准化正确答案的前/后评估。

手术

在进行手术时,MR可以在各个层面提供重要支持。例如,VR可以用于手术计划。医生可以看到解剖学的三维模型以及病理注释等图像,如CT、MRI、PET。在这种情况下使用VR技术的目的是使用一个专门的系统来展示三维数据,而不是将其投射到二维显示器上。它的主要优势是易用性、演示质量和支持规划过程的互动能力,可以缩短手术时间,减少病人的术前焦虑。AR也可以用来取代传统的显示技术。AR方法的主要优点是内窥镜图像和辅助信息可以显示在一个虚拟显示器上,这种虚拟显示器可以任意定位,减少了外科医生在使用真实显示器时经常遇到的视觉-运动轴的干扰。由于虚拟显示器在现实世界中是固定的,所以需要对外科医生的头部运动进行稳定的跟踪, 如HoloLens。

一旦确定了增强内容,那么这些内容(通常是计算机生成的图形)就可以叠加或注册到真实的文字场景中。注册技术通常涉及一个优化步骤(能量函数),用来最小化虚拟物体和真实物体之间的差异,例如,使用3D到3D迭代最接近点(ICP)技术,或其他2D到3D算法。后者对术前的三维数据如CT和MRI图像与术中的二维数据如超声波、投影X射线(透视)、CT-荧光镜以及光学图像的注册也很有效。这些方法通常涉及基于标记(外部基准标记)、基于特征(内部解剖标志)或基于强度的方法,通过优化注册标准,找到一个几何变换,使三维图像的投影与二维图像在空间上达到最佳对应。

CT DICOM数据可以被输入全息V3D建模软件(Visual3d Medical Technology Development Co.)。对目标器官、组织进行视觉边缘检测、自动分割提取和注册,对于不能自动识别或分割模糊的区域可以选择手动ROI绘制补偿。去除所有不相关或不相干的部分(如CT床板、体外异物、留置管阴影等),仅保留器官、血管、收集系统、皮肤、骨骼等,所有的目标器官、组织依次做扩大、腐蚀和平滑,并分别保存为标准模板库(STL)文件。然后,把所有STL文件导入到场景编辑模式。在这个模型中,可以调整目标器官、组织的颜色和透明度,以获得最佳的全息V3D建模效果。最后将V3D建模数据导入视频系统或MR设备

MIS视频中的虚拟解剖结构的注册可能涉及视野有限(FOV)、器官变形、闭塞和无标记跟踪等问题。一种可能的方法是使用同步定位和绘图(SLAM)算法,该算法最初是给未知空间的自主机器人导航开发的。AR与机器人导航非常相似,即都需要获得周围环境的地图并定位摄像机的当前位置和姿势。然而,在单个手持相机(如内窥镜相机)上应用SLAM比机器人导航更复杂,因为机器人通常配备有测距工具,并且会比内窥镜相机更稳定和缓慢地移动。Grasa等人提出了一个单眼SLAM三维模型,他们创建了一个稀疏的腹腔三维地图来实时计算内窥镜的运动,处理实时发生的高离群率,同时也减少了计算的复杂性。一个用于图像引导的MIS的运动补偿SLAM(MC-SLAM)框架也被提出,它不仅预测摄像机的运动,而且还采用了一个高级模型来补偿周期性的器官运动。这使得即使在摄像机的视场之外也能对组织运动进行估计和补偿。在这项工作的基础上,Mountney和Yang开发了一个用于软组织手术的AR框架,该框架使用术中锥形束CT和透视作为桥接模式,通过非刚性生物力学驱动的注册,将术前CT图像注册到立体腹腔镜图像。通过这种方式,不需要手动对准或靶标,还能考虑到MIS过程中由充气和呼吸引起的组织变形。Chen等人通过将SLAM算法与密集的立体重建相结合,在MIS中提出了一个几何感知的AR环境,为术中的AR互动,如区域高亮和测量,提供了一个全局表面网。

准确的病人特定数据建模也是需要的。不仅要使用离线高保真图像采集和三维重建,也需要实时高保真在线模型重建,例如,处理组织变形。在线模式的实时高保真三维模型重建,如内窥镜摄像机的视频,将减少离线和实时重建性能捕获之间的差距。方法之一是开发针对现有低分辨率实时跟踪器方法,增加局部信息开发一个大型的3D病人模型数据库也是一种方式,可以用人工智能算法学习在线和离线图像细节之间的关系,使用高分辨率离线模式获得的数据训练一个模型,用来预测在线图像捕捉所给出的三维模型细节,重建内窥镜相机的三维信息。

软件开发工具包(SDK),如ARToolKit和Vuforia正在使越来越多的应用出现。在这些应用中,跟踪的准确性并不关键。但是大多数使用基于标记的跟踪,依赖于标记的位置和焦点,在照明条件差的情况下无法工作。病人的具体数据和三维解剖模型的显示也将在非常小的显示器上受到限制。目前在医院环境中利用AR SDK开发的的商业系统VeinViewer Vision(Christie Medical Holdings)是一个用于协助血管接入手术的系统。它将近红外光投射到病人的皮肤上,被血液吸收并被周围组织反射,实时捕获信息并将血管网络的图像投射到皮肤上,提供病人血管模式的准确图。这使得许多针穿刺程序,如获得静脉通路更容易成功地进行。

手术机器人可以将MR的发展向前推进一大步。以达芬奇手术系统为例,外科医生使用一个特殊的操作台,具有固定的立体视角,以及手握式操纵器来操作手术工具,所有的手术工具将被刚性地连接到病人车上的机器人手臂上。由于外科医生的视角和互动手段是固定的,而且摄像机和工具的位置是事先知道的,所以即使是多个外科医生同时进行,精确和稳定的校准/注册是可能的,立体信息的精确可视化也是可能的。在严格控制的情况下,手术机器人可以提供最高质量的MR方案。AR-3D引导的手术可用于确定机器人辅助的病变索引。此外,机器人辅助手术方法可以通过AR-3D引导来调节,手术机器人还有可能向外科医生提供触觉反馈。可以将MR结果和腔镜视频流导入新的显示器(用视频采集卡,如机器人手术窗口的TiePro显示功能),在新的显示器中进行融合或引入HoloLens MR-HMD。可以采用 "血管分叉标记 "技术(即注册主动脉和动脉的分叉),实现MR图像与术中真实场景的标记、融合、跟踪和实时对比。术者可利用MR图像的旋转、分割、隐藏、缩放等功能,保证切除手术的准确性和安全性

在大多数情况下(即只要工具是刚性的或铰接的),手术器械的追踪是可以可靠地计算出来的。如外科医生或病人的解剖结构对工具的遮挡,可以通过附加标记或改变工具的几何形状来解决。最新的方法一般不再依赖附着在物体上的特殊标记,而是使用物体的特征如边缘、纹理等作为跟踪信息。除了手术室设备,外科医生和相关的MR硬件(如HMD)也需要被高精度地追踪。目前的一个缺点是不同用户的眼屏适应情况不同,这可能会导致轻微的失衡,从而导致恶心、眼睛疲劳、信息显示偏移等。HoloLens和VIVE硬件允许手动适配镜头系统,而像XTAL这样较新的硬件会结合眼球追踪自动适配用户。一旦手术设备、器械和外科医生可以被跟踪和共同注册,那么在手术室里以非常高的精度对任意信息进行空间定位和显示就相对简单了。

在手术环境中,MR的最大挑战是病人本身,因为仅仅是呼吸就会导致内部器官的明显变形。假设有组织模型可以正确地反映器官的变形,那么最重要的环节就是与器官相关的可靠标记。大脑皮层的形状可以作为一个基准点,因为它对病人来说是独一无二的,非常适用于术前和术中数据的标记。然而,在肾脏或肝脏手术的情况下,情况要糟糕得多。在特写视图中,这两个器官看起来非常均匀,几乎没有光学上可区分的特征。特别是在微创手术(MIS)中,由于视野受限,几乎没有机会找到足够的特征进行标记。事实上,大多数自动检测的特征是基于光照伪影,如镜面反射,这样的特征不适合用来计算配准。由器官的病理变化引起的特征当然也不应该被用于标记。

如果不能找到解剖学上的靶标,可以使用人工靶标。较大的标记可以提供更好的定位和方向估计,但代价是较高的空间消耗,最适合用于骨骼附近。较小的标记允许对范围内的解剖结构有更高的覆盖率,更适合于非刚性的情况,同时使用多个小标记可以同时获得可靠的标记和好的位置和方向的估计。Kong等人做了在猪体内使用荧光金靶标的体外和体内实验。这些靶标有一个螺旋形状,插入肾脏可以防止迁移。它们的荧光涂层可以在手术期间在近红外光谱中被检测到,并且标记物可以在CT图像中被可靠地识别,变形下的精确度低于1毫米。

远程手术

远程手术需要专门的通信网络来控制外科医生执行行动到结果显现的时间延时。这个延时一直是研究的重点,应该低于105毫秒,才能避免性能和用户体验的恶化。Obenshain和Tantillo使用LTN覆盖网络和达芬奇机器人作为远程手术设备,进行了使用公共互联网并确保高可靠性和低延迟的研究图像压缩技术和网络能力的进步将有望使这一领域得到更广泛的应用。在手术过程中,将5G网络与MRASN(混合现实辅助的手术导航)相匹配,实现全息MR立体图像的高通量计算分析和4K分辨率的云视频直播,使不同地方的专家可以与外科医生实时共享和互动,从而实现数字化手术和远程医疗平台。

远程手术系统结合Leap Motion,通过使用红外LED和深度摄像头来追踪用户的手部轨迹,允许操作员在混合现实场景中远程操作机器人。远程操作系统包括:人类操作员、从属机器人、主设备、通信和环境。人类操作员通过主设备控制从属机器人,主设备用于收集操作者的操作信息,然后生成命令并通过通信传输,从属机器人将按照命令完成与环境互动的任务。

Leap Motion由Magic LEAP公司开发,是一个USB设备,内部有三个红外LED和两个深度摄像头,能够跟踪用户的手指坐标和手掌的位置。此外,Leap Motion还可与头戴式显示器(如Oculus Rift)结合使用,以获得更好的人机互动性能。由微软发布的HoloLens是一款HMD。与普通的增强现实设备不同,HoloLens允许用户直接观察现实世界的环境。此外,用户还可以通过自然的方式与内容和信息进行互动,如凝视、手势甚至是语音。不过由于专利保护的原因,HoloLens传感器提供的原始数据是不可用的。Unity由Unity Technologies开发,是一个跨平台的游戏引擎,用来生成混合现实场景。使用Leap Motion,我们能够在Unity中获得手的虚拟模型。此外,Unity可以通过使用 "全息仿真 "功能与HoloLens建立通信,并将视频流传输到HoloLens。

系统需要使用Leap Motion和机械臂提供的API,基于C++的API开发一个基于UDP的通信程序,用来实时向机器人传输命令。实施步骤如下:
1.使用Leap Motion来捕捉用户的手势信息。
2.定义一个手掌是否闭合的触发器,在检测到手掌闭合的同时开始跟踪手掌的位置。
3.用转换算法将手掌的位置转换成从属机器人的笛卡尔坐标。
4.根据转换算法的结果生成应用于从属机器人的命令,然后通过UDP套接字传输这些命令。
用户可以通过HoloLens观察从属机器人的运动,更重要的是,由Leap Motion生成的手的虚拟模型也被整合到场景中,以获得更好的交互体验。

在建立这个系统的过程中,如何将手掌的坐标转移到机器人的直角坐标上是一个关键点,这样施救机器人的机械手末端才能与人类操作者的手掌同步移动。Leap Motion提供的坐标是以毫米为单位。如手掌的位置被确定为(x,y,z)=[110,-120,130],那么手掌在现实世界中的位置应该是x=+11厘米,y=-12厘米,z=13厘米。Leap Motion坐标系的原点被定义为设备的顶部和中心,具体来说,手掌的位置将被确定为[0,0,0],而用户的手掌在Leap Motion的顶部和中心,使用右手坐标系。转换方程是:
x n e e d = ( x L M − L M s t a r t ) L M r a n g e n e e d r a n g e + n e e d s t a r t x_{need} =\left ( x_{LM}-LM_{start} \right )\frac{LM_{range} }{need_{range} } +need_{start} xneed=(xLMLMstart)needrangeLMrange+needstart
L M r a n g e = L M e n d − L M s t a r t LM_{range}=LM_{end} - LM_{start} LMrange=LMendLMstart
n e e d r a n g e = n e e d e n d − n e e d s t a r t need_{range}=need_{end}-need_{start} needrange=needendneedstart

在Leap Motion控制器的视野范围内定义一个立方体区域InteractionBox。为了获得更好的跟踪性能,Leap Motion会根据视场以及 "用户的交互高度设置 "来改变InteractionBox的大小。然而,一个点的归一化坐标和现实世界环境中该点的归一化坐标之间可能会有偏差,使从属机器人表现不佳。因此保存一个InteractionBox对象,并采用它来规范Leap Motion视场中的所有点。

假设在初始点,手掌在Leap Motion的视野中的坐标为PLeap(x0Leap , y0Leap , z0Leap ),同时,它在从属机器人的坐标为Pr(x0r, y0r, z0r)。在时间 t,坐标分别为PLeap(xtLeap , ytLeap , ztLeap), Pr(xtr, ytr, ztr)。

通过对上述参数的定义,转换关系可以表示如下:

{ x t r = x 0 r + C 1 ( Δ x t L e a p ) y t r = y 0 r + C 2 ( Δ y t L e a p ) z t r = z 0 r + C 3 ( Δ z t L e a p ) \begin{cases}x _{t}^{r} =x_{0}^{r}+C_{1}\left ( \Delta x_{t}^{Leap} \right ) \\y _{t}^{r} =y_{0}^{r}+C_{2}\left ( \Delta y_{t}^{Leap} \right ) \\z _{t}^{r} =z_{0}^{r}+C_{3}\left ( \Delta z_{t}^{Leap} \right ) \end{cases} xtr=x0r+C1(ΔxtLeap)ytr=y0r+C2(ΔytLeap)ztr=z0r+C3(ΔztLeap)

其中,C =(C1,C2,C3)是未确定的参数,ΔPLeap =(ΔxtLeap ,ΔytLeap,ΔztLeap)是飞跃运动控制器检测到的手掌坐标的变化值,考虑到飞跃运动控制器的坐标系与从属机器人的坐标系不匹配,它们可以表示为如下:

{ Δ x t L e a p = z t L e a p − z 0 L e a p Δ y t L e a p = x t L e a p − x 0 L e a p Δ z t L e a p = y t L e a p − y 0 L e a p \begin{cases} \Delta x_{t}^{Leap} =z_{t}^{Leap}-z_{0}^{Leap} \\\Delta y_{t}^{Leap} =x_{t}^{Leap}-x_{0}^{Leap} \\\Delta z_{t}^{Leap} =y_{t}^{Leap}-y_{0}^{Leap} \end{cases} ΔxtLeap=ztLeapz0LeapΔytLeap=xtLeapx0LeapΔztLeap=ytLeapy0Leap

Leap Motion控制器收集的位置数据会出现较大的波动,这通常会对控制产生负面影响。因此添加约束,例如:

{ Δ x t L e a p = 0 , Δ x t L e a p ∈ ( − ∞ , − 6 ) ∪ ( 6 , + ∞ ) Δ x t L e a p = 0 , Δ x t L e a p ∈ ( − 0.6 , 0.6 ) \begin{cases} \Delta x_{t}^{Leap} =0, \Delta x_{t}^{Leap} \in \left ( - \infty, -6 \right ) \cup \left ( 6,+ \infty \right ) \\\Delta x_{t}^{Leap} =0, \Delta x_{t}^{Leap} \in \left ( -0.6, 0.6 \right ) \end{cases} {ΔxtLeap=0,ΔxtLeap(,6)(6,+)ΔxtLeap=0,ΔxtLeap(0.6,0.6)
{ Δ y t L e a p = 0 , Δ y t L e a p ∈ ( − ∞ , − 3 ) ∪ ( 6 , + ∞ ) Δ y t L e a p = − 1 , Δ y t L e a p ∈ ( − ∞ , − 1 ) Δ y t L e a p = 1 , Δ y t L e a p ∈ ( 1 , ∞ ) \begin{cases} \Delta y_{t}^{Leap} =0, \Delta y_{t}^{Leap} \in \left ( - \infty, -3 \right ) \cup \left ( 6,+ \infty \right ) \\\Delta y_{t}^{Leap} =-1, \Delta y_{t}^{Leap} \in \left ( - \infty, -1 \right ) \\\Delta y_{t}^{Leap} =1, \Delta y_{t}^{Leap} \in \left ( 1, \infty \right ) \end{cases} ΔytLeap=0,ΔytLeap(,3)(6,+)ΔytLeap=1,ΔytLeap(,1)ΔytLeap=1,ΔytLeap(1,)
{ Δ z t L e a p = 0 , Δ z t L e a p ∈ ( − ∞ , − 5.6 ) ∪ ( 5.6 , + ∞ ) Δ z t L e a p = 0 , Δ x t L e a p ∈ ( − 1 , 1 ) \begin{cases} \Delta z_{t}^{Leap} =0, \Delta z_{t}^{Leap} \in \left ( - \infty, -5.6 \right ) \cup \left ( 5.6,+ \infty \right ) \\\Delta z_{t}^{Leap} =0, \Delta x_{t}^{Leap} \in \left ( -1, 1 \right ) \end{cases} {ΔztLeap=0,ΔztLeap(,5.6)(5.6,+)ΔztLeap=0,ΔxtLeap(1,1)

然而,在某些特殊情况下,我们发送的坐标并不在机器人的工作区。为了保护机器人以及它周围的物体,我们有必要弄清楚从属机器人的工作空间,并在一个合理的阈值中限制点。在知道从属机器人的DH参数的假设下,我们可以用以下公式计算出同质变换矩阵:
i − 1 A i = [ c o s θ i − s i n θ i c o s α i s i n θ i c o s α i α i c o s θ i c o s θ i c o s θ i c o s α i − c o s θ i c o s α i α i s i n θ i 0 s i n α i c o s α i d i 0 0 0 1 ] ^{i-1}A_{i} =\begin{bmatrix} cos\theta _{i} & -sin\theta _{i}cos\alpha _{i} & sin\theta _{i}cos\alpha _{i} & \alpha _{i}cos\theta _{i}\\ cos\theta _{i} & cos\theta _{i}cos\alpha _{i} & -cos\theta _{i}cos\alpha _{i} & \alpha _{i}sin\theta _{i}\\ 0 & sin\alpha _{i} & cos\alpha _{i} & d{i}\\ 0 & 0 & 0 & 1 \end{bmatrix} i1Ai= cosθicosθi00sinθicosαicosθicosαisinαi0sinθicosαicosθicosαicosαi0αicosθiαisinθidi1
我们可以通过末端执行器的坐标来计算从属机器人底座的坐标:
n X 0 = 0 A 1 1 A 2 … n − 1 A n ⋅ X n ^{n}X_{0}=^{0}A_{1}^{1}A_{2}\dots ^{n-1}A_{n} \cdot X_{n} nX0=0A11A2n1AnXn
其中n代表从属机器人的DOF,而X0 = [x0, y0, z0, 1] ,nX0 = [xn, yn, zn, n]分别代表从属机器人的底座坐标,末端执行器的坐标。

从属机器人有一个软件保护机制,以保护其在指定的工作空间之内移动。当软件保护机制被触发时,机器人将立即进入紧急停止状态,远程操作的过程将被中断,因此需要进一步开发一个工作空间约束机制。

在通过上面讨论的转换算法完成坐标系转换后,我们可以假设从属机器人的手掌和末端执行器的坐标是近似匹配的。在工作空间限制的帮助下,我们可以确保机器人的软件保护机制不会在人类操作者不遵守规定时被触发。通过HoloLens,操作者能够观察到从属机器人和手的虚拟模型,这使得远程操作的过程更加直观。此外,在混合现实视觉反馈的帮助下,操作者能够参照虚拟模型移动手部,减少控制从属机器人的难度。在任务过程中,我们需要定义一个触发器来确定远程操作是否在运行,这样操作者就可以在任何时候启动或停止这个过程。

da Vinci Research Kit (dVRK)

混合现实在医学领域的应用学习日志_第1张图片

达芬奇手术中的病人侧助手可能需要插入机器人器械,但在其进入内窥镜视野之前不知道其尖端的位置。如果内窥镜视野的方向不对,他甚至可能需要在手眼协调不好的情况下为内窥镜器械导航。通过dVRK-XR和靶标跟踪,可以通过HoloLens的光学系统提供机器人仪器、内窥镜及其视场指示器的实时可视化,虚拟渲染出实际仪器,减少完成工具操作所需的时间。

  • 虚拟PSM或ECM的远程操作
  • 机器人手术中的端口/托架规划
  • 与远程专家的合作和互动
  • 用于培训和教育的沉浸式可视化

dVRK Mixed Reality Extension采用了一个基于组件的软件架构,其中不同的模块可以通过基于JSON的配置动态加载。
混合现实在医学领域的应用学习日志_第2张图片

SawSocketStreamer可以连接到现有的dVRK程序,并通过UDP以固定的帧速率发送JSON序列化的消息,通过JSON文件动态配置要发送的消息、目的地IP地址、端口号和帧速率。例如,通过病人侧操纵器(PSM),我们可以通知sawSocketStreamer以100Hz的速度从dVRK中获取名为 "GetStateJoint "的函数的结果,然后将返回的结果序列化并发送至指定目的地。

该应用程序是用Unity建立的,Unity程序可以接收和反序列化传入的信息。因此,PSM的 "GetState-Joint "的结果可以在Unity环境中使用。我们使用操纵器的DH参数在Unity中建立一棵对应于其运动学树的GameObjects。父节点和子节点的相对变换可以是固定的,由传入信息的特定字段控制,或者与另一个关节相关联以反映被动的机械联系。该惯例类似于统一机器人描述格式(URDF)。我们为Unity构建PSM、ECM和MTM。通过包含关节状态的实时消息,机械手的可视化可以与真实的机器人同步。

使用Unity作为框架的一个主要优势是它对多种混合现实平台的兼容性,例如VR平台如Oculus(桌面)和Google Cardboard(Android),AR平台如Microsoft HoloLens(Windows UWP)。虽然Unity照顾到了多个平台的图形API,但套接字API和线程API并没有涵盖Windows UWP,因为它不是一个POSIX兼容的平台。因此,我们明确地使用Windows UWP的API来实现一个异步UDP客户端。目前,dVRK-XR支持Windows、Linux、Windows UWP和Android。

对于混合现实应用来说,保持尽可能高的渲染帧率以提供流畅的用户体验是至关重要的。在服务器端,sawSocketStreamer对dVRK控制是异步的,在客户端,socket处理和渲染是在不同的线程中完成的。当一个新帧的渲染被触发时,最新的消息被从套接字客户端拉出,然后被反序列化和可视化。
混合现实在医学领域的应用学习日志_第3张图片
dVRK的延迟 T=TSS + TN + TR

TSS:sawSocketStreamer和机器人产生的联合状态之间的延迟

TN:发送UDP包的联网时间

TR:到达和渲染之间的时间

假设sawSocketStreamer的接收机制和渲染所引入的延迟是平均帧时间的一半,因此TSS 是 0.000278 ms

TR = 0.5 / R

可以在数据包中加入一个时间戳,记录机器人产生特定关节状态的时间。

对TN的评估并不简单,因为设备和机器人上的时间并不准确同步。可以将套接字客户端配置为回传完全相同的消息,并且假设TN’=TN,测量往返时间TRD,结果与套接字流媒体的不同帧率有关。

TRD = TSS + TN + TR + TN

因此T = (TRD + TSS + TR) / 2

最终的可视化是实时和低延迟的。

你可能感兴趣的:(学习日志,混合现实,mr)