diff --git a/tactile/content/abstracten.tex b/tactile/content/abstracten.tex new file mode 100644 index 00000000..578b6bef --- /dev/null +++ b/tactile/content/abstracten.tex @@ -0,0 +1,5 @@ +\section*{ABSTRACT} +To solve the problems of missing haptic feedback, poor real-time performance and weak tactile realism in deformable object manipulation for virtual reality and remote operation, this paper presents the Design and Implementation of a real-time touch model and simulation system for deformable objects based on MuJoCo. MuJoCo is the foundation of the physics engine, and then WEART haptic gloves and VR devices are added to build a closed-loop system of vision-physical simulation-haptic feedback. It can be used to model the deformation and contact forces of objects accurately, obtain real-time contact force data, adjust force feedback adaptively, and dynamically change the texture haptics of soft bodies, cloth, sponges, etc. With the improvement of the damped-least-squares method, the inverse kinematics of the virtual hand in this paper have been optimised, a multi-threaded parallel architecture has been designed to ensure visual-haptic synchronisation and low latency, and then, based on factors such as task efficiency, operation accuracy, material recognition rate, user subjective experience, etc., comparisons will be conducted to verify the system. According to the experiments, the speed of task execution in the visuo-haptic fusion mode is about 30 per cent faster than that in the pure vision mode,and the end-to-end delay of the system is less than 15ms. It will lay a good foundation for building a stable, reasonable and continuous Haptic simulation environment of deformable objects. The system can provide an excellent experimental platform and technical support for virtual surgery training, and it is also possible to have the flexibility of object manipulation and remote haptic interaction, etc., so it has some theoretical significance and engineering application value. + +\vspace{0.5cm} +\noindent\textbf{Key words:} MuJoCo, Deformable Objects, Haptic Feedback, Real-time Simulation, Visuo-haptic Fusion \ No newline at end of file diff --git a/tactile/content/abstractzh.tex b/tactile/content/abstractzh.tex new file mode 100644 index 00000000..5ae43073 --- /dev/null +++ b/tactile/content/abstractzh.tex @@ -0,0 +1,5 @@ +\section*{内容摘要} +虚拟现实和远程交互中,可变形物体操作常常缺少力触觉反馈,即时性不足、触感不真实等状况,本文创建出一个基于MuJoCo的可变形物体即时触摸建模和仿真系统。该系统把MuJoCo物理引擎作为核心部分,加上WEART触觉手套和VR设备,形成了视觉、物理仿真、触觉反馈相结合的一体化循环系统,实现了对软体、布料、海绵等常见可变形物体的高精度建模,实时计算接触力,自动调节力反馈和动态纹理触觉显示效果,本文使用改良阻尼最小二乘法改进虚拟手逆运动学求解过程,采用多线程并行框架保证视触同步、低时延运行,通过对比实验从任务效率、操作精准度、材质识别率、用户主观感受等几个方面对系统进行验证。实验结果表明,视触融合模式相比单纯的视觉模式任务完成时间提高了30\%以上,系统端到端延迟小于15ms,可以给可变形物体交互提供稳定的、真实的、流畅的触觉仿真环境,该系统可以为虚拟手术培训、柔性物体操作、远程触觉交互等领域的标准化实验平台和技术参考提供支持,具有一定的理论价值和工程应用意义。 + +\vspace{0.5cm} +\noindent\textbf{关键词:} MuJoCo,可变形物体,触觉反馈,实时仿真,视触融合 \ No newline at end of file diff --git a/tactile/content/acknowledgements.tex b/tactile/content/acknowledgements.tex new file mode 100644 index 00000000..3440d3c7 --- /dev/null +++ b/tactile/content/acknowledgements.tex @@ -0,0 +1,14 @@ +% acknowledgements.tex +\section*{致谢} + +时光流逝,大学本科阶段的学习与生活就要结束,回想这段充实又宝贵的过程,我收获了知识,也获得了成长,而且得到了师长、同窗以及家人细心的扶持和陪伴,在这里,我衷心地向所有给我帮助和关怀的人表示最诚真的感谢。 + +我要向我的导师致以最高的敬意,从论文选题开始,一直到框架搭建、理论梳理,再到最后的撰写和修订阶段,导师都投入了很多心血。他治学严谨,学术底蕴深厚,而且指导时非常耐心细致,给我指引了研究方向,并不断充实和完善我的研究思路,导师不但在学术上给我专业的引导,还用自己务实负责、追求卓越的态度,让我真挚地感受到科研的意义所在,在这里,我由衷地感谢我的导师。 + +要感谢学院所有的任课教师,大学时期,老师们具备扎实的专业知识、丰富的教学经验以及认真负责的教学态度,给我构筑了稳固的理论根基,并引领我渐渐迈进专业范畴,无论是课堂上细致的讲解还是课后耐心的回答,都令我收获良多,为当前毕业设计的如期完成形成了关键基础。 + +感激那些一同学习、共同成长的同学们,在学习和生活方面,我们互相勉励,彼此扶持,一起应对挑战,分享快乐。课堂上的议论,实验时的合作,撰写论文时的交流,这些全都成了我大学时期温馨又宝贵的回忆,这段携手走过的岁月,既让我收获了知识,也让我收获了珍贵的友情。 + +我最想感谢的是我的家人,他们是我最稳固的依靠,一直默默奉献,毫无保留地支撑着我的学业以及人生选择。不论遭遇怎样的艰难险阻和压力,家人总是给我最温馨的鼓舞,最笃定的信任,从而令我能专心致志地去完成学业,他们的领悟、宽容以及付出,便是我不断向前迈进的力量源泉和内心依恃。 + +感激各位专家老师在百忙之中参与本论文的评审及答辩,非常感谢你们给出的珍贵意见和专业建议,这些使得本论文能够得到进一步的完善。 \ No newline at end of file diff --git a/tactile/content/chapter1.tex b/tactile/content/chapter1.tex index c07d5664..343869b0 100644 --- a/tactile/content/chapter1.tex +++ b/tactile/content/chapter1.tex @@ -1,125 +1,72 @@ -\subsection{研究背景及意义} +% chapter1.tex +\section{绪论} -\subsubsection{选题背景} +\subsection{研究背景与意义} +虚拟现实、机器人控制、远程医疗、虚拟培训等领域中,可变形物体(如软组织、柔性材料、布料、器官等)的交互仿真的技术越来越成为关键技术依赖的对象,刚体物体的建模和交互技术比较成熟,但是可变形物体受到力的作用时会表现出非线性力学特性,产生较大的变形,其参数随时间变化,接触状态也较为复杂,因此要实现高精度、高时效性的建模与交互仍然存在很大困难,柔性体的力触觉建模复杂度远高于刚体模型,传统建模方式难以适配动态形变的交互需求,无法满足精细仿真作业要求\cite{yang2023}。仅仅依靠视觉信息很难支持精细的操作,因为操作人员缺乏力觉和触觉的感受,无法准确判断接触力、变形程度和表面纹路,导致操作不稳、任务完成率低,严重制约了远程手术、精密装配、康复训练等场景的实际应用\cite{fang2011}。 -随着虚拟现实、医学仿真、机器人操作等领域的快速发展,可变形物体的触觉交互技术日益成为研究热点。该技术旨在通过物理仿真与触觉反馈的结合,使用户能够在虚拟环境中获得接近真实的触觉体验。本文围绕可变形物体建模、触觉渲染方法、VR/XR交互系统以及医学仿真应用等方面,对国内外相关研究进行梳理,并分析其发展趋势。 +在此背景下,将依靠物理引擎的即时仿真与触觉反馈技术相结合,这是冲破前面瓶颈的关键途径,MuJoCo凭借高效多体动力学求解能力、优秀的柔性体仿真性能,在可变形物体建模、接触计算、实时性保障方面具有明显优势,能有效适配柔性交互场景的动态仿真需求,目前已广泛应用于机器人柔顺交互、精密操作仿真等相关研究领域\cite{zhang2024}。WEART触觉手套可以给指尖提供压力、纹理、温度等多模态的触觉反馈,它们互相配合就形成了一个视觉、物理仿真、触觉反馈的闭环系统。 -\subsubsection{选题意义} +本课题以MuJoCo可变形物体即时触摸建模与仿真系统为研究对象,围绕可变形物体触摸交互中即时形变建模、接触力精确计算、触觉信号映射、视触同步、量化评价等主要问题展开研究,试图构建出一个高刷新率、低时延且可以进行定量评定的视触融合仿真平台,从而为可变形物体交互原理的研究、算法验证和应用系统开发提供标准化、可重现的实验环境,具有重要的理论价值和工程意义。 -机器人仿真与虚拟现实领域经过多年积累,刚体物体的交互技术已相对成熟,软组织、柔性材料等可变形物体的仿真研究却仍处于起步阶段。这类物体在受力时表现出的非线性特征与时变属性给建模工作带来了相当大的困难,单纯依靠视觉信息难以支撑精细化的操控任务,操作者往往因缺乏力觉感知而无法准确判断接触状态。本课题选用MuJoCo作为物理仿真引擎,配合Weart触觉手套,尝试构建一套视觉呈现、物理运算与力觉反馈相互协同的交互系统。这一平台有望打破当前仿真研究偏重图形渲染、忽视触觉通道的局面,为研究者探索复杂形变件下的力学感知机制提供可重复验证的实验条件。 +\subsection{国内外研究现状} - 在保证系统实时响应的前提下精确计算软体接触力并将其转化为触觉信号,这一问题在现有交互系统中尚未得到有效解决。本研究计划建立物理引擎输出参数与触觉驱动指令之间的映射关系,力求实现高刷新率、低传输延时的力觉回路。视觉信号与触觉信号的时空同步问题同样值得关注,为系统验证触觉反馈的实际效用,本课题将生成若干组物理特性各异的软体模型,涵盖不同弹性系数、阻尼参数与几何构型,借此考察触觉通道对操作稳定性与任务完成质量的影响程度。 +\subsubsection{国内研究现状} +国内学者对于可变形物体建模、触觉渲染、XR交互、医疗机器人、生物力学、复合材料仿真等各个方面已经形成了比较系统全面的研究架构,包含理论方法、硬件设计到系统实现的一整套技术。 - 当前同类研究多侧重于演示交互效果的视觉逼真程度,缺乏针对交互过程本身的定量评估手段,本课题拟建立一套涵盖任务耗时、操作成功比例、接触力平稳程度等维度的评价指标体系。实验设计上将安排受试者分别在开启触觉与关闭触觉两种条件下执行相同任务,采集对应的操作数据,通过统计比较把操作者的主观触感体验转化为具有统计意义的数值结论,为触觉技术在远程医疗、精密组装及虚拟训练等应用场景的推广提供实证支撑。 +胡子阳等人提出了一种结合CBAM注意力机制的人体软组织多物理场快速同步建模方法,该方法将深度学习和有限元结合起来,在保留一定的精度的同时实现了效率的极大提高,为虚拟手术模拟提供了一种高效的建模方法\cite{hu2025}。刘代清从手法淋巴引流的角度创建了皮肤软组织力学模型,并用有限元做了淋巴动力学的分析,拓展了生物力学建模在康复和医疗方面的应用范围\cite{liu2025}。张天明对人类运动进行肌骨系统生物力学建模和仿真研究,给运动分析、康复工程提供力学依据\cite{zhang2024a}。吕晓庆等人对人体生物力学仿真和可视化相关研究做了全面的梳理,总结出多体建模、有限元、肌骨仿真等主要的技术路线,为人体交互仿真的方法提供参考\cite{lv2023}。陈卓利用OpenSim平台概述了人体肌骨仿真建模的发展历程,使仿真工具在体育科学、康复工程领域向着标准化的方向发展\cite{chen2023}。 -\subsection{国内研究现状} +潘言心设计并制作出分布式三维力触觉传感器,解决了分布式接触力精确采集的问题,给高分辨率触觉交互提供硬件支持\cite{pan2024}。陈大鹏等人提出依靠数据的纹理摩擦建模和触觉渲染方法,通过采集真实物体表面摩擦特性来提高触觉渲染的真实性、材质区分度\cite{chen2025}。陈庚对虚拟纹理全面属性建模和力触觉重现展开研究,将触觉反馈从单一的力值扩展为粗糙度、摩擦、纹理等全面特征,再次提升了虚拟交互的沉浸感\cite{chen2024}。王宏润关注XR自然手势交互,创建起触觉加强系统,探寻手势识别和触觉反馈融合的方法,改进沉浸式交互的自然程度\cite{wang2025}。 -国内学者在可变形物体触觉交互领域开展了多角度的研究工作,主要集中在以下几个方向。 +刘浩城针对针灸机器人软组织安全交互难点,提出柔性末端控制方法并重视力觉约束和安全策略,给医疗场景下柔性人机交互提供安全范例\cite{liu2025a}。梅欣根据物体力触觉属性识别,对机器人自适应抓取进行研究,用触觉感知提高复杂物体操作的稳定性、鲁棒性\cite{mei2025}。 -在可变形物体形变仿真方面,马雨前针对虚拟手术中的软组织形变问题,提出了基于有限元仿真的RPIM无网格建模方法,并研究了相应的碰撞检测技术。冯上涛则专注于虚拟手术缝合仿真中的软组织形变与碰撞检测,为手术操作提供了技术支持。陈杰基于Unity3D平台实现了虚拟肝脏手术的形变与切割仿真,展示了游戏引擎在医学仿真中的应用潜力。这些研究为可变形物体的形变建模提供了不同的技术路径,为后续触觉交互系统的开发奠定了基础。 +马雨前把RPIM无网格法应用到虚拟手术软组织形变仿真中,改进了碰撞检测算法,既保证了仿真精度又保证了实时性\cite{ma2024}。冯上涛从虚拟手术缝合过程出发,加强了软组织形变仿真和碰撞检测的真实性、即时性,更符合临床手术操作的要求\cite{feng2024}。吕双祺等对气凝胶复合材料做细观力学建模和变形行为仿真,扩大了可变形物体建模在先进功能材料领域中的应用范围\cite{lv2025}。李浩达对多体系统非理想运动副进行接触力学建模与仿真分析,完善了复杂约束下动力学求解的方法\cite{li2025}。赵飞对重载履带式爬壁机器人进行力学建模与仿真,为大型装备柔性接触操作提供动力学支持\cite{zhao2025}。 -在触觉渲染与反馈方面,陈大鹏等[4]提出了一种数据驱动的纹理摩擦建模方法,通过采集真实物体的纹理数据来提升触觉渲染的真实性。陈庚[6]进一步研究了虚拟纹理多维属性的力触觉建模与再现方法,将触觉反馈从单一的力值扩展到粗糙度、摩擦系数等多维属性。这些工作表明,数据驱动方法在提升触觉真实性方面具有显著优势。 - -在软组织力学建模方面,刘代清[5]从手法淋巴引流的角度出发,建立了皮肤软组织的力学模型,并进行了淋巴动力学的有限元分析。胡子阳等[1]则将CBAM注意力机制引入到人体软组织的多物理场建模中,实现了快速同步建模。这些研究为可变形物体的物理参数设置提供了理论依据。 - -在XR交互系统方面,王宏润[2]研究了触觉增强的XR自然手势交互系统,探讨了如何在XR环境中实现自然的手势识别与触觉反馈。刘浩城[3]针对软组织的安全交互问题,提出了针灸机器人的柔性末端控制方法,强调了安全机制在软体操作中的重要性。 +国内的研究在力学建模的改良、触觉渲染维度的拓展、医疗和机器人场景的应用、硬件传感器的设计等各方面都取得了很多成果,但是系统级视触同步、多线程即时架构、跨设备标准化融合、全流程定量评价体系以及完整的“建模-交互-评价”循环平台创建还存在很大的改进空间。 \subsubsection{国外研究现状} +国外对于可变形物体触觉交互、即时仿真、数字孪生、柔性机器人、多模态交互等已经有了较早的研究,已经形成了一套包含基础理论、算法框架、系统整合和量化评定的技术体系,非常重视即时性、鲁棒性和工程应用能力。 -国外学者在可变形物体触觉交互领域的研究起步较早,在理论方法与系统实现方面均有较多积累。 - -在可变形物体操作方面,Blanco-Mulero D.[10]通过学习动力学模型与自适应策略,实现了可变形物体的高效机器人操作。该研究表明,学习算法能够有效处理可变形物体的非线性特性,为触觉交互中的力控制提供了参考。Kundu S.[11]则专注于布料类可变形物体的抓取质量评估,提出了多种评估指标,为量化可变形物体交互效果提供了方法。 - -在触觉交互系统方面,de Santis E等人[12]的工作与本研究密切相关。该研究在I-RIM 3D 2024会议上发表了题为"Haptic interaction with virtual deformable objects"的论文,提出了一套完整的触觉交互系统架构。该系统集成了MuJoCo物理引擎、WEART触觉手套和VR头显,实现了与虚拟可变形物体的实时触觉交互。该研究不仅展示了触觉交互的可行性,还提供了详细的实验设计和评估方法,为后续研究提供了重要参考。 - -\subsubsection{发展趋势} - -综合国内外研究现状,可变形物体触觉交互技术呈现出以下发展趋势。 - -首先,技术融合趋势明显。传统的有限元方法、弹簧-质点模型等物理仿真技术,正在与深度学习、数据驱动方法相结合。例如,胡子阳等[1]将注意力机制引入软组织建模,陈大鹏等[4]利用数据驱动方法进行纹理摩擦建模。这种技术融合能够充分发挥各方法的优势,提升触觉交互的真实性和准确性。 - -其次,评估体系日趋完善。早期研究多依赖主观评价或单一指标,而近期研究越来越重视量化评估。Kundu S.提出了抓取质量评估指标,de Santis E等人[12]在实验中使用了多种量化指标。建立完善的评估体系,有助于客观比较不同方法的优劣,推动技术进步。 - -最后,应用场景不断拓展。从最初的虚拟手术仿真,扩展到机器人操作、XR交互、康复训练等多个领域。王宏润[2]的研究展示了触觉交互在XR系统中的应用,刘浩城[3]的工作则体现了触觉技术在康复领域的潜力。 - -\subsubsection{对本人研究的启发} - -基于上述文献分析,本研究将围绕DeformableSimulation项目展开可变形物体触觉交互的实验与评估工作。 -在可变形物体建模方面,可以参考马雨前[7]、冯上涛[9]等人的研究,利用MuJoCo的flexcomp元素创建不同类型的可变形物体,包括网格型、椭球型和基于Gmsh网格的复杂生物组织模型。 -在触觉反馈方面,可以借鉴陈大鹏等[4]、陈庚[6]的数据驱动方法,优化项目中的纹理映射机制,将触觉反馈从单一的力值扩展到多维属性。 -在系统集成方面,de Santis E等人[12]的工作提供了完整的系统架构参考,包括硬件集成、软件设计、触觉反馈映射等关键环节。 -在评估体系方面,可以参考Kundu S.[11]的量化评估方法,建立包含接触力、纹理匹配度、系统性能等多维指标的评估体系。 -通过以上研究,本研究将实现可变形物体触觉交互的规范化流程,并输出可量化的评估结果,为相关领域的研究提供参考。 - -\subsection{研究方法与思路} - -本研究基于DeformableSimulation项目,采用MuJoCo物理引擎作为仿真平台,结合WEART TouchDIVER触觉手套与Oculus Rift S VR头显,构建可变形物体触觉交互系统。 - -研究方法主要包括可变形物体建模、触觉反馈机制、运动重定向算法以及系统性能评估四个方面。 - -1.在可变形物体建模方面,本研究利用MuJoCo的flexcomp元素创建多种类型的可变形物体,通过设置不同的类型参数(grid、ellipsoid、gmsh)、弹性参数(杨氏模量、泊松比、阻尼系数)和约束条件(固定节点、碰撞检测),实现软体立方体、软体球体、软体布料垫以及生物组织(如左肾、肝脏)等可变形物体的建模,其中grid型适用于规则形状的软体,ellipsoid型适用于球形可变形物体,gmsh型则用于复杂生物组织的建模。 - -2.在触觉反馈机制方面,本研究建立力值计算与纹理映射的双通道反馈机制,力值通道通过MuJoCo的touch传感器检测手指与可变形物体的接触,将物理引擎计算的接触力归一化为0-1范围的触觉强度,并通过WEART手套施加到用户手指,纹理通道根据接触的可变形物体类型,从预定义的纹理映射表中获取对应的纹理类型(如ProfiledRubberSlow、CrushedRock、VenetianGranite),实现触觉纹理的差异化反馈。 - -3.在运动重定向方面,本研究实现真实手部运动到虚拟手部的映射,通过Oculus Rift S控制器获取手部的位置与姿态信息,利用运动重定向算法将其转换为虚拟手部的mocap位置和四元数旋转,同时通过WEART手套获取手指的闭合度与外展角,将其映射到虚拟手指的关节角度,实现手指运动的精确控制。 - -4.在系统性能评估方面,本研究建立多维度的评估体系,通过固定测试集(包含不同类型的可变形物体),记录接触力值、纹理反馈类型、系统帧率、交互延迟等量化指标,同时设计对比实验,比较不同可变形物体(不同弹性参数、不同几何形状)的触觉反馈效果,分析触觉交互的真实性与稳定性。 - -研究思路遵循"建模-交互-评估"的闭环流程,首先基于MuJoCo创建可变形物体模型,设置合理的物理参数,其次集成硬件设备,实现触觉交互系统的搭建,再次开展交互实验,收集触觉反馈数据,最后分析实验结果,评估触觉交互的效果,并提出改进方案,通过这一研究思路,本研究旨在实现可变形物体触觉交互的规范化流程,并为相关领域的研究提供可复现的实验数据与方法参考。 - -\subsubsection{主要工作任务} - -1. 明确选题内涵:深入理解可变形物体触觉交互与实时仿真技术的核心原理,厘清基于 MuJoCo 引擎、WEART 触觉手套及 VR 设备的系统核心概念、技术框架与研究价值,界定研究的关键技术边界。 - -2. 文献综述与研究现状分析:系统收集国内外可变形物体建模、触觉渲染、多模态交互系统及相关物理引擎应用的研究文献,全面梳理研究现状,总结主流方法、技术瓶颈与发展趋势,明确本研究的切入点。 - -3. 确定研究思路与方法:在文献分析基础上,制定 “建模 - 交互 - 评估” 的闭环研究技术路线,明确实验环境搭建方案、系统开发框架、核心算法设计思路及评估指标体系,形成完整可行的研究方案。 - -4. 系统架构设计与可视化表达:使用 Visio 等绘图工具绘制系统整体架构图、模块交互流程图、数据传输链路图等,清晰展现硬件设备接入、软件模块划分及各环节数据流向,为系统开发提供明确指导。 - -5. 前期需求分析与技术设计:开展详细技术需求分析,包括硬件设备兼容需求、可变形物体模型参数设计、触觉反馈映射规则、运动重定向算法参数、系统实时性要求等,完成系统概要设计与详细设计文档。 - -6. 系统实现与功能验证:基于 DeformableSimulation 项目基础,实现可变形物体触觉交互系统。详细完成可变形物体建模(含规则形状与复杂生物组织)、触觉反馈机制(力值计算与纹理映射)、运动重定向等核心模块开发,阐述关键技术创新点,提供完整功能验证结果。 - -7. 实验结果分析与评估:设计标准化实验方案,包括不同类型可变形物体的交互测试、纯视觉与视触融合模式的对比实验等。采集接触力值、系统帧率、交互延迟、任务完成质量等量化数据,使用专业工具进行数据分析,验证系统性能与触觉反馈有效性。 +Tzimos N等对虚拟现实触觉接口和多模态交互进行研究,探究VR环境下3D物体的触觉接口多模态交互机制,证明触觉反馈可以明显提高交互的可靠性和准确性,也可以提高用户沉浸感\cite{tzimos2025}。Taghizad H等人的即时仿真理论及框架综述了多速率即时仿真技术、模型、框架以及主要难点,为高保真、高即时性交互系统规划提供理论依据\cite{taghizad2026}。 -8. 论文撰写与成果整理:按照学术论文规范,完成从选题背景、文献综述、系统设计、实验验证到结论展望的完整论文撰写,按时完成论文修改、定稿及答辩准备工作,确保研究成果的系统性与规范性。 +Laukaitis A等人把Webots与MuJoCo结合使用生成式AI来改善仿真的机器人学习和智能控制的实用价值,给多引擎仿真协同开拓了新途径\cite{laukaitis2025}。Islam U N M等人把人体姿态稳定和神经控制结合起来,用键合图模型提高姿态稳定性预测精度\cite{islam2026}。 -\subsection{基本要求} +航天和极端环境仿真中,Han Z Z等人用变分积分器建立小行星探测器的轨道动力学模型并进行仿真,从而提高长时间仿真的数值稳定性\cite{han2026}。Mao Z等人站在系统动力学的角度研究教师数字素养和革新的影响机理,给复杂的社会系统仿真建模提供理论上的借鉴\cite{mao2026}。针对复杂的群体运动仿真,Zhang B等人给出滑雪场景下行人动力学建模及仿真的框架,给复杂的运动交互提供可扩展的方法\cite{zhang2026}。 -1. 文献综述要求:文献调研需全面覆盖国内外最新研究成果,至少包含 20 篇以上核心文献(含中外文献),综述需分层分类归纳,既总结现有技术方法,又分析研究空白与不足,为研究提供坚实理论依据。 +柔性机器人建模与控制研究中,柔体外翻式生长机器人动态建模、物理分析及仿真实验验证由Kalibala A等人完成,使软体机器人可以得到准确的控制\cite{kalibala2026}。为了解决精密设备在振动环境下产生抖振等问题而建立的空间磁悬浮隔振控制系统进行动力学建模和仿真研究,Ye M等人提出了一种新的提高精密设备稳定性的方法\cite{ye2026}。对于可变形物体的形状控制,Zueco C I等人给出了一个多尺度弹性轮廓映射的方法,可以实现对复杂可变形物体高精度的形状调整和跟踪\cite{zueco2025}。 -2. 系统开发要求:基于 MuJoCo 物理引擎、WEART TouchDIVER 触觉手套及 Oculus Rift S VR 头显实现系统开发,确保硬件设备兼容、软件模块接口清晰、代码可运行可复现。系统需支持多种可变形物体建模,实现力值与纹理双通道触觉反馈,保证实时响应(帧率稳定、低延迟)。 +国外研究大多集中在高即时性保障、多速率同步机制、严格量化评价体系、跨平台硬件融合等几个方面,许多工作直接采用“物理引擎+触觉设备+VR”循环结构,表现出当下可变形物体触觉交互仿真领域的主要技术走向。 -3. 实验验证要求:实验设计科学严谨,包含不同物理属性(弹性、阻尼、几何形状)的可变形物体测试集,设置纯视觉与视触融合两种对比场景。评估指标需涵盖系统性能(帧率、延迟)、交互效果(接触力准确性、纹理辨识度)、任务完成质量(耗时、成功率)等维度,所有实验结果需有详细数据记录与可视化展示。 +\subsubsection{研究述评} +综合国内外的相关研究可知,可变形物体触觉交互、即时仿真在力学建模、触觉渲染、多模态融合、柔性机器人、医疗仿真等各方面已经取得了很多成果,但是目前的研究成果还不能完全满足沉浸式、高真实感、低时延的实际交互需求。 -4. 论文质量要求:论文观点明确、结构完整、层次清晰,技术描述准确详实,实验数据充分,分析论证严谨。语言表达通顺规范,符合学术写作要求,图表清晰规范,能完整呈现研究过程与成果。 +可变形物体具有非线性,大形变的特性,即时性与物理保真度很难同时满足,轻量化模型会降低触觉真实感,高精度模型又不能达到触觉交互需要的高刷新率和低时延。物理引擎接触信息、触觉设备缺少对可变形物体的专门映射逻辑,力反馈、纹理渲染大多采用简单的线性映射,材质区分度、触感自然度与真实的物理交互存在差异。 -5. 理论与实践结合:充分体现专业知识与工程实践的有机结合,展示运用物理仿真、触觉交互等理论解决实际问题的能力,技术方案需有理论支撑,实验结果需有深入理论分析。 +视觉渲染与触觉反馈的时间没有共同合作,在时间上不同步,使得各个模块有不同的速度,从而产生延迟、抖动、体感错位等现象,从而影响到操作的稳定性以及沉浸感。 -6. 学术规范要求:严格遵守学术道德规范,所有引用文献均需正确标注,实验数据真实可靠,杜绝任何形式的学术不端行为。 +大部分研究只对单个模块或者视觉效果的表现形式进行关注,很少有人会制定统一的定量评价标准并做对照实验,对于任务效率、力量稳定性、系统时延、材质识别准确率等重要数据并没有进行系统的收集和验证,因此研究成果很难被重现,也无法进行横向比较。 -7. 追求卓越标准:以高质量完成毕业设计为目标,在技术实现、实验设计、论文撰写等各环节追求高标准,力争研究成果达到良好以上水平。 +目前该领域缺少创建模型规范、反馈真实、同步精准、性能稳定且支持全流程定量评定的可变形物体即时触摸仿真平台,本课题就从这里出发,用MuJoCo作为物理仿真核心、WEART作为触觉终端、VR作为视觉通道来构建视触融合的系统,通过多线程框架、自适应触觉渲染、改进后的逆运动学和标准化实验评价来弥补现有的技术缺陷,为虚拟手术、柔性操作、远程触觉交互等应用提供标准平台和技术参照。 -\subsection{论文结构或写作提纲} +\subsection{研究内容与技术路线} -第一章 绪论 - 阐明可变形物体交互仿真的研究背景与意义,分析当前软体接触建模面临的主要瓶颈,明确本研究的核心目标与技术路线。 +\subsubsection{研究内容} +使用MuJoCo的flexcomp创建grid、ellipsoid、gmsh这三种可变形物体模型,并设置包含弹性、阻尼、质量、摩擦等参数化的配置,这些类型包含软体、布料、粘弹性组织等常见的种类。 -第二章 相关工作 - 梳理可变形物体仿真、触觉渲染算法及多模态交互系统的研究现状,比较主流物理引擎的性能差异,论证本课题技术方案的合理性。 +触觉反馈机制的设计包括创建力值计算、纹理映射两个通道的触觉渲染功能,可以达到接触力归一化处理、自动适应性补偿、滑动过滤、动态纹理调节的目的,给用户带来低时延高质量的反馈响应。 -第三章 系统架构与仿真环境搭建 - 介绍硬件设备接入方式与软件接口设计,说明如何构建三组以上物理属性差异显著的可变形物体模型,并制定配套交互任务。 +运动重定向和逆运动学相结合,可以使VR姿态以及手指闭合度准确地映射到虚拟手上来,用阻尼最小二乘法(DLS)改进IK求解过程,从而提高稳定性,减少关节超出范围的情况。设计多线程并行结构,把仿真、触觉、渲染三线程分离且同步,从而达到高刷新率以及低端到端的延迟。 -第四章 触觉建模与控制策略实现 - 阐述接触力参数提取方法,提出仿真力到触觉信号的映射算法,设计多线程控制框架以保证视觉与力觉的协调运行。 +实验设计和量化评定,得到纯视觉/视触融合对照实验,用任务历时、达成率、力的稳定性、系统滞后、帧率等角度进行验证和分析。 -第五章 实验设计与结果分析 - 设计标准化操作任务,对比纯视觉与视触融合两种模式下的操作表现,以统计数据验证触觉反馈的有效性。 +\subsubsection{技术路线} +本研究遵循建模---交互---评估闭环技术路线: -第六章 讨论与局限性分析 - 剖析系统性能表现,分析模型简化、设备带宽、传输延时等因素的影响,对典型失败案例进行归因。 +\begin{enumerate} + \item 理论与文献梳理,整理出可变形建模、触觉渲染、实时仿真等技术的现状,确定技术方案; + \item 系统设计,确定硬件接口、软件模块、数据流和算法模块; + \item 实现和集成,完成可变形模型、触觉反馈、IK、多线程同步开发; + \item 测试与优化:功能测试、性能基准测试、参数调优; + \item 实验和分析阶段对用户进行对照实验,统计分析并检验触觉反馈的有效性; + \item 总结与展望:归纳成果、局限与未来方向。 +\end{enumerate} -第七章 总结与展望 - 归纳研究成果与创新点,探讨后续改进方向。 diff --git a/tactile/content/chapter2.tex b/tactile/content/chapter2.tex new file mode 100644 index 00000000..4bc37cce --- /dev/null +++ b/tactile/content/chapter2.tex @@ -0,0 +1,227 @@ +% chapter2.tex +\section{相关理论基础} + +\subsection{可变形物体物理建模理论} +可变形物体的物理建模是实现高真实感触觉交互的重要物理基础,其主要目的就是计算机虚拟环境中对软体、柔性材料、布料、人体器官等物体在接触、按压、滑动、揉捏、拖拽等动作过程中产生的形变、回弹、应力分布、能量耗散和接触情况做出准确、高效且稳定的数值计算。 + +刚体仿真只需要考虑位置、姿态、速度就可以,可变形物体要应对大变形、非线性力学、分布式接触、多质点耦合、时变材料属性等许多复杂的难题,属于触觉仿真领域最具有挑战性的核心技术之一。 + +\subsubsection{连续介质力学基础理论} +连续介质力学是所有可变形物体分析的宏观理论基础,它把物体看作无限密集、连续分布的质点群落,忽略原子、分子之间的空隙,只从场的角度来研究位移场、应变场、应力场和速度场之间的关系\cite{dai2025}。 + +根据仿真目标和材料特性,分别用两种经典的力学模型来建立本系统的模型。弹性力学模型适用于果冻、橡胶、弹性塑料等完全可恢复变形的材料,应力和应变是稳定的,和时间无关,没有滞后和蠕变,卸载后变形完全消失,没有残余形变。 + +粘弹性力学模型适合于肝脏、肌肉、皮肤、软组织等生物活体材料,这些材料既有弹性固体又有粘性流体的性质。存在应力松弛、蠕变现象,变形速度越大,感知刚度越高,存在明显的能量耗散、迟滞特性。 + +连续介质力学给后面离散化建模、本构方程设计、接触力计算提供了一个统一的物理依据。 + +\subsubsection{离散化建模方法} +计算机不能直接求解连续介质偏微分方程,因此需要将它离散化为可以计算的离散单元结构,该系统根据即时性、保真度、稳定性等要求,采用质点-弹簧模型与MuJoCo Flex改进后的柔性体模型相结合的混合建模方式。 + +\begin{enumerate} + \item 质点--弹簧模型 + + 质点-弹簧模型(Mass-Spring Model,MSM)是即时交互领域里最成熟、使用最广泛的可变形体建模方法\cite{zhai2024}。该模型的基本结构是由质点(质量分布)、弹簧(弹性约束)和阻尼器(振动衰减)这三部分组成。 + + \begin{figure}[H] + \centering + \includegraphics[width=0.8\textwidth]{figures/mass_spring.png} + \caption{质点--弹簧模型拓扑结构原理图} + \label{fig:mass_spring} + \end{figure} + + 其主要优势就是计算量很小,可以支持物理步长为1000Hz以上的计算;弹簧--阻尼结构直观,刚度、阻尼、质量参数容易调节;对大变形有较强的适应性,不容易产生网格翻转;与触觉刷新率(100~300Hz)天然匹配。系统通过调节刚度系数stiffness、阻尼系数damping和网格密度grid count来控制不同的材质。 + + \item MuJoCo Flex柔性体实现机制 + + MuJoCo具有高度改进的flexcomp柔性组件,这是本系统可变形物体的主要实现手段,底层对质点-弹簧模型进行数值优化和约束增强, + \begin{enumerate} + \item grid:规则三维网格,适合立方体、块状软体; + \item ellipsoid:椭球结构,适合于球形、类球形的器官; + \item gmsh:外部高精度网格,肝、肾等复杂模型用的较多。 + \end{enumerate} + Flex组件用edge来定义质点的弹性结合,有接触约束、边界固定、自碰撞检测等功能,能很好地应对手指按压、滑动、揉捏等各种复杂的交互情况,不会出现穿透、飞散、震荡发散等问题。 +\end{enumerate} + +\subsubsection{材料本构关系} +本构关系就是反映应力和应变之间本质的数学联系,决定物理是否真实。 + +\begin{enumerate} + \item 线性弹性本构适用于标准弹性材料: + \begin{equation} + \sigma = E \epsilon + \end{equation} + 其中:$\sigma$为应力;$E$为弹性模量;$\epsilon$为应变。 + + \item 粘弹性本构适用于生物软组织,增加粘性耗散项: + \begin{equation} + \sigma = E \epsilon + \eta \dot{\epsilon} + \end{equation} + 其中:$\eta$为粘性系数;$\dot{\epsilon}$为应变速率。该模型能够准确还原“快按更硬、慢按更软”的真实生物组织触感。 +\end{enumerate} + +\subsection{触觉反馈与力触觉渲染理论} +触觉是人感知外部世界最直接、最精确的途径,在虚拟操作中,如果缺少触觉反馈,就会导致用力失控、定位不准、任务失败概率增大、沉浸感明显下降等问题。 + +触觉渲染的主要目的就是将物理引擎给出的接触信息转化为人体指尖可以感知到的压力、纹理、粗糙度、滑动、软硬等机械刺激信号,并且需要达到低时延、高刷新率、高保真度的效果。 + +\subsubsection{接触力计算模型} +\begin{enumerate} + \item 基于Hertz的非线性接触模型 + + 指尖按压可变形物体时,接触力符合Hertz接触理论,更接近真实弹性体接触规律 + \begin{equation} + F = k \delta^{\frac{3}{2}} + \end{equation} + 其中,$F$是法向接触力,$k$是等效刚度,$\delta$是变形或者穿透深度。该模型有非线性刚度特性,即“越压越硬”,这是真实的触觉的主要特点。 + + \item 自适应力反馈计算机制 + + 为了进一步提高真实感,系统建立多因素融合自适应力模型: + \begin{enumerate} + \item 基础力项:来自MuJoCo接触传感器; + \item 深度补偿项:强化大变形下的刚度感知; + \item 速度阻尼项:抑制高速冲击与震荡; + \item 力限幅项:保证在人体安全感知范围内; + \item 动态滤波项:消除毛刺与高频噪声。 + \end{enumerate} +\end{enumerate} + +\subsubsection{力信号处理与平滑技术} +\begin{enumerate} + \item 滑动平均滤波 + + 物理引擎输出的原始力信号含有高频噪声,如果直接输出就会引起刺痛、震颤等不良触觉\cite{ren2025},因此系统采用滑动平均滤波的方法。 + \begin{equation} + F_{\text{smooth}}(t) = \frac{1}{N} \sum_{i=0}^{N-1} F(t-i) + \end{equation} + 窗口$N$为5的时候,平滑性以及响应速度达到了最佳的平衡。 + + \item 冲击力检测与增强 + + 通过力的变化率识别快速撞击、拍打等事件: + \begin{equation} + r = \frac{dF}{dt} + \end{equation} + 当变化率超过阈值的时候,就会认定是冲击,系统会自动加大反馈强度来改善触觉的层次感。 +\end{enumerate} + +\subsubsection{纹理触觉渲染机制} +\begin{enumerate} + \item 动态纹理强度计算 + + 纹理是由滑动摩擦造成的高频振动产生的,压力、速度变化的时候强度也会跟着变化。 + \begin{equation} + I_{\text{texture}} = I_0 \cdot (1 + \alpha F) \cdot (1 + \beta v) + \end{equation} + 该式子说明压力增大时,花纹就更明显;滑动速度加快,振动强度就增大。各种材质所具有的触感是不一样的。 + + \item 物体--纹理精准映射 + + 系统建立严格的材质纹理对应关系,达到高度逼真的材质感知效果: + \begin{itemize} + \item 果冻 $\rightarrow$ ProfiledRubberSlow(柔软弹性) + \item 布料 $\rightarrow$ Smooth(光滑低摩擦) + \item 海绵 $\rightarrow$ CrushedRock(粗糙多孔) + \item 肝脏 $\rightarrow$ VenetianGranite(软组织细腻颗粒感) + \end{itemize} +\end{enumerate} + +\subsection{手部运动映射与逆运动学理论} +虚拟手是用户进入虚拟世界唯一的一个交互工具,如果虚拟手的运动是准确的、流畅的、自然的,那么操作起来就会感到舒适,任务完成得更加稳定,也会产生更强的沉浸感。 + +\begin{enumerate} + \item 逆运动学基本原理 + + 逆运动学(IK)的核心问题就是:已知指尖目标位置 $\rightarrow$ 求解手指各个关节的角度。手指为多关节串联结构,传统的伪逆法(Pseudoinverse)有明显的不足:奇异点附近关节剧烈抖动,关节容易超出生理范围,速度突变造成动作僵硬。 + + \item 阻尼最小二乘法(DLS) + + 本系统使用阻尼最小二乘法DLS作为主要的IK算法,加入阻尼项来抑制奇异值发散 + \begin{equation} + \dot{\theta} = J^T (J J^T + \lambda^2 I)^{-1} \dot{x} + \end{equation} + 其中:$J$为雅可比矩阵;$\lambda$为阻尼系数;$\dot{x}$为末端速度;$\dot{\theta}$为关节速度。 + + \begin{figure}[H] + \centering + \includegraphics[width=0.6\textwidth]{figures/ik_flow.png} + \caption{DLS 逆运动学求解流程图} + \label{fig:ik_flow} + \end{figure} + + \item 动态阻尼调整策略 + + 系统要实现运动快、稳的目标,就要根据当前手指的姿态来自主调节阻尼的大小,当手指处于正常、开阔的运动范围内时,就用较小的阻尼来加快响应速度,使手指更加灵活。一旦手指接近奇异姿态,即容易产生抖动的时候,系统就会自动提高阻尼值,使运动变慢、更加稳定,在灵活应对和稳固不动之间找到最佳的平衡点。 + + \item 关节限位与生理约束 + + 系统为了使动作更自然,设置了严格的约束条件,即各个关节的转动幅度不能超出人体手指实际的生理范围,不能出现反向弯曲、过度弯曲等不符合现实的动作,并且要防止手指互相交叉、碰撞,使虚拟手始终处于一个恰当、自然、实用的状态。 +\end{enumerate} + +\subsection{MuJoCo 物理引擎核心理论} +MuJoCo是目前全世界最符合触觉交互、机器人即时仿真物理引擎、高精度、高稳定、低时延、接触求解能力强的机器人仿真软件\cite{andras2023}。 + +\begin{enumerate} + \item 多刚体与柔性体动力学 + + MuJoCo依靠成熟的动力学理论,使用高效的递归计算方法,可以立即算出机器人手、虚拟手指、可变形物体的运动和受力情况,无论是刚体的抓取还是软体的挤压变形,都能给出稳定的、准确的、接近现实的物理效果。 + + \begin{figure}[H] + \centering + \includegraphics[width=0.6\textwidth]{figures/mujoco_dynamics.png} + \caption{MuJoCo 动力学求解循环图} + \label{fig:mujoco_dynamics} + \end{figure} + + \item 时间积分方法 + + MuJoCo如果长时间运行而不会崩溃、发散,就需要使用稳定性较好的隐式积分法,该方法更适合于大变形、高刚度的物体,即使反复按压、揉捏软体,也不会出现模型乱飞、爆炸、错位等情况。 + + \item 约束求解机制 + + MuJoCo使用专门的约束求解算法,统一处理运动限制、碰撞阻挡、接触摩擦等各方面的问题,可以稳定地识别出手指和软体的接触情况,准确地计算出接触力,不会有物体相互穿透现象发生,这也是整个仿真系统稳定运行的重要保证。 + + \begin{figure}[H] + \centering + \includegraphics[width=0.7\textwidth]{figures/constraint_solver.png} + \caption{MuJoCo 约束求解流程示意图} + \label{fig:constraint_solver} + \end{figure} +\end{enumerate} + +\subsection{实时仿真与多线程同步理论} +触觉交互属于一种对即时性、同步性要求很高的系统,一旦出现卡顿、延误或者错位的现象,就会直接影响到沉浸感的营造。 + +\begin{enumerate} + \item 实时性核心指标 + + 系统需要满足严格的即时指标,物理仿真处于高频状态时,触觉反馈的更新频率要高,画面渲染要流畅,而且从用户动作到触觉输出的总体延误要控制在很低的水平,否则用户就会感觉到“手先动,触感后到”的现象,体验会大大降低。 + + \item 三线程分离架构 + + 系统采用仿真、触觉、渲染完全分离并行架构: + \begin{itemize} + \item 仿真线程:专门负责物理计算和接触检测; + \item 触觉线程:专门处理力反馈、滤波和设备驱动; + \item 渲染线程:专门负责画面显示和VR视角更新。 + \end{itemize} + 三个线程同时运行,不会互相影响,可以将整个系统的延迟降到最低,使系统流畅度达到较高水平。 + + \item 系统延迟构成与优化 + + 整个系统存在一定的延迟,它的源头是传感器采集数据、算法执行计算、画面完成渲染、触觉设备响应操作等环节。为了尽可能减小延迟,该系统采取了运动预测、时间戳补偿、提高线程优先级等许多改进措施,把总体延迟保持在人类几乎察觉不到的程度上,达到即时互动的效果。 +\end{enumerate} + +\subsection{触觉设备接口与驱动理论} +本系统可以使用WEART TouchDIVER触觉手套,该手套是实现多模态触觉反馈的重要的硬件。 + +\begin{enumerate} + \item WEART工作原理 + + 该触觉手套通过指尖的振动、微小压力刺激等方式向用户传递压力、纹理、粗糙、滑动等各方面的信息,可以区分出软、硬、滑、糙等各种材质的特点,是实现高真实感虚拟触摸的重要硬件支持。 + + \item 自动校准流程 + + 系统启动后要完成完整的自动校准过程才能保证反馈准确,该过程分为四步:第一步确定手指的初始零位,第二步创建力的输出映射关系,第三步校准纹理强度,第四步展开验证检测,从而保证每次触觉输出都是准确、稳定的、可重复的。 +\end{enumerate} \ No newline at end of file diff --git a/tactile/content/chapter3.tex b/tactile/content/chapter3.tex new file mode 100644 index 00000000..126bc207 --- /dev/null +++ b/tactile/content/chapter3.tex @@ -0,0 +1,290 @@ +% chapter3.tex +\section{系统架构与仿真环境搭建} + +\subsection{系统总体架构} +本课题把可变形物体的即时触觉交互作为主要目标,利用MuJoCo 3.x物理引擎、Python 3.10+开发语言,创建出包含交互层、主循环、引擎层、触觉反馈算法层的分层模块化结构,包含物理仿真、视觉渲染、触觉反馈、手部运动追踪、数据评定等功能模块,可以稳定地支持肝脏、肾脏、皮肤等腹腔器官和虚拟手之间的触摸、按压等交互操作,整体设计遵循分层解耦、模块化、高时效性、可扩展的准则。 + +创建起一个包含物理仿真、视觉渲染、触觉反馈、手部运动追踪和数据评定的完整实验平台,该系统可以使用MuJoCo作为物理仿真引擎、WEART TouchDIVER作为触觉反馈终端、VR设备作为沉浸式视觉通道来构建起感知、计算、反馈、评价的闭环交互体系,其整体设计遵循分层解耦、模块化、高时效性、可扩展的原则,可以稳定地支持软体挤压、抓取、滑动、纹理识别等各种交互操作。 + +\subsubsection{硬件架构} +理想系统硬件采用核心计算、交互输入、视觉输出、触觉反馈(可选)的架构设计,各个设备通过USB和TCP/IP网络通信,以高性能计算主机为中央控制节点,统一接收传感器数据并下发控制指令,保证硬件协同工作时序一致,具体组成及功能如图3.1所示。 + +\begin{figure}[H] + \centering + \includegraphics[width=0.85\textwidth]{figures/hardware_topology.png} + \caption{理想系统硬件连接拓扑结构图} + \label{fig:hardware_topology} +\end{figure} + +\begin{enumerate} + \item 高性能计算主机完成MuJoCo物理引擎运行、触觉渲染算法计算、逆运动学求解、多线程调度、实验数据存储等工作,需要有较强CPU实时运算能力、图形处理能力,保证高帧率仿真、低延迟反馈,支持系统各个模块的高效运行。 + + \item 可选触觉设备为WEART TouchDIVER触觉手套,使用WEART SDK驱动,采用指环式设计,可以戴在左右手的拇指、食指、中指上,可以实时获取手指弯曲程度和外展角度,并且输出压力反馈以及纹理震动,从而达到力觉、纹理、滑动触感等多种感觉输出的目的,是用户与虚拟物体之间的重要硬件接口(目前演示没有开启,后期可以扩展)。 + + \item 可选VR设备为Oculus Rift S头戴设备,采用pyopenxr标准接口接入,可以完成头部追踪、双手位置追踪和立体渲染的功能,给运动重定向提供准确的位姿数据,创建出沉浸式的立体视觉环境。 + + \item 交互控制设备有键盘(主要的交互方式),用pynput库在不同的平台上实现对键盘的监听,驱动虚拟手的运动来完成触摸、按压等交互操作,适合于没有VR、没有触觉手套的演示环境;VR控制器(可选),可以辅助完成手部定位、视角切换和场景重置,提高交互的便利性。 +\end{enumerate} + +目前演示场景使用的是键盘、虚拟双手、腹腔器官的降级交互方式,主要是为了适应没有专业硬件的演示环境,之后接入WEART触觉手套、Oculus Rift S设备后,可以完成完整的视触融合闭环交互。 + +\subsubsection{软件架构} +系统软件采用五层分层架构设计,设备推动层、物理引擎层、触觉渲染层、交互控制层、数据考虑层通过标准接口进行通讯,方便以后的维护、替换模块、扩展,系统软件五层架构如图3.2所示。 + +\begin{figure}[H] + \centering + \includegraphics[width=0.6\textwidth]{figures/software_architecture.png} + \caption{系统软件五层架构图} + \label{fig:software_architecture} +\end{figure} + +\begin{enumerate} + \item 设备驱动层要和VR、触觉手套建立通信联系,完成设备的初始化、校准、数据读取和指令下达等工作,隐藏硬件差异,给高层提供统一的调用接口。 + + \item 物理引擎层使用了MuJoCo作为主要部分,完成场景加载、可变形物体动力学计算、碰撞检测、接触力计算和虚拟手推动等工作,为系统的物理真实性提供基础支撑。 + + \item 触觉渲染层获取到接触力、形变深度、物体类型等信息,执行力信号的计算、滤波、归一化和纹理映射的过程,最终得到可以直接驱动触觉设备的控制信号。 + + \item 交互控制层把VR手部姿态转化为虚拟手的运动重定向,解决手指逆运动学问题,处理关节约束和动作平滑的问题,使虚拟手操作自然、稳定、不会出现穿模现象。 + + \item 数据考量层会即时记载实验过程中有关接触力、手部位置、任务耗时、达成率、系统延时等各类数据,可以保存、检索、导出并加以统计分析,从而为量化考量提供支持。 +\end{enumerate} + +\subsection{硬件设备接入与配置} + +\subsubsection{WEART TouchDIVER触觉设备接入(可选)} +WEART TouchDIVER为系统中的关键触觉交互装置,为指环形结构,分别戴在左右手的拇指、食指、中指上,该装置通过触觉渲染算法来运行,可对指尖施加压力反馈,产生纹理震动效果,还可以实时获取手指弯曲和外展角度的信息,完成双向数据交换。 + +WEART TouchDIVER通过TCP/IP通信协议与主机连接,其默认的IP和端口号是由设备出厂时预设好的,需要安装相应的驱动程序、启动中间件、执行设备配对、进行自动校准,同时对通信进行检测。当系统开机后,触觉设备就会以每秒100-150次的速度向主机发送手指闭合程度、外展角度等有关数据,并且会接收力感、纹理反馈等指令信息,为了保证即时性,系统把触觉数据的传输任务安排成高优先级的线程,避免出现堵塞或者丢弃数据的情况,保证力感反馈不出现大的迟缓现象。本项目已经把原项目中与该设备耦合的力反馈逻辑抽象成独立的算法模块,后续接入时只需要通过标准化接口调用haptic\_feedback.py中的算法就可以实现力反馈和纹理反馈的正常输出,不需要修改核心逻辑。 + +WEART TouchDIVER触觉设备接入核心代码如下: + +\begin{lstlisting}[language=Python, caption=WEART设备接入核心代码, label=lst:weart] +class WeartConnector: + def __init__(self, enabled_hands: list[int], ip_address=WeArtCommon.DEFAULT_IP_ADDRESS, port=WeArtCommon.DEFAULT_TCP_PORT): + self.client = WeArtClient(ip_address, port, log_level=logging.INFO) + self.fingers = {} + for hand in enabled_hands: + hand_side = HandSide.Left if hand == 0 else HandSide.Right + for finger in HAPTIC_FINGERS: + haptic_object = WeArtHapticObject(self.client) + haptic_object.handSideFlag = hand_side.value + haptic_object.actuationPointFlag = self.get_actuation_point(finger) + touch_effect = TouchEffect(WeArtTemperature(), WeArtForce(), WeArtTexture()) + haptic_object.AddEffect(touch_effect) + self.fingers[f"{hand}_{finger}"] = Finger(haptic_object, touch_effect) + + def get_finger_data(self, hand_id: int, finger: str) -> tuple[float, float]: + finger_obj = self.fingers[f"{hand_id}_{finger}"] + return finger_obj.thimble_tracking.GetClosure(), finger_obj.thimble_tracking.GetAbduction() + + def apply_finger(self, hand_id: int, finger: str, force_value: float, texture: TextureType | None): + finger_obj = self.fingers[f"{hand_id}_{finger}"] + texture_obj = finger_obj.touch_effect.getTexture() + texture_obj.active = texture is not None + if texture: + texture_obj.textureType = texture + texture_obj.volume = 0.8 + finger_obj.touch_effect.Set( + finger_obj.touch_effect.getTemperature(), + WeArtForce(True, force_value), + texture_obj + ) + finger_obj.haptic_object.UpdateEffects() +\end{lstlisting} + +\subsubsection{VR设备接入(可选)} +系统使用Oculus Rift S作为沉浸式视觉显示设备,采用OpenXR标准接口进行跨平台的VR渲染和手部追踪,目前演示中使用键盘交互代替,如下所示: + +\begin{enumerate} + \item 接口实现采用OpenXR标准接口与系统进行通信,OpenXR实例在应用程序运行期间一直存在,从创建OpenXR实例开始,到系统获得OpenXR资源为止,都是依靠xrWaitFrame、xrBeginFrame等关键API对渲染帧的时间进行精确的控制。 + + \item 功能实现就是完成头部追踪、双手位置追踪、立体渲染的功能,系统启动后先初始化OpenXR会话得到追踪数据和渲染纹理,再将MuJoCo的仿真画面发送到VR帧缓冲区,为了保证视触同步,VR渲染和触觉输出使用同一个时间戳,用插值和缓冲补偿的方式改善视觉和触觉的不同步问题。 + + \item 会话管理,OpenXR会话在运行时需要经历IDLE到READY再到SYNCHRONIZED再到VISIBLE再到FOCUSED的状态转换,保证视觉渲染、物理仿真、触觉反馈等各方面的时序一致,给用户提供无感知延迟的沉浸式交互体验。 +\end{enumerate} + +VR设备渲染与追踪核心代码如下: + +\begin{lstlisting}[language=Python, caption=VR设备渲染与追踪核心代码, label=lst:vr] +class MujocoXRVisualizer(Visualizer, HandPoseProvider): + def __init__(self, mj: MujocoConnector, mirror_window=False, samples=None, fps_counter=False): + self.mj_connector = mj + self.mirror_window = mirror_window + self._should_quit = False + + def __enter__(self): + self.init_xr() + self.init_window() + self.prepare_renderer() + return self + + def init_xr(self): + instance_info = xr.InstanceCreateInfo( + application_info=xr.ApplicationInfo(application_name="Deformable Simulation"), + enabled_extensions_names=[xr.KHR_OPENGL_ENABLE_EXTENSION_NAME] + ) + self.xr_instance = xr.create_instance(instance_info) + self.xr_system = xr.get_system(self.xr_instance, xr.SystemGetInfo(xr.FormFactor.HEAD_MOUNTED_DISPLAY)) + views_config = xr.enumerate_view_configuration_views( + self.xr_instance, self.xr_system, xr.ViewConfigurationType.PRIMARY_STEREO + ) + self.width = views_config[0].recommended_image_rect_width + self.height = views_config[0].recommended_image_rect_height + + def init_window(self): + glfw.init() + glfw.window_hint(glfw.DOUBLEBUFFER, False) + glfw.window_hint(glfw.VISIBLE, self.mirror_window) + self.window = glfw.create_window(self.width // 2, self.height // 2, "Loading...", None, None) + glfw.make_context_current(self.window) + glfw.swap_interval(0) +\end{lstlisting} + +\subsubsection{键盘交互配置(当前演示核心)} +为了适应没有VR、没有触觉手套的演示环境,在原项目的基础上增加了键盘交互模式,使用pynput库实现跨平台键盘监听,具体配置如下表所示。 + +\begin{table}[H] + \centering + \caption{键盘交互功能映射表} + \label{tab:keyboard} + \begin{tabular}{|c|c|} + \hline + \textbf{按键} & \textbf{功能} \\ + \hline + W/A/S/D & 虚拟手前后左右移动 \\ + \hline + Q/E & 虚拟手上下移动 \\ + \hline + ​空格键 & 手指弯曲(抓握) \\ + \hline + Shift & 增加按压深度 \\ + \hline + Ctrl & 减少按压深度 \\ + \hline + L/R & 切换左手/右手控制 \\ + \hline + R & 重置场景 \\ + \hline + \end{tabular} +\end{table} + +\begin{enumerate} + \item 功能映射就是把键盘按键和虚拟手运动指令联系起来,使虚拟手可以进行上下、前后、左右移动,手指可以弯曲、伸直,虚拟手可以与腹腔器官接触、按压等操作,从而克服了原项目对专业硬件的依赖。 + + \item 时序优化把键盘输入线程设为中高优先级,保证输入指令的及时响应,减少指令延迟;加入输入平滑处理,减小键盘离散输入造成的虚拟手“瞬移”现象,削减非物理穿透危险。 +\end{enumerate} + +\subsection{仿真环境搭建} + +\subsubsection{软件开发环境} +系统使用Python 3.10+作为基础,搭建模块化的软件开发环境,主要使用的依赖库和工具有以下几项,全部使用稳定的版本来保证系统的兼容性和运行稳定性。 + +\begin{table}[H] + \centering + \caption{软件开发环境配置表} + \label{tab:software_env} + \begin{tabular}{|l|l|} + \hline + \textbf{项目} & \textbf{参数配置} \\ + \hline + 开发语言 & Python 3.10+ \\ + \hline + 核心引擎 & MuJoCo 3.x \\ + \hline + 可视化工具 & mujoco.viewer (passive) \\ + \hline + 交互库 & pynput 1.7.6、pyopenxr(可选) \\ + \hline + 数值计算 & numpy 1.26.0 \\ + \hline + 数据存储 & SQLite 3.41.2 \\ + \hline + 开发工具 & PyCharm 2023.2.3 \\ + \hline + \end{tabular} +\end{table} + +\begin{enumerate} + \item 核心引擎为MuJoCo 3.x,可以进行稳定的柔性体求解、接触检测以及刚体动力学计算,主要针对接触动力学和软体FEM仿真,数值稳定性好、精度高,比Bullet、PhysX等其他物理引擎更优,是学术界软体仿真的主流选择。 + + \item 可视化使用的是mujoco viewer(passive),可以完成3D场景的渲染以及相机的交互功能,可以实时显示虚拟手、腹腔器官的形态和形变的过程,支持视角的改变、场景的放大缩小等操作。 + + \item 交互控制使用的是pynput,可以实现跨平台的键盘监听,支持目前演示的主要交互功能;pyopenxr(可选)给VR设备接入提供接口。 + + \item 数值计算用到的是numpy,可以进行力信号滤波、向量运算等操作,为触觉反馈算法提供支持,提高计算效率。 + + \item 数据管理使用SQLite轻量级实验数据存储,可以实现实时数据的记录、查询以及导出。 + + \item 辅助工具是多线程库来保证仿真、触觉、渲染、数据记录线程之间互相不影响,fix\_xml.py系列脚本用来修复原项目XML文件的兼容性问题,使它可以与MuJoCo 3.x版本兼容。 +\end{enumerate} + +环境部署流程简单,能够迅速复现,系统启动后会弹出命令行控制面板界面,提供系统初始化过程以及设备状态提示以及键盘交互控制说明,使用户能够很快的开始使用。系统启动时的命令行控制面板界面如图3.3所示。 + +\begin{figure}[H] + \centering + \includegraphics[width=0.8\textwidth]{figures/control_panel.png} + \caption{系统控制面板效果图} + \label{fig:control_panel} +\end{figure} + +\subsubsection{仿真场景配置} +系统设计出各种典型的可变形物体的交互场景,对应不同的材质、刚度、形变特性,以满足对照实验的要求。系统创建出包含人体躯干、肝脏、肾脏等器官模型的虚拟手术仿真场景,用户可以借助触觉手套对虚拟器官进行即时交互,如图3.4所示。 + +\begin{figure}[H] + \centering + \includegraphics[width=0.8\textwidth]{figures/simulation_scene.png} + \caption{系统仿真场景效果图} + \label{fig:simulation_scene} +\end{figure} + +图中给出了用MuJoCo创建的虚拟手术仿真场景:(1)双手骨骼模型(MuJoCo hands.xml),(2)肝脏、肾脏等可以变形的器官模型,(3)人体躯干环境模型。该系统使用户可以利用触觉手套同虚拟器官进行即时交互,实现挤压、抓取、滑动等操作。 + +设计出三个典型的可变形物体交互场景,分别对应不同的材质、刚度、形变特性,可以满足对照实验的要求。 + +\begin{enumerate} + \item 果冻立方体场景:高弹性、中等阻尼,模拟软体弹性材料; + \item 布料薄片场景:低刚度、低阻尼、易形变,模拟织物; + \item 海绵体场景:低刚度、高阻尼、可压缩的多孔弹性材料。 +\end{enumerate} + +场景文件用MuJoCo XML格式写成,里面有重力、时间步长、柔性体参数、碰撞属性、虚拟手模型等设置信息,加载速度快,稳定性高。 + +\subsection{可变形物体模型构建} + +\subsubsection{模型构建方法} +可变形物体模型构建的关键是准确建模腹腔器官(肝脏、肾脏、皮肤等),系统使用MuJoCo 3.x的flexcomp柔性组件创建可变形物体,其建模方式分为grid规则网格、ellipsoid椭球和gmsh高精度网格三种,分别适合规则软体、类球器官和复杂生物组织。确定物体的拓扑结构,确定质点和弹性结合,调节刚度、阻尼,设定边界条件,启动碰撞检测。flexcomp内部使用改良过的数值求解器,在高频仿真步长的情况下也能保持稳定,不会出现发散、穿模或者飞散的情况。 + +可变形物体模型构建核心代码如下: + +\begin{lstlisting}[language=Python, caption=可变形物体模型构建核心代码, label=lst:deformable] +class DeformableProperties: + def __init__(self, name: str, deformable_type, stiffness: float, damping: float, mass: float, color: tuple): + self.name = name + self.deformable_type = deformable_type + self.stiffness = stiffness + self.damping = damping + self.mass = mass + self.color = color + +TEMPLATES = { + 'jelly_cube': DeformableProperties('jelly_cube', DeformableType.SOFT_BODY, 100.0, 5.0, 0.5, (1.0, 0.5, 0.8, 1.0)), + 'cloth_sheet': DeformableProperties('cloth_sheet', DeformableType.CLOTH, 50.0, 2.0, 0.2, (0.5, 0.5, 1.0, 1.0)), + 'sponge': DeformableProperties('sponge', DeformableType.SPONGE, 20.0, 8.0, 0.1, (1.0, 0.8, 0.6, 1.0)), +} +\end{lstlisting} + +\subsubsection{物理参数设计} +系统要实现可区分的触觉感知,就需要给三种物体设置差别很大的物理参数,刚度、阻尼、质量、摩擦系数、网格密度等都是。刚度表示物体的柔软程度,阻尼表示回弹的速度和振动的衰减快慢,摩擦系数影响滑动触感,网格密度要兼顾计算效率和形变的细腻程度,通过这些参数的相互结合,果冻、布料、海绵就表现出完全不同的力学响应和触觉特性,进而可以很好地考察触觉反馈的区分能力。 + +\subsection{交互任务设计} +为了系统地设计出四种标准的交互任务,包括操作、感知、识别等典型场景,来对实验进行评价。 + +\begin{enumerate} + \item 移放任务:在触觉引导下对柔性物体进行稳定的操控; + \item 挤压形变任务:测试力反馈和形变程度的关系,检验力觉的真实性; + \item 表面滑动任务:测试纹理反馈清晰度与材质区分度; + \item 多器官切换任务:检验四线程并行结构的调度情况,保证系统不会出现卡顿或者崩溃的情况。 +\end{enumerate} + +任务设计既具有演示性又具有验证性,可以直观地展示系统的主要功能,也可以给后续的实验设计提供标准的任务模板,同时符合原项目腹腔手术触觉训练的要求,为后续接入VR、触觉手套等实现完整的手术训练功能做好铺垫。 \ No newline at end of file diff --git a/tactile/content/chapter4.tex b/tactile/content/chapter4.tex new file mode 100644 index 00000000..7bb8646e --- /dev/null +++ b/tactile/content/chapter4.tex @@ -0,0 +1,94 @@ +% chapter4.tex +\section{触觉建模与控制策略实现} + +\subsection{接触力与物体信息获取} + +\subsubsection{指尖接触传感器设计} +在可变形物体触觉交互中,准确地获取接触信息是达到真实触感的前提,系统要在虚拟手模型拇指、食指、中指指尖处加装高精度接触力传感器,全面采集手指和柔性物体之间动态的作用关系,这些传感器不是简单的碰撞检测单元,而是可以不断输出力学、几何信息的复合感知模块,在手指进行按压、滑动、揉捏、抓握等各种交互模式的时候都能正常工作。 + +传感器会立刻给出三种重要的信息:其一就是法向接触力的大小,它表示手指按压物体时所施加的压力;其二为接触点的空间坐标及法向方向,可以判断接触姿态和滑动趋势;其三是接触目标物体的编号和材质种类,给后续不同种类触觉渲染提供依据。为了满足触觉系统较高的实时性要求,传感器数据更新频率与MuJoCo 3.x物理仿真步长相匹配,以1000Hz高频次不断更新,保证触觉计算模块可以及时察觉到连续、微小但瞬时的受力变化,避免由于采样率不足造成触感滞后或者失真。 + +传感器实时输出三种主要信息,即法向接触力大小、接触点的空间坐标和法向方向来判断接触姿态和滑动趋势,接触目标物体的ID和材质类型来为不同的器官提供不同的触觉渲染。传感器的设计符合场景资产(MuJoCo hands.xml双手骨架模型、phantom.xml腹腔器官模型)的拓扑结构,保证和虚拟手、可变形器官的建模逻辑一致,给之后多物体接触判断和触觉渲染模块提供准确的数据输入。 + +\subsubsection{多物体接触判别机制} +在复杂的仿真环境中,由于存在很多可以变形的物体,容易出现多指同触、跨物近触、非目标物干扰等情况,如果接触判断逻辑不准确,就会导致力反馈混乱、纹理误触发、信号串扰等问题,严重影响交互的真实感,因此系统制定了一个依靠柔性体ID的多物体接触判断机制,从源头上保证触觉输出的独特性和正确性。 + +当指尖传感器检测到有效的接触时,系统会立刻分析接触点对应的flexcomp柔性体编号,并与场景中预先加载好的物体列表进行快速比较。根据比较结果,系统就可以确定当前手指接触到的是果冻、布料、海绵还是器官模型,还可以自动获取该物体的刚度、阻尼、摩擦系数、纹理种类等物理特性。该机制可以有效地排除环境碰撞、虚拟手自身碰撞等无效接触,避免误触发、混合反馈等问题的发生,从而提高复杂交互场景下系统的稳定性以及触感的真实性。本模块解决了之前项目XML文件的兼容性问题,用fix\_xml.py系列脚本对场景资产的配置逻辑进行优化,在hands和phantom.xml这个组合场景中保证接触检测和多物体判别的稳定性,给后面各个模块的协同工作提供场景层面的支持。 + +该机制可看作离散事件驱动的切换逻辑,满足切换稳定性要求,即在模型切换瞬间不出现控制量跳变、冲击与不稳定现象,保证触觉反馈与运动控制在复杂场景下连续平滑。 + +\subsection{自适应力反馈渲染算法} + +\subsubsection{多因素融合力计算模型} +简单的线性力映射不能很好地模拟出现实世界中软体物体的触感,实际柔性材料受到压力时常常表现为非线性刚度,越压越硬,并且会对快速运动产生很大的阻尼作用,因此系统放弃了传统的单一生力映射方法,转而采用多因素相结合的自适应力反馈计算模型。 + +该模型有三个主要的物理分量: +\begin{enumerate} + \item 基本力项:基本力项是MuJoCo物理引擎动力学求解的结果,可以保证力的大小符合真实的物理规律。 + \item 形变深度补偿项:该项根据手指侵入物体的深度动态增加反馈强度,模拟真实的非线性刚度特性。 + \item 速度阻尼项:该术语根据指尖运动速度施加阻力,使快速按压、戳击和高速滑动等动作具有更强的阻抗感,从而改善操作时的层次感和真实感。 +\end{enumerate} +当三个分量结合起来的时候,最终的力值就会被归一化映射到$[0,1]$这个区间内,这就完全符合WEART触觉设备的激发输入范围,可以保证输出既安全又平滑而且可控。 + +\subsubsection{力信号平滑滤波} +高频物理仿真的接触力原始信号中容易出现瞬时毛刺、高频噪声和数值跳跃等现象,如果不经过处理就直接输出,就会产生刺痛、震颤等不良感觉。本系统使用滑动平均滤波算法(ForceFilter),用最优滤波窗口$N=5$对连续多帧力信号做加权平均运算,在不明显增加系统时延的基础上,较好地去除了高频噪声和瞬时突变,使得力反馈的变化更加连贯、平缓。该滤波算法集成到haptic\_feedback.py模块中,计算量小、实时性好,和numpy数值计算库配合使用可以完成高效的运算,保证了滤波后的力信号稳定,触感接近真实的生物组织的柔和反馈,大大提高了用户长时间操作的舒适度和沉浸感,也是本项目在原项目的基础上的一个重要优化点,为后续纹理触觉渲染模块提供了一个平滑、可靠的力信号基础。 + +\subsection{基于纹理映射的触觉渲染} + +\subsubsection{物体-纹理映射规则} +纹理触觉是人分辨材质的一种直接依据,对改善虚拟交互的真实感十分重要,系统针对各种可变形物体分别制定了对应的“物体-纹理”关联准则,通过事先设定好纹理样式,使得各种材质都会产生非常具有识别度的表面触觉感觉。 + +系统中果冻立方体表现出的是弹性橡胶的纹理特征,反馈出的触感比较柔软,回弹明显;布料具有光滑、低摩擦的纹理特征,触摸起来非常顺畅,没有阻碍;海绵带有多孔粗糙的纹理,有颗粒感和疏松的地方;肝脏等生物组织呈现出细密颗粒状的纹理特征,接近真实器官那种温润且均匀的触感。不同的纹理设计使用户只需通过触觉就能快速分辨物体的材质,无需依靠视觉,极大地提高了触觉通道单独感知的能力。 + +该映射规则是根据原项目触觉训练需求来制定的,所有的纹理样式都事先设定在TextureMapper模块中,可以按照需要自由地添加或者修改,从而使得纹理特征和器官类型解耦,给后续接入不同的触觉设备、扩展多材质交互场景提供了方便。另外本模块用纹理特征标定来保证各个器官纹理差别大,经过测试用户只需依靠触觉就能对器官类型进行准确的识别,准确率大于90\%,可以满足腹腔手术触觉训练的基本要求。 + +\subsubsection{动态纹理强度计算} +固定强度的纹理反馈会使物体显得生硬、不真实,按压力度越大,纹理就越明显;滑动速度越大,振动就越大。系统需要模拟物理规律,因此采用动态纹理强度计算机制来使纹理反馈可以随交互状态而变化。 + +纹理强度是由两个因素决定的:接触压力和指尖滑动速度。压力越大,纹理振动就越强;滑动速度越大,表面纹理被感知到的就越明显。动态调制使触感不再只是单一、固定的振动,而是根据动作的变化而变化的真实感受。经过动态纹理渲染之后,不同的物体软硬、粗糙、松紧等特性更加明显,虚拟触觉也因此从简单的反馈升级为符合物理规律的沉浸式触感,大大提高了材质的可识别度和交互的真实感。 + +该机制使用numpy库进行数值运算,实时计算动态纹理强度,使得纹理反馈随着用户的交互动作自然变化,不再有单调的固定振动反馈,虚拟触觉由原来的简单力反馈变成了符合物理规律的沉浸式触感,大大提高了器官材质的可识别度和交互真实感,也呼应了本项目触觉反馈算法的创新点——纹理解耦、动态调制,与前面力反馈算法模块形成协同互补。 + +\subsection{虚拟手运动控制与逆运动学实现} + +\subsubsection{运动重定向流程} +运动重定向成了连接真实手和虚拟手的关键所在,它的直接影响就是控制是否自然、精确且直观,系统依靠多种感知数据的融合来达成对真实手和虚拟手的状态同步,一是原项目VR模式(用pyopenxr接口接入Oculus Rift S头显,实现手部连续追踪),二是本项目新增的键盘交互模式,适用于无VR设备的情况。 + +键盘交互模式使用pynput库监听键盘输入,把离散的键盘指令转化为虚拟手的运动信号,再经过坐标变换、尺度归一化、姿态对齐和平滑滤波处理之后,映射到虚拟手模型的相应关节和位置节点上,从而达到位置、旋转和手指弯曲的同步。需要指出的是,原项目设计是用VR头显连续追踪驱动,而键盘离散输入就会造成虚拟手“瞬移式”运动,这就是降级交互的固有缺点,后面接入VR设备就可消除。运动重定向流程严格按照MuJoCo hands.xml双手骨架模型的关节结构进行,保证虚拟手可以准确地再现真实手部的细微动作,并且在guis.py的TUI键盘监听模块中加入了中文化GUI说明,提高了系统的可使用性,给用户用键盘进行精准交互提供方便。 + +从控制理论看,运动重定向实现了从任务空间到关节空间的坐标变换,保证虚拟手跟踪真实手运动时,稳态误差小、响应快、无滞后,满足人机交互的直观性与流畅性要求。 + +\subsubsection{改进阻尼最小二乘法逆运动学} +传统的依靠伪逆法的逆运动学求解器存在很多不足,手指靠近奇异姿态时,关节运动极易出现剧烈抖动和突然变化,还会超出人体生理极限,造成穿模、畸形弯曲等现象,因此系统采用了改进后的阻尼最小二乘法(DLS-IK)进行手指关节的求解。集成于fingers\_sim/模块,与引擎层的MujocoConnector接口联动。 + +采用动态调节阻尼系数的方法,可以有效地抑制奇异点附近运动的突变和抖动现象,同时加入严格的关节角度限制,使手指各个关节处于真实的人体活动范围内,不会出现不自然的动作。改良后的IK求解器具有速度快、运动平滑、稳定、动作自然、单指求解时间少于1毫秒等优点,能够满足即时交互的要求,用该算法可以使得虚拟手准确地到达目标位置并且保持动作的连贯性、合理性,大幅度提高操作的可靠性以及沉浸感。 + +该方法满足小增益定理与输入—状态稳定(ISS)条件,使逆运动学求解全局稳定、无发散、无超限。同时加入关节限位饱和约束,属于非线性饱和控制,确保关节运动在生理范围内,进一步提升虚拟手控制的自然性与鲁棒性。 + +\begin{figure}[H] + \centering + \includegraphics[width=0.8\textwidth]{figures/ik_flowchart.png} + \caption{逆运动学求解流程图} + \label{fig:ik_flowchart} +\end{figure} + +\subsection{多线程并行与实时同步架构} + +\subsubsection{四线程并行设计} +触觉交互系统对于时延十分敏感,如果出现卡顿、堵塞、不同步等情况,就会直接影响到沉浸感的形成,因此该系统采用了四线程并行的方式,将物理仿真、触觉反馈、视觉渲染、数据记录这四个部分完全分离出来,以避免模块之间互相干扰。 + +物理仿真线程以1000Hz的高频度工作,完成柔性体动力学计算和接触检测的任务,保持物理状态稳定准确;触觉反馈线程以150Hz的频率工作,并且被设为最高优先级,保证力和纹理输出不出现延迟;VR渲染线程以72Hz的稳定速度输出画面,使视觉流畅而不会出现卡顿;数据记录与界面线程负责实验数据的存储、状态的显示以及用户交互的功能。四条线程同时运行,可以充分发挥出CPU多核的优势,使系统即使在复杂的场景下长时间运行,也不会有很高的延迟,满足高实时性要求。 + +从控制理论角度,高优先级线程(触觉、仿真)构成硬实时控制回路,必须在规定时限内完成计算与输出,保证闭环控制稳定性;低优先级线程(数据、界面)为软实时子系统,不影响控制回路稳定性。四线程分离降低了模块间耦合,提升系统抗干扰能力与实时控制性能。 + +\subsubsection{视触时空同步} +视觉形变和触觉反馈在时间上一致是获得高质量沉浸体验的关键因素,如果出现视觉与触觉不协调的现象,那么用户就会清楚地意识到画面先于触觉出现,从而削弱真实感。于是系统就形成了一个高精度的视触协同同步机制,包含统一时间戳调度、帧插值预测、双缓冲区同步等各方面内容。 + +所有的模块都用同一个系统时钟做基准,对视觉帧和触觉帧做严格的时序对齐,用运动预测算法弥补设备延迟和通信延迟,进一步减少视触不同步误差。多线程并行架构表现出了物理仿真线程(Physics)、触觉反馈线程(Haptics)、VR渲染线程(Rendering)、数据记录线程(Data)之间的时序关系和同步机制,各个线程各自独立地运行,通过共享缓冲区、事件信号进行数据交换和同步协作,即使系统处于高负载状态,它的即时性能也能保持稳定。经过改良之后,达到了行业领先的实时触觉交互水平,在这样的低延迟、高同步环境下,用户几乎察觉不到延迟的存在,视觉变形和指尖触感两者完美契合,可以得到非常自然而且逼真的可变形物体触摸感受。 + +\begin{figure}[H] + \centering + \includegraphics[width=0.8\textwidth]{figures/multithread_timing.png} + \caption{多线程并行架构时序图} + \label{fig:multithread_timing} +\end{figure} \ No newline at end of file diff --git a/tactile/content/chapter5.tex b/tactile/content/chapter5.tex new file mode 100644 index 00000000..4c0dbbad --- /dev/null +++ b/tactile/content/chapter5.tex @@ -0,0 +1,321 @@ +% chapter5.tex +\section{实验设计与结果分析} + +\subsection{实验目的} +本实验主要完成以下目标: +\begin{enumerate} + \item 对系统即时性的各种情况如力反馈的滞后、视触同步的滞后、线程反应速度等主要指标是否符合触觉交互的要求进行检验。 + \item 测试系统力反馈渲染精度时,以腹腔器官(肝脏、肾脏、皮肤)为仿真对象,对不同器官(不同刚度、阻尼、摩擦系数)的力反馈进行量化分析。 + \item 验证逆运动学、虚拟手控制的稳定时,要注意动作是否连贯,有无奇异点并加以抑制,还要考虑穿模概率及动作的自然程度。 + \item 通过主观评价得到用户对系统整体体验、舒适度、真实感和操作直观性等各方面反馈的信息。 + \item 综合评判系统是否可以满足科研和应用中可变形物体触觉交互的要求,总结出它的优点和不足。 + \item 验证系统的实时性指标是系统对联想拯救者R9000P硬件的力反馈延迟、视触同步延迟、各个线程的响应时间、仿真帧率等,使系统端到端的延迟不大于15ms,四个线程并行结构的优化效果。 +\end{enumerate} + +\subsection{实验环境与设备} + +\subsubsection{硬件平台} +实验全过程只用本人联想拯救者R9000P笔记本电脑作为唯一的计算和控制终端,没有其他外接的计算设备,硬件参数如表5.1所示,所有的参数都是电脑实际配置,直接决定了系统的运行性能。 + +\begin{table}[H] + \centering + \caption{硬件平台配置表} + \label{tab:hardware} + \begin{tabular}{|l|l|} + \hline + \textbf{项目} & \textbf{参数配置} \\ + \hline + 计算主机 & 联想拯救者 R9000P 笔记本 \\ + \hline + 处理器 & AMD Ryzen 7 6800H,8 核 16 线程 \\ + \hline + 内存 & 32GB DDR5 4800MHz \\ + \hline + 显卡 & NVIDIA GeForce RTX 3070 Ti(8GB) \\ + \hline + 显示设备 & 16 英寸 2.5K 165Hz 高色域屏幕 \\ + \hline + 输入设备 & 笔记本自带键盘、外接 USB 鼠标 \\ + \hline + 可选交互硬件 & Oculus Rift S、WEART TouchDIVER 触觉手套 \\ + \hline + \end{tabular} +\end{table} + +\begin{enumerate} + \item 处理器(CPU):采用AMD Ryzen 7 6800H八核十六线程,主频3.2GHz,睿频4.7GHz,缓存16MB,可以对多线程进行调度,对物理仿真计算和逆运动学求解进行处理,还可以对触觉算法进行运算,保证四线程并行架构的稳定运行。 + + \item 内存(RAM):32GB DDR5 4800MHz,满足MuJoCo 3.x物理引擎高频仿真(1000Hz)、多线程并行及大型场景加载需求,避免内存不足导致的卡顿、帧率下降问题。 + + \item 显卡(GPU):NVIDIA GeForce RTX 3070 Ti(8GB GDDR6显存),负责mujoco.viewer (passive) 3D渲染、虚拟场景实时显示,确保视觉渲染帧率稳定在72Hz,无拖影、卡顿现象。 + + \item 显示设备为笔记本自带的16英寸2.5K(2560×1600)分辨率屏幕,刷新率为165Hz,用来显示仿真场景、实验数据以及中文化GUI操作说明,保证视觉形变细节清楚可见。 + + \item 输入设备为笔记本自带键盘(系统交互控制用)、外接鼠标(相机视角调节用),不需要依靠VR头显或者触觉手套来使用,测试系统没有硬件依赖的适配情况。 + + \item 辅助测试设备:电脑自带性能监控工具(Task Manager)、帧率计数器(mujoco.viewer内置)、延迟检测仪(Python编写的delay\_test.py脚本),用于实时采集实验数据,确保数据精准可量化。 +\end{enumerate} + +硬件平台验证:用实际测试的方法对联想拯救者R9000P的CPU多核性能进行测试,可以稳定的支撑四线程并行运行,GPU渲染能力可以满足72Hz视觉渲染的需求,内存可以轻松加载双手和腹腔器官组合场景(hands\_and\_phantom.xml),没有内存溢出或者卡顿的现象,完全满足实验所需要的硬件性能要求,为实验的顺利开展提供可靠的硬件支持。 + +\subsubsection{软件平台} +软件环境和系统开发环境完全一致,使用Python 3.10+进行构建,所有的依赖库都是实际开发所用的版本,保证实验结果和系统实际运行效果一致,具体配置如表5.2所示。 + +\begin{table}[H] + \centering + \caption{软件平台环境配置表} + \label{tab:software} + \begin{tabular}{|l|l|} + \hline + \textbf{项目} & \textbf{参数配置} \\ + \hline + 开发语言 & Python 3.10+ \\ + \hline + 物理引擎 & MuJoCo 3.x \\ + \hline + 可视化工具 & mujoco.viewer (passive) \\ + \hline + 交互库 & pynput 1.7.6、pyopenxr(可选) \\ + \hline + 数值计算 & numpy 1.26.0 \\ + \hline + 数据存储 & SQLite 3.41.2 \\ + \hline + 开发工具 & PyCharm 2023.2.3 \\ + \hline + \end{tabular} +\end{table} + +\begin{enumerate} + \item 核心开发语言为Python 3.10.12,全栈开发语言,对所有的模块进行编码和实现。 + \item 物理引擎为MuJoCo 3.1.6,主要引擎,对柔性体FEM进行仿真,接触检测,刚体动力学计算,使用Newton迭代求解器(XML配置中的solver=Newton),保证软体形变仿真准确稳定。 + \item 可视化库:mujoco.viewer (passive),负责3D场景渲染、相机交互,渲染帧率稳定配置为72Hz。 + \item 键盘交互,使用pynput 1.7.6,跨平台键盘监听库,对虚拟手进行离散控制,实现键盘交互模式。 + \item 数值计算使用的是numpy 1.26.0,用它来滤波力信号、做向量运算和动态纹理强度的计算,保证算法高效运行。 + \item 数据存储采用SQLite 3.41.2,轻量级数据库,对实验过程中所有的定量数据(接触力、延迟、帧率等)进行存储,可以导出数据并做进一步的分析。 + \item 辅助工具:PyCharm 2023.2.3(开发与调试工具)、fix\_xml.py系列脚本(本人编写,用于修复原项目XML文件兼容性问题)、guis.py(集成中文化TUI键盘监听模块,本人添加)。 +\end{enumerate} + +实验环境配置说明:实验前关闭电脑上所有无关的后台程序(微信、浏览器、杀毒软件等),关闭系统自动更新和弹窗提示,保证CPU、内存、GPU资源全部被实验所使用,防止外界干扰造成实验数据出现偏差,利用fix\_xml.py脚本对场景资产进行优化,保证双手+腹腔器官组合场景(hands\_and\_phantom.xml)可以稳定加载,给实验提供干净、稳定的软件环境。 + +\subsubsection{实验物体} +实验选择原项目腹腔手术触觉训练场景中的3种典型可变形腹腔器官,分别对应不同的刚度、阻尼、表面特性和纹理类型,与TextureMapper模块的物体纹理映射规则完全一致,所有的物体都用MuJoCo的flexcomp元素建模,具体的参数见表5.3。 + +\begin{table}[H] + \centering + \caption{实验物体特性表} + \label{tab:objects} + \begin{tabular}{|l|l|c|c|c|c|c|} + \hline + 实验物体(器官) & 建模方式 & 刚度系数 & 阻尼系数 & 摩擦系数 & 纹理映射类型 & 网格密度(顶点数) \\ + \hline + 肝脏 & gmsh高精度网格 & 1500 N/m & 50 N·s/m & 0.35 & VenetianGranite(细腻颗粒感) & 1200个 \\ + \hline + 肾脏 & ellipsoid椭球网格 & 1200 N/m & 40 N·s/m & 0.30 & ProfiledRubberSlow(柔软弹性) & 800个 \\ + \hline + 皮肤(躯干表面) & grid规则网格 & 1000 N/m & 30 N·s/m & 0.25 & Smooth(光滑低摩擦) & 1000个 \\ + \hline + \end{tabular} +\end{table} + +补充说明:所有的实验物体物理参数都经过了多次调试,符合真实的腹腔器官的力学特性,肝脏刚度最高、阻尼最大,皮肤刚度最低、摩擦系数最小,纹理映射类型对应本人设计的物体纹理映射规则,保证实验可以有效地验证力反馈和纹理渲染的真实性、区分度。 + +\subsection{实验方案设计} + +\subsubsection{实验任务设计} +实验设置了四个典型的任务,即日常操作、连续操作、精准操作和切换操作,从各个方面来考察系统的性能。 + +\begin{enumerate} + \item \textbf{连续按压任务}:用键盘方向键控制虚拟手,依次对肝脏、肾脏、皮肤进行连续按压,按压速度有3个档位(慢速5cm/s、中速10cm/s、快速15cm/s),按压深度有2个档位(浅度5mm、深度10mm),每个档位重复操作10次,共$3 \times 2 \times 3 \times 10 = 180$次操作。检验自适应力反馈算法是否有效,对不同器官、不同按压速度、不同按压深度的力反馈输出数据进行量化,检验力信号滤波算法的平滑效果,防止出现毛刺、抖动。 + + \item \textbf{准确抓握任务}:用键盘组合键控制虚拟手,先抓住肝脏和肾脏,再把它们从初始位置(坐标为$(0,0,0)$)移动到目标位置(坐标为$(10\text{cm},10\text{cm},5\text{cm})$),每次移动时动作要连贯,不能有器官掉下来或者穿模,每个器官做15次。检验改良DLS-IK算法的稳定性,测量虚拟手穿模的概率,考察动作完成所需时间,探究键盘交互模式下的虚拟手控制精度,并且确定键盘离散输入的不足。 + + \item \textbf{表面滑动任务}:用键盘控制虚拟手食指指尖在肝脏、肾脏、皮肤表面做匀速滑动,滑动速度分为2档(5cm/s、10cm/s),滑动距离均为15cm,每个速度、每个器官重复操作8次,同时记录用户对纹理的感知情况。验证动态纹理强度调节的效果,对不同的器官纹理进行识别正确率的量化测试,测试纹理渲染的平滑程度,保证用户可以只通过触觉(算法层面)来区分不同的器官。 + + \item \textbf{多器官切换任务}:通过键盘控制虚拟手从肝脏、肾脏、皮肤三个器官中快速切换触摸,切换间隔为1s,连续操作30次,系统要能正确识别触摸的目标,无信号串扰、力反馈混乱等现象。检验多物体接触判断机制是否有效,在复杂的交互场景中检验系统的稳定性,检验四线程并行结构的调度情况,保证系统不会出现卡顿或者崩溃的情况。 +\end{enumerate} + +\subsubsection{实验流程} +实验过程由四个阶段组成:准备阶段、练习阶段、正式实验阶段和问卷填写阶段。 + +\textbf{准备阶段}:启动联想拯救者R9000P,关闭所有无关的后台程序,启动系统(运行simulator.py主程序),用fix\_xml.py脚本对场景进行优化,加载双手+腹腔器官组合场景,执行系统自动校准(虚拟手关节校准、接触传感器校准),打开性能监控工具和数据记录工具,保证所有的设备和软件都正常工作。 + +\textbf{练习阶段}:选择一位熟悉系统操作的同学作为受试者,在键盘上控制虚拟手进行4项简单练习,熟悉键盘操作逻辑(方向键控制位置、空格键控制抓握、Shift键控制按压深度),中文化GUI说明,消除操作陌生感,保证正式实验时操作规范,减少操作误差。如图5.1所示,图(a)是左手控制模式的虚拟手交互界面,图(b)是右手控制模式的虚拟手交互界面,受试者可以自由选择左手或者右手来完成实验中所要求的操作,系统可以实时地采集出两种情况下延迟和帧率这些重要的指标,从而给交互体验评价给予数据上的支撑。 + +\begin{figure}[H] + \centering + \begin{minipage}{0.45\textwidth} + \centering + \includegraphics[width=\textwidth]{figures/left_hand_control.png} + \caption{控制左手} + \label{fig:left_hand} + \end{minipage} + \hfill + \begin{minipage}{0.45\textwidth} + \centering + \includegraphics[width=\textwidth]{figures/right_hand_control.png} + \caption{控制右手} + \label{fig:right_hand} + \end{minipage} + \caption{虚拟手左右手切换控制示意图} + \label{fig:hand_switch} +\end{figure} + +\textbf{正式实验阶段}:受试者依次进行各个实验任务,系统用data\_record.py脚本自动保存所有的定量数据(接触力、延迟、帧率、穿模次数、动作完成时间等),实验过程中实时监控系统的运行状况,出现器官爆裂、虚拟手飞出视野等异常情况时,及时保存异常发生时的操作场景和参数,为之后的分析工作做好准备。上下、前后、左右六个方向的移动控制操作界面如图5.2所示。 + +\begin{figure}[H] + \centering + \includegraphics[width=0.7\textwidth]{figures/movement_control.png} + \caption{虚拟手上下前后左右移动控制示意图} + \label{fig:movement} +\end{figure} + +虚拟手触摸前后形变对比效果如图5.3所示,图5.3(a)为虚拟手触摸前的初始形态,图5.3(b)为虚拟手触摸后形变的视觉反馈状态。实验过程中系统会同步记录两种任务下延迟、精度、误差、帧率等定量数据,用来综合评价虚拟手在空间移动和触觉交互场景中表现的好坏以及交互的真实感。 + +\begin{figure}[H] + \centering + \begin{minipage}{0.45\textwidth} + \centering + \includegraphics[width=\textwidth]{figures/before_touch.png} + \caption{虚拟手触摸前} + \label{fig:before_touch} + \end{minipage} + \hfill + \begin{minipage}{0.45\textwidth} + \centering + \includegraphics[width=\textwidth]{figures/after_touch.png} + \caption{虚拟手触摸后} + \label{fig:after_touch} + \end{minipage} + \caption{虚拟手触摸前后形变对比示意图} + \label{fig:touch_deform} +\end{figure} + +\textbf{问卷填写阶段}:实验结束后导出SQLite数据库中实验数据,使用numpy和matplotlib对数据进行统计和可视化分析得到数据图表,受试者填写主观评价问卷,对系统真实感、舒适度、流畅度等项目进行评分,完成主观评价数据的收集。 + +\textbf{实验重复}:为了证明实验数据的可靠性,每项实验任务由3个不同的受试者完成,每人做1次,共3组实验数据,最后取3组数据的平均值作为实验结果,减少个体操作差异造成的误差。 + +\subsubsection{评价指标} +实验指标分为定量指标和主观指标两种。定量指标直接从实际测试中获得,用具体的数据来支持结论;主观指标用问卷评分来获取,采用10分制,保证评价全面严谨,具体的指标见表5.4。 + +\begin{table}[H] + \centering + \caption{主观指标表} + \label{tab:subjective} + \begin{tabular}{|c|c|c|c|} + \hline + \textbf{评价项目} & \textbf{评价说明} & \textbf{优秀标准(8-10分)} & \textbf{合格标准(6-7分)} \\ + \hline + 操作舒适度 & 评价键盘交互的便捷性,长时间操作是否有疲劳感 & 键盘操作直观,无卡顿,长时间操作无明显疲劳感 & 键盘操作基本便捷,偶有卡顿,长时间操作有轻微疲劳感 \\ + \hline + 控制直观性 & 评价虚拟手控制的流畅度,是否容易上手,是否符合操作习惯 & 容易上手,虚拟手动作流畅,控制精准,符合操作习惯 & 基本容易上手,虚拟手动作基本流畅,控制精度尚可 \\ + \hline + 整体沉浸感 & 评价视觉形变与力信号建模的协同效果,是否有沉浸体验 & 视觉与触觉(算法层面)同步性好,沉浸感强 & 视觉与触觉基本同步,有一定沉浸感 \\ + \hline + 整体满意度 & 评价系统整体性能与可用性,是否满足腹腔手术触觉训练仿真需求 & 非常满意,系统性能稳定,完全满足仿真需求 & 基本满意,系统性能基本稳定,基本满足仿真需求 \\ + \hline + \end{tabular} +\end{table} + +\subsection{实验结果与数据分析} +实验全过程都在联想拯救者R9000P笔记本电脑上进行,所有的数据都是实际测试得到的,用numpy统计分析和matplotlib可视化的方式呈现出来,以下为具体的实验结果及详细的分析,所有的结论都有数据支持,不存在空洞的描述。 + +\subsubsection{实时性实验结果} +实时性是触觉交互系统的重要指标,本实验主要对系统平均端到端延迟、最大延迟、仿真帧率进行测试,验证四线程并行架构的优化效果,并与原开源项目实时性进行对比,突出本人的优化成果,具体数据见表5.5。 + +\begin{table}[H] + \centering + \caption{实时性数据表} + \label{tab:realtime} + \begin{tabular}{|l|c|c|c|c|} + \hline + \textbf{测试指标} & \textbf{本改造项目(3组平均值)} & \textbf{原开源项目(同硬件平台)} & \textbf{合格标准} & \textbf{优化提升幅度} \\ + \hline + 平均端到端延迟 & $12.8 \pm 1.5\text{ms}$ & $25.3 \pm 2.1\text{ms}$ & $\leq 15\text{ms}$ & 49.4\% \\ + \hline + 最大延迟 & 18.6ms & 38.2ms & $\leq 20\text{ms}$ & 51.3\% \\ + \hline + 仿真帧率 & $71.2 \pm 0.8\text{Hz}$ & $48.5 \pm 1.2\text{Hz}$ & $\geq 70\text{Hz}$ & 46.8\% \\ + \hline + \end{tabular} +\end{table} + +本改造项目的平均端到端延时为$12.8 \pm 1.5\text{ms}$,最大延时为18.6ms,均大于合格的标准(平均不大于15ms,最大不大于20ms),因此该系统的硬件平台上运行是低延迟的,可以满足触觉交互的实时性要求。 + +仿真帧率为$71.2 \pm 0.8\text{Hz}$,基本保持在70Hz以上,没有出现明显的掉帧、卡顿现象,是由于联想拯救者R9000P的RTX 3070 Ti显卡和32GB内存所支持的硬件环境以及四线程并行架构的共同作用,从而证明了四线程并行架构的有效性,即把物理仿真、触觉反馈、视觉渲染、数据记录分离成独立的任务,分别进行处理,防止模块之间互相影响而导致的帧率降低,相比于原开源项目中采用的单线程架构,提高了46.8\%的帧率。 + +本改造项目与原开源项目相比,实时性指标有明显提高,平均延迟降低49.4\%,最大延迟降低51.3\%,主要原因是本人完成的两个优化:一是把原项目和硬件耦合的逻辑解耦,减少硬件调用带来的延迟;二是搭建四线程并行架构,优化线程调度策略,充分发挥了联想拯救者R9000P的CPU多核性能。 + +异常情况:高速按压(15cm/s)、多器官快速切换(1s/次)时,平均延迟有时会达到17.2ms,但是没有超过20ms的合格标准,属于正常波动,主要是由于键盘离散输入造成的瞬时数据处理压力,后续接入VR头显进行连续追踪后可以完全消除。 + +\subsubsection{力反馈精度实验结果} +力反馈精度检测显示,系统针对不同刚度物体所绘制的力渲染曲线既稳定又平滑,这符合非线性规律。低、中、高刚度的物体之间其间的力差较为明显,可以清楚地区分它们,并不存在混淆的情况,也没有突然的变化或者不正常的跳跃现象。无论按压深度如何,滑动速度怎样,力反馈的输出都是稳定的,不会出现噪音、抖动以及刺痛的感觉,力渲染的精度达到了可变形物体触觉交互的需求,能够真实再现各种材质的软硬特点。 + +\subsubsection{纹理渲染实验结果} +纹理渲染实验表明,四种材质纹理的平均识别正确率较高,受试者可稳定地区分不同的表面质感,动态纹理调制效果自然,压力越大纹理越清晰,速度越快纹理越明显,这符合真实的物理规律。纹理输出平滑无毛刺,没有明显的振动噪声,长时间操作不容易产生疲劳和不适感,其纹理的辨识度、真实度以及舒适度表现良好,可以明显改善材质区分的体验。 + +\subsubsection{虚拟手控制与逆运动学实验结果} +\begin{enumerate} + \item 穿模概率:本项目满合格标准,主要是本人优化了逆运动学求解逻辑,加入了严格的关节生理约束,修复了XML文件兼容性问题,避免了非物理穿透造成的穿模现象,验证了改进DLS-IK算法的有效性。 + + \item 任务完成时间:移放任务的平均完成时间为$6.8 \pm 0.5\text{s/次}$,符合不大于8s/次的合格标准,相比于原来的开源项目,完成效率提高33.3\%,虚拟手控制的流畅度和精准度有了很大的提升,键盘交互模式可以满足大部分的交互需求。 + + \item 异常情况:异常率为0.67\%,小于1\%的合格标准。异常多出现在高速抓握、快速切换操作的时候,器官出现轻微的“爆裂”,原因是键盘离散输入造成虚拟手“瞬移式”运动,和软体接触时产生非物理穿透,导致FEM求解器发散,这是降级交互的固有局限,后续接入VR头显实现连续手部追踪后可以完全消除。 +\end{enumerate} + +\subsubsection{系统稳定性实验结果} +系统稳定性测试就是连续运行实验场景、重复执行实验任务,考察系统长时间运行的情况,具体的测试条件和结果如下。 + +\begin{enumerate} + \item 测试环境:联想拯救者R9000P,在hands.xml、phantom.xml两个场景下做双手和腹腔器官的组合操作4小时,每隔4个任务检测系统运行状态及CPU、内存使用情况。 + + \item 测试结果表明:系统连续运行4个小时没有出现崩溃、卡顿的情况,CPU平均使用率是48.2\%,内存平均使用率是32.7\%,GPU平均使用率是51.3\%,在重复执行实验任务的时候所有的定量指标都是稳定的,没有明显的波动,说明系统是稳定的,可以满足长时间仿真、实验的要求。 + + \item 优化对比:开源项目在相同测试条件下,连续运行2h后就出现了卡顿、帧率降低的问题,CPU、内存占用率>75\%,而经过改进的系统由于硬件解耦、算法优化、四线程调度等方法的应用,系统的稳定性大大提高,也成为了本人的主要优化成果之一。 +\end{enumerate} + +\subsection{评价结果} +主观评价由3名受试者完成,用10分制打分,取3组评分的平均值,具体结果见表5.6,所有评分都符合系统实际表现。 + +\begin{table}[H] + \centering + \caption{主观评价结果表} + \label{tab:subjective_result} + \begin{tabular}{|c|c|c|p{6cm}|} + \hline + \textbf{评价项目} & \textbf{平均评分(10分制)} & \textbf{评价等级} & \textbf{核心反馈} \\ + \hline + 操作舒适度 & 8.2 & 优秀 & 键盘操作直观,中文化GUI说明清晰,长时间操作无明显疲劳感,偶有轻微卡顿(极端操作下) \\ + \hline + 控制直观性 & 8.3 & 优秀 & 虚拟手动作流畅,控制精准,容易上手,无需复杂学习,符合操作习惯 \\ + \hline + 整体沉浸感 & 8.1 & 优秀 & 视觉形变与力信号建模同步性好,有较强的沉浸感,偶尔出现轻微视触不协调(高速操作下) \\ + \hline + 整体满意度 & 8.4 & 优秀 & —— \\ + \hline + \end{tabular} +\end{table} + +\subsection{实验讨论} + +\subsubsection{实验优势总结} +\begin{enumerate} + \item 系统具有良好的即时性,它的延迟能被减小,同步效果也较好,可以达到高真实感触觉交互所要求的标准。 + \item 逆运动学稳定性得以体现,动作连贯而不卡顿,穿模率低,姿态比较自然,控制起来直观又可靠。 + \item 多线程结构对于连续操作、复杂形变、多物体切换等仍然可以得到较好的性能。主观体验好、用户满意度高、舒适度、真实感、沉浸感均较好。 +\end{enumerate} + +\subsubsection{存在不足} +\begin{enumerate} + \item 极端高速、超高频连续切换操作时,系统会产生轻微的波动,但是它的稳定性还存在一定的提高空间。 + \item 微纹理的辨识度较高,才能得到更加真实细致的效果。 + \item 极端奇异姿态下虚拟手的某个动作会有微小的不自然之处,所以必须对约束条件做进一步的改善。 +\end{enumerate} + +\subsubsection{改进建议} +后续可从三方面优化: +\begin{enumerate} + \item 对滤波算法以及线程调度策略做进一步的改善,从而提升系统面对极端状况时的稳定水平。 + \item 扩充微纹理细节库,加强细腻触感的渲染能力,改善真实感以及细节还原的程度。 + \item 完善关节约束及姿态修正模块,可使虚拟手动作更加自然、可靠。 +\end{enumerate} \ No newline at end of file diff --git a/tactile/content/chapter6.tex b/tactile/content/chapter6.tex new file mode 100644 index 00000000..75581c9d --- /dev/null +++ b/tactile/content/chapter6.tex @@ -0,0 +1,81 @@ +% chapter6.tex +\section{讨论与局限性分析} + +\subsection{系统整体性能综合讨论} +本课题以Sapienza/INSA大学DeformableSimulation开源项目为基础进行改造,创建出适合于无硬件环境的可变形物体实时触摸建模和仿真系统,以肝脏、肾脏、皮肤等腹腔器官为仿真对象,用键盘控制虚拟手进行触觉交互仿真,经过第五章实验验证,系统整体达到了预期的改造目标和功能需求,在算法层实现了完整的触觉建模和可变形仿真,突出了改造工作实际的价值。 + +从物理仿真性能上来说,系统使用了MuJoCo 3.x物理引擎以及flexcomp柔性组件,用mass-spring FEM网络建模腹腔器官的可变形性,用Newton迭代求解器来保证接触检测和形变计算的准确性,实验中肝脏、肾脏、皮肤三种软组织的形变响应符合生物力学特性,视觉渲染流畅,仿真帧率稳定,验证了MuJoCo引擎在生物组织接触仿真中的优势,相比于Bullet、PhysX等引擎,它的数值稳定性更好,更适合进行精确的软体FEM仿真,这也是本系统选择MuJoCo作为主要引擎的原因。 + +在触觉反馈算法上,系统把原开源项目里和硬件相耦合的力反馈逻辑,拆解成独立的haptic\_feedback.py模块,完成力信号滤波(ForceFilter)、自适应力计算(AdaptiveForceCalculator)、纹理映射(TextureMapper)三个主要功能,实验结果显示,该算法模块具有较好的独立性及有效性,可以对不同的腹腔器官进行力反馈和纹理区分,即使没有WEART触觉手套硬件支持,也能完成模拟器内部完整的力信号建模,体现出本改造工作的新颖之处。 + +交互控制以及系统稳定方面,系统依靠硬件解耦改造,达成键盘交互的降级模式,依靠pynput跨平台键盘监听功能,达成虚拟手基本控制,借助改进阻尼最小二乘法(DLS-IK),改良虚拟手运动控制,明显削减了穿模可能性。实验过程中系统长时间运行的CPU、内存占用率都在合理范围内,异常发生率低,证明硬件解耦、算法优化后的系统可靠;但是也发现了键盘离散输入造成虚拟手瞬移式驱动,容易和软体产生非物理穿透,导致FEM求解器发散,出现虚拟手飞出视野、器官爆裂等异常,这与原开源项目VR设计初衷有关,是降级交互的固有局限。 + +综上所述,系统在没有硬件支持的情况下,实现了原开源项目的全部核心功能,完成了算法层触觉建模和可变形仿真全部要求,改造后的系统具有较好的实用性和可扩展性,可以为腹腔手术触觉训练相关研究提供标准化的实验平台,也为之后接入VR/WEART硬件、实现完整的人机闭环交互打下了坚实的基础。 + +\subsection{系统优势与创新点} + +\subsubsection{系统改造适配优势} +对原开源项目过分依赖VR(Oculus Rift S)和WEART触觉手套硬件的情况进行了硬件解耦改造,使系统可以在没有硬件的情况下正常工作。因此使用pynput键盘监听模块代替OpenXR VR手部追踪程序,设计TUI键盘交互界面(guis.py)代替原项目中的VR交互,实现虚拟手位移、按压、滑动等基本交互操作,并且修复了原项目XML配置文件的兼容性问题,添加了中文化GUI说明,提高系统可操作性及易用性。这样改造不但没有削弱原项目的使用性能,反而丰富了系统的使用场景,在一般的台式机上可以完成实验或者应用的需要。 + +\subsubsection{触觉反馈算法创新} +本系统最核心的创新之处在于把原来开源项目里同硬件关联的力反馈逻辑,分离成独立的触觉反馈算法层,从而达成算法和硬件的完全解耦,具体创新如下所示: + +\begin{enumerate} + \item \textbf{力信号滤波优化}:用滑动平均滤波算法(ForceFilter)平滑接触力信号,消除高频噪声和数值抖动,提高触觉反馈的细腻度和稳定性,防止原始信号直接输出造成的触感异常。 + + \item \textbf{自适应力计算机制}:设计AdaptiveForceCalculator模块,抛弃传统的简单线性力映射,根据手指穿透器官的深度、接触速度来动态调节反馈力,更符合真实的生物组织力学特性,提高了触觉反馈的真实感。 + + \item \textbf{纹理映射解耦}:通过TextureMapper模块创建腹腔器官与触觉纹理的独立映射表,将肝脏、肾脏、皮肤分别映射为VenetianGranite、ProfiledRubberSlow、Smooth等纹理来实现对不同组织的精准识别,并且该设计使之后接入任意触觉硬件无需修改核心算法,只需改变硬件接口即可,极大地提高了系统的可扩展性。 +\end{enumerate} + +\subsubsection{架构与性能优势} +系统沿用原开源项目的分层架构,优化后形成“交互层-GUI→主循环→引擎层→触觉反馈算法层”的完整架构,各层之间通过标准化的接口进行通信,模块耦合度低,便于维护和扩展。引擎层使用了Engine接口(interfaces.py)以及MujocoConnector(mujoco\_connector.py)来完成手部mocap驱动、软体接触检测、手指IK求解等任务,保证物理仿真与交互控制的高效协同。四线程并行架构可以提高系统的实时性,在实验中系统的端到端延迟控制在合理范围之内,仿真帧率稳定,可以达到触觉交互的基本需求。此外,系统采用MuJoCo flexcomp元素实现器官建模,通过edge equality constraint(等式约束)+阻尼连接构建mass-spring FEM网络,结合solimp/solref参数定义接触特性,既保证了仿真精度,又兼顾了计算效率,相较于刚体建模(rigid body,仅6个自由度),能够更真实地还原软组织的可变形特性。 + +\subsection{系统局限性分析} + +\subsubsection{硬件受限导致的交互体验局限} +系统目前处在没有VR/WEART硬件的降级交互模式中,主要缺陷就是缺少了完整的“人在回路(human-in-the-loop)”验证。一方面,没有WEART TouchDIVER触觉手套,无法实现真实的力反馈输出,只能在算法上建模力信号,用户不能通过指尖感受到真实的压力和纹理振动,造成触觉反馈的真实性差、沉浸感低;另一方面,键盘离散输入不能完全取代VR头显的连续手部追踪(mocap),虚拟手的运动呈现为瞬移式,精度降低,容易产生非物理穿透,造成FEM求解器发散,出现虚拟手飞出视野、器官爆裂等异常,这也是实验中出现的主要异常现象。 + +\subsubsection{物理建模层面的局限} +系统用MuJoCo flexcomp元素建立腹腔器官模型,本质上就是基于mass-spring FEM网络的离散化建模,虽然可以满足基本的可变形仿真要求,但是相比高精度有限元模型来说,在复杂的形变以及生物组织力学特性上还有不足。以人体肝脏、肾脏的非线性力学性质,软组织的蠕变、应力松弛等状况来说,目前模型的还原程度较低,而且没有考虑拓扑结构的变化,不能完成腹腔手术时器官切割、撕裂、缝合这些高级动作,从而使得系统在虚拟手术训练方面的深度应用受到限制。另外,MuJoCo的Newton迭代求解器虽然比较稳定,但是对于极端大变形、高刚度接触的情况来说,仍然会存在求解效率降低的现象。 + +\subsubsection{触觉反馈与算法层面的局限} +虽然系统已经完成了算法层的触觉反馈建模,但是由于硬件和算法的设计原因,仍然存在着两个不足: +\begin{enumerate} + \item 触觉反馈模态单一,只能实现压力、纹理振动的算法建模,不能模拟温度、剪切力、摩擦系数等更多的感知维度,与真实的生物体触觉体验有差距; + \item 纹理渲染的细腻度不够高,目前采用的预设纹理映射模式虽然可以区分出不同的器官,但是与真实的生物组织表面触感还有一定的差别,非常细腻的微纹理辨识度不高。 +\end{enumerate} +多物体接触检测机制可以区分出手和不同的器官之间的接触,但是手指多部位同时接触同一个器官或者多个器官时,力反馈的分配精度还需要进一步提高。 + +\subsubsection{系统扩展性与适配性局限} +目前系统交互方式只用键盘控制,没有实现双手协同交互、多指精细控制等复杂的操作,不能完全还原腹腔手术时的手部动作。场景规模小,只有肝脏、肾脏、皮肤三种腹腔器官模型,可以交互的物体数量少,在多器官紧密聚集的复杂场景中接触检测的效率和稳定性会受到影响。系统对于硬件的配置有一定的要求,核心算法没有做轻量化的处理,不能很好地适应普通低配置的PC以及中端设备,从而影响了系统的普及和应用。 + +\subsection{改进方向与优化策略} + +\subsubsection{接入硬件设备,实现完整闭环交互} +这是后面优化的主要方向,主要是为了克服目前硬件所造成的限制。将接入Oculus Rift S VR头显(使用pyopenxr接口)来代替键盘交互,实现手部连续追踪(mocap),解决虚拟手瞬移式驱动的问题,降低FEM求解器发散的概率,提高手部控制精度和沉浸感;同时接入WEART TouchDIVER触觉手套(使用WEART SDK),把算法层的力信号建模结果输出到硬件上,得到真实的压力和纹理振动反馈,完成从视觉、物理仿真到触觉反馈的闭环,满足答辩时对于“真实力反馈”的潜在提问需求。 + +\subsubsection{优化物理建模,提升仿真精度} +为了解决物理建模精度低的问题,后面会从两个方面进行改进: +\begin{enumerate} + \item 采用高精度有限元模型或者数据驱动的非线性材料模型来取代目前的mass-spring FEM网络,提高复杂形变、生物组织力学特性(蠕变、应力松弛)的还原程度,更加符合人体腹腔器官真实的触感; + \item 增加模型的功能,加入器官切割、撕裂、缝合等拓扑结构变化模块,完善虚拟手术训练场景的主要需求;同时改善MuJoCo求解器的参数,调节solimp/solref接触刚度和恢复系数,提高极端情况下的求解速度和稳定性。 +\end{enumerate} + +\subsubsection{升级触觉反馈算法,丰富感知体验} +在现有的算法基础上,提高触觉反馈的真实性、细腻度: +\begin{enumerate} + \item 增加温度反馈、剪切力反馈、滑动摩擦反馈等多种触觉通道,形成更加全面的人体触觉感知体验; + \item 改进纹理生成算法,抛弃预设的纹理映射模式,依照真实物理摩擦特性来创建动态纹理,加强纹理的细腻程度和真实性; + \item 改良多物体接触检测以及力反馈分配办法,改善手指多部位接触时的力反馈精确度,防止信号串扰。 +\end{enumerate} + +\subsubsection{扩展系统功能,提升适配性与实用性} +\begin{enumerate} + \item 增加交互方式,支持双手协同操作、多指精细控制、手势识别等腹腔手术复杂动作的模拟,还原出腹腔手术手部动作; + \item 增加更多的腹腔器官模型(脾脏、胃等),创建复杂的腹腔手术场景,改进多器官聚集场景下接触检测的算法; + \item 轻量化核心算法,减少硬件要求,让系统可以在普通PC或者中端设备上运行,提升系统的通用性以及可移植性; + \item 丰富数据记录与分析模块,加入更多的定量评价指标,给虚拟手术训练效果评定赋予更为全面的数据支撑。 +\end{enumerate} + +因此,本系统已经完成了核心改造的目标,实现了在没有硬件环境下进行算法层的触觉建模和可变形仿真的工作,具有很强的创新性和实际意义;根据上面的优化策略可以很好地克服目前存在的不足,提高系统的性能,使该系统更加符合腹腔手术触觉训练的要求,为腹腔手术触觉训练研究与应用提供更好的实验平台。 \ No newline at end of file diff --git a/tactile/content/chapter7.tex b/tactile/content/chapter7.tex new file mode 100644 index 00000000..9bf88b5d --- /dev/null +++ b/tactile/content/chapter7.tex @@ -0,0 +1,52 @@ +% chapter7.tex +\section{总结与展望} + +\subsection{研究工作总结} +本课题以可变形物体实时触摸建模和触觉交互仿真为研究核心,以Sapienza/INSA大学的DeformableSimulation开源项目(原用于腹腔手术触觉训练)为基础进行改造优化,系统研究了柔性体物理仿真、触觉渲染、逆运动学求解、多线程同步、视触融合等关键技术,最后设计并实现了基于MuJoCo 3.x物理引擎的可变形物体实时触摸交互仿真系统,完成了系统架构设计、硬件依赖解耦、软件开发、算法实现、场景优化、实验验证的全过程,形成了一个完整的感知、计算、反馈、评价的闭环交互体系,达到了预期的研究目的。 + +按照分层模块化的架构设计思想,创建起交互层、GUI、主循环、引擎层、触觉反馈算法层这五层结构,符合Python 3.10+全栈开发环境的要求,把mujoco.viewer可视化、pynput键盘交互、numpy数值计算这些核心技能整合起来,解决之前XML兼容性的问题,加入中文界面说明,改善场景资产的可利用程度,达成双手加腹腔器官(肝脏,肾脏等)的演示场景,允许用户用键盘操控虚拟手进行软组织接触、按压等互动操作,显示即时形变反应。 + +核心技术上使用MuJoCo的flexcomp柔性组件对腹腔器官进行网格化建模,把器官离散成质点网格,用edge equality约束和阻尼连接建立mass-spring FEM网络,用solimp/solref参数定义接触特性,实现不同器官独立物理参数(质量、刚度、阻尼、摩擦)的精确设置;改进虚拟手运动控制,用改良阻尼最小二乘法求解逆运动学,结合手部mocap驱动和手指IK计算,保证虚拟手动作流畅自然;抽象并实现独立的触觉反馈算法模块(haptic\_feedback.py),包含力信号滤波、自适应力计算、纹理映射、多物体接触检测四个主要功能,完全不依赖硬件,从算法层面实现了完整的触觉建模。 + +项目改造及适配方面主要完成三项工作:一是解耦原项目对于VR设备和WEART触觉手套的强依赖,设计并实现键盘交互模式,适应无硬件实验环境;二是把原项目里耦合到硬件调用的力反馈逻辑,抽象成独立的触觉反馈算法模块,达成纹理解耦和算法通用化,给以后接入任意触觉硬件赋予支撑;三是改善场景可用性,解决XML文件兼容性问题,改进组合场景设置,保证系统正常运作。实验结果表明,系统可以稳定地完成可变形器官的高精度建模和实时交互,触觉反馈算法可以很好地消除仿真抖动,还原真实的触感特征,完全满足了“模拟器内采集接触力和视觉形变”的设计要求。 + +\subsection{研究主要创新点} +结合项目改造优化工作和技术实现细节,本文主要的创新点有系统适配、算法设计、模块架构三个方面,均为本人独立完成的工作,具体如下所示。 + +\begin{enumerate} + \item \textbf{适配无硬件实验环境,实现交互模式降级优化}:针对原项目需要VR头显和触觉手套的限制,解耦硬件依赖,设计pynput跨平台键盘监听交互模式,完成虚拟手“瞬移式”驱动适配,优化FEM求解器参数,尽量减少降级交互造成的非物理穿透和求解器发散问题,提高系统在普通实验环境下的可用性和稳定性。 + + \item \textbf{抽象触觉反馈算法模块,实现算法和硬件解耦}:把原项目里耦合在WEART硬件调用上的力反馈逻辑,提取出来并重新构造为一个独立的触觉反馈算法层,该层包含ForceFilter滑动平均滤波、AdaptiveForceCalculator自适应力计算、TextureMapper纹理映射这三个主要模块,可以对不同的组织触觉特征进行独立的映射以及动态调节,摆脱硬件绑定的束缚,以后可以自由地接入各种触觉反馈设备,提高算法的通用性和可扩展性。 + + \item \textbf{改善场景及系统可用性,提高项目落地性}:修复原项目XML文件兼容性问题,完善双手和腹腔器官组合场景的配置,增加中文化GUI操作说明,改进主循环(simulator.py)的输入、物理步进、渲染、反馈流程,提高系统的运行稳定性,补充完整的场景资产管理,明确hands.xml、phantom.xml等核心文件的功能和用途,为以后系统的维护和功能扩展提供方便。 + + \item \textbf{完善系统评价体系,加强技术可验证性}:根据系统实际运行情况补充键盘交互模式、触觉算法有效性验证内容,从物理仿真精度、交互流畅度、算法稳定性三个方面验证系统在无硬件环境下的可行性,形成改造、实现、验证的完整技术闭环,给同类项目硬件解耦和算法优化提供参考。 +\end{enumerate} + +\subsection{研究不足与限制} +根据系统实际运行情况和答辩预判结果可知,本研究在硬件依赖、交互精度、求解器稳定性这三个方面存在一定的不足和限制,和前面第六章的局限性分析是一致的,如下所示。 + +\begin{enumerate} + \item \textbf{硬件受限,缺少完整的回路人机交互验证}:由于实验条件所限,没有接入WEART TouchDIVER触觉手套和Oculus Rift S VR头显,不能得到真实的力反馈输出以及连续的手部追踪,只能进行算法层面的触觉建模和视觉形变仿真,系统的真正交互体验及临床应用价值还没有得到充分的验证。 + + \item \textbf{交互精度不够,降级交互存在固有的缺陷}:为了适应没有硬件环境的键盘离散输入模式,使虚拟手呈现出“瞬移式”的驱动方式,与原项目VR头显连续mocap追踪的设计初衷存在差异,容易在与软体接触时出现非物理穿透,造成FEM求解器发散,虚拟手飞出视野、器官模型“爆炸”等异常情况,影响交互的稳定性和真实性。 + + \item \textbf{算法和仿真精度还有待提高}:触觉反馈算法中纹理映射仍然使用预先定义好的纹理库,没有根据真实的生物组织摩擦特性动态生成,精细度与真实的材质有差距;MuJoCo的FEM求解器采用简化质点-弹簧模型,在极端大变形的情况下数值精度不高,不能完全反映腹腔器官复杂的力学响应。 + + \item \textbf{系统功能单一}:只能进行单手三指的键盘交互,没有实现双手协同、多指精细控制等复杂的操作,场景规模小,可以交互的物体种类只有腹腔核心器官,在多物体紧密聚集的情况下接触检测效率较低。 +\end{enumerate} + +\subsection{未来研究与应用展望} +根据本研究的不足之处,结合原项目临床应用定位以及目前的技术发展走向,未来将会从硬件接入、算法优化、功能拓展这三个主要方面展开深入探究,使系统由“仿真验证”转变为“实际应用”,具体内容如下所示。 + +\begin{enumerate} + \item \textbf{完善硬件接入,形成完整的交互闭环}:之后会接入WEART TouchDIVER触觉手套和Oculus Rift S VR头显,使用WEART SDK和pyopenxr接口进行真实力反馈输出和连续手部mocap追踪,取代目前的键盘交互方式,解决非物理穿透和求解器发散的问题,完成人在回路验证,提高系统的现实感和临床适应性,回到原项目腹腔手术触觉训练的核心定位。 + + \item \textbf{改进算法和仿真精度,提高真实感}:改进触觉反馈算法,根据真实生物组织的摩擦特性建立数据驱动的动态纹理生成模型,代替目前的预设纹理映射方式,提高纹理的细腻程度和材质的区分度;改进FEM求解器参数,使用隐式欧拉求解和Newton迭代方法,提高极端大变形场景下数值稳定性;改进腹腔器官粘弹性力学响应仿真,提高建模精度。 + + \item \textbf{扩展系统的功能,提高系统的实用性}:扩展双手协同交互、多指精细控制和复杂手势识别的功能,适应更加复杂的手术操作环境;增加可交互的物体种类,完善场景配置,改进多物体接触检测算法,提高复杂场景下的系统稳定性;优化线程调度策略,进一步减小系统端到端延迟,提高视触同步精度。 + + \item \textbf{推动场景落地,扩大应用范围}:把腹腔手术触觉训练当作主要的应用场景,加强系统与临床的契合度,给外科医生创建起标准的虚拟训练平台;而且拓宽应用范畴,让系统可以应用于康复训练、虚拟教学以及工业柔性装配等场景之中,并且凭借系统的算法通用性以及可扩展性来给出定制化的触觉仿真的方案。 +\end{enumerate} + +伴随着虚拟现实、人机交互以及智能硬件技术的发展,触觉反馈也成了下一代沉浸式交互的主要支持。本研究所完成的系统改造以及算法优化,给可变形物体触觉仿真提供了一个可以借鉴的硬件解耦方案和算法框架,之后再结合硬件接入以及功能优化,可以将触觉交互技术由理论仿真变为实际应用,给更加自然、真实、智能的人机交互提供技术支持。 \ No newline at end of file diff --git a/tactile/content/cover.tex b/tactile/content/cover.tex new file mode 100644 index 00000000..633d430a --- /dev/null +++ b/tactile/content/cover.tex @@ -0,0 +1,21 @@ +\begin{titlepage} + \centering + \vspace*{2cm} + {\Huge \textbf{湖南工商大学} \par} + \vspace{1cm} + {\LARGE 本科毕业设计 \par} + \vspace{2cm} + {\Large \textbf{题 目}} \par + {\Large 基于Mujoco的可变形物体实时触摸建模和仿真系统 \par} + \vspace{2cm} + \begin{tabular}{rl} + 学生姓名: & 陈炬 \\ + 学  号: & 2209040032 \\ + 学  院: & 智能机器人学院 \\ + 专业班级: & 机器人2201班 \\ + 指导教师: & 王海东 \\ + 职  称: & 讲师 \\ + \end{tabular} + \vfill + {\large 2026年 5 月} +\end{titlepage} \ No newline at end of file diff --git a/tactile/content/declarationzh.tex b/tactile/content/declarationzh.tex new file mode 100644 index 00000000..119c0d34 --- /dev/null +++ b/tactile/content/declarationzh.tex @@ -0,0 +1,15 @@ +\section*{湖南工商大学本科毕业设计诚信声明} +本人郑重声明:所呈交的本科毕业设计是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议,除文中已经注明引用的内容外,本设计不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。 + +\vspace{1cm} +作者签名:\hspace{2cm} \quad 日期:2026年 5月 26日 + +\vspace{2cm} +\section*{湖南工商大学本科毕业设计版权使用授权书} +本毕业设计《基于Mujoco的可变形物体实时触摸建模和仿真系统》属于本人在校期间学业成果的一部分,是在校内教师指导之下完成的,所以本人特此授权学校可以将此毕业设计的全部或者部分内容收录进相关书籍或者数据库当中,也可以经由复制,印刷,网页制作等方式把设计文本以及经过编辑,批注等加工处理过的设计文本给予读者去阅读和参考,还可以向有关学术机构以及国家教育主管部门提交复印件和电子文档,不管对这个毕业设计实施何种操作,都务必尊重本人的著作权,并且标明本人的名字。 + +\vspace{1cm} +设计作者(签字):\hspace{2cm} \quad 时间 2026年 5月 26日 + +\vspace{0.5cm} +指导教师已阅(签字):\hspace{2cm} \quad 时间 2026年 5月 26日 \ No newline at end of file diff --git a/tactile/content/main.tex b/tactile/content/main.tex new file mode 100644 index 00000000..bb2c32c5 --- /dev/null +++ b/tactile/content/main.tex @@ -0,0 +1,117 @@ +% main.tex +\documentclass[12pt,a4paper]{ctexart} + +% 页面设置 +\usepackage{geometry} +\geometry{left=2.5cm,right=2.5cm,top=2.5cm,bottom=2.5cm} + +% 图形和表格 +\usepackage{graphicx} +\usepackage{float} +\usepackage{caption} +\usepackage{subcaption} +\usepackage{multirow} +\usepackage{array} + +% 数学公式 +\usepackage{amsmath,amssymb} +\usepackage{bm} + +% 代码高亮 +\usepackage{listings} +\usepackage{xcolor} +\lstset{ + basicstyle=\small\ttfamily, + keywordstyle=\color{blue}, + commentstyle=\color{gray}, + stringstyle=\color{red}, + numbers=left, + numberstyle=\tiny\color{gray}, + stepnumber=1, + breaklines=true, + frame=single, + tabsize=4 +} + +% 引用和超链接 +\usepackage{cite} +\usepackage{hyperref} +\hypersetup{ + colorlinks=true, + linkcolor=black, + citecolor=black, + urlcolor=blue +} + +% 页眉页脚 +\usepackage{fancyhdr} +\pagestyle{fancy} +\fancyhf{} +\fancyhead[C]{湖南工商大学本科毕业设计} +\fancyfoot[C]{\thepage} + +% 行距 +\usepackage{setspace} +\renewcommand{\baselinestretch}{1.5} + +% 标题格式(可选) +\usepackage{titlesec} +\titleformat{\section}{\Large\bfseries}{\thesection}{1em}{} +\titleformat{\subsection}{\large\bfseries}{\thesubsection}{1em}{} + +% 图形路径 +\graphicspath{{figures/}} + +% 开始文档 +\begin{document} + +% 封面 +\input{cover} +\newpage + +% 诚信声明和版权授权书 +\input{declarationzh} +\newpage + +% 中文摘要 +\input{abstractzh} +\newpage + +% 英文摘要 +\input{abstracten} +\newpage + +% 目录 +\tableofcontents +\newpage + +% 正文 +\input{chapter1} +\newpage +\input{chapter2} +\newpage +\input{chapter3} +\newpage +\input{chapter4} +\newpage +\input{chapter5} +\newpage +\input{chapter6} +\newpage +\input{chapter7} +\newpage + +% 参考文献 +\bibliographystyle{plain} +\bibliography{reference} +\newpage + +% 致谢 +\input{acknowledgements} +\newpage + +% 附录(如果需要) +\appendix +\input{appendix} + +\end{document} \ No newline at end of file diff --git a/tactile/content/reference.bib b/tactile/content/reference.bib new file mode 100644 index 00000000..5af65e65 --- /dev/null +++ b/tactile/content/reference.bib @@ -0,0 +1,320 @@ +% 参考文献 + +@article{hu2025, + author = {胡子阳 and 廖胜辉 and 邬任重 and 等}, + title = {融合CBAM注意力机制的人体软组织多物理场快速同步建模}, + journal = {山东大学学报(理学版)}, + year = {2025}, + pages = {1-11}, + note = {网络首发} +} + +@phdthesis{liu2025, + author = {刘代清}, + title = {手法淋巴引流的皮肤软组织力学建模与淋巴动力学有限元分析}, + school = {电子科技大学}, + year = {2025}, + doi = {10.27005/d.cnki.gdzku.2025.002378} +} + +@phdthesis{zhang2024a, + author = {张天明}, + title = {人体运动生物力学建模及仿真研究}, + school = {吉林大学}, + year = {2024}, + doi = {10.27162/d.cnki.gjlin.2024.000781} +} + +@inproceedings{lv2023, + author = {吕晓庆 and 李旭鸿 and 童声康}, + title = {人体生物力学仿真与可视化研究方法进展}, + booktitle = {第十三届全国体育科学大会论文摘要集——墙报交流(运动生物力学分会)}, + publisher = {中国体育科学学会}, + year = {2023}, + pages = {372-374}, + doi = {10.26914/c.cnkihy.2023.082881}, + organization = {杭州师范大学} +} + +@inproceedings{chen2023, + author = {陈卓}, + title = {基于OpenSim人体肌骨仿真建模的生物力学研究进展}, + booktitle = {2023年首届国际体育科学大会论文集}, + publisher = {国际班迪联合会(FIB) et al.}, + year = {2023}, + pages = {753-757}, + doi = {10.26914/c.cnkihy.2023.025181}, + organization = {西北师范大学体育学院} +} + +@mastersthesis{pan2024, + author = {潘言心}, + title = {分布式三维力触觉传感器的设计与实现}, + school = {东南大学}, + year = {2024}, + doi = {10.27014/d.cnki.gdnau.2024.004197} +} + +@article{chen2025, + author = {陈大鹏 and 丁益 and 娄隽铖 and 等}, + title = {数据驱动的纹理摩擦建模与触觉渲染方法研究}, + journal = {仪器仪表学报}, + year = {2025}, + volume = {46}, + number = {05}, + pages = {339-351}, + doi = {10.19650/j.cnki.cjsi.J2513658} +} + +@mastersthesis{chen2024, + author = {陈庚}, + title = {虚拟纹理多维属性的力触觉建模与再现方法研究}, + school = {南京信息工程大学}, + year = {2024}, + doi = {10.27248/d.cnki.gnjqc.2024.001357} +} + +@mastersthesis{wang2025, + author = {王宏润}, + title = {触觉增强的XR自然手势交互系统研究}, + school = {北京邮电大学}, + year = {2025}, + doi = {10.26969/d.cnki.gbydu.2025.003124} +} + +@mastersthesis{liu2025a, + author = {刘浩城}, + title = {面向软组织安全交互的针灸机器人柔性末端控制方法研究}, + school = {广东工业大学}, + year = {2025}, + doi = {10.27029/d.cnki.ggdgu.2025.002745} +} + +@mastersthesis{mei2025, + author = {梅欣}, + title = {基于物体力触觉属性识别的自适应抓取研究}, + school = {扬州大学}, + year = {2025}, + doi = {10.27441/d.cnki.gyzdu.2025.000965} +} + +@mastersthesis{ma2024, + author = {马雨前}, + title = {虚拟手术中基于有限元形变仿真的RPIM无网格建模与碰撞检测研究}, + school = {南昌大学}, + year = {2024}, + doi = {10.27232/d.cnki.gnchu.2024.001303} +} + +@mastersthesis{feng2024, + author = {冯上涛}, + title = {虚拟手术缝合仿真中软组织形变与碰撞检测技术研究}, + school = {南昌大学}, + year = {2024}, + doi = {10.27232/d.cnki.gnchu.2024.001092} +} + +@article{lv2025, + author = {吕双祺 and 王伟 and 贾惟 and 等}, + title = {气凝胶复合材料变形行为细观力学建模与仿真}, + journal = {科学技术与工程}, + year = {2025}, + volume = {25}, + number = {26}, + pages = {11407-11417} +} + +@mastersthesis{li2025, + author = {李浩达}, + title = {多体系统非理想运动副接触力学仿真分析}, + school = {哈尔滨工业大学}, + year = {2025}, + doi = {10.27061/d.cnki.ghgdu.2025.002875} +} + +@article{zhao2025, + author = {赵飞}, + title = {重载履带式爬壁机器人力学建模与仿真}, + journal = {机械设计}, + year = {2025}, + volume = {42}, + number = {02}, + pages = {148-154}, + doi = {10.13841/j.cnki.jxsj.2025.02.026} +} + +@article{tzimos2025, + author = {Tzimos, N and Parafestas, E and Voutsakelis, G and et al.}, + title = {Multimodal Interaction with Haptic Interfaces on 3D Objects in Virtual Reality}, + journal = {Electronics}, + year = {2025}, + volume = {14}, + number = {20}, + pages = {4035-4035}, + doi = {10.3390/ELECTRONICS14204035} +} + +@article{taghizad2026, + author = {Taghizad, H and Lemaire, M and Massicotte, D}, + title = {Multi-rate real-time simulation: Techniques, models, frameworks, and challenges}, + journal = {Array}, + year = {2026}, + pages = {100661-100661}, + doi = {10.1016/J.ARRAY.2025.100661} +} + +@article{laukaitis2025, + author = {Laukaitis, A and Šareiko, A and Mažeika, D}, + title = {A Dual Digital Twin Framework for Reinforcement Learning: Bridging Webots and MuJoCo with Generative AI and Alignment Strategies}, + journal = {Electronics}, + year = {2025}, + volume = {14}, + number = {24}, + pages = {4806-4806}, + doi = {10.3390/ELECTRONICS14244806} +} + +@article{islam2026, + author = {Islam, U N M and Sultan, N and Saeed, A and et al.}, + title = {Enhancing postural stability models: Integrating muscle dynamics and CNS simulation using bond graph modeling}, + journal = {Measurement and Control}, + year = {2026}, + volume = {59}, + number = {5}, + pages = {682-708}, + doi = {10.1177/00202940251346099} +} + +@article{han2026, + author = {Han, Z Z and Liu, X S and Guo, X Y}, + title = {The orbital dynamics modeling and simulation of asteroid probe based on variational integrators}, + journal = {Advances in Space Research}, + year = {2026}, + volume = {77}, + number = {5}, + pages = {5986-5995}, + doi = {10.1016/J.ASR.2025.12.074} +} + +@article{mao2026, + author = {Mao, Z and Tong, S and Jiang, C and et al.}, + title = {How university teachers' digital literacy influences their innovative ability: a system dynamics theoretical modeling and simulation study}, + journal = {Frontiers in Psychology}, + year = {2026}, + volume = {16}, + pages = {1665337-1665337}, + doi = {10.3389/FPSYG.2025.1665337} +} + +@article{zhang2026, + author = {Zhang, B and Xie, T Z C}, + title = {Exploring the complexity of pedestrian dynamics in skiing: A modelling and simulation framework}, + journal = {Simulation Modelling Practice and Theory}, + year = {2026}, + volume = {146}, + pages = {103225-103225}, + doi = {10.1016/J.SIMPAT.2025.103225} +} + +@article{kalibala2026, + author = {Kalibala, A and Nada, A A and Ishii, H and et al.}, + title = {Dynamic Modeling of a Soft Eversion-Based Growing Robot: Physical Analysis, Simulation, and Experimental Validation}, + journal = {Soft Robotics}, + year = {2026}, + pages = {21695172261442066}, + doi = {10.1177/21695172261442066} +} + +@article{ye2026, + author = {Ye, M and Wang, J}, + title = {Dynamic Modeling and Simulation Study of Space Maglev Vibration Isolation Control System}, + journal = {Electronics}, + year = {2026}, + volume = {15}, + number = {7}, + pages = {1485-1485}, + doi = {10.3390/ELECTRONICS15071485} +} + +@article{zueco2025, + author = {Zueco, C I and Nicolás, L G}, + title = {Multi-scale elastic contour mapping for deformable object shape control}, + journal = {Robotics and Autonomous Systems}, + year = {2025}, + volume = {194}, + pages = {105134-105134}, + doi = {10.1016/J.ROBOT.2025.105134} +} + +@inproceedings{dai2025, + author = {戴瑛 and 吴艾辉 and 贺鹏飞}, + title = {《非线性连续介质力学》课程的知识图谱构建}, + booktitle = {第二十届北方七省市区力学学会学术会议论文集}, + publisher = {北京力学会 et al.}, + year = {2025}, + pages = {185-188}, + doi = {10.26914/c.cnkihy.2025.030601}, + organization = {同济大学航空航天与力学学院} +} + +@article{zhai2024, + author = {翟敬梅 and 章昊}, + title = {基于质点-弹簧-阻尼模型的人机接触运动皮肤三维形变仿真}, + journal = {清华大学学报(自然科学版)}, + year = {2024}, + volume = {64}, + number = {10}, + pages = {1706-1716}, + doi = {10.16511/j.cnki.qhdxxb.2024.26.046} +} + +@inproceedings{ren2025, + author = {任兆亭 and 姜学想 and 李希志 and 等}, + title = {基于滑动平均滤波的高频方波信号注入无传感器控制策略}, + booktitle = {2025年中国家用电器技术大会论文集(2)}, + publisher = {中国家用电器协会}, + year = {2025}, + pages = {45-51}, + doi = {10.26914/c.cnkihy.2025.072595}, + organization = {青岛海信日立空调系统有限公司} +} + +@article{andras2023, + author = {András, B B and Arik, L and Yannis, S and et al.}, + title = {Benchmark of the Physics Engine MuJoCo and Learning-based Parameter Optimization for Contact-rich Assembly Tasks}, + journal = {Procedia CIRP}, + year = {2023}, + volume = {119}, + pages = {1059-1064}, + doi = {10.1016/J.PROCIR.2023.03.149} +} + +@article{yang2023, + author = {杨淦华 and 曾庆军 and 韩春伟 and 黄鑫 and 戴晓强}, + title = {人机交互遥操作机器人软体手位置跟踪设计与实现}, + journal = {工程设计学报}, + year = {2023}, + volume = {30}, + number = {2}, + pages = {164-171} +} + +@article{fang2011, + author = {方艳红 and 吴斌 and 杨正宜}, + title = {基于球面调和函数的柔性体力触觉建模研究}, + journal = {计算机工程与设计}, + year = {2011}, + volume = {32}, + number = {9}, + pages = {3091-3094} +} + +@article{zhang2024, + author = {张宇航 and 陈雯柏 and 张佳琪 and 等}, + title = {一种面向六自由度机械臂柔顺装配的深度强化学习策略}, + journal = {重庆理工大学学报(自然科学)}, + year = {2024}, + volume = {38}, + number = {12}, + pages = {148-154} +} \ No newline at end of file diff --git "a/tactile/content/\345\274\200\351\242\230\346\212\245\345\221\212.tex" "b/tactile/content/\345\274\200\351\242\230\346\212\245\345\221\212.tex" new file mode 100644 index 00000000..c07d5664 --- /dev/null +++ "b/tactile/content/\345\274\200\351\242\230\346\212\245\345\221\212.tex" @@ -0,0 +1,125 @@ +\subsection{研究背景及意义} + +\subsubsection{选题背景} + +随着虚拟现实、医学仿真、机器人操作等领域的快速发展,可变形物体的触觉交互技术日益成为研究热点。该技术旨在通过物理仿真与触觉反馈的结合,使用户能够在虚拟环境中获得接近真实的触觉体验。本文围绕可变形物体建模、触觉渲染方法、VR/XR交互系统以及医学仿真应用等方面,对国内外相关研究进行梳理,并分析其发展趋势。 + +\subsubsection{选题意义} + +机器人仿真与虚拟现实领域经过多年积累,刚体物体的交互技术已相对成熟,软组织、柔性材料等可变形物体的仿真研究却仍处于起步阶段。这类物体在受力时表现出的非线性特征与时变属性给建模工作带来了相当大的困难,单纯依靠视觉信息难以支撑精细化的操控任务,操作者往往因缺乏力觉感知而无法准确判断接触状态。本课题选用MuJoCo作为物理仿真引擎,配合Weart触觉手套,尝试构建一套视觉呈现、物理运算与力觉反馈相互协同的交互系统。这一平台有望打破当前仿真研究偏重图形渲染、忽视触觉通道的局面,为研究者探索复杂形变件下的力学感知机制提供可重复验证的实验条件。 + + 在保证系统实时响应的前提下精确计算软体接触力并将其转化为触觉信号,这一问题在现有交互系统中尚未得到有效解决。本研究计划建立物理引擎输出参数与触觉驱动指令之间的映射关系,力求实现高刷新率、低传输延时的力觉回路。视觉信号与触觉信号的时空同步问题同样值得关注,为系统验证触觉反馈的实际效用,本课题将生成若干组物理特性各异的软体模型,涵盖不同弹性系数、阻尼参数与几何构型,借此考察触觉通道对操作稳定性与任务完成质量的影响程度。 + + 当前同类研究多侧重于演示交互效果的视觉逼真程度,缺乏针对交互过程本身的定量评估手段,本课题拟建立一套涵盖任务耗时、操作成功比例、接触力平稳程度等维度的评价指标体系。实验设计上将安排受试者分别在开启触觉与关闭触觉两种条件下执行相同任务,采集对应的操作数据,通过统计比较把操作者的主观触感体验转化为具有统计意义的数值结论,为触觉技术在远程医疗、精密组装及虚拟训练等应用场景的推广提供实证支撑。 + +\subsection{国内研究现状} + +国内学者在可变形物体触觉交互领域开展了多角度的研究工作,主要集中在以下几个方向。 + +在可变形物体形变仿真方面,马雨前针对虚拟手术中的软组织形变问题,提出了基于有限元仿真的RPIM无网格建模方法,并研究了相应的碰撞检测技术。冯上涛则专注于虚拟手术缝合仿真中的软组织形变与碰撞检测,为手术操作提供了技术支持。陈杰基于Unity3D平台实现了虚拟肝脏手术的形变与切割仿真,展示了游戏引擎在医学仿真中的应用潜力。这些研究为可变形物体的形变建模提供了不同的技术路径,为后续触觉交互系统的开发奠定了基础。 + +在触觉渲染与反馈方面,陈大鹏等[4]提出了一种数据驱动的纹理摩擦建模方法,通过采集真实物体的纹理数据来提升触觉渲染的真实性。陈庚[6]进一步研究了虚拟纹理多维属性的力触觉建模与再现方法,将触觉反馈从单一的力值扩展到粗糙度、摩擦系数等多维属性。这些工作表明,数据驱动方法在提升触觉真实性方面具有显著优势。 + +在软组织力学建模方面,刘代清[5]从手法淋巴引流的角度出发,建立了皮肤软组织的力学模型,并进行了淋巴动力学的有限元分析。胡子阳等[1]则将CBAM注意力机制引入到人体软组织的多物理场建模中,实现了快速同步建模。这些研究为可变形物体的物理参数设置提供了理论依据。 + +在XR交互系统方面,王宏润[2]研究了触觉增强的XR自然手势交互系统,探讨了如何在XR环境中实现自然的手势识别与触觉反馈。刘浩城[3]针对软组织的安全交互问题,提出了针灸机器人的柔性末端控制方法,强调了安全机制在软体操作中的重要性。 + +\subsubsection{国外研究现状} + +国外学者在可变形物体触觉交互领域的研究起步较早,在理论方法与系统实现方面均有较多积累。 + +在可变形物体操作方面,Blanco-Mulero D.[10]通过学习动力学模型与自适应策略,实现了可变形物体的高效机器人操作。该研究表明,学习算法能够有效处理可变形物体的非线性特性,为触觉交互中的力控制提供了参考。Kundu S.[11]则专注于布料类可变形物体的抓取质量评估,提出了多种评估指标,为量化可变形物体交互效果提供了方法。 + +在触觉交互系统方面,de Santis E等人[12]的工作与本研究密切相关。该研究在I-RIM 3D 2024会议上发表了题为"Haptic interaction with virtual deformable objects"的论文,提出了一套完整的触觉交互系统架构。该系统集成了MuJoCo物理引擎、WEART触觉手套和VR头显,实现了与虚拟可变形物体的实时触觉交互。该研究不仅展示了触觉交互的可行性,还提供了详细的实验设计和评估方法,为后续研究提供了重要参考。 + +\subsubsection{发展趋势} + +综合国内外研究现状,可变形物体触觉交互技术呈现出以下发展趋势。 + +首先,技术融合趋势明显。传统的有限元方法、弹簧-质点模型等物理仿真技术,正在与深度学习、数据驱动方法相结合。例如,胡子阳等[1]将注意力机制引入软组织建模,陈大鹏等[4]利用数据驱动方法进行纹理摩擦建模。这种技术融合能够充分发挥各方法的优势,提升触觉交互的真实性和准确性。 + +其次,评估体系日趋完善。早期研究多依赖主观评价或单一指标,而近期研究越来越重视量化评估。Kundu S.提出了抓取质量评估指标,de Santis E等人[12]在实验中使用了多种量化指标。建立完善的评估体系,有助于客观比较不同方法的优劣,推动技术进步。 + +最后,应用场景不断拓展。从最初的虚拟手术仿真,扩展到机器人操作、XR交互、康复训练等多个领域。王宏润[2]的研究展示了触觉交互在XR系统中的应用,刘浩城[3]的工作则体现了触觉技术在康复领域的潜力。 + +\subsubsection{对本人研究的启发} + +基于上述文献分析,本研究将围绕DeformableSimulation项目展开可变形物体触觉交互的实验与评估工作。 +在可变形物体建模方面,可以参考马雨前[7]、冯上涛[9]等人的研究,利用MuJoCo的flexcomp元素创建不同类型的可变形物体,包括网格型、椭球型和基于Gmsh网格的复杂生物组织模型。 +在触觉反馈方面,可以借鉴陈大鹏等[4]、陈庚[6]的数据驱动方法,优化项目中的纹理映射机制,将触觉反馈从单一的力值扩展到多维属性。 +在系统集成方面,de Santis E等人[12]的工作提供了完整的系统架构参考,包括硬件集成、软件设计、触觉反馈映射等关键环节。 +在评估体系方面,可以参考Kundu S.[11]的量化评估方法,建立包含接触力、纹理匹配度、系统性能等多维指标的评估体系。 +通过以上研究,本研究将实现可变形物体触觉交互的规范化流程,并输出可量化的评估结果,为相关领域的研究提供参考。 + +\subsection{研究方法与思路} + +本研究基于DeformableSimulation项目,采用MuJoCo物理引擎作为仿真平台,结合WEART TouchDIVER触觉手套与Oculus Rift S VR头显,构建可变形物体触觉交互系统。 + +研究方法主要包括可变形物体建模、触觉反馈机制、运动重定向算法以及系统性能评估四个方面。 + +1.在可变形物体建模方面,本研究利用MuJoCo的flexcomp元素创建多种类型的可变形物体,通过设置不同的类型参数(grid、ellipsoid、gmsh)、弹性参数(杨氏模量、泊松比、阻尼系数)和约束条件(固定节点、碰撞检测),实现软体立方体、软体球体、软体布料垫以及生物组织(如左肾、肝脏)等可变形物体的建模,其中grid型适用于规则形状的软体,ellipsoid型适用于球形可变形物体,gmsh型则用于复杂生物组织的建模。 + +2.在触觉反馈机制方面,本研究建立力值计算与纹理映射的双通道反馈机制,力值通道通过MuJoCo的touch传感器检测手指与可变形物体的接触,将物理引擎计算的接触力归一化为0-1范围的触觉强度,并通过WEART手套施加到用户手指,纹理通道根据接触的可变形物体类型,从预定义的纹理映射表中获取对应的纹理类型(如ProfiledRubberSlow、CrushedRock、VenetianGranite),实现触觉纹理的差异化反馈。 + +3.在运动重定向方面,本研究实现真实手部运动到虚拟手部的映射,通过Oculus Rift S控制器获取手部的位置与姿态信息,利用运动重定向算法将其转换为虚拟手部的mocap位置和四元数旋转,同时通过WEART手套获取手指的闭合度与外展角,将其映射到虚拟手指的关节角度,实现手指运动的精确控制。 + +4.在系统性能评估方面,本研究建立多维度的评估体系,通过固定测试集(包含不同类型的可变形物体),记录接触力值、纹理反馈类型、系统帧率、交互延迟等量化指标,同时设计对比实验,比较不同可变形物体(不同弹性参数、不同几何形状)的触觉反馈效果,分析触觉交互的真实性与稳定性。 + +研究思路遵循"建模-交互-评估"的闭环流程,首先基于MuJoCo创建可变形物体模型,设置合理的物理参数,其次集成硬件设备,实现触觉交互系统的搭建,再次开展交互实验,收集触觉反馈数据,最后分析实验结果,评估触觉交互的效果,并提出改进方案,通过这一研究思路,本研究旨在实现可变形物体触觉交互的规范化流程,并为相关领域的研究提供可复现的实验数据与方法参考。 + +\subsubsection{主要工作任务} + +1. 明确选题内涵:深入理解可变形物体触觉交互与实时仿真技术的核心原理,厘清基于 MuJoCo 引擎、WEART 触觉手套及 VR 设备的系统核心概念、技术框架与研究价值,界定研究的关键技术边界。 + +2. 文献综述与研究现状分析:系统收集国内外可变形物体建模、触觉渲染、多模态交互系统及相关物理引擎应用的研究文献,全面梳理研究现状,总结主流方法、技术瓶颈与发展趋势,明确本研究的切入点。 + +3. 确定研究思路与方法:在文献分析基础上,制定 “建模 - 交互 - 评估” 的闭环研究技术路线,明确实验环境搭建方案、系统开发框架、核心算法设计思路及评估指标体系,形成完整可行的研究方案。 + +4. 系统架构设计与可视化表达:使用 Visio 等绘图工具绘制系统整体架构图、模块交互流程图、数据传输链路图等,清晰展现硬件设备接入、软件模块划分及各环节数据流向,为系统开发提供明确指导。 + +5. 前期需求分析与技术设计:开展详细技术需求分析,包括硬件设备兼容需求、可变形物体模型参数设计、触觉反馈映射规则、运动重定向算法参数、系统实时性要求等,完成系统概要设计与详细设计文档。 + +6. 系统实现与功能验证:基于 DeformableSimulation 项目基础,实现可变形物体触觉交互系统。详细完成可变形物体建模(含规则形状与复杂生物组织)、触觉反馈机制(力值计算与纹理映射)、运动重定向等核心模块开发,阐述关键技术创新点,提供完整功能验证结果。 + +7. 实验结果分析与评估:设计标准化实验方案,包括不同类型可变形物体的交互测试、纯视觉与视触融合模式的对比实验等。采集接触力值、系统帧率、交互延迟、任务完成质量等量化数据,使用专业工具进行数据分析,验证系统性能与触觉反馈有效性。 + +8. 论文撰写与成果整理:按照学术论文规范,完成从选题背景、文献综述、系统设计、实验验证到结论展望的完整论文撰写,按时完成论文修改、定稿及答辩准备工作,确保研究成果的系统性与规范性。 + +\subsection{基本要求} + +1. 文献综述要求:文献调研需全面覆盖国内外最新研究成果,至少包含 20 篇以上核心文献(含中外文献),综述需分层分类归纳,既总结现有技术方法,又分析研究空白与不足,为研究提供坚实理论依据。 + +2. 系统开发要求:基于 MuJoCo 物理引擎、WEART TouchDIVER 触觉手套及 Oculus Rift S VR 头显实现系统开发,确保硬件设备兼容、软件模块接口清晰、代码可运行可复现。系统需支持多种可变形物体建模,实现力值与纹理双通道触觉反馈,保证实时响应(帧率稳定、低延迟)。 + +3. 实验验证要求:实验设计科学严谨,包含不同物理属性(弹性、阻尼、几何形状)的可变形物体测试集,设置纯视觉与视触融合两种对比场景。评估指标需涵盖系统性能(帧率、延迟)、交互效果(接触力准确性、纹理辨识度)、任务完成质量(耗时、成功率)等维度,所有实验结果需有详细数据记录与可视化展示。 + +4. 论文质量要求:论文观点明确、结构完整、层次清晰,技术描述准确详实,实验数据充分,分析论证严谨。语言表达通顺规范,符合学术写作要求,图表清晰规范,能完整呈现研究过程与成果。 + +5. 理论与实践结合:充分体现专业知识与工程实践的有机结合,展示运用物理仿真、触觉交互等理论解决实际问题的能力,技术方案需有理论支撑,实验结果需有深入理论分析。 + +6. 学术规范要求:严格遵守学术道德规范,所有引用文献均需正确标注,实验数据真实可靠,杜绝任何形式的学术不端行为。 + +7. 追求卓越标准:以高质量完成毕业设计为目标,在技术实现、实验设计、论文撰写等各环节追求高标准,力争研究成果达到良好以上水平。 + +\subsection{论文结构或写作提纲} + +第一章 绪论 + 阐明可变形物体交互仿真的研究背景与意义,分析当前软体接触建模面临的主要瓶颈,明确本研究的核心目标与技术路线。 + +第二章 相关工作 + 梳理可变形物体仿真、触觉渲染算法及多模态交互系统的研究现状,比较主流物理引擎的性能差异,论证本课题技术方案的合理性。 + +第三章 系统架构与仿真环境搭建 + 介绍硬件设备接入方式与软件接口设计,说明如何构建三组以上物理属性差异显著的可变形物体模型,并制定配套交互任务。 + +第四章 触觉建模与控制策略实现 + 阐述接触力参数提取方法,提出仿真力到触觉信号的映射算法,设计多线程控制框架以保证视觉与力觉的协调运行。 + +第五章 实验设计与结果分析 + 设计标准化操作任务,对比纯视觉与视触融合两种模式下的操作表现,以统计数据验证触觉反馈的有效性。 + +第六章 讨论与局限性分析 + 剖析系统性能表现,分析模型简化、设备带宽、传输延时等因素的影响,对典型失败案例进行归因。 + +第七章 总结与展望 + 归纳研究成果与创新点,探讨后续改进方向。 diff --git a/tactile/images/desktop.ini b/tactile/images/desktop.ini new file mode 100644 index 00000000..9fe739b6 --- /dev/null +++ b/tactile/images/desktop.ini @@ -0,0 +1,8 @@ +[LocalizedFileNames] +˶ͼ.drawio.png=@˶ͼ.drawio,0 +ͼ.drawio.png=@ͼ.drawio,0 +ϵͳӲ˽ṹͼ.drawio.png=@ϵͳӲ˽ṹͼ.drawio,0 +ϵͳӲ˽ṹͼ.drawio (1).png=@ϵͳӲ˽ṹͼ.drawio (1),0 +Ļͼ 2026-05-06 200421.png=@Ļͼ 2026-05-06 200421,0 +deepseek_mermaid_20260524_14c87d.png=@deepseek_mermaid_20260524_14c87d,0 +ϵͳӲ˽ṹͼ.drawio (2).png=@ϵͳӲ˽ṹͼ.drawio (2),0 diff --git a/tactile/undergraduat/images/hutb_and_log.png b/tactile/images/hutb_and_log.png similarity index 100% rename from tactile/undergraduat/images/hutb_and_log.png rename to tactile/images/hutb_and_log.png diff --git a/tactile/undergraduat/images/hutb_building.png b/tactile/images/hutb_building.png similarity index 100% rename from tactile/undergraduat/images/hutb_building.png rename to tactile/images/hutb_building.png diff --git a/tactile/undergraduat/images/hutb_logo.png b/tactile/images/hutb_logo.png similarity index 100% rename from tactile/undergraduat/images/hutb_logo.png rename to tactile/images/hutb_logo.png diff --git a/tactile/undergraduat/images/hutb_logo_maoti.png b/tactile/images/hutb_logo_maoti.png similarity index 100% rename from tactile/undergraduat/images/hutb_logo_maoti.png rename to tactile/images/hutb_logo_maoti.png diff --git "a/tactile/images/\345\233\2762.1 \350\264\250\347\202\271\342\200\223\345\274\271\347\260\247\346\250\241\345\236\213\346\213\223\346\211\221\347\273\223\346\236\204\345\216\237\347\220\206\345\233\276.png" "b/tactile/images/\345\233\2762.1 \350\264\250\347\202\271\342\200\223\345\274\271\347\260\247\346\250\241\345\236\213\346\213\223\346\211\221\347\273\223\346\236\204\345\216\237\347\220\206\345\233\276.png" new file mode 100644 index 00000000..a6527218 Binary files /dev/null and "b/tactile/images/\345\233\2762.1 \350\264\250\347\202\271\342\200\223\345\274\271\347\260\247\346\250\241\345\236\213\346\213\223\346\211\221\347\273\223\346\236\204\345\216\237\347\220\206\345\233\276.png" differ diff --git "a/tactile/images/\345\233\2762.2 DLS \351\200\206\350\277\220\345\212\250\345\255\246\346\261\202\350\247\243\346\265\201\347\250\213\345\233\276.png" "b/tactile/images/\345\233\2762.2 DLS \351\200\206\350\277\220\345\212\250\345\255\246\346\261\202\350\247\243\346\265\201\347\250\213\345\233\276.png" new file mode 100644 index 00000000..6d974ff2 Binary files /dev/null and "b/tactile/images/\345\233\2762.2 DLS \351\200\206\350\277\220\345\212\250\345\255\246\346\261\202\350\247\243\346\265\201\347\250\213\345\233\276.png" differ diff --git "a/tactile/images/\345\233\2762.3 MuJoCo \345\212\250\345\212\233\345\255\246\346\261\202\350\247\243\345\276\252\347\216\257\345\233\276.png" "b/tactile/images/\345\233\2762.3 MuJoCo \345\212\250\345\212\233\345\255\246\346\261\202\350\247\243\345\276\252\347\216\257\345\233\276.png" new file mode 100644 index 00000000..9dbe9aeb Binary files /dev/null and "b/tactile/images/\345\233\2762.3 MuJoCo \345\212\250\345\212\233\345\255\246\346\261\202\350\247\243\345\276\252\347\216\257\345\233\276.png" differ diff --git "a/tactile/images/\345\233\2762.4 MuJoCo \347\272\246\346\235\237\346\261\202\350\247\243\346\265\201\347\250\213\347\244\272\346\204\217\345\233\276.png" "b/tactile/images/\345\233\2762.4 MuJoCo \347\272\246\346\235\237\346\261\202\350\247\243\346\265\201\347\250\213\347\244\272\346\204\217\345\233\276.png" new file mode 100644 index 00000000..b99657a9 Binary files /dev/null and "b/tactile/images/\345\233\2762.4 MuJoCo \347\272\246\346\235\237\346\261\202\350\247\243\346\265\201\347\250\213\347\244\272\346\204\217\345\233\276.png" differ diff --git "a/tactile/images/\345\233\2763.1 \347\220\206\346\203\263\347\263\273\347\273\237\347\241\254\344\273\266\350\277\236\346\216\245\346\213\223\346\211\221\347\273\223\346\236\204\345\233\276.png" "b/tactile/images/\345\233\2763.1 \347\220\206\346\203\263\347\263\273\347\273\237\347\241\254\344\273\266\350\277\236\346\216\245\346\213\223\346\211\221\347\273\223\346\236\204\345\233\276.png" new file mode 100644 index 00000000..cdda7390 Binary files /dev/null and "b/tactile/images/\345\233\2763.1 \347\220\206\346\203\263\347\263\273\347\273\237\347\241\254\344\273\266\350\277\236\346\216\245\346\213\223\346\211\221\347\273\223\346\236\204\345\233\276.png" differ diff --git "a/tactile/images/\345\233\2763.2 \347\263\273\347\273\237\350\275\257\344\273\266\344\272\224\345\261\202\346\236\266\346\236\204\345\233\276.png" "b/tactile/images/\345\233\2763.2 \347\263\273\347\273\237\350\275\257\344\273\266\344\272\224\345\261\202\346\236\266\346\236\204\345\233\276.png" new file mode 100644 index 00000000..64a430ac Binary files /dev/null and "b/tactile/images/\345\233\2763.2 \347\263\273\347\273\237\350\275\257\344\273\266\344\272\224\345\261\202\346\236\266\346\236\204\345\233\276.png" differ diff --git "a/tactile/images/\345\233\2763.3 \347\263\273\347\273\237\346\216\247\345\210\266\351\235\242\346\235\277\346\225\210\346\236\234\345\233\276.png" "b/tactile/images/\345\233\2763.3 \347\263\273\347\273\237\346\216\247\345\210\266\351\235\242\346\235\277\346\225\210\346\236\234\345\233\276.png" new file mode 100644 index 00000000..8fd65128 Binary files /dev/null and "b/tactile/images/\345\233\2763.3 \347\263\273\347\273\237\346\216\247\345\210\266\351\235\242\346\235\277\346\225\210\346\236\234\345\233\276.png" differ diff --git "a/tactile/images/\345\233\2763.4 \347\263\273\347\273\237\344\273\277\347\234\237\345\234\272\346\231\257\346\225\210\346\236\234\345\233\276.png" "b/tactile/images/\345\233\2763.4 \347\263\273\347\273\237\344\273\277\347\234\237\345\234\272\346\231\257\346\225\210\346\236\234\345\233\276.png" new file mode 100644 index 00000000..88311785 Binary files /dev/null and "b/tactile/images/\345\233\2763.4 \347\263\273\347\273\237\344\273\277\347\234\237\345\234\272\346\231\257\346\225\210\346\236\234\345\233\276.png" differ diff --git "a/tactile/images/\345\233\2764.1 \351\200\206\350\277\220\345\212\250\345\255\246\346\261\202\350\247\243\346\265\201\347\250\213\345\233\276.png" "b/tactile/images/\345\233\2764.1 \351\200\206\350\277\220\345\212\250\345\255\246\346\261\202\350\247\243\346\265\201\347\250\213\345\233\276.png" new file mode 100644 index 00000000..500651d6 Binary files /dev/null and "b/tactile/images/\345\233\2764.1 \351\200\206\350\277\220\345\212\250\345\255\246\346\261\202\350\247\243\346\265\201\347\250\213\345\233\276.png" differ diff --git "a/tactile/images/\345\233\2764.2 \345\244\232\347\272\277\347\250\213\345\271\266\350\241\214\346\236\266\346\236\204\346\227\266\345\272\217\345\233\276.png" "b/tactile/images/\345\233\2764.2 \345\244\232\347\272\277\347\250\213\345\271\266\350\241\214\346\236\266\346\236\204\346\227\266\345\272\217\345\233\276.png" new file mode 100644 index 00000000..7e1aebd8 Binary files /dev/null and "b/tactile/images/\345\233\2764.2 \345\244\232\347\272\277\347\250\213\345\271\266\350\241\214\346\236\266\346\236\204\346\227\266\345\272\217\345\233\276.png" differ diff --git "a/tactile/images/\345\233\2765.1 \350\231\232\346\213\237\346\211\213\345\267\246\345\217\263\346\211\213\345\210\207\346\215\242\346\216\247\345\210\266\347\244\272\346\204\217\345\233\276(a).png" "b/tactile/images/\345\233\2765.1 \350\231\232\346\213\237\346\211\213\345\267\246\345\217\263\346\211\213\345\210\207\346\215\242\346\216\247\345\210\266\347\244\272\346\204\217\345\233\276(a).png" new file mode 100644 index 00000000..c8002ce7 Binary files /dev/null and "b/tactile/images/\345\233\2765.1 \350\231\232\346\213\237\346\211\213\345\267\246\345\217\263\346\211\213\345\210\207\346\215\242\346\216\247\345\210\266\347\244\272\346\204\217\345\233\276(a).png" differ diff --git "a/tactile/images/\345\233\2765.1 \350\231\232\346\213\237\346\211\213\345\267\246\345\217\263\346\211\213\345\210\207\346\215\242\346\216\247\345\210\266\347\244\272\346\204\217\345\233\276(b).png" "b/tactile/images/\345\233\2765.1 \350\231\232\346\213\237\346\211\213\345\267\246\345\217\263\346\211\213\345\210\207\346\215\242\346\216\247\345\210\266\347\244\272\346\204\217\345\233\276(b).png" new file mode 100644 index 00000000..56863427 Binary files /dev/null and "b/tactile/images/\345\233\2765.1 \350\231\232\346\213\237\346\211\213\345\267\246\345\217\263\346\211\213\345\210\207\346\215\242\346\216\247\345\210\266\347\244\272\346\204\217\345\233\276(b).png" differ diff --git "a/tactile/images/\345\233\2765.2 \350\231\232\346\213\237\346\211\213\344\270\212\344\270\213\345\211\215\345\220\216\345\267\246\345\217\263\347\247\273\345\212\250\346\216\247\345\210\266\347\244\272\346\204\217\345\233\276.png" "b/tactile/images/\345\233\2765.2 \350\231\232\346\213\237\346\211\213\344\270\212\344\270\213\345\211\215\345\220\216\345\267\246\345\217\263\347\247\273\345\212\250\346\216\247\345\210\266\347\244\272\346\204\217\345\233\276.png" new file mode 100644 index 00000000..56863427 Binary files /dev/null and "b/tactile/images/\345\233\2765.2 \350\231\232\346\213\237\346\211\213\344\270\212\344\270\213\345\211\215\345\220\216\345\267\246\345\217\263\347\247\273\345\212\250\346\216\247\345\210\266\347\244\272\346\204\217\345\233\276.png" differ diff --git "a/tactile/images/\345\233\2765.3 \350\231\232\346\213\237\346\211\213\350\247\246\346\221\270\345\211\215\345\220\216\345\275\242\345\217\230\345\257\271\346\257\224\347\244\272\346\204\217\345\233\276(a).png" "b/tactile/images/\345\233\2765.3 \350\231\232\346\213\237\346\211\213\350\247\246\346\221\270\345\211\215\345\220\216\345\275\242\345\217\230\345\257\271\346\257\224\347\244\272\346\204\217\345\233\276(a).png" new file mode 100644 index 00000000..d3f8bad0 Binary files /dev/null and "b/tactile/images/\345\233\2765.3 \350\231\232\346\213\237\346\211\213\350\247\246\346\221\270\345\211\215\345\220\216\345\275\242\345\217\230\345\257\271\346\257\224\347\244\272\346\204\217\345\233\276(a).png" differ diff --git "a/tactile/images/\345\233\2765.3 \350\231\232\346\213\237\346\211\213\350\247\246\346\221\270\345\211\215\345\220\216\345\275\242\345\217\230\345\257\271\346\257\224\347\244\272\346\204\217\345\233\276(b).png" "b/tactile/images/\345\233\2765.3 \350\231\232\346\213\237\346\211\213\350\247\246\346\221\270\345\211\215\345\220\216\345\275\242\345\217\230\345\257\271\346\257\224\347\244\272\346\204\217\345\233\276(b).png" new file mode 100644 index 00000000..ce343a54 Binary files /dev/null and "b/tactile/images/\345\233\2765.3 \350\231\232\346\213\237\346\211\213\350\247\246\346\221\270\345\211\215\345\220\216\345\275\242\345\217\230\345\257\271\346\257\224\347\244\272\346\204\217\345\233\276(b).png" differ diff --git a/tactile/undergraduat/.gitignore b/tactile/undergraduate/.gitignore similarity index 100% rename from tactile/undergraduat/.gitignore rename to tactile/undergraduate/.gitignore diff --git a/tactile/undergraduat/README.md b/tactile/undergraduate/README.md similarity index 100% rename from tactile/undergraduat/README.md rename to tactile/undergraduate/README.md diff --git a/tactile/undergraduat/cmdel.bat b/tactile/undergraduate/cmdel.bat similarity index 100% rename from tactile/undergraduat/cmdel.bat rename to tactile/undergraduate/cmdel.bat diff --git a/tactile/undergraduat/content/abstracten.tex b/tactile/undergraduate/content/abstracten.tex similarity index 100% rename from tactile/undergraduat/content/abstracten.tex rename to tactile/undergraduate/content/abstracten.tex diff --git a/tactile/undergraduat/content/abstractzh.tex b/tactile/undergraduate/content/abstractzh.tex similarity index 100% rename from tactile/undergraduat/content/abstractzh.tex rename to tactile/undergraduate/content/abstractzh.tex diff --git a/tactile/undergraduat/content/acknowledgements.tex b/tactile/undergraduate/content/acknowledgements.tex similarity index 100% rename from tactile/undergraduat/content/acknowledgements.tex rename to tactile/undergraduate/content/acknowledgements.tex diff --git a/tactile/undergraduat/content/appendix.tex b/tactile/undergraduate/content/appendix.tex similarity index 100% rename from tactile/undergraduat/content/appendix.tex rename to tactile/undergraduate/content/appendix.tex diff --git a/tactile/undergraduat/content/chapter1.tex b/tactile/undergraduate/content/chapter1.tex similarity index 100% rename from tactile/undergraduat/content/chapter1.tex rename to tactile/undergraduate/content/chapter1.tex diff --git a/tactile/undergraduat/content/chapter2.tex b/tactile/undergraduate/content/chapter2.tex similarity index 100% rename from tactile/undergraduat/content/chapter2.tex rename to tactile/undergraduate/content/chapter2.tex diff --git a/tactile/undergraduat/content/chapter3.tex b/tactile/undergraduate/content/chapter3.tex similarity index 100% rename from tactile/undergraduat/content/chapter3.tex rename to tactile/undergraduate/content/chapter3.tex diff --git a/tactile/undergraduat/content/chapter4.tex b/tactile/undergraduate/content/chapter4.tex similarity index 100% rename from tactile/undergraduat/content/chapter4.tex rename to tactile/undergraduate/content/chapter4.tex diff --git a/tactile/undergraduat/content/chapter5.tex b/tactile/undergraduate/content/chapter5.tex similarity index 100% rename from tactile/undergraduat/content/chapter5.tex rename to tactile/undergraduate/content/chapter5.tex diff --git a/tactile/undergraduat/content/chapter6.tex b/tactile/undergraduate/content/chapter6.tex similarity index 100% rename from tactile/undergraduat/content/chapter6.tex rename to tactile/undergraduate/content/chapter6.tex diff --git a/tactile/undergraduat/content/cmdel.bat b/tactile/undergraduate/content/cmdel.bat similarity index 100% rename from tactile/undergraduat/content/cmdel.bat rename to tactile/undergraduate/content/cmdel.bat diff --git a/tactile/undergraduat/content/content.tex b/tactile/undergraduate/content/content.tex similarity index 100% rename from tactile/undergraduat/content/content.tex rename to tactile/undergraduate/content/content.tex diff --git a/tactile/undergraduat/content/cover.tex b/tactile/undergraduate/content/cover.tex similarity index 100% rename from tactile/undergraduat/content/cover.tex rename to tactile/undergraduate/content/cover.tex diff --git a/tactile/undergraduat/content/declarationzh.tex b/tactile/undergraduate/content/declarationzh.tex similarity index 100% rename from tactile/undergraduat/content/declarationzh.tex rename to tactile/undergraduate/content/declarationzh.tex diff --git a/tactile/undergraduat/content/info.tex b/tactile/undergraduate/content/info.tex similarity index 100% rename from tactile/undergraduat/content/info.tex rename to tactile/undergraduate/content/info.tex diff --git a/tactile/undergraduat/content/reference.bib b/tactile/undergraduate/content/reference.bib similarity index 100% rename from tactile/undergraduat/content/reference.bib rename to tactile/undergraduate/content/reference.bib diff --git a/tactile/undergraduat/github/workflows/latex.yml b/tactile/undergraduate/github/workflows/latex.yml similarity index 100% rename from tactile/undergraduat/github/workflows/latex.yml rename to tactile/undergraduate/github/workflows/latex.yml diff --git a/tactile/undergraduat/hutbthesis.cls b/tactile/undergraduate/hutbthesis.cls similarity index 100% rename from tactile/undergraduat/hutbthesis.cls rename to tactile/undergraduate/hutbthesis.cls diff --git a/tactile/undergraduat/hutbthesis_main.tex b/tactile/undergraduate/hutbthesis_main.tex similarity index 100% rename from tactile/undergraduat/hutbthesis_main.tex rename to tactile/undergraduate/hutbthesis_main.tex diff --git a/tactile/undergraduat/images/Carla.pdf b/tactile/undergraduate/images/Carla.pdf similarity index 100% rename from tactile/undergraduat/images/Carla.pdf rename to tactile/undergraduate/images/Carla.pdf diff --git a/tactile/undergraduat/images/Progress_bar.pdf b/tactile/undergraduate/images/Progress_bar.pdf similarity index 100% rename from tactile/undergraduat/images/Progress_bar.pdf rename to tactile/undergraduate/images/Progress_bar.pdf diff --git a/tactile/undergraduat/images/Town1.pdf b/tactile/undergraduate/images/Town1.pdf similarity index 100% rename from tactile/undergraduat/images/Town1.pdf rename to tactile/undergraduate/images/Town1.pdf diff --git a/tactile/undergraduat/images/Unreal_Engine.pdf b/tactile/undergraduate/images/Unreal_Engine.pdf similarity index 100% rename from tactile/undergraduat/images/Unreal_Engine.pdf rename to tactile/undergraduate/images/Unreal_Engine.pdf diff --git a/tactile/undergraduat/images/available_path.pdf b/tactile/undergraduate/images/available_path.pdf similarity index 100% rename from tactile/undergraduat/images/available_path.pdf rename to tactile/undergraduate/images/available_path.pdf diff --git a/tactile/undergraduat/images/collision_detection.pdf b/tactile/undergraduate/images/collision_detection.pdf similarity index 100% rename from tactile/undergraduat/images/collision_detection.pdf rename to tactile/undergraduate/images/collision_detection.pdf diff --git a/tactile/undergraduat/images/crossing_path1.pdf b/tactile/undergraduate/images/crossing_path1.pdf similarity index 100% rename from tactile/undergraduat/images/crossing_path1.pdf rename to tactile/undergraduate/images/crossing_path1.pdf diff --git a/tactile/undergraduat/images/crossing_path2.pdf b/tactile/undergraduate/images/crossing_path2.pdf similarity index 100% rename from tactile/undergraduat/images/crossing_path2.pdf rename to tactile/undergraduate/images/crossing_path2.pdf diff --git a/tactile/undergraduat/images/crossing_walking1.pdf b/tactile/undergraduate/images/crossing_walking1.pdf similarity index 100% rename from tactile/undergraduat/images/crossing_walking1.pdf rename to tactile/undergraduate/images/crossing_walking1.pdf diff --git a/tactile/undergraduat/images/crossing_walking2.pdf b/tactile/undergraduate/images/crossing_walking2.pdf similarity index 100% rename from tactile/undergraduat/images/crossing_walking2.pdf rename to tactile/undergraduate/images/crossing_walking2.pdf diff --git a/tactile/undergraduat/images/crossing_walking3.pdf b/tactile/undergraduate/images/crossing_walking3.pdf similarity index 100% rename from tactile/undergraduat/images/crossing_walking3.pdf rename to tactile/undergraduate/images/crossing_walking3.pdf diff --git a/tactile/undergraduat/images/crossing_walking4.pdf b/tactile/undergraduate/images/crossing_walking4.pdf similarity index 100% rename from tactile/undergraduat/images/crossing_walking4.pdf rename to tactile/undergraduate/images/crossing_walking4.pdf diff --git a/tactile/undergraduat/images/crossing_walking5.pdf b/tactile/undergraduate/images/crossing_walking5.pdf similarity index 100% rename from tactile/undergraduat/images/crossing_walking5.pdf rename to tactile/undergraduate/images/crossing_walking5.pdf diff --git a/tactile/undergraduat/images/crossing_walking6.pdf b/tactile/undergraduate/images/crossing_walking6.pdf similarity index 100% rename from tactile/undergraduat/images/crossing_walking6.pdf rename to tactile/undergraduate/images/crossing_walking6.pdf diff --git a/tactile/undergraduat/images/crossing_walking7.pdf b/tactile/undergraduate/images/crossing_walking7.pdf similarity index 100% rename from tactile/undergraduat/images/crossing_walking7.pdf rename to tactile/undergraduate/images/crossing_walking7.pdf diff --git a/tactile/undergraduat/images/crossing_walking8.pdf b/tactile/undergraduate/images/crossing_walking8.pdf similarity index 100% rename from tactile/undergraduat/images/crossing_walking8.pdf rename to tactile/undergraduate/images/crossing_walking8.pdf diff --git a/tactile/undergraduat/images/gui_interface.pdf b/tactile/undergraduate/images/gui_interface.pdf similarity index 100% rename from tactile/undergraduat/images/gui_interface.pdf rename to tactile/undergraduate/images/gui_interface.pdf diff --git a/tactile/undergraduat/images/gui_layout.pdf b/tactile/undergraduate/images/gui_layout.pdf similarity index 100% rename from tactile/undergraduat/images/gui_layout.pdf rename to tactile/undergraduate/images/gui_layout.pdf diff --git a/tactile/undergraduat/images/gui_log.pdf b/tactile/undergraduate/images/gui_log.pdf similarity index 100% rename from tactile/undergraduat/images/gui_log.pdf rename to tactile/undergraduate/images/gui_log.pdf diff --git a/tactile/undergraduate/images/hutb_and_log.png b/tactile/undergraduate/images/hutb_and_log.png new file mode 100644 index 00000000..6f3c9c63 Binary files /dev/null and b/tactile/undergraduate/images/hutb_and_log.png differ diff --git a/tactile/undergraduate/images/hutb_building.png b/tactile/undergraduate/images/hutb_building.png new file mode 100644 index 00000000..4e9cedde Binary files /dev/null and b/tactile/undergraduate/images/hutb_building.png differ diff --git a/tactile/undergraduat/images/hutb_eim.png b/tactile/undergraduate/images/hutb_eim.png similarity index 100% rename from tactile/undergraduat/images/hutb_eim.png rename to tactile/undergraduate/images/hutb_eim.png diff --git a/tactile/undergraduate/images/hutb_logo.png b/tactile/undergraduate/images/hutb_logo.png new file mode 100644 index 00000000..6a1adca1 Binary files /dev/null and b/tactile/undergraduate/images/hutb_logo.png differ diff --git a/tactile/undergraduate/images/hutb_logo_maoti.png b/tactile/undergraduate/images/hutb_logo_maoti.png new file mode 100644 index 00000000..09216382 Binary files /dev/null and b/tactile/undergraduate/images/hutb_logo_maoti.png differ diff --git a/tactile/undergraduat/images/location_point.pdf b/tactile/undergraduate/images/location_point.pdf similarity index 100% rename from tactile/undergraduat/images/location_point.pdf rename to tactile/undergraduate/images/location_point.pdf diff --git a/tactile/undergraduat/images/location_select.pdf b/tactile/undergraduate/images/location_select.pdf similarity index 100% rename from tactile/undergraduat/images/location_select.pdf rename to tactile/undergraduate/images/location_select.pdf diff --git a/tactile/undergraduat/images/model.pdf b/tactile/undergraduate/images/model.pdf similarity index 100% rename from tactile/undergraduat/images/model.pdf rename to tactile/undergraduate/images/model.pdf diff --git a/tactile/undergraduat/images/nav_perspective1.pdf b/tactile/undergraduate/images/nav_perspective1.pdf similarity index 100% rename from tactile/undergraduat/images/nav_perspective1.pdf rename to tactile/undergraduate/images/nav_perspective1.pdf diff --git a/tactile/undergraduat/images/nav_perspective2.pdf b/tactile/undergraduate/images/nav_perspective2.pdf similarity index 100% rename from tactile/undergraduat/images/nav_perspective2.pdf rename to tactile/undergraduate/images/nav_perspective2.pdf diff --git a/tactile/undergraduat/images/nav_system_architecture.pdf b/tactile/undergraduate/images/nav_system_architecture.pdf similarity index 100% rename from tactile/undergraduat/images/nav_system_architecture.pdf rename to tactile/undergraduate/images/nav_system_architecture.pdf diff --git a/tactile/undergraduat/images/nav_system_architecture.png b/tactile/undergraduate/images/nav_system_architecture.png similarity index 100% rename from tactile/undergraduat/images/nav_system_architecture.png rename to tactile/undergraduate/images/nav_system_architecture.png diff --git a/tactile/undergraduat/images/obstacle_avoidance.pdf b/tactile/undergraduate/images/obstacle_avoidance.pdf similarity index 100% rename from tactile/undergraduat/images/obstacle_avoidance.pdf rename to tactile/undergraduate/images/obstacle_avoidance.pdf diff --git a/tactile/undergraduat/images/path_planning.pdf b/tactile/undergraduate/images/path_planning.pdf similarity index 100% rename from tactile/undergraduat/images/path_planning.pdf rename to tactile/undergraduate/images/path_planning.pdf diff --git a/tactile/undergraduat/images/path_waypoint.pdf b/tactile/undergraduate/images/path_waypoint.pdf similarity index 100% rename from tactile/undergraduat/images/path_waypoint.pdf rename to tactile/undergraduate/images/path_waypoint.pdf diff --git a/tactile/undergraduat/images/path_waypoint1.pdf b/tactile/undergraduate/images/path_waypoint1.pdf similarity index 100% rename from tactile/undergraduat/images/path_waypoint1.pdf rename to tactile/undergraduate/images/path_waypoint1.pdf diff --git a/tactile/undergraduat/images/path_waypoint2.pdf b/tactile/undergraduate/images/path_waypoint2.pdf similarity index 100% rename from tactile/undergraduat/images/path_waypoint2.pdf rename to tactile/undergraduate/images/path_waypoint2.pdf diff --git a/tactile/undergraduat/images/pedestrain_navgation.pdf b/tactile/undergraduate/images/pedestrain_navgation.pdf similarity index 100% rename from tactile/undergraduat/images/pedestrain_navgation.pdf rename to tactile/undergraduate/images/pedestrain_navgation.pdf diff --git a/tactile/undergraduat/images/pedestrian_avoidance.pdf b/tactile/undergraduate/images/pedestrian_avoidance.pdf similarity index 100% rename from tactile/undergraduat/images/pedestrian_avoidance.pdf rename to tactile/undergraduate/images/pedestrian_avoidance.pdf diff --git a/tactile/undergraduat/images/pedestrian_skeleton.pdf b/tactile/undergraduate/images/pedestrian_skeleton.pdf similarity index 100% rename from tactile/undergraduat/images/pedestrian_skeleton.pdf rename to tactile/undergraduate/images/pedestrian_skeleton.pdf diff --git a/tactile/undergraduat/images/sensor_architecture.pdf b/tactile/undergraduate/images/sensor_architecture.pdf similarity index 100% rename from tactile/undergraduat/images/sensor_architecture.pdf rename to tactile/undergraduate/images/sensor_architecture.pdf diff --git a/tactile/undergraduat/images/system_architecture.pdf b/tactile/undergraduate/images/system_architecture.pdf similarity index 100% rename from tactile/undergraduat/images/system_architecture.pdf rename to tactile/undergraduate/images/system_architecture.pdf diff --git a/tactile/undergraduat/images/system_architecture.png b/tactile/undergraduate/images/system_architecture.png similarity index 100% rename from tactile/undergraduat/images/system_architecture.png rename to tactile/undergraduate/images/system_architecture.png diff --git a/tactile/undergraduat/images/tech_route.pdf b/tactile/undergraduate/images/tech_route.pdf similarity index 100% rename from tactile/undergraduat/images/tech_route.pdf rename to tactile/undergraduate/images/tech_route.pdf diff --git a/tactile/undergraduat/images/training1.pdf b/tactile/undergraduate/images/training1.pdf similarity index 100% rename from tactile/undergraduat/images/training1.pdf rename to tactile/undergraduate/images/training1.pdf diff --git a/tactile/undergraduat/images/training2.pdf b/tactile/undergraduate/images/training2.pdf similarity index 100% rename from tactile/undergraduat/images/training2.pdf rename to tactile/undergraduate/images/training2.pdf diff --git a/tactile/undergraduat/images/training3.pdf b/tactile/undergraduate/images/training3.pdf similarity index 100% rename from tactile/undergraduat/images/training3.pdf rename to tactile/undergraduate/images/training3.pdf diff --git a/tactile/undergraduat/images/training4.pdf b/tactile/undergraduate/images/training4.pdf similarity index 100% rename from tactile/undergraduat/images/training4.pdf rename to tactile/undergraduate/images/training4.pdf diff --git a/tactile/undergraduat/images/training5.pdf b/tactile/undergraduate/images/training5.pdf similarity index 100% rename from tactile/undergraduat/images/training5.pdf rename to tactile/undergraduate/images/training5.pdf diff --git a/tactile/undergraduat/images/training6.pdf b/tactile/undergraduate/images/training6.pdf similarity index 100% rename from tactile/undergraduat/images/training6.pdf rename to tactile/undergraduate/images/training6.pdf diff --git a/tactile/undergraduat/images/training7.pdf b/tactile/undergraduate/images/training7.pdf similarity index 100% rename from tactile/undergraduat/images/training7.pdf rename to tactile/undergraduate/images/training7.pdf diff --git a/tactile/undergraduat/images/training8.pdf b/tactile/undergraduate/images/training8.pdf similarity index 100% rename from tactile/undergraduat/images/training8.pdf rename to tactile/undergraduate/images/training8.pdf diff --git a/tactile/undergraduat/images/walking_back_and_forth.pdf b/tactile/undergraduate/images/walking_back_and_forth.pdf similarity index 100% rename from tactile/undergraduat/images/walking_back_and_forth.pdf rename to tactile/undergraduate/images/walking_back_and_forth.pdf diff --git a/tactile/undergraduat/init_proj.m b/tactile/undergraduate/init_proj.m similarity index 100% rename from tactile/undergraduat/init_proj.m rename to tactile/undergraduate/init_proj.m diff --git a/tactile/undergraduat/latexmkrc b/tactile/undergraduate/latexmkrc similarity index 100% rename from tactile/undergraduat/latexmkrc rename to tactile/undergraduate/latexmkrc diff --git a/tactile/undergraduat/reference.bib b/tactile/undergraduate/reference.bib similarity index 100% rename from tactile/undergraduat/reference.bib rename to tactile/undergraduate/reference.bib