diff --git a/tactile/content/chapter1.tex b/tactile/content/chapter1.tex deleted file mode 100644 index c07d5664..00000000 --- a/tactile/content/chapter1.tex +++ /dev/null @@ -1,125 +0,0 @@ -\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/undergraduat/.gitignore b/tactile/undergraduat/.gitignore deleted file mode 100644 index c89dc294..00000000 --- a/tactile/undergraduat/.gitignore +++ /dev/null @@ -1,246 +0,0 @@ -## Core latex/pdflatex auxiliary files: -*.aux -*.lof -*.log -*.lot -*.fls -*.out -*.toc -*.fmt -*.fot -*.cb -*.cb2 -.*.lb -clean.bat -elegant*-cn.pdf -elegant*-en.pdf -*.dates - -## Intermediate documents: -*.dvi -*.xdv -*-converted-to.* -# these rules might exclude image files for figures etc. -# *.ps -# *.eps -# *.pdf - -## Generated if empty string is given at "Please type another file name for output:" -.pdf - -## Bibliography auxiliary files (bibtex/biblatex/biber): -*.bbl -*.bcf -*.blg -*-blx.aux -*-blx.bib -*.run.xml - -## Build tool auxiliary files: -*.fdb_latexmk -*.synctex -*.synctex(busy) -*.synctex.gz -*.synctex.gz(busy) -*.pdfsync - -## Auxiliary and intermediate files from other packages: -# algorithms -*.alg -*.loa - -# achemso -acs-*.bib - -# amsthm -*.thm - -# beamer -*.nav -*.pre -*.snm -*.vrb - -# changes -*.soc - -# cprotect -*.cpt - -# elsarticle (documentclass of Elsevier journals) -*.spl - -# endnotes -*.ent - -# fixme -*.lox - -# feynmf/feynmp -*.mf -*.mp -*.t[1-9] -*.t[1-9][0-9] -*.tfm - -#(r)(e)ledmac/(r)(e)ledpar -*.end -*.?end -*.[1-9] -*.[1-9][0-9] -*.[1-9][0-9][0-9] -*.[1-9]R -*.[1-9][0-9]R -*.[1-9][0-9][0-9]R -*.eledsec[1-9] -*.eledsec[1-9]R -*.eledsec[1-9][0-9] -*.eledsec[1-9][0-9]R -*.eledsec[1-9][0-9][0-9] -*.eledsec[1-9][0-9][0-9]R - -# glossaries -*.acn -*.acr -*.glg -*.glo -*.gls -*.glsdefs - -# gnuplottex -*-gnuplottex-* - -# gregoriotex -*.gaux -*.gtex - -# htlatex -*.4ct -*.4tc -*.idv -*.lg -*.trc -*.xref - -# hyperref -*.brf - -# knitr -*-concordance.tex -# TODO Comment the next line if you want to keep your tikz graphics files -*.tikz -*-tikzDictionary - -# listings -*.lol - -# makeidx -*.idx -*.ilg -*.ind -*.ist - -# minitoc -*.maf -*.mlf -*.mlt -*.mtc[0-9]* -*.slf[0-9]* -*.slt[0-9]* -*.stc[0-9]* - -# minted -_minted* -*.pyg - -# morewrites -*.mw - -# nomencl -*.nlg -*.nlo -*.nls - -# pax -*.pax - -# pdfpcnotes -*.pdfpc - -# sagetex -*.sagetex.sage -*.sagetex.py -*.sagetex.scmd - -# scrwfile -*.wrt - -# sympy -*.sout -*.sympy -sympy-plots-for-*.tex/ - -# pdfcomment -*.upa -*.upb - -# pythontex -*.pytxcode -pythontex-files-*/ - -# thmtools -*.loe - -# TikZ & PGF -*.dpth -*.md5 -*.auxlock - -# todonotes -*.tdo - -# easy-todo -*.lod - -# xmpincl -*.xmpi - -# xindy -*.xdy - -# xypic precompiled matrices -*.xyc - -# endfloat -*.ttt -*.fff - -# Latexian -TSWLatexianTemp* - -## Editors: -# WinEdt -*.bak -*.sav - -# Texpad -.texpadtmp - -# Kile -*.backup - -# KBibTeX -*~[0-9]* - -# auto folder when using emacs and auctex -./auto/* -*.el - -# expex forward references with \gathertags -*-tags.tex - -# standalone packages -*.sta - -# generated if using elsarticle.cls -*.spl diff --git a/tactile/undergraduat/README.md b/tactile/undergraduat/README.md deleted file mode 100644 index 74029dba..00000000 --- a/tactile/undergraduat/README.md +++ /dev/null @@ -1,38 +0,0 @@ -# 本科毕业设计模板 - -湖南工商大学本科毕业设计模板。 - -# 使用 -推荐使用 [texstudio](https://pan.baidu.com/s/1Is2-VR1z-tMYvmdinsVY_g?pwd=hutb) 或 [overleaf](https://cn.overleaf.com/) 进行论文撰写。 - -注:在 latex 2023 中编译成功,latex 2016 编译失败(需要更高的版本,其他版本的 latex 没试过)。 - -# 贡献 -有任何对模板格式进行调整的可以提交 [Issues](https://github.com/OpenHUTB/undergraduate/issues) 或 [Pull Request](https://github.com/OpenHUTB/undergraduate/pulls) 。 - -# 选题 -[选题列表](https://github.com/OpenHUTB/undergraduate/wiki/%E6%AF%95%E8%AE%BE%E9%80%89%E9%A2%98) - - -## 要求 -1. 格式化、注释、文档翻译 -2. 运行 -3. 测试(例子通过) - - -## 初始化 - -1. 新建github工程 - -2. 运行`init_proj('PROJECT_NAME');` - -3. 分配开发者 - - -## 使用 -克隆仓库 -```shell -git clone --recursive https://github.com/OpenHUTB/undergraduate.git -``` - -# 贡献者 diff --git a/tactile/undergraduat/cmdel.bat b/tactile/undergraduat/cmdel.bat deleted file mode 100644 index c9642e0a..00000000 --- a/tactile/undergraduat/cmdel.bat +++ /dev/null @@ -1,2 +0,0 @@ -del /a /f *.xml *.bcf *.out *.log *.sav *.gz *.aux *.bbl *.bak *.dvi *.blg - diff --git a/tactile/undergraduat/content/abstracten.tex b/tactile/undergraduat/content/abstracten.tex deleted file mode 100644 index 8d2feaeb..00000000 --- a/tactile/undergraduat/content/abstracten.tex +++ /dev/null @@ -1,7 +0,0 @@ -%!TEX root = ../csuthesis_main.tex -\keywordsen{Pedestrian navigation, Reinforcement learning, Virtual simulation, Carla platform, Path planning, Obstacle avoidance} -\begin{abstracten} - -With the advancement of smart city infrastructure, pedestrian navigation systems face increasing challenges in handling complex and dynamic urban environments. Traditional rule-based planning approaches struggle to adapt to real-time variations in pedestrian behavior. This study proposes a pedestrian navigation and control system based on the Unreal Engine and Carla platform, integrating reinforcement learning to optimize path planning and obstacle avoidance. By simulating realistic traffic scenarios, the system provides a high-fidelity virtual environment for training and evaluating intelligent agents. Reinforcement learning algorithms such as DQN and PPO are applied to improve navigation decision-making, guided by a multi-dimensional reward function that balances goal achievement, safety, and path efficiency. Experiments conducted in various simulation scenarios demonstrate the system's effectiveness in enhancing navigation accuracy, obstacle avoidance success, and overall planning efficiency. The results validate the feasibility of combining virtual simulation with reinforcement learning, offering a scalable and cost-effective approach to intelligent pedestrian navigation, and laying the groundwork for future research in multi-agent collaboration and intelligent traffic systems. - -\end{abstracten} diff --git a/tactile/undergraduat/content/abstractzh.tex b/tactile/undergraduat/content/abstractzh.tex deleted file mode 100644 index bc0bba71..00000000 --- a/tactile/undergraduat/content/abstractzh.tex +++ /dev/null @@ -1,9 +0,0 @@ -%!TEX root = ../csuthesis_main.tex -% 设置中文摘要 -\keywordscn{行人导航\quad 强化学习\quad 虚拟仿真\quad Carla平台\quad 路径规划\quad 避障} -%\categorycn{TP391} -\begin{abstractzh} - -智慧城市环境下交通环境对行人导航的要求更高,传统的基于规划路径的方式已经无法满足动态、复杂环境下行人的变化。为了提升行人导航的自适应能力和路径规划效率,本文在虚幻引擎与Carla中模拟一个真实的步行环境,构建一个具备强学习能力的行人控制和行人导航系统,动态仿真真实城市的交通环境,为行人强化学习模型提供测试、训练环境。本文将DQN、PPO等强化学习算法引入行人控制和行人避障,设计多维度奖励函数提升智能体对目标、避障、路径的理解能力,从而提升复杂交通环境下行人的决策能力。对行人导航、避障和路径多场景仿真评估,验证了系统在动态、复杂环境下的鲁棒性。验证了虚拟仿真和强化学习的融合可以拓展智慧交通应用领域,对多智能体协同智能交通未来发展提供可行性方案与路径支撑。 - -\end{abstractzh} diff --git a/tactile/undergraduat/content/acknowledgements.tex b/tactile/undergraduat/content/acknowledgements.tex deleted file mode 100644 index c6a858ba..00000000 --- a/tactile/undergraduat/content/acknowledgements.tex +++ /dev/null @@ -1,20 +0,0 @@ -%!TEX root = ../csuthesis_main.tex -\begin{acknowledgements} - -当我敲下论文的最后一个句号,本科生活也即将画上圆满的句点。回顾撰写论文的日子,虽困难重重,但我切实体会到了学术研究的严谨和价值,也对未来的研究生学术生活满怀期待。在此,我真心感谢所有给予我支持和帮助的老师、朋友和家人。 - -感谢虚幻引擎官方认证讲师谌嘉诚老师。我最初接触 UE4,是因为看到他开发的游戏。那些精彩作品在我心中种下了成为游戏开发者的种子,也促使我选定了现在这篇论文。谌老师的作品不仅引领我进入游戏开发领域,还激励我在这条路上不断探索。 - -感谢湖南工商大学前沿交叉学院、人工智能与先进计算学院、工商管理学院的全体老师,本科四年,是他们的辛勤教导为我奠定了扎实的专业基础。感谢我的导师王海东老师,没有您的帮助我无法完成论文。 - -感谢前沿交叉学院的刘利枚老师。不管是备考研究生时给我的鼓励,还是落榜时送来的安慰,都让我感受到温暖与力量,帮我在挫折中重新振作。感谢辅导员刘振坤老师,他为我的考研提供了许多实用指导,让迷茫的我找到了方向。还要感谢论文开题和中期答辩时提出宝贵意见的评审专家,他们的批评和建议让我的研究逻辑更严密,也为我未来的学术研究定下严谨基调。 - -感谢室友李勇、朱栋、全松林、资龙、邓哲,还有谭子钰、张子阳、杨钊等等我的大学好友们,以及我的女朋友李玲俊。四年同窗,我们一起学习、生活,分享成长中的喜怒哀乐。那些一起奋斗的日子和欢声笑语,都是我大学生活中最珍贵的回忆,也会成为我人生中最重要的一笔财富。 - -感谢我的父母和家人。他们一直包容理解我,支持我的每一个选择。在我焦虑迷茫时,给予精神鼓励和安慰,让我能专心备考考研、撰写论文。感谢妈妈在我人生关键节点为我指明方向,感谢爸爸尊重我的想法和选择,让我能按自己的意愿追逐梦想,感谢舅舅在求学路上给我的诸多帮助,让我感受到家人的温暖与力量。 - -最后,我也要感谢自己。大学四年,从初入校园的懵懂,到如今目标明确、步伐坚定,即使前路满是艰辛与挑战。希望未来,我能带着这份坚持和勇气,朝着目标不断奋进,在学术和人生道路上取得更好成绩 。 - -行文终有尽时,感激永不停止,谨以此论文献给所有关心帮助过我的人! - -\end{acknowledgements} diff --git a/tactile/undergraduat/content/appendix.tex b/tactile/undergraduat/content/appendix.tex deleted file mode 100644 index b24041bf..00000000 --- a/tactile/undergraduat/content/appendix.tex +++ /dev/null @@ -1,216 +0,0 @@ -\chapter{代码} - -\section{行人导航系统伪代码} - -\renewcommand{\thealgorithm}{A.\arabic{algorithm}} - -\begin{algorithm}[H] -\caption{Carla行人导航系统主流程} -\begin{algorithmic}[1] -\STATE 启动GUI窗口,初始化控件与信号连接 -\STATE 点击“初始化环境”时: - \STATE \quad 连接Carla服务器,加载Town01地图 - \STATE \quad 解析CSV文件构建k近邻导航图,检测最大连通子图 - \STATE \quad 筛选有效生成点并设置SpinBox编号范围 -\STATE 点击“开始训练”时: - \STATE \quad 获取训练参数(学习率、GAE λ、熵系数等) - \STATE \quad 创建训练线程 \texttt{TrainingThread},初始化PPO模型 - \STATE \quad 每n\_steps同步训练进度,每50 episode保存检查点 -\STATE 点击“运行演示”时: - \STATE \quad 加载预训练模型,基于A*路径执行导航 - \STATE \quad 实时绘制轨迹点与规划路径箭头 -\STATE 进入主事件循环,处理可视化工具操作与线程控制 -\end{algorithmic} -\end{algorithm} - -\begin{algorithm}[H] -\caption{环境类 \texttt{EnhancedPedestrianEnv} 核心结构} -\begin{algorithmic}[1] -\STATE 初始化:连接Carla服务器,构建可行走点导航图 -\STATE 筛选有效生成点(验证Spawn点可生成性) -\STATE 定义动作空间(5维离散动作),观察空间(12维状态向量): - \STATE \quad 归一化位置、目标方向、障碍距离、路径偏离等 -\STATE 每步执行: - \STATE \quad 解析动作(转向角+速度比),计算安全速度 - \STATE \quad 基于目标方向自动调整偏航角 - \STATE \quad 应用行人控制并更新轨迹可视化 - \STATE \quad 计算奖励:目标接近奖励 + 路径跟随奖励 - 碰撞惩罚 - \STATE \quad 激光雷达障碍检测(最小距离更新) -\STATE 路径规划: - \STATE \quad 基于CSV导航点构建图结构,执行A*搜索 - \STATE \quad 合法性检查(起点/终点在最大连通子图中) -\STATE 重置环境时清理旧Actor,重新生成传感器与标记 -\end{algorithmic} -\end{algorithm} - -\begin{algorithm}[H] -\caption{训练线程 \texttt{TrainingThread} 流程} -\begin{algorithmic}[1] -\REQUIRE 环境参数(起止点编号、摄像头跟随标志) -\REQUIRE 训练参数(n\_steps=4096, batch\_size=256, total\_steps=1e5) -\STATE 初始化向量化环境 \texttt{DummyVecEnv} -\STATE 配置PPO策略网络(双128层ReLU网络) -\STATE for $step \leftarrow 0$ to \texttt{total\_steps} by \texttt{n\_steps} do - \STATE 执行策略rollout收集经验数据 - \STATE 计算GAE优势估计,更新策略参数 - \STATE 同步训练进度至GUI(奖励曲线、进度条) - \IF{episode\_count \% 50 == 0} - \STATE 保存检查点(时间戳命名) - \ENDIF -\STATE 保存最终模型,释放GPU显存 -\end{algorithmic} -\end{algorithm} - -\begin{algorithm}[H] -\caption{导航图构建与路径规划} -\begin{algorithmic}[1] -\REQUIRE CSV可行走点文件(x,y,z,index) -\STATE 加载CSV点集,构建无向图G -\STATE for each point $p_i$: - \STATE \quad 查找k个最近邻点,添加带权边(距离为权重) -\STATE 提取最大连通子图,缓存合法节点索引 -\STATE 路径搜索: - \STATE \quad 查找起点/终点最近图节点 - \STATE \quad 执行A*算法(启发函数为欧氏距离) - \STATE \quad 路径合法性验证(节点在连通子图中) -\STATE 返回路径点列表,转换为Dummy Waypoint格式 -\end{algorithmic} -\end{algorithm} - - -% 用户手册章节 -\chapter{用户手册} - -\section{Carla 行人导航系统使用指南} - -\begin{table}[H] -\centering -\renewcommand{\arraystretch}{1.3} -\begin{tabular}{ - >{\centering\arraybackslash}p{3cm} - >{\centering\arraybackslash}p{8cm} - >{\centering\arraybackslash}p{4cm} -} -\toprule -\textbf{版本号} & \textbf{描述} & \textbf{日期} \\ -\midrule -v1.4.0 & 新增导航图连通性分析、路径合法性检测、PyQt6界面升级 & 2025年5月17日 \\ -\bottomrule -\end{tabular} -\caption{系统版本信息} -\label{tab:version-info} -\end{table} - -\subsection{系统简介} -本系统基于Carla 0.9.15与PyQt6框架,集成以下创新特性: -\begin{itemize} -\item 基于CSV可行走点构建k近邻导航图,支持最大连通子图提取 -\item 增强路径合法性检测机制,自动提示不可达路径 -\item 动态轨迹可视化(绿色轨迹点 + 红色路径箭头) -\item 多线程训练架构,支持CUDA加速与模型检查点保存 -\end{itemize} - -\subsection{配置要求} -\subsubsection*{硬件配置} -\begin{itemize} -\item GPU:支持CUDA 11.7+(需8GB显存) -\item 内存:16GB DDR4(训练时建议32GB) -\end{itemize} - -\subsubsection*{软件依赖} -\begin{itemize} -\item \texttt{PyQt6}取代PyQt5,需通过pip安装: -\begin{lstlisting}[language=bash] -pip install pyqt6 carla gymnasium stable-baselines3 -\end{lstlisting} -\item Carla PythonAPI需与服务器版本匹配(0.9.15) -\end{itemize} - -\subsection{GUI模块详解} -\begin{figure}[H] -\centering -\includegraphics[width=1\textwidth]{images/gui_layout.pdf} -\caption{GUI界面功能分区示意图} -\label{fig:gui-layout} -\end{figure} - -\subsubsection*{新增功能控件} -\begin{itemize} -\item 路径合法性检测:点击后扫描CSV文件,输出可达路径对 -\item 清除调试标记:一键清除Carla世界中的所有可视化对象 -\item 摄像头视角跟随:勾选后第三人称视角跟踪行人移动 -\end{itemize} - -\subsection{训练参数优化建议} -\begin{table}[H] -\centering -\renewcommand{\arraystretch}{1.2} -\caption{关键参数经验值} -\begin{tabular}{lll} -\toprule -\textbf{参数} & \textbf{推荐值} & \textbf{作用} \\ -\midrule -k近邻数 & 6 & 平衡图连通性与计算效率 \\ -路径偏离半径 & 2.0m & 控制路径跟随奖励的阈值 \\ -同步模式帧率 & 50FPS & 保证传感器数据时序一致性 \\ -目标容差 & 1.5m & 判定到达目标的距离阈值 \\ -\bottomrule -\end{tabular} -\end{table} - -\subsection{典型工作流程} -\begin{enumerate} -\item \textbf{环境预配置}: - \begin{lstlisting}[language=bash] - # 生成可行走点CSV(需提前运行) - python generate_walkable_points.py --town Town01 - \end{lstlisting} -\item \textbf{训练阶段}: - \begin{itemize} - \item 设置起点/终点编号跨度>50以保证路径复杂度 - \item 首次训练建议启用"摄像头跟随"以实时观察策略表现 - \end{itemize} -\item \textbf{演示阶段}: - \begin{itemize} - \item 加载模型后点击"显示可行走点"验证起终点位置 - \item 路径异常时可点击"清除标记"重新规划 - \end{itemize} -\end{enumerate} - -\begin{table}[H] -\centering -\renewcommand{\arraystretch}{1.3} -\caption{增强版故障排查指南} -\begin{tabular}{ - >{\centering\arraybackslash}p{6cm} - >{\centering\arraybackslash}p{9cm} -} -\toprule -\textbf{现象} & \textbf{解决方案} \\ -\midrule -A*路径搜索失败 & 检查CSV文件完整性,确保起终点在最大连通子图内 \\ -激光雷达无数据 & 验证行人高度是否>2m(z=2.5的安装位置) \\ -训练时奖励震荡 & 降低学习率至1e-5,增加batch\_size至512 \\ -GUI线程卡死 & 避免在训练过程中操作SpinBox控件 \\ -\bottomrule -\end{tabular} -\end{table} - -\subsection{开发者扩展接口} -\begin{itemize} -\item 自定义路径规划算法: -\begin{lstlisting}[language=Python] -def _generate_path(self): - # 重写此方法实现RRT等算法 -\end{lstlisting} -\item 增加观测维度: -\begin{lstlisting}[language=Python] -# 修改observation_space与_get_obs() -self.observation_space = spaces.Box(...) -\end{lstlisting} -\item 添加新传感器: -\begin{lstlisting}[language=Python] -def _attach_sensors(self): - # 参照_lidar配置新增RGB相机等 -\end{lstlisting} -\end{itemize} diff --git a/tactile/undergraduat/content/chapter1.tex b/tactile/undergraduat/content/chapter1.tex deleted file mode 100644 index 23ff5cf0..00000000 --- a/tactile/undergraduat/content/chapter1.tex +++ /dev/null @@ -1,112 +0,0 @@ -\chapter{绪论} - -\section{研究背景与意义} - -智慧城市与智能交通发展背景下行人导航与控制系统在现代交通管理中作用重要。行人作为城市交通系统的重要组成部分其行为具有显著随机性和多样性给传统交通管理和路径规划方法带来诸多挑战,行人导航系统研究旨在通过实时路径优化与智能调控提升行人交通安全与出行效率。但传统导航方法多基于规则模型主要依赖静态预设参数,难以应对复杂动态环境中行人行为的快速变化,比如面对突发障碍物或密集交通流动时传统算法常无法快速调整路径规划或实时优化决策进而影响导航系统可靠性与安全性。 - -近年来人工智能技术快速发展,强化学习作为数据驱动的决策优化方法为行人导航领域提供全新思路,其通过智能体与环境交互学习最优策略能在动态环境中实现实时决策优化,特别适用于非线性非结构化的复杂场景。不过仅依靠强化学习技术难以全面解决行人导航问题,现实环境中数据采集的高成本高风险特性在实际应用中极大限制了强化学习的训练与推广。 - -\begin{figure}[H] - \centering - \begin{subfigure}{0.48\textwidth} - \includegraphics[width=\linewidth]{images/Unreal_Engine.pdf} - \end{subfigure} - \hfill - \begin{subfigure}{0.48\textwidth} - \includegraphics[width=\linewidth]{images/Carla.pdf} - \end{subfigure} - \caption{虚幻引擎和Carla} - \label{fig:CarlaUE} -\end{figure} - -本研究基于 Carla 利用虚幻引擎(Unreal Engine)这一高仿真度虚拟场景构建平台提供了解决实际环境数据采集困难的理想工具,如图 \ref{fig:CarlaUE}所示。该引擎既能生成复杂多样的动态环境也能模拟真实场景中行人行为的随机性和多样性,为强化学习智能体的训练与测试提供安全低成本的实验平台。如通过虚幻引擎模拟十字路口复杂交通场景可逼真再现行人与车辆的动态交互,为强化学习算法的优化与验证创造实验条件,且其支持生成视觉、惯性、语义信息等多种传感器数据进一步丰富了强化学习的训练数据来源。 - -本研究结合虚拟仿真技术和强化学习算法解决行人导航核心问题,包括精准建模动态环境下行人行为,行人行为受交通信号、周围车辆动态变化及其他行人行为等多种因素影响,建立能真实反映不同环境中行人决策逻辑的高精度行人行为模型是首要难题;高效结合虚拟仿真与强化学习,强化学习有效性依赖训练环境质量,虚幻引擎仿真能力为训练高效智能体提供可能,但设计能充分利用虚幻引擎生成的多样化数据的高效强化学习算法亟待解决;平衡路径规划效率与行人安全性,行人导航系统要提高路径规划效率并优先考虑行人安全,如在交通高峰期复杂场景中找到安全高效路径是研究重点。 - -智慧交通系统发展对行人导航系统提出更高要求,既需与车辆、交通信号灯等其他交通参与者无缝协作以优化交通系统运行效率,随着多智能体技术发展,行人导航系统研究也从单一智能体优化转向多智能体协作,通过多智能体协同作用提升导航效率与安全性是未来重要研究方向。 - -本研究引入虚幻引擎仿真能力与强化学习自适应策略优化能力试图突破上述问题,虚幻引擎的逼真场景和多样化数据为复杂行为建模和智能体训练提供支持,强化学习算法自适应优化能力使智能体可快速适应复杂动态环境变化,两者结合能为行人导航系统提供新理论和技术支撑,在智能交通、自动驾驶和城市规划等领域有广泛应用潜力。 - -\section{国内外研究现状} - -近年来强化学习与虚拟仿真技术在智能交通和行人导航领域研究取得显著进展,从强化学习在行人导航中的应用、虚幻引擎在智能体训练中的作用以及行人导航的挑战与发展趋势三方面进行综述。 - -\subsection{强化学习在行人导航中的应用} - -强化学习(Reinforcement Learning, RL)是一种通过智能体与环境交互学习最优策略的方法,近年来在交通系统优化和行人导航中得到了广泛应用。与传统路径规划方法相比,强化学习不仅可以应对动态环境,还能通过不断训练提高系统性能,展现了较高的自适应性和优化能力。强化学习技术在交通信号控制取得重要成果,钱立军等\cite{qian2024sac}基于 SAC 算法优化多交叉口交通信号控制提升交通通行效率,为动态环境复杂信号调度提供新思路,Arulkumaran等\cite{arulkumaran2017deeprl}系统阐述了深度强化学习在动态决策中的理论优势,Wei 等\cite{wei2021survey}综述强化学习在交通信号控制研究进展指出深度强化学习(Deep Reinforcement Learning, DRL)解决非线性优化问题优势适用于实时动态交通场景;在路径规划领域应用广泛,陶幸等\cite{tao2024motion}提出基于惯性传感器免对准动作捕捉方法为动态场景行人行为建模提供技术支持,Chen 等\cite{chen2018ionet}结合深度学习与强化学习技术设计基于因果推理路径优化方法引入因果关系提升智能体在动态环境适应能力;深度强化学习为路径规划研究注入新动力,Mnih 等\cite{mnih2013dqn}首次提出深度 Q 学习(Deep Q - Learning, DQN)算法将深度神经网络引入强化学习框架提升其在高维状态空间表现能力;在多智能体协作问题广泛研究,Clifton等\cite{clifton2020qlearning}系统论证了Q-learning算法在动态决策中的理论优势,Lian 等\cite{lian2023inverseql}设计基于离线 Q 学习多智能体协作算法解决复杂动态场景全局优化问题,Zhang等\cite{zhang2019pedestrian}提出的行人安全感知信号控制策略,Yazdani等\cite{yazdani2023ivpl}开发的IVPL系统进一步验证了深度强化学习在行人优先信号控制中的有效性,厦门路桥信息\cite{xiamen2025}开发的碰撞预测系统通过多智能体实时交互,将高风险路口预警准确率提升至89\%。Luo等\cite{luo2023adaptive}提出的自适应道路配置算法通过分布式强化学习范式,在行人流量动态调整中实现了49.55\%的计算成本优化。 - -\subsection{虚幻引擎在智能体训练中的作用} - -虚幻引擎作为高仿真虚拟场景构建工具为复杂动态环境下强化学习算法训练和验证提供高效实验平台,借由强大虚拟仿真能力和多样化场景支持成为智能体训练测试重要工具。 - -1. \textbf{虚幻引擎在视觉导航研究中的应用:} 虚幻引擎在视觉导航研究应用广泛,Redmon等\cite{redmon2017yolo9000}通过虚幻引擎生成增强数据训练 YOLO 目标检测模型,Mourikis 等\cite{mourikis2007msckf}结合虚幻引擎构建视觉惯性导航系统并通过多状态约束卡尔曼滤波(MSCKF)算法优化路径规划,Howard等\cite{howard2017mobilenets}提出的轻量化网络为实时目标检测提供了重要技术支持,Campos 等\cite{campos2021orbslam3}提出的 ORB-SLAM3 算法利用虚拟场景数据显著提升视觉建图与定位的鲁棒性和精度为复杂动态环境中的导航提供有力支持,DSR-YOLO模型\cite{dsryolo2025}通过集成DCNv4和SimAM注意力机制,在CityPersons数据集上实现70.25\%的mAP@50。STI-Bench基准测试\cite{sti2025}显示当前多模态大模型在时空量化任务中平均准确率不足42\%。 - -2. \textbf{虚幻引擎在路径规划中的贡献:} 虚幻引擎于路径规划研究表现重要作用,Guo 等\cite{guo2020pdr}结合虚幻引擎动态仿真能力提出基于 PDR/UWB 融合的导航系统用于复杂环境行人路径优化,Wang 等\cite{wang2023llio}通过虚幻引擎构建高仿真交通场景训练强化学习智能体路径规划策略验证其在强化学习训练中的高效性和低成本特性。 - -3. \textbf{虚幻引擎与目标检测的结合:} 虚幻引擎还被用于目标检测与路径规划结合研究,Redmon 等\cite{redmon2017yolo9000}通过虚幻引擎生成增强数据训练 YOLO 目标检测模型提高目标检测在复杂场景中的表现能力,Ren等\cite{ren2017fasterrcnn}提出的目标检测框架为动态障碍物识别提供了新思路,Zhang等\cite{zhang2023shapeiou}提出的Shape-IoU指标为动态障碍物检测精度评估提供了更优的度量标准,Simonyan 和 Zisserman 等\cite{simonyan2014action}进一步研究虚幻引擎对深度学习模型的优化作用为复杂交通场景下的行为预测提供理论支持。 - -4. \textbf{虚幻引擎在多智能体协作中的应用:} 虚幻引擎的仿真能力在多智能体协作研究中广泛应用,Bochkovskiy 等\cite{bochkovskiy2020yolov4}开发基于虚幻引擎的交通流量仿真工具验证多智能体协作算法有效性,Campos 等\cite{campos2021orbslam3}通过虚拟场景数据验证智能体在多智能体协作场景中的优化表现为行人导航系统的多智能体研究提供重要支持,Liu等\cite{liu2020tlio}通过紧耦合学习方法改进了惯性里程计精度。 - -虚幻引擎为强化学习算法设计训练与验证提供有力支持,在视觉导航路径规划与多智能体协作中的应用展现巨大潜力。 - -\subsection{行人导航的挑战与发展趋势} - -行人导航技术虽取得显著进展但在复杂动态环境中仍存复杂行为建模、动态环境适应性及多智能体协作优化等诸多挑战。 - -1. \textbf{行人行为的复杂建模:} 行人行为具显著多样性与随机性,赵靖等\cite{zhao2014crossing}提出基于动态信号优化的行人过街模型通过行为建模提升信号控制效率与安全性,Foxlin 等\cite{foxlin2005tracking}设计基于惯性传感器的行人轨迹跟踪方法为复杂行为建模提供技术支持。长沙智慧信号灯系统\cite{changsha2021}通过LED动态提示和900万像素违法抓拍单元显著减少路口事故,Zhang等\cite{zhang2025traffic}开发的MFS-MSTD模型在非随机缺失场景下流量修复误差降低52\%。 - -2. \textbf{动态环境的实时适应:} 动态环境不确定性对导航系统提出更高要求,Herath 等\cite{herath2020ronin}通过视觉信号优化路径规划使智能体实时适应动态障碍物变化,Dai等\cite{dai2017temporalcontext}提出的时序上下文网络为动态行为预测提供了新方法,Wang 等\cite{wang2013densetrajectory}提出基于强化学习的信号优化方法在动态环境中提升系统鲁棒性,Reid等\cite{reid1980tracking}提出的多目标跟踪算法为动态障碍物预测提供了理论基础。 - -3. \textbf{多智能体协作的优化:} 复杂交通场景中多智能体协作优化问题尤为重要,Lian 等\cite{lian2023inverseql}通过强化学习实现多智能体高效协作提高全局路径规划效率,Campos 等\cite{campos2021orbslam3}利用虚幻引擎验证多智能体协作优化算法在复杂场景中的应用价值。叶军华\cite{ye2023fusion}提出的多传感器融合定位算法将室内定位误差降低至3米以内。 - -4. \textbf{未来研究趋势:} 未来行人导航研究将朝以下方向发展:基于多源数据的复杂行为建模与优化;提升强化学习智能体在动态环境中的泛化能力;多智能体协作优化在虚拟仿真环境中的深度应用。 - -\section{研究内容与创新} - -本研究聚焦 "基于虚幻引擎的行人强化学习控制与导航系统" 展开,针对复杂动态交通环境中行人智能导航问题,运用虚拟仿真平台 Carla 与强化学习算法构建可训练、可评估、可扩展的智能导航系统。具体研究内容如下: - -1. \textbf{构建高仿真虚拟行人导航环境} 基于虚幻引擎与 Carla 平台构建高仿真虚拟行人导航环境,通过模拟城市道路结构、交通信号、车辆动态、障碍物变化等因素建立支持多场景切换的训练测试环境,形成高逼真度虚拟实验平台为智能体学习提供真实感知基础。 - -2. \textbf{设计多行为控制与骨骼建模系统:} 设计多行为控制与骨骼建模系统,借助 Carla 平台控制 API 及骨骼动画控制机制实现行人单向行走、过马路、来回走动等基础行为建模和动态路径更新,提升系统对多样化行人行为的响应能力。 - -3. \textbf{引入并比较多种强化学习算法:} 引入 PID 控制、DQN 算法、PPO 算法三种强化学习控制策略,在避障成功率、路径规划效率、模型稳定性等方面对比其性能表现,通过实验评估算法在动态环境中的适应性与可推广性。 - -4. \textbf{构建可解释性奖励函数体系:} 结合行人实际行为及交通安全需求构建可解释性奖励函数体系,设计融合目标达成、路径跟踪、安全避障、时间效率等因素的多维奖励函数,增强模型对复杂目标的理解与优化能力。 - -5. \textbf{实现系统性能评估与可视化展示:} 开展系统性能评估与可视化展示工作,通过仿真实验分析不同算法控制下的导航路径、碰撞率、目标达成时间等指标,利用图像增强与日志分析技术对行人导航过程进行可视化呈现,为后续系统优化与部署提供辅助支持。 - -本研究创新性体现在: - -1. \textbf{融合虚拟仿真与强化学习:} 融合虚拟仿真与强化学习搭建低成本高精度训练平台,借助虚幻引擎生成可控多样场景,解决传统现实数据采集难度大、风险高的问题,实现强化学习模型安全训练与快速迭代。 - -2. \textbf{提出动态加权融合路径规划机制:} 在 PID 控制中设计目标向量与避障向量的动态加权机制,结合雷达感知与环境反馈提升行人智能体对突发障碍的响应能力。 - -3. \textbf{构建多维奖励函数促进多目标导航优化:} 基于导航目标与交通安全性构建复合奖励函数体系,兼顾目标达成速度、路径偏差、避障效果与行走合理性,推动智能体学习策略从单一任务导向转向多目标协同优化。 - -4. \textbf{完成 DQN 与 PPO 两种主流强化学习算法在复杂交通环境中的对比分析:} 首次在 Carla 行人控制任务中系统对比两类深度强化学习方法的表现,提出适用于动态城市环境的稳定策略优化路径。 - -通过上述研究,该系统展示了虚拟仿真与强化学习在智慧交通中的深度融合潜力,为未来多智能体行人交通协同控制提供理论参考与实验平台支撑。 - -\section{论文组织架构} - -本论文以 "基于虚幻引擎的行人强化学习控制与导航系统" 为主题,针对智慧城市交通场景下复杂行人导航问题展开研究,内容涵盖仿真平台构建、强化学习算法实现、导航系统设计、实验验证与未来发展等方面。 - -\begin{figure}[H] - \centering - \includegraphics[width=0.8\textwidth]{images/tech_route.pdf} - \caption{论文技术路线图} - \label{fig:techroute} -\end{figure} - -图\ref{fig:techroute} 展示了本文的整体技术路线,按照“需求分析—平台搭建—算法实现—系统设计—性能评估—未来拓展”的顺序展开,形成一条从理论研究到系统落地的闭环路径。通过虚拟仿真场景设计与Carla平台集成,实现复杂交通场景下的动态障碍物建模与多传感器数据融合;在此基础上实现PID、DQN与PPO等多种强化学习策略控制,并进行对比分析;最终完成行人导航系统的完整功能设计与实验验证,为未来在真实场景中的迁移与多智能体协作提供技术支撑,详细解释如下: - -1. \textbf{虚拟仿真环境搭建}:基于虚幻引擎与 Carla 平台构建面向行人导航的高保真虚拟仿真场景,包括虚拟城市环境生成、动态障碍物模拟、多传感器信息建模与数据融合,为强化学习智能体提供训练环境基础。 - -2. \textbf{强化学习算法实现}:强化学习算法实现部分介绍 PID 控制、DQN 算法与 PPO 策略训练的原理及实现过程,通过对比不同控制策略在复杂环境中的适应性与学习效率为后续导航系统算法选择提供依据。 - -3. \textbf{行人导航系统设计}:行人导航系统设计围绕行人路径规划与避障问题构建多维奖励函数体系、路径规划模块及避障协同机制,同时建立骨骼控制与行为建模方法并引入动态权重融合策略以提升导航策略的稳定性与效率。 - -4. \textbf{实验验证与性能评估}:实验验证与性能评估环节通过仿真实验对导航精度、避障成功率、路径效率及实时控制性能进行综合分析,评估不同控制算法在复杂场景下的性能差异及系统整体运行效果。 - -5. \textbf{未来研究方向}:结合当前成果与系统运行反馈提出未来研究拓展方向,包括多智能体协作机制、传感器系统增强、复杂场景泛化能力提升及算法在硬件部署中的适应性问题。 - diff --git a/tactile/undergraduat/content/chapter2.tex b/tactile/undergraduat/content/chapter2.tex deleted file mode 100644 index 3ffe05ad..00000000 --- a/tactile/undergraduat/content/chapter2.tex +++ /dev/null @@ -1,147 +0,0 @@ -\chapter{相关理论基础} - -\section{系统架构与设计初步} - -\begin{figure}[H] - \centering - \includegraphics[width=0.8\textwidth]{images/system_architecture.png} - \caption{行人控制系统架构示意图} - \label{fig:system_architecture} -\end{figure} - -本行人控制系统基于 Carla 仿真平台用 Python 编程语言及其 Carla API 实现核心功能,目标是在虚拟环境模拟行人运动控制,通过调节移动、检测周围障碍物及避障等完成复杂导航任务,初步设计 “单向行走”“过马路”“来回行走” 三类基础行为后期可扩展为 “随机漫步”“群体避障” 等高级策略。系统架构由环境设置与初始化、行人控制、碰撞检测与避障、用户输入与交互模块构成,环境设置与初始化模块基于 Carla 的 Town1 地图加载城市道路等元素并随机分布静态和动态障碍物增强场景多样性与鲁棒性,为行人挂载 RGB 摄像头和碰撞传感器设置不同采样频率与视野范围提供视觉感知和避障算法数据,行人控制模块用 Carla 的 WalkerControl 类精确调节行人速度、方向和避障行为实现精确运动控制,碰撞检测与避障模块依赖 Carla 传感器系统让行人实时感知障碍物并避让,通过实时检测动态调整路径避碰,用户输入与交互模块为实验操作提供便利,实现键盘控制行人移动使用户与系统交互更直观便捷。由此设计出了如图 \ref{fig:system_architecture}所示的行人控制系统架构。 - -\section{行人骨骼控制} - -在行人行为研究中准确获取骨骼姿态信息是实现行为理解与决策的关键,结合 Carla 平台 AI 行人生成功能与自定义脚本设计可实现模拟环境中行人骨骼数据的完整采集处理及后续深度学习模型训练验证,为训练行人识别建筑物道路汽车人行道及过马路行人以保障安全,Carla 模拟器通过人工智能控制的行人填充模拟和训练数据,人体姿态估计在自动驾驶安全人群控制及机器人等多个计算机视觉应用中是重要因素。 - -Carla 的 API 支持从模拟行人获取真实骨架,该骨架由含根节点或顶点及定义骨骼姿势向量的一组骨骼组成\cite{openhutb2025},如下图 \ref{fig:pedestrian_skeleton}所示,这些骨骼控制模拟行人四肢和身体运动,通过收集各骨骼集合可构建虚拟人姿势模型,该模型能与神经网络估计的姿势模型比较甚至用于训练神经网络进行姿势估计,通过 AI 控制器生成行人并恢复其骨骼真实三维坐标,将这些骨骼投影到相机传感器捕获的二维图像上,可在 Carla 模拟器中为人体姿势估计框架设置训练和验证,保证骨骼数据采集的完整性和精度能为后续基于 Carla 环境的行人姿态估计与行为预测模型提供坚实数据基础。 - -\begin{figure}[H] - \centering - \includegraphics[width=1\textwidth]{images/pedestrian_skeleton.pdf} - \caption{行人骨骼控制示意图} - \label{fig:pedestrian_skeleton} -\end{figure} - -\section{行人行为控制} -本系统行为控制模型基于 Carla 平台 WalkerControl 模块构建,通过设定行人方向和速度参数精确操控移动行为,采用 town5 作为模拟地图,除基本移动功能外支持单向行走与过马路、来回走动两种主要行为模式,这些模式可在不同场景模拟行人多样化行为并满足后续复杂导航任务需求,模块化设计与参数化配置使系统能够灵活适应不同实验需求,为后续深度学习模型在行人避障与导航任务中的集成提供稳定高效的基础环境,初步研究未加入动态障碍物,仅实现行人单独行进,存在一定局限性。\cite{csdn2023carla} - -\subsection{单向行走与过马路} -单向行走与过马路是行人基础且关键的行为模式,行人通常从起点出发沿预设路径抵达目标位置,本研究设计简易路线规划系统以精确模拟行人过马路行为,允许其从街道一侧安全移动至对面。如图 \ref{fig:crossing_path},行人从人行道的右侧走向人行道的左侧。 - -\begin{figure}[H] - \centering - \begin{minipage}{1\textwidth} - \centering - \includegraphics[width=\textwidth]{images/crossing_path1.pdf} - \caption*{行人开始过马路} - \end{minipage} - - \vspace{0.5cm} - - \begin{minipage}{1\textwidth} - \centering - \includegraphics[width=\textwidth]{images/crossing_path2.pdf} - \caption*{行人成功通过马路} - \end{minipage} - \caption{行人单向行走与过马路示意图} - \label{fig:crossing_path} -\end{figure} - -实现时通过设定明确目标位置使行人沿起点到终点的预定路径行走,核心是利用 Carla 平台 WalkerControl 组件设定行人位置、速度等运动参数,该模型作为初步探索 Carla 行人行为模拟的实践较为简单。 - -\subsection{来回走与路径控制} - -\begin{figure}[H] - \centering - \begin{minipage}{\textwidth} - \centering - \begin{subfigure}{0.48\textwidth} - \includegraphics[width=\textwidth]{images/crossing_walking1.pdf} - \end{subfigure} - \begin{subfigure}{0.48\textwidth} - \includegraphics[width=\textwidth]{images/crossing_walking2.pdf} - \end{subfigure} - - \vspace{0.3cm} - - \begin{subfigure}{0.48\textwidth} - \includegraphics[width=\textwidth]{images/crossing_walking3.pdf} - \end{subfigure} - \begin{subfigure}{0.48\textwidth} - \includegraphics[width=\textwidth]{images/crossing_walking4.pdf} - \end{subfigure} - - \caption*{行人从右向左通过人行道过程} - \end{minipage} - - \vspace{0.5cm} - - \begin{minipage}{\textwidth} - \centering - \begin{subfigure}{0.48\textwidth} - \includegraphics[width=\textwidth]{images/crossing_walking5.pdf} - \end{subfigure} - \begin{subfigure}{0.48\textwidth} - \includegraphics[width=\textwidth]{images/crossing_walking6.pdf} - \end{subfigure} - - \vspace{0.3cm} - - \begin{subfigure}{0.48\textwidth} - \includegraphics[width=\textwidth]{images/crossing_walking7.pdf} - \end{subfigure} - \begin{subfigure}{0.48\textwidth} - \includegraphics[width=\textwidth]{images/crossing_walking8.pdf} - \end{subfigure} - - \caption*{行人从左向右返回过程} - \end{minipage} - - \vspace{0.5cm} - - \caption{行人来回通过人行道示意图} - \label{fig:walking_back_and_forth} -\end{figure} - -来回走动是行人在两个固定点间循环往复的常见行走模式,适用于短距离反复行走场景如本次模拟的过马路过程,其实现通过设定目标点并实时更新目标位置确保行人按既定路径高效移动。如图 \ref{fig:walking_back_and_forth},行人到达人行道一侧以后开始转向,向另一侧行进。 - -实现时先指定两个目标位置,行人到达一个目标后系统自动切换目标使其返回起点,该过程可完全自动化或根据需求允许手动控制,为应对突发情况系统实时监测环境调整行人动作,如遇红灯原地等候、绿灯直接通行,动态路径调整功能确保行人依实际情况及时反应顺利到达下一个目标,这种智能路径规划技术既提高行走效率和安全性,也为后续导航系统设定目标位置奠定基础。 - -\section{键盘控制行人移动} -本研究设计并实现键盘控制功能以提升用户体验和系统互动性,用户可通过简单键盘输入直接操控行人运动,采用 Pygame 库监听键盘输入,支持按下 W、A、S、D 键实现前进、后退、转向等动作控制,同时在 Pygame 可视化框中提供障碍物识别和监测功能,遇障碍物时屏幕显示距离等实时反馈,如图 \ref{fig:collision_detection},此时屏幕上会显示出障碍物的距离以及相关警告,相关训练代码在地图 town1 中实现。 - -\begin{figure}[H] - \centering - \includegraphics[width=1\textwidth]{images/collision_detection.pdf} - \caption{行人障碍物检测示意图} - \label{fig:collision_detection} -\end{figure} - -具体实现过程包含以下步骤:通过 Pygame 库设置键盘事件监听功能使系统捕捉用户键盘操作并与行人运动方向精确映射,具体规则如下表所示,确保用户键盘输入的每一指令被系统准确识别执行;设计控制逻辑使用户输入指令后行人的 WalkerControl 模块实时响应,根据指令更新行人方向和速度,确保行人移动即时准确反映用户控制意图以实现精确控制;考虑行人运动安全性,系统加入碰撞检测与停止机制,当行人遇障碍物时内置碰撞传感器立即检测并触发碰撞事件,系统接收到事件后迅速反应停止行人运动,有效避免碰撞风险保障行人运动安全性。 - -\begin{table}[H] - \centering - \renewcommand{\arraystretch}{1.3} - \begin{tabular}{ - >{\centering\arraybackslash}p{6.5cm} - >{\centering\arraybackslash}p{4cm} - } - \toprule - \textbf{控制说明} & \textbf{控制键} \\ - \midrule - WASD 移动 & 空格跳跃 \\ - Shift 加速 & ESC 退出 \\ - \bottomrule - \end{tabular} - \caption{键盘控制人规则} - \label{tab:keyboard-control} -\end{table} - -键盘控制模块不仅能实现对行人的灵活操控,也为调试与实验分析提供了完善的交互与可视化支持,为后续引入 AI 控制与自动化策略奠定基础。 - -\section{本章小结} - -本章系统阐述行人导航系统构建的关键理论与技术支撑,基于 Carla 仿真平台实现环境设置、传感器配置、行人控制等核心功能模块并明确系统整体架构设计逻辑,详尽介绍行人骨骼控制原理及关键参数提取方式以为行为建模与路径规划提供数据基础,通过分段控制策略实现单向行走、过马路、来回路径切换等基本行为并结合动态目标点更新机制实现高层级行为仿真控制,借助键盘控制接口引入用户交互功能以提升系统调试效率与可视化能力。​ -本章内容完成从虚拟仿真环境搭建到基础行为控制模块构建的核心准备工作,为后续强化学习控制算法接入及训练环境部署奠定理论与工程基础。 diff --git a/tactile/undergraduat/content/chapter3.tex b/tactile/undergraduat/content/chapter3.tex deleted file mode 100644 index 3ef0fd2c..00000000 --- a/tactile/undergraduat/content/chapter3.tex +++ /dev/null @@ -1,528 +0,0 @@ -\chapter{基于强化学习的行人控制} - -\section{环境配置} - -本研究主要目标是用强化学习算法(PPO、PID、DQN)训练优化行人控制系统,核心是评估这些算法在复杂动态环境里的性能表现。为此,所有深度学习训练与实验都在功能强大的 Carla 仿真平台开展。Carla 平台有多样城市环境,涵盖各类道路、建筑风格、车辆模型、行人行为,能模拟真实城市交通复杂性,这让它成为自动驾驶研究和智能体训练的理想测试平台。​ - -\begin{figure}[H] - \centering - \includegraphics[width=1\textwidth]{images/town1.pdf} - \caption{Carla中的Town1俯视图} - \label{fig:town1} -\end{figure} - -Carla 是专为自动驾驶研究设计的开源模拟平台,支持相机、激光雷达(LiDAR)、惯性测量单元(IMU)等多种传感器集成,能模拟含道路、交通信号灯、行人及其他交通参与者的复杂城市环境,为强化学习、路径规划、感知与控制算法开发提供高度可定制虚拟环境。本研究借 Carla 的 Python API 与仿真环境交互,实现行人运动控制并收集环境数据用于学习,该 API 能以编程模拟行人、车辆、交通灯等动态因素,还能实时获取各类传感器数据,给算法训练测试提供丰富信息。​ - -本研究因训练测试需求及研究者个人电脑计算能力限制选择 Carla 仿真平台 Town01 地图作为实验环境。Town01 作为 Carla 平台标准城市地图之一如图 \ref {fig:town1} 所示,包含多种城市道路结构、交通标志、建筑物、行人及交通工具等元素,设计旨在模拟真实城市交通环境并提供丰富具代表性的测试场景。该地图具备较高城市仿真还原度,结构涵盖多个复杂布局的城市道路与交叉口以重构现实交通网络与流动模式,集成私家车、公务车、公交车等多类型交通工具及行人对象、交通信号灯系统模拟典型城市运行状态,强化学习训练中除道路建筑等静态构造物外,还引入移动车辆与行人个体等具行为逻辑的动态障碍物以提升路径规划与避障策略的难度与真实性。 - -\section{PID(Proportional-Integral-Derivative)控制算法} - -\begin{algorithm}[H] - \caption{自适应PID控制算法} - \begin{algorithmic}[1] - \STATE 初始化参数$K_p^0$, $K_i^0$, $K_d^0$ % 改为 \STATE - \WHILE{系统运行} - \STATE 获取激光雷达数据$L_t$ - \STATE 计算障碍物距离$d_{obs} = \min(L_t)$ - \IF{$d_{obs} < 5m$} - \STATE $K_p \gets 1.2K_p^0$ - \STATE $K_d \gets 1.5K_d^0$ - \ENDIF - \STATE 执行PID计算 - \ENDWHILE - \end{algorithmic} -\end{algorithm} - -\subsection{PID控制算法建模} - -\subsubsection{控制方程推导} -离散PID控制算法表示为: -\begin{equation} - u(k) = K_p e(k) + K_i T \sum_{i=0}^k e(i) + K_d \frac{e(k)-e(k-1)}{T} -\end{equation} -其中,$T=0.005s$为采样周期,$e(k)$为第$k$时刻的横向偏差。 - -\subsubsection{参数整定策略} -通过Ziegler-Nichols临界比例法确定基础参数后,结合实际场景进行优化: -转向控制参数:$K_p=0.8$, $K_i=0.001$, $K_d=0.2$\\ -速度控制参数:$K_p=0.5$, $K_i=0.01$, $K_d=0.1$ - -\subsubsection{PID控制原理} - -PID控制算法通过比例(P)、积分(I)与微分(D)三项协同工作实现对目标系统的控制,其数学表达如下: -\[ -u(t) = K_p e(t) + K_i \int_0^t e(\tau) d\tau + K_d \frac{d}{dt} e(t) -\] - $e(t)$ 表示当前时刻控制误差而 $u(t)$ 为控制器输出量,该控制器由三部分构成: - -比例项 $K_p e(t)$ 通过调节比例系数 $K_p$ 对当前误差快速响应以修正偏离目标行为并增强响应速度和控制强度,积分项 $K_i \int_0^t e(\tau) d\tau$ 通过累计过去误差补偿长时间累积的稳态偏差以提高系统长期控制精度,微分项 $K_d \frac{d}{dt} e(t)$ 根据误差变化速率预测调整以抑制系统振荡并提升稳定性与鲁棒性。 - -三者协同可在多种工程系统中实现较优的动态性能与稳态性能平衡,广泛应用于温度调节、伺服控制、轨迹跟踪等自动化控制场景。 - -\subsection{算法实现与效果可视化} - -\subsubsection{传感器数据处理} - -激光雷达传感器提供了高精度的三维点云信息,系统通过一套完整的预处理与分析流程将其转换为可用于导航决策的结构化信息。数据处理流程主要包括以下几个环节: - -首先,系统对原始点云数据进行初步筛选,设定感知范围为半径不超过8米、水平视角位于前向60°范围内的空间区域,滤除无效测点与边缘噪声数据,从而减少冗余信息并提升处理效率。其次,在障碍物识别阶段,引入基于密度的空间聚类算法(改进版DBSCAN),设定聚类半径阈值 $\epsilon=0.5m$ 与最小邻居点数 $MinPts=5$,实现对局部高密度点云区域的有效分离,进而标定出潜在障碍物目标。最后,系统对已识别障碍物执行威胁评估,通过计算最短距离 $d_{min}$ 以及相对速度 $v_{rel}$ 等关键指标,辅助行为决策模块判断是否采取避障策略或调整路径规划。 - -该处理流程在保证实时性的基础上,提升了环境建模的准确性,为下游控制算法提供了可靠支持。 - -\subsubsection{动态权重融合算法} -目标向量$\vec{T}$与避障向量$\vec{A}$的融合策略: -\begin{equation} - \vec{C} = \alpha \vec{T} + (1-\alpha)\vec{A} -\end{equation} -其中权重系数$\alpha$的动态调整规则为: -\begin{equation} - \alpha = - \begin{cases} - 0.05, & d_{\text{min}} \leq 1\ \text{m} \\ - 0.8(1 - e^{-0.5d_{\text{min}}}), & 1\ \text{m} < d_{\text{min}} \leq 5\ \text{m} \\ - 1, & d_{\text{min}} > 5\ \text{m} - \end{cases} -\end{equation} - -\subsubsection{核心模块功能解析} - -系统核心功能模块由若干关键类构成,分别负责路径控制、传感器数据处理、误差计算与控制环执行等任务,具体实现如下: - -PIDController类承担基本的控制策略计算职责,其中\texttt{compute()}函数实现了具备抗积分饱和能力的PID控制逻辑,在保证控制稳定性的同时避免积分项过大造成系统震荡;\texttt{reset()}函数用于在检测到碰撞事件后清空累计误差,确保恢复控制时状态重置合理,有助于系统稳定恢复。 - -PIDPedestrianEnv类集成了环境感知与路径控制的多项功能。在感知方面,\texttt{\_process\_lidar()}函数对激光雷达点云数据进行实时处理,限定分析区域为前向60度扇形,最大探测距离为8米,随后采用DBSCAN聚类算法($\epsilon=0.5$ m)识别局部障碍物簇,实现高效环境建模。在路径误差估计方面,\texttt{calculate\_errors()}函数将目标方向与避障方向融合为一个期望方向向量,并根据当前任务阶段动态调整加权系数(取值范围为$[0.05, 0.95]$),再将该向量投影至局部坐标系以计算横向与纵向偏差,为后续控制指令提供误差信息支持。 - -控制执行层 \texttt{run\_control\_loop()}函数以 200Hz 高频运行保证控制精度与响应速度,速度控制通过引入非线性安全函数$v_{\text{safe}} = (\frac{d}{5})^{1.5} \cdot 3.0$动态调节移动速度确保接近障碍物时具备充分制动空间,系统在碰撞时自动触发后退 1 米后随机旋转 90 度重新导航的恢复策略提升鲁棒性与自主回复能力,该模块紧密集成感知规划与控制环节在确保实时性的同时有效提升导航稳定性与安全性。 - -\subsubsection{传感器系统架构} -\begin{figure}[H] - \centering - \includegraphics[width=1\textwidth]{images/sensor_architecture.pdf} - \caption{多传感器数据融合架构} - \label{fig:sensor} -\end{figure} - -\subsection{实验结果分析} - -为评估系统导航控制实际性能本节从避障效果、路径偏差控制与系统响应行为等维度分析实验结果并基于观察提出优化方向。系统在 100 次独立实验中避障成功 94 次成功率达93.7\% 表明控制策略在典型场景下具备较强鲁棒性与稳定性,实际行进路径相较理论路径平均偏差 $0.45 \pm 0.12$ 米显示动态环境中轨迹一致性较好,特定紧急避障情境中因障碍物突现或多障碍干扰出现最大18.7\%瞬时过冲。 - -图~\ref{fig:pid_obstacle} 展示智能体面对广告牌类障碍物时的避障行为,绿色箭头为导航目标方向、红色箭头为避障方向(仅障碍检测后可见)、蓝色箭头为实际前进方向,图像生成后经锐化及亮度对比度优化提升细节与视觉清晰度便于观察导航方向向量变化。 - -\begin{figure}[H] - \centering - \includegraphics[width=1\textwidth]{images/obstacle_avoidance.pdf} - \caption{行人智能体通过PID控制进行避障的示意图} - \label{fig:pid_obstacle} -\end{figure} - -基于实验表现系统功能实现已具良好基础但仍有提升空间,优化方向主要包括引入自适应 PID 参数调节机制提升不同场景响应灵活性、融合视觉语义信息提升障碍物识别分类精度与避障决策语境感知能力、采用模型预测控制(Model Predictive Control, MPC)方法优化路径平滑性与前瞻性减少复杂场景路径震荡问题。 - -\section{DQN(Deep Q-Network)算法} - -\begin{algorithm}[H] - \caption{DQN训练算法} - \begin{algorithmic}[1] - \STATE 初始化环境与模型 - \STATE 设置动作空间与状态空间 - \WHILE{训练过程中} - \STATE 进行环境重置,获取初始观测$O_0$ - \FOR{每个训练步骤} - \STATE 根据当前策略选择动作$a_t$ - \STATE 执行动作$a_t$,获得新的观测$O_{t+1}$,奖励$R_t$ - \STATE 存储经验$(O_t, a_t, R_t, O_{t+1})$ - \STATE 从经验池中采样批量数据进行更新 - \STATE 使用DQN算法更新Q网络 - \ENDFOR - \ENDWHILE - \end{algorithmic} -\end{algorithm} - -\subsection{Q-learning公式} - -在引入目标网络机制后,Q-learning算法的更新策略得到进一步优化,其Q值更新公式表达如下: -\[ -Q(s_t,a_t) \leftarrow Q(s_t,a_t) + \alpha\left[r_t + \gamma \max_{a'}Q_{\text{target}}(s_{t+1},a') - Q(s_t,a_t)\right] -\] -该公式表示智能体在状态 $s_t$ 采取动作 $a_t$ 后,根据获得的即时奖励 $r_t$ 和下一状态 $s_{t+1}$ 的最大期望收益,调整当前状态-动作对的估值。其中各参数的含义如下: - -学习率 $\alpha=10^{-4}$ 控制Q值更新的幅度,数值越小则代表对新信息的更新越缓慢(对应代码中的 \texttt{learning\_rate=1e-4});折扣因子 $\gamma=0.99$ 用于衡量未来回报的重要性,较高的折扣因子表明模型更注重长期收益(对应代码中的 \texttt{gamma=0.99})。此外,$Q_{\text{target}}$ 表示由目标网络计算得到的下一状态的最大Q值,用于提升估值过程的稳定性,避免在策略训练初期因频繁更新而导致震荡。 - -该更新机制能够在保留传统Q-learning策略探索性的基础上,通过固定目标网络参数进行延迟更新,有效缓解训练不稳定的问题,特别适用于深度强化学习中的高维状态空间建模场景。 - -\subsection{双网络架构设计} - -为提升训练稳定性与估值精度,系统采用双网络架构,由在线网络(Online Network)与目标网络(Target Network)组成,分别承担策略更新与价值估计的不同功能。 - -在线网络用于实时学习当前策略,其结构为两层全连接神经网络,每层节点数为256,采用ReLU作为激活函数(对应代码设置为 \texttt{activation\_fn=torch.nn.ReLU}),在每一步梯度下降中更新权重参数 $\theta_{\text{online}}$,确保模型对最新状态反馈做出及时响应。 - -目标网络结构与在线网络保持一致,但其参数更新方式采用“硬更新”机制,即以固定步数间隔将在线网络的权重直接复制至目标网络。该同步过程公式如下所示: -\[ -\theta_{\text{target}} \leftarrow \theta_{\text{online}} -\] -在具体实现中,目标网络每1000步执行一次参数同步(对应代码参数为 \texttt{target\_upda\\te\_interval=1000}),通过延迟更新策略降低了目标Q值波动,增强了训练过程的收敛性。 - -\subsection{经验回放机制} - -经验回放(Experience Replay)机制用于缓解样本相关性对训练收敛的负面影响,系统通过构建经验池与延迟学习机制提升数据利用率与策略泛化能力。 - -经验池用于存储智能体在交互过程中收集的状态-动作-奖励-下一状态四元组,容量设置为 $10^5$ 条经验(对应代码参数为 \texttt{buffer\_size=100000}),每次训练从中均匀随机采样形成小批量数据,批次大小设为128条样本(\texttt{batch\_size=128}),以提升训练的稳定性与样本多样性。 - -在模型训练初期,系统采用延迟学习策略,即前1000步不进行参数更新,仅用于填充经验池(设置为 \texttt{learning\_starts=1000}),之后每隔4步执行一次策略网络的权重更新,从而保证网络初始训练基于足够多样的经验。 - -探索行为采用$\epsilon$-greedy策略控制动作选择过程,在训练初期以较高概率随机探索,随着训练步数增加逐步降低随机性。初始探索率 $\epsilon=1.0$,线性衰减至 $\epsilon=0.05$,整个衰减过程占总训练步数的20\%(设置为 \texttt{exploration\_fraction=0.2},\texttt{exploration\_final\_eps=0.05})。该策略在保持探索能力的同时,使策略网络逐步转向利用已学习知识进行优化行为决策。 - -\subsection{算法优化策略} - -为提升DQN算法在复杂场景下的泛化能力与训练稳定性,本系统在目标值计算、状态特征表达与奖励机制设计方面进行多项优化,具体策略如下所述。 - -\textbf{目标值分离策略}:为缓解Q值估计过程中的过估计问题,系统引入独立的目标网络用于计算时间差分(TD)目标值。该目标网络的结构与在线网络保持一致,但其参数以固定步数间隔从主网络中复制而来,有效提升了目标估值的稳定性,从而减少策略震荡并加速收敛过程。 - -\textbf{状态归一化处理}:为确保不同量纲的状态特征在输入网络前具备相对均衡的尺度,系统对关键特征执行归一化操作:位置坐标采用 $x_{\text{norm}} = x/200.0 - 1.0$ 表达,将原始坐标映射至 $[-1, 1]$ 区间;速度向量归一化为 $v_{\text{norm}} = v/3.0$,避免速度数值主导状态向量;障碍物距离归一化处理为 $\min(d_{\text{obs}}/5.0, 1.0)$,限制极端远距值带来的梯度影响。该归一化策略提升了状态向量在神经网络中的表达能力与训练稳定性。 - -\textbf{奖励函数设计}:系统采用如下形式构建稀疏强化学习中的稠密奖励结构,以引导智能体行为学习: -\[ -r_t = \underbrace{2\Delta d}_{\text{进度奖励}} + \underbrace{\min(v/3.0, 0.5)}_{\text{速度奖励}} - \underbrace{0.05}_{\text{时间惩罚}} - \underbrace{20\cdot\mathbb{X}_{\text{collision}}}_{\text{碰撞惩罚}} -\] -$\Delta d$ 表示当前位置与目标位置之间的推进距离,速度奖励项抑制过慢移动行为并避免高速度带来的安全风险,时间惩罚项用于压缩到达时间以鼓励更快完成任务,碰撞惩罚项通过设置固定高权重显著惩戒与障碍物的碰撞行为以增强避障策略的学习强度。 - -图~\ref{fig:avoidance} 展示了 DQN 算法控制下智能体面对动态行人时采取的避障路径并可视化行为策略在复杂交互场景中的有效性。 - -\begin{figure}[H] - \centering - \includegraphics[width=1\textwidth]{images/pedestrian_avoidance.pdf} - \caption{基于DQN的障碍物规避策略示意图} - \label{fig:avoidance} -\end{figure} - -\textbf{超参数配置}:如表~\ref{tab:dqn_params}所示,系统选用经验池大小为 $10^5$,隐藏层神经元维度为两层 [256, 256],其他关键参数也进行了针对性设置以匹配环境动态特征与收敛需求。 - -\begin{table}[H] -\centering -\caption{DQN超参数配置表} -\label{tab:dqn_params} -\begin{tabular}{llll} -\toprule -参数名称 & 符号表示 & 取值 & 取值范围 \\ -\midrule -学习率 & $\alpha$ & $1 \times 10^{-4}$ & $[1e^{-5}, 1e^{-3}]$ \\ -折扣因子 & $\gamma$ & 0.99 & $(0, 1]$ \\ -经验池容量 & $|\mathcal{D}|$ & $10^5$ & $[10^4, 10^6]$ \\ -目标网络更新间隔 & $N_{\text{update}}$ & 1000 steps & $[100, 5000]$ \\ -初始探索率 & $\epsilon_{\text{initial}}$ & 1.0 & $[0, 1]$ \\ -最终探索率 & $\epsilon_{\text{final}}$ & 0.05 & $[0, 1]$ \\ -探索衰减比例 & $f_{\epsilon}$ & 20\% & $[0.1, 0.5]$ \\ -学习起始步数 & $N_{\text{start}}$ & 1000 & $[0, 10^4]$ \\ -批量大小 & $B$ & 128 & $[32, 512]$ \\ -目标网络软更新系数 & $\tau$ & 1.0 & $[0.005, 1.0]$ \\ -网络隐藏层维度 & $d_{\text{hidden}}$ & [256, 256] & 自定义结构 \\ -激活函数 & $\phi$ & ReLU & ReLU/Tanh/etc. \\ -\bottomrule -\end{tabular} -\end{table} - -\vspace{0.5em} -\noindent \textbf{说明:}本系统采用硬同步方式更新目标网络,未实现软更新形式中的加权移动平均(代码中未启用 $\tau$ 参数);优化器选择Adam以提升梯度收敛效率;运行设备配置为自动选择,确保在不同硬件平台下具备良好的兼容性(对应代码设置 \texttt{device='auto'})。 - -\section{PPO(Proximal Policy Optimization)算法} - -\begin{algorithm}[H] - \caption{PPO训练算法} - \begin{algorithmic}[1] - \STATE 初始化环境与模型 - \STATE 设置动作空间与状态空间 - \WHILE{训练过程中} - \STATE 获取当前观测$O_t$ - \FOR{每个训练步骤} - \STATE 根据当前策略选择动作$a_t$ - \STATE 执行动作$a_t$,获得新的观测$O_{t+1}$,奖励$R_t$ - \STATE 使用PPO算法计算优势函数$A_t$ - \STATE 计算目标和损失,更新策略网络 - \ENDFOR - \ENDWHILE - \end{algorithmic} -\end{algorithm} - -\subsection{PPO算法概述} - -PPO(Proximal Policy Optimization,近端策略优化)是策略梯度方法基础上发展的强化学习算法,核心思想是提升策略优化效率并严格限制策略更新幅度以提高训练稳定性。“Proximal(近端)” 指 PPO 通过引入截断机制对策略更新幅度设置边界确保新策略不偏离旧策略过远以避免训练中性能骤降或策略崩坏;“Policy(策略)” 指智能体在给定状态下采取动作的概率分布即行为决策核心函数;“Optimization(优化)” 体现算法通过迭代调整策略参数使智能体在长期交互中获得更高期望回报的目标导向特征。 - -本研究基于\texttt{Stable-Baselines3}框架 PPO 模块实现行人智能体训练部署,PPO 算法通过最大化策略在环境中累计期望回报提升行为策略学习效率,同时通过限制策略变化范围抑制过度更新导致的不稳定问题,该特性使其在高维状态或动作空间中具备较好鲁棒性与泛化能力,适用于本项目构建的行人路径规划与避障控制任务。下一节将从数学公式层面介绍 PPO 优化原理并结合实现代码分析关键超参数设定依据与调整策略。 - -\subsection{最大化期望回报} -PPO 强化学习的目标是最大化智能体在环境中的期望累积回报: -\[ -J(\theta) = \mathbb{E}_{\tau \sim p_{\theta}(\tau)} \left[ \sum_{t=0}^{T} \gamma^t r_t \right] -\] -其中,$\theta$表示策略参数,$\gamma$为折扣因子,$\tau$为轨迹,$r_t$为即时奖励。 - -\subsection{策略梯度与重要性采样} -传统策略梯度方法的梯度估计为: -\[ -\nabla_{\theta} J(\theta) = \mathbb{E}_{\tau \sim p_{\theta}(\tau)} \left[ \nabla_{\theta} \log \pi_{\theta}(a_t|s_t) A_t \right] -\] -其中,$A_t$为优势函数(Advantage),衡量某一动作相对平均水平的好坏。PPO 引入重要性采样比率: -\[ -r_t(\theta) = \frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{\text{old}}}(a_t|s_t)} -\] -用旧策略生成的数据评估新策略。 - -\subsection{剪切目标函数} -为避免策略更新过大,PPO 使用剪切机制: -\[ -L_{\text{clip}}(\theta) = \mathbb{E}_t \left[ \min \left( r_t(\theta) A_t, \text{clip}(r_t(\theta), 1 - \epsilon, 1 + \epsilon) A_t \right) \right] -\] -其中,$\epsilon$是超参数(通常取0.1–0.2),$\text{clip}$函数会将比率截断在区间内,保证每次更新幅度不会过大。 - -\subsection{优势估计GAE(Generalized Advantage Estimation)} -为了在偏差与方差之间取得平衡,PPO 使用 GAE 计算优势: -\[ -A_t^{\text{GAE}} = \sum_{l=0}^{\infty} (\gamma \lambda)^l \delta_{t+l} -\] -其中,$\lambda$为平衡系数,$V(s_t)$为状态价值函数。 - -\subsection{完整的优化目标} - -在PPO(Proximal Policy Optimization)算法中,策略更新过程不仅关注动作选择的期望回报,还同时考虑价值函数的估计精度与策略的探索能力。因此,其总损失函数由三部分组成:策略损失、价值函数损失和熵正则项,具体形式如下: -\[ -L(\theta) = L_{\text{clip}}(\theta) - c_1 L_{\text{VF}}(\theta) + c_2 S[\pi_{\theta}](s_t) -\] -$\theta$ 表示当前策略网络参数且损失函数三项含义如下: - -第一项 $L_{\text{clip}}(\theta)$ 为衡量新旧策略偏离程度的剪切策略损失,通过截断策略概率比限制策略更新幅度以保证每轮更新在 “近端” 范围内并避免偏离过大导致的不稳定问题; - -第二项 $L_{\text{VF}}(\theta)$ 为采用均方误差形式评估当前价值估计与实际经验回报偏差的价值函数损失,通过引导价值网络准确拟合环境状态值提升训练稳定性与目标期望值估计精度,权重系数 $c_1$ 控制其在总目标函数中的占比。 - -第三项 $S[\pi_{\theta}](s_t)$ 为策略熵项,用于度量当前策略的不确定性。该项通过鼓励策略输出更为均匀的概率分布,增强智能体的探索能力,防止陷入局部最优。熵项权重 $c_2$ 决定其在整体优化中的影响程度。 - -通过引入上述三项,PPO算法在追求策略收益最大化的同时,兼顾值函数逼近质量与策略多样性,从而实现更为稳健和高效的策略优化过程。 - -\subsection{训练模型评估} -在 \texttt{Carla\_Pedestrian\_PPO.py} 中,关键超参数配置如下: -\begin{lstlisting}[language=Python] -model = PPO( - policy="MlpPolicy", # 使用多层感知机策略(MlpPolicy) - env=vec_env, # 训练环境 - # 核心参数 - learning_rate=1e-4, # 较小学习率,减缓更新步伐,避免模型过度拟合 - n_steps=1024, # 每次更新时收集的步骤数,减小批大小有助于稳定训练 - batch_size=256, # 每次训练时的批量大小 - gamma=0.99, # 折扣因子,控制未来奖励的权重 - gae_lambda=0.95, # GAE的lambda参数,控制优势估计的平滑程度 - clip_range=0.2, # 增大剪切范围,可以控制策略的更新幅度,避免过大的更新 - clip_range_vf=0.2, # 价值函数的剪切范围,用于稳定训练 - ent_coef=0.02, # 增强探索,控制熵损失的权重,增加探索性 - target_kl=0.05, # 放宽KL散度阈值,允许策略有更多的变化,以便更好地探索 - - # 网络结构 - policy_kwargs={ - "net_arch": { - "pi": [128, 128], # 策略网络的架构,使用两个128单元的全连接层 - "vf": [128, 128] # 价值函数网络的架构,使用两个128单元的全连接层 - }, - "activation_fn": torch.nn.ReLU, # 激活函数,使用ReLU函数提高非线性表现 - "ortho_init": True, # 正交初始化,确保网络权重的良好初始化 - "log_std_init": -0.3, # 初始标准差,调整初始化的噪声水平,避免探索过度 - }, - - # 设备强制使用GPU - device='cuda', # 强制使用GPU进行训练 - verbose=1 # 设置输出详细程度,1表示输出信息量适中 - ) - -\end{lstlisting} - -\subsubsection{训练效率} - -在系统训练过程中,运行帧率(Frames Per Second, FPS)波动范围为36至67之间,反映出在不同环境状态与模型参数配置下的运行负载变化。较高的帧率可提高训练样本采集效率,同时也有助于缩短总训练时间。训练步数方面,采用分批迭代方式完成总时间步(\texttt{total\_timesteps})为 10 万步的训练过程,该设定在覆盖充分样本同时保留不同阶段策略效果评估空间为模型优化与参数调整提供基础支持。 - -\subsubsection{策略稳定性} - -系统记录近似 Kullback-Leibler 散度(\texttt{approx\_kL})与剪切比例(\texttt{clip\_fraction})两项关键指标,其中\texttt{approx\_kL} 散度范围为 0.007 至 0.037、部分阶段略高表明策略更新幅度偏大需结合剪切策略抑制,剪切比例(\texttt{clip\_fraction})大多数稳定在 0.06 至 0.12 之间、个别阶段短时波动反映策略在某些迭代周期存在剧烈调整可能对训练收敛性产生影响,整体而言策略更新保持在可控区间但仍需进一步平衡更新速率与稳定性关系。 - -\subsubsection{探索与利用权衡} - -PPO 算法探索能力通过熵损失(\texttt{entropy\_loss})变化衡量,本实验中熵值从初期 - 1.6 上升至约 - 0.663 显示训练中智能体动作选择逐渐摆脱单一决策表现出更强探索行为,这一趋势说明策略逐步从随机试探过渡到以优化回报为目标的策略利用但过程仍存在轻微波动,表明策略学习初期至中期之间探索 - 利用动态平衡仍需进一步调节。 - -\subsubsection{价值函数性能评估} - -价值函数拟合能力是判断策略评估有效性的重要依据,实验数据显示解释方差(\texttt{explained\_variance})从初始 0.03 显著提升至 0.945 说明价值网络对环境状态与未来回报关系建模能力不断增强,价值损失(\texttt{value\_loss})由早期 718 下降至训练后期最低值 12.6、尽管某些阶段轻微反弹但整体趋势稳定下降验证模型收敛性与学习效果提升,最终测试日志显示 “成功到达目标!剩余距离:1.98m” 表明训练后策略具备较强目标导向性与执行能力,能够在复杂动态环境中完成路径规划与避障任务。 - -\begin{table}[H] - \centering - \caption{训练日志关键指标汇总} - \label{tab:metrics} - \begin{tabular}{lccccc} - \toprule - 指标名称 & 最小值 & 最大值 & 均值 & 关键变化 \\ - \midrule - approx\_kL & 0.007 & 0.037 & 0.015 & 波动大 \\ - value\_loss & 12.6 & 718 & 257.8 & 后期反弹 \\ - entropy\_loss & -1.6 & -0.663 & -1.1 & 探索不足 \\ - \bottomrule - \end{tabular} -\end{table}o - -虽然模型尚存在很多问题,但未来都可以继续优化,下图为PPO模型训练过程日志图\ref{fig:training},是实验过程中的部分数据。 - -\begin{figure}[H] - \centering - \begin{minipage}{0.24\textwidth} - \centering - \includegraphics[width=\textwidth]{images/training1.pdf} - \caption*{过程1} - \end{minipage}% - \begin{minipage}{0.24\textwidth} - \centering - \includegraphics[width=\textwidth]{images/training2.pdf} - \caption*{过程2} - \end{minipage}% - \begin{minipage}{0.24\textwidth} - \centering - \includegraphics[width=\textwidth]{images/training3.pdf} - \caption*{过程3} - \end{minipage}% - \begin{minipage}{0.25\textwidth} - \centering - \includegraphics[width=\textwidth]{images/training4.pdf} - \caption*{过程4} - \end{minipage} - - \vspace{0.5cm} - - \begin{minipage}{0.24\textwidth} - \centering - \includegraphics[width=\textwidth]{images/training5.pdf} - \caption*{过程5} - \end{minipage}% - \begin{minipage}{0.25\textwidth} - \centering - \includegraphics[width=\textwidth]{images/training6.pdf} - \caption*{过程6} - \end{minipage}% - \begin{minipage}{0.25\textwidth} - \centering - \includegraphics[width=\textwidth]{images/training7.pdf} - \caption*{过程7} - \end{minipage}% - \begin{minipage}{0.25\textwidth} - \centering - \includegraphics[width=\textwidth]{images/training8.pdf} - \caption*{过程8} - \end{minipage} - \caption{PPO模型训练过程日志图} - \label{fig:training} -\end{figure} - -训练得出了模型主要用于导航的使用,下图 \ref{fig:path_planning} 则为行人智能体通过PPO算法进行路径规划与避障的示意图。由 - -\begin{figure}[H] - \centering - \includegraphics[width=1\textwidth]{images/path_planning.pdf} - \caption{行人智能体通过PPO算法进行路径规划与避障的示意图} - \label{fig:path_planning} -\end{figure} - -\subsubsection{总结} - -PPO模型在路径规划中的任务完成率和价值函数预测方面表现稳定,表明策略网络具备较强的行为学习与回报估计能力。训练过程中仍出现策略更新波动、熵值不稳定和阶段性价值回退,影响了模型的收敛效果。 - -为提升系统性能与训练稳定性未来工作可从以下方向展开: - -\begin{enumerate} - \item 通过调整剪切区间参数限制策略更新幅度以缓解 KL 散度增长引发的策略不稳定问题; - \item 在价值函数网络中引入正则化或优化层级结构以提升模型泛化能力与拟合质量; - \item 引入基于熵损失与剪切比例等指标实时调整训练参数的动态超参数机制以增强适应性; - \item 应用学习率衰减策略以实现前期快速收敛与后期平稳调整并优化整体训练过程。 -\end{enumerate} - -这些改进将提升模型在多种场景中的适应能力并为强化学习方法的实际部署奠定基础。 - -\section{算法对比与分析} - -针对我们已经使用了的基于Carla平台的行人导航系统的三种算法,对比分析PID控制、DQN和PPO三种算法的性能特点,阐述其适用场景并从中选取一个座位我们导航系统的核心算法。 - -\subsection{算法特性对比} - -如表~\ref{tab:algorithm_comparison}所示,从控制方式、训练成本、环境适应性等维度对三种强化学习算法进行系统对比: - -\begin{table}[H] - \centering - \caption{行人控制算法对比} - \label{tab:algorithm_comparison} - \begin{tabular}{lccc} - \toprule - \textbf{特性} & \textbf{PID} & \textbf{DQN} & \textbf{PPO} \\ - \midrule - 控制方式 & 连续 & 离散 & 连续 \\ - 学习能力 & 无 & 有 & 有 \\ - 参数敏感性 & 高 & 中 & 低 \\ - 训练时间 & 0 & 长 & 中 \\ - 动态障碍适应性 & 差 & 一般 & 优 \\ - 长期策略优化 & 无 & 有限 & 强 \\ - 代码复杂度 & 低 & 高 & 中 \\ - \bottomrule - \end{tabular} -\end{table} - -\subsection{算法优劣分析} - -为全面评估不同控制算法在本系统中的适用性与表现差异,本文选取 PID 控制、DQN 和 PPO 三种算法,从实时性、适应性、训练需求与控制精度等维度展开对比分析。比较结果如表~\ref{tab:algo_analysis} 所示。 - -\begin{table}[H] -\centering -\caption{三种控制算法的优势与劣势比较} -\label{tab:algo_analysis} -\renewcommand{\arraystretch}{1.4} -\begin{tabular}{ - >{\centering\arraybackslash}p{2.8cm} - >{\centering\arraybackslash}p{6.2cm} - >{\centering\arraybackslash}p{6.2cm} -} -\toprule -\textbf{算法} & \textbf{优势} & \textbf{劣势} \\ -\midrule - -PID 控制算法 & -\begin{itemize}[leftmargin=4mm,noitemsep] - \item 具有较高实时性,平均响应延迟小于 10ms - \item 可直接部署,无需训练过程 - \item 实现逻辑简单,易于嵌入控制系统 -\end{itemize} & -\begin{itemize}[leftmargin=4mm,noitemsep] - \item 缺乏对环境动态变化的适应能力,在复杂障碍场景中成功率较低(仅为 32.7\%) - \item 控制器参数 $K_p, K_i, K_d$ 需人工调节,调优过程依赖经验 - \item 不具备长期路径规划能力,无法处理延迟反馈任务 -\end{itemize} \\ -\midrule - -DQN 算法 & -\begin{itemize}[leftmargin=4mm,noitemsep] - \item 支持离散动作控制,适用于有限动作空间建模(本研究设定 5 类基础动作) - \item 引入经验回放机制,提升训练收敛稳定性 - \item 能有效应对中等复杂度场景,实验成功率达 68.4\% -\end{itemize} & -\begin{itemize}[leftmargin=4mm,noitemsep] - \item 状态空间维度较高时($>10^5$)存在收敛困难 - \item 动作空间离散导致控制精度受限,轨迹易产生抖动 - \item 模型训练周期较长,需超过 $10^5$ 步迭代以获得有效策略 -\end{itemize} \\ -\midrule - -PPO 算法 & -\begin{itemize}[leftmargin=4mm,noitemsep] - \item 原生支持连续动作空间控制,精度可达 $0.1^\circ$ - \item 策略更新过程稳定,适应性强,实验成功率达 89.2\% - \item 可灵活引入多目标优化(如路径平滑、能耗最小化等) -\end{itemize} & -\begin{itemize}[leftmargin=4mm,noitemsep] - \item 策略网络结构较复杂(典型如两层 128 节点全连接网络) - \item 对超参数变化敏感,需精细调整学习率(一般位于 $[10^{-4}, 10^{-3}]$) - \item 对硬件资源需求高,完整训练过程需占用约 6GB GPU 显存 -\end{itemize} \\ -\bottomrule -\end{tabular} -\end{table} - -\section{本章小结} - -本章中基于强化学习的行人控制方法,描述了实验环境Carla的搭建,并选择了现实运用场景较多的城市环境-城市场景作为仿真模型场景,满足了对仿真的复杂性和真实性需求。描述了三种不同算法(分别为PPP、PID和DQN)如何在模型中训练,并使用行人的状态和传感器数据构建模型使其动态交互,从而对智能体进行最好的控制。对比了三种不同算法在不同情况下的避障效果、路径规划效果和稳定性等的优劣,验证了算法的有效性。为后续中强化学习方法和系统的搭建的进一步改进和优化奠定基础。 diff --git a/tactile/undergraduat/content/chapter4.tex b/tactile/undergraduat/content/chapter4.tex deleted file mode 100644 index e42577bd..00000000 --- a/tactile/undergraduat/content/chapter4.tex +++ /dev/null @@ -1,243 +0,0 @@ -\chapter{行人导航系统设计} - -\section{系统设计目标与需求分析} - -本行人导航系统设计目的是城市环境的行人导航,以智能的技术手段,为行人提供绕行障碍物、快速到达目标的路径规划,因此本行走式行人导航系统需满足以下要求:基于用户的起终点坐标信息,规划最短路径,包括:考虑道路距离、行人速度、路况、交通规则;实时感知、规避障碍物(包括其他行人、交通事故、施工工地等)、实时监控周边环境信息并调整路径、应对突发障碍物或路径更改;实时感知周边环境并调整路径和决策。 - -系统主要目标是构建一个可训练、可测试、可交互的行人导航平台,需在复杂动态环境中提供快速、精确、安全的行人导航服务,而这些也是如今虚拟人发展所需要的一个重要技术,可以分为功能需求和非功能需求。 - -\textbf{功能需求}:包括方向控制、速度控制、行走状态切换的真实感行人运动控制;路径规划、躲避障碍任务的学习环境搭建;基于激光雷达和碰撞探测器对动态障碍物进行感知与反馈;图形界面参数设置与训练进程控制。 - -\textbf{非功能需求}:系统应支持在Carla仿真平台运行并具备高鲁棒性与低资源消耗,强化学习训练过程需保持稳定并具备扩展能力,用户交互界面需具有人机交互性强与操作简洁的特点。 - -\section{系统结构设计} - -本系统采用三层结构设计,分别为底层感知层、中间控制逻辑层和用户交互层,各层之间关系如图~\ref{fig:system-architecture}所示: - -\begin{figure}[H] - \centering - \includegraphics[width=1\textwidth]{images/nav_system_architecture.png} - \caption{系统总体结构图} - \label{fig:system-architecture} -\end{figure} - -\textbf{底层感知层}:该层负责Carla仿真平台的连接和初始化传感器,通过Python的API生成行人生成路径采样、目标点采样和路径采样的过程,激光雷达、碰撞传感器实时扫描环境。 - -\textbf{中间控制逻辑层}:该层为系统的内核逻辑层,即定义强化学习环境、奖励函数体系、PPO训练模型等。在学习的回合中,环境返回动作的奖励,并进行状态更新;在推理过程中,策略网络在状态上推理,并进行状态更新。 - -\textbf{用户交互层}:基于PyQt5构建GUI(v1.4版本以优化为基于PyQt6),用户可视化设置参数(如训练步数、目标点、导航模式),并实时查看导航状态、训练进度、路径规划图等。界面还支持导入模型与输出路径记录。如图 \ref{fig:location},当用户点击显示可生成行人位置时,地图上便会出现所有可以用来生成行人位置的地方,以方便用户进行初始地点和目标地点的选取。 - -\begin{figure}[H] - \centering - \includegraphics[width=1\textwidth]{images/location_point.pdf} - \caption{可生成行人位置示意图} - \label{fig:location} -\end{figure} - -\section{模型训练奖励函数设计} - -强化学习任务中奖励函数设计至关重要,在行人导航系统中其直接影响智能体决策行为,合理设计奖励函数是实现高效稳定导航的关键,以下为本系统奖励函数的设计思想与实现细节: - -\subsection{目标达成奖励} -目标达成奖励的目的是鼓励行人尽快接近目标,并在接近时给出更高的奖励。通过根据目标距离的变化量来调整奖励,确保模型能够学习到快速、有效的路径规划。 - -\begin{equation} -R_{\text{target}} = -\begin{cases} -1000 \cdot \mathbb{X}(d_{\text{target}}<3) & \text{终止条件} \\ -\Delta d \times 50 \times \left(1 - \frac{d_{\text{target}}}{100}\right) & \text{常规状态} -\end{cases} -\end{equation} -其中: -\begin{itemize} - \item \( \Delta d = d_{\text{prev}} - d_{\text{target}} \) 表示单步距离变化量 - \item 动态系数强化近距离奖励:\( d_{\text{target}} \) 在 \([0, 100]\) 范围内时,系数从1.0线性衰减至0.0 -\end{itemize} - -\subsection{路径跟踪奖励} -路径跟踪奖励旨在鼓励行人沿着预定的路径行进。通过计算行人与路径的横向偏差来调整奖励,确保行人尽量沿着正确的路线行走。 - -\begin{equation} -R_{\text{path}} = -\begin{cases} -1.5 \cdot \left(1 - \frac{\Delta_{\text{dev}}}{2}\right) & \Delta_{\text{dev}} \leq 2\ \text{m} \\ --1.0 & \Delta_{\text{dev}} > 2\ \text{m} -\end{cases} -\end{equation} -其中: -\begin{itemize} - \item \( \Delta_{\text{dev}} = \left\| \vec{p}_{\text{current}} \times \vec{v}_{\text{forward}} \right\| / \left\| \vec{v}_{\text{forward}} \right\| \) 为路径偏差的计算方法。 -\end{itemize} - -\subsection{安全避障机制} -安全避障机制的目的是通过惩罚碰撞事件和危险距离来确保行人安全,避免与障碍物发生碰撞。 - -\begin{equation} -R_{\text{safety}} = -\begin{cases} --500 \cdot \mathbb{X}_{\text{collision}} & \text{碰撞事件} \\ --\dfrac{0.5}{d_{\text{obs}} + 0.5} & d_{\text{obs}} \leq 2\ \text{m} \\ --(v_{\text{prev}} - v_{\text{curr}}) & \Delta v > 1\ \text{m/s} -\end{cases} -\end{equation} -其中: -\begin{itemize} - \item \( \mathbb{X}_{\text{collision}} \) 表示碰撞事件,碰撞时给予-500的惩罚。 - \item \( d_{\text{obs}} \) 为障碍物的最小距离,若小于2米,则按距离反比例惩罚。 - \item \( \Delta v = v_{\text{prev}} - v_{\text{curr}} \) 为速度变化,若速度骤降超过1米每秒,则给予惩罚。 -\end{itemize} - -\subsection{运动模式优化} -运动模式优化的目的是确保行人的速度保持在合适范围内。通过设定不同速度区间的奖励,鼓励行人在不同距离的情境下选择合适的速度。 - -\begin{equation} -R_{\text{motion}} = -\begin{cases} -0.2 & \text{低速合规}(0.3 \leq v \leq 1.0)\ \cap\ d_{\text{target}} < 5\ \text{m} \\ -0.1 & \text{中速合规}(0.5 \leq v \leq 1.5) \\ --0.2(v-1.0) & \text{超速状态}(v > 1.0)\ \cap\ d_{\text{target}} < 5\ \text{m} -\end{cases} -\end{equation} - -\subsection{时间效率惩罚} -时间效率惩罚的目的是防止模型做出过多无效的移动或徘徊,鼓励快速完成任务。 - -\begin{equation} -R_{\text{time}} = -0.01 \cdot t_{\text{step}} -\end{equation} -其中: -\begin{itemize} - \item 每一步都会施加一个固定的时间惩罚,以鼓励高效的路径规划。 -\end{itemize} - -\subsection{终止条件奖励} -终止条件奖励的目的是当模型达到目标位置时给予额外奖励,或者在碰撞时进行终止。 - -\begin{equation} -R_{\text{terminal}} = -\begin{cases} -+1000 \cdot \mathbb{X}(d_{\text{target}} < 2\ \text{m}\ \cap\ \theta_{\text{error}} < 45^\circ) & \text{精确到达} \\ --500 \cdot \mathbb{X}_{\text{collision}} & \text{碰撞终止} -\end{cases} -\end{equation} -其中: -\begin{itemize} - \item \( \theta_{\text{error}} = \left| \arctan\left(\frac{-\Delta y}{\Delta x}\right) - \theta_{\text{current}} \right| \) 表示当前朝向与目标方向之间的角度偏差。 - \item 双重终止条件确保目标点朝向正确性。 -\end{itemize} - -\subsection{综合奖励架构} -综合奖励架构的目的是将各个独立的奖励信号进行加权求和,形成一个最终的奖励值。这可以确保模型在考虑多个目标时进行平衡。 - -\begin{equation} -R_{\text{total}} = R_{\text{target}} + R_{\text{path}} + R_{\text{safety}} + R_{\text{motion}} + R_{\text{time}} + R_{\text{terminal}} -\end{equation} - -该奖励函数由\( R_{\text{target}} \) 、\( R_{\text{path}} \) 、\( R_{\text{safety}} \) 、\( R_{\text{motion}} \)、 \( R_{\text{time}} \) 、\( R_{\text{terminal}} \)等部分构成,其中 \( R_{\text{target}} \) 为目标达成奖励旨在激励智能体尽快接近导航终点;\( R_{\text{path}} \) 为路径跟踪奖励鼓励智能体沿预设路径平稳前进;\( R_{\text{safety}} \) 为安全奖励用于约束行人规避碰撞与危险区域;\( R_{\text{motion}} \) 为运动模式奖励通过引导合理速度与姿态优化行进行为;\( R_{\text{time}} \) 为时间效率惩罚用于约束过慢行为提升总体路径效率;\( R_{\text{terminal}} \) 为终止条件奖励用于在任务完成时给予最终正向激励。 - -\subsection{具体实现} -通过上述奖励函数的设计,使行人导航系统实现智能体在环境中的避障,快速到达目标,对自身的行动决策方案不断优化来寻找最优路径。本节通过环境中具体场景的设定和相应传感器的帮助完成导航,如:观测空间耦合,动态奖励系数计算,路径可视化等。 - -本系统的路径规划与训练环境具有多项关键特征。观测空间采用12维特征向量形式,集成了局部路径点坐标 \(x_{\text{wp}}, y_{\text{wp}}\)、障碍物距离 \(d_{\text{obs}}\) 等状态信息,增强了状态表示能力与感知精度。奖励函数中引入目标距离因子 \(1 - \frac{d}{100}\),实现奖励强度随导航进展自适应变化,提升训练灵敏度与稳定性。安全机制设计为分层结构,依次包括碰撞检测模块、障碍物距离判断与速度变化分析,三者构成对复杂环境中行人行为的全方位保护。路径点通过Carla平台调试接口实时渲染与可视化,为模型训练提供可观测的反馈支撑。 - -\section{路径规划与避障设计} - -为了实现行人从起点自主导航至终点的位置,本系统基于 Carla 仿真平台的人行道地图信息实现了路径规划模块,并结合激光雷达传感器与碰撞检测机制设计了避障逻辑,从而使得训练与推理过程具备高度的真实交互性与安全性。 - -\subsection{路径规划机制} - -\subsubsection{Waypoint路径规划} - -本系统的v1.2和v1.3版本的路径规划机制采用 Carla 提供的人行道导航信息,基于其地图 Waypoint 系统进行路径规划。行人生成后,通过设定的起点和终点位置,路径规划模块使用以下流程自动生成一条可通行的人行道路径: - -首先将生成的起点与目标位置映射为距离最近的人行道类型(Sidewalk)Waypoint,确保路径生成遵循场景中的通行规则。路径拓展采用基于距离阈值的前向搜索策略,从起点出发调用 \texttt{waypoint.next(distance)} 方法连续生成多个路径点,直到所生成路径接近目标位置为止。所有路径点以 \texttt{planned\_waypoints} 列表形式保存,并通过Carla平台的Debug模块以箭头形式绘制于场景中,提供路径可视化支持与调试依据。 - -该路径规划策略具备多方面优势,能够确保路径始终沿合法人行道生成以避免穿越非通行区域并符合交通规则与仿真约束,同时路径生成精度可通过调整采样分辨率进一步优化以满足不同任务场景精细化需求,遇到异常或失败情况时系统触发回退或重试逻辑以提升整体鲁棒性与容错能力。 - -\begin{figure}[H] - \centering - \includegraphics[width=1\textwidth]{images/path_waypoint1.pdf} - \caption{旧版红色箭头路径示意图} - \label{fig:way1} -\end{figure} - -如图 \ref{fig:way1}所示地图上生成的红色箭头为路径规划标记,因生成箭头限制在 200 个以内且采用强制到达终点设计导致导航路径显得较为生硬,这些可通过后期硬件提升和版本优化改善。 - -\subsubsection{A*启发式搜索算法} - -A*算法是一种启发式搜索算法,用于在加权图中高效寻找两点间最短路径。其核心通过综合评估路径代价优化搜索方向,特征如下: - -\paragraph{算法原理:} -\begin{enumerate} - \item \textbf{代价函数}:算法以总代价函数作为路径评估依据,形式为 - \[ - f(n) = g(n) + h(n) - \] - 其中,$g(n)$表示从起点到当前节点$n$的累计实际代价,$h(n)$表示从节点$n$到目标位置的估算代价,常以欧氏距离进行计算。 - - \item \textbf{数据结构}:算法维护两个核心节点集合。开放列表按照总代价$f(n)$排序,用于存放尚未扩展的节点;封闭列表用于记录已被探索的节点,从而避免重复搜索。 - - \item \textbf{搜索流程}:将起点纳入开放列表后,反复选取总代价最小的节点进行处理,若该节点为目标位置则开始路径回溯,否则扩展其所有邻接节点,更新这些节点的总代价并调整开放与封闭列表。 -\end{enumerate} - -\paragraph{关键性质:} - -\begin{enumerate} - \item \textbf{可接受性}:启发函数必须满足估算代价不超过最短实际代价 - \[ - h(n) \leq h^*(n) - \] - 其中$h^*(n)$为从节点$n$到目标的真实最短代价,此条件保证算法能够得到最优路径。 - - \item \textbf{一致性}:若启发函数满足 - \[ - h(n) \leq c(n, n') + h(n') - \] - 其中$c(n, n')$为节点$n$到其邻接节点$n'$的移动代价,则算法在搜索过程中不会重复扩展任何节点,提升效率。 -\end{enumerate} - -\paragraph{代码实现:} -\begin{enumerate} - \item \textbf{启发函数选择}:使用欧氏距离$h(n) = \|n_{\text{current}} - n_{\text{target}}\|_2$,满足可接受性 - \item \textbf{路径搜索}:调用NetworkX库函数\texttt{nx.astar\_path},输入图结构、起点、终点及启发函数 - \item \textbf{异常处理}:路径搜索失败时记录错误日志,检查起点终点是否位于同一连通子图 -\end{enumerate} - -\begin{figure}[H] - \centering - \includegraphics[width=1\textwidth]{images/path_waypoint2.pdf} - \caption{新版红色箭头路径示意图} - \label{fig:way2} -\end{figure} - -如图 \ref{fig:way2}所示的路径规划机制基于预先生成的静态可行走点构建导航图,通过A*算法实现路径搜索与优化。具体流程如下:可行走点数据从CSV文件加载,每个点包含坐标与唯一索引。利用k近邻方法将每个点与其最近的6个相邻点连接形成无向图,边权重为欧氏距离。通过提取最大连通子图确保路径可达性,避免无效路径生成。A*算法以欧氏距离为启发函数搜索起点至终点的最短路径,调用NetworkX库实现路径节点序列生成。路径需满足长度约束(20-200个点)且起点终点索引必须属于最大连通图合法编号集合。规划结果转换为虚拟路径点序列,行人控制器根据路径点动态设定目标位置。激光雷达实时检测障碍物距离,结合路径偏差计算与强化学习奖励机制调整行人转向及速度。路径可视化通过Carla调试工具实现,红色箭头标记规划路径,绿色点显示行人轨迹,起点与终点分别标注为“Start”和“Goal”,由于此标记为限时显示故此图中未标出,但可以看到一个绿色小点即为初始行人生成点。系统通过合法性检测功能验证路径对有效性,确保训练与演示的可行性。代码核心模块包含图构建、A*搜索、路径更新及控制逻辑,其特点为静态环境假设、障碍物实时避障与多维度可视化支持。图 \ref{fig:perspective1}和图\ref{fig:perspective2}展示了其他视角下路径规划出来的红色箭头,便于用户更直观的理解。 - -\begin{figure}[H] - \centering - \includegraphics[width=1\textwidth]{images/nav_perspective1.pdf} - \caption{起点视角} - \label{fig:perspective1} -\end{figure} - -\begin{figure}[H] - \centering - \includegraphics[width=1\textwidth]{images/nav_perspective2.pdf} - \caption{终点视角} - \label{fig:perspective} -\end{figure} - -\subsubsection{避障与动态反应机制} - -避障模块主要是根据激光雷达传感器从 Carla 平台实时返回的回传点云信息进行避障响应,在每次获取到的点云数据中寻找离障碍物最近点的最小值\texttt{min\_obstacle\_d\\istance},作为当前避障初始化值,若小于 2.0m 则速度减小,将行人的当前避障初始化值减小至小于 0.8m/s,降低行人的碰撞概率。在奖励函数中增加避障的惩罚,如果行人离障碍物太近且速度较快的话,扣减一定的奖励值,从奖励角度避免智能体采取危险动作。同时,如果检测到碰撞传感器,则立即退止出小节,对智能体进行大惩罚(-500),增加对碰撞信息的反馈权重。 - -该机制将传感器、速度控制器、奖励函数调整三个部分算法结合起来,构成一个完整的避障控制算法。Agent在训练中动态复杂的环境中学习如何规划路径,在避障和路径规划之间寻找一个平衡点,使路径规划更安全稳定。 - -\subsection{路径规划与避障的协同工作} - -路径规划模块和避障模块之间是紧密相连的,为了保证路径的安全可靠,行人在沿着规划路径行走的同时,不断在路径中利用激光雷达和碰撞传感器等进行障碍物探测,遇到阻挡物时进行避让处理,避免碰撞,避免偏离规划路径,并在进行避障处理后,路径规划模块及时重新寻找最优路径并继续向着目标路径行走,确保行人在复杂的路径环境中向着目标方向行走,安全有效的完成路径任务。 - -\section{本章小结} - -本章介绍了行人导航系统的设计方案,以构建具备环境感知、路径规划及避障功能的行人智慧导航应用平台作为系统最终目标,对复杂城市场景中的行人导航应用系统进行场景化设计。首先明确了系统实现的快速路径规划、避障感知与避障控制、交互与可视化等主要功能,从非功能性、功能性角度进行系统需求分析;设计感知、控制与交互三部分构成的三层系统模型,对系统各部分进行分工与相互关系说明;设计奖励函数作为强化学习的关键内容,并从实现目标达成、路径追踪、安全规划与效率规划等子问题出发,提升行人导航学习的实时收敛效率;对行人路径规划模型、避障控制策略与训练环境设置等核心实现部分进行描述,为之后实验分析及模型效果评估提供系统平台。 - - diff --git a/tactile/undergraduat/content/chapter5.tex b/tactile/undergraduat/content/chapter5.tex deleted file mode 100644 index 3ebbb9db..00000000 --- a/tactile/undergraduat/content/chapter5.tex +++ /dev/null @@ -1,152 +0,0 @@ -\chapter{行人导航系统实现} - -\section{编码与实现} - -\subsection{环境模块实现} - -底层的系统环境包含一个\texttt{EnhancedPedestrianEnv}类,它是系统和虚拟仿真平台交互的底座。实现系统与虚拟仿真平台的稳定连接CarIa、地图的加载、模拟行人对象的生成与销毁、路径上起终点的设置、路径上的规划与可视化、路径上搜索时的反馈信息以及智能体对环境的感知;通过合理编码状态空间、运行控制动作、为后续算法学习和策略推理提供支持。 - -\subsection{奖励函数实现} - -为了能够使智能体顺利地在复杂环境中完成导航任务以及避开障碍物,设计了一系列的奖励项,由于是目标导向,当智能体到达终点就给予+1000的奖励,同时为了使智能体在到达终点之前不能偏离轨迹,设计了一个在智能体偏离轨迹时就会给-500的奖励项,这个奖励项可以约束智能体沿着预设的轨迹前进,此外,在智能体与障碍物发生碰撞后给予-500的重奖,可以减少危险动作;对于智能体的避障动作以及智能体移动的速度给予奖励,使智能体在完成避障的同时以较快的速度前进,确保智能体的导航效率。 - -\subsection{PPO模型集成} - -本系统采用\texttt{Stable-Baselines3}库中实现的 PPO算法作为主要控制策略模型。该算法在高维状态空间中表现出良好的稳定性和适应性,适用于本项目中的行人控制任务。完成状态空间与动作空间的定义后,系统对算法进行封装并结合\texttt{DummyVecEnv}接口进行训练,使模型能够连续接收来自环境的状态输入并输出相应动作决策。训练完成后,模型保存为\texttt{.zip}文件格式,以便后续部署与调用。 - -\subsection{GUI实现} - -系统界面基于 PyQt6 开发,提供图形化操作平台,详情的用户界面截图可见附录。界面支持模型训练的控制与管理,实时显示路径导航信息,支持模型文件的导入操作,并可直接启动仿真过程。同时,日志信息以可视化方式输出,方便开发者监控系统运行状态并进行调试,提升整体使用体验。 - -\section{系统测试} - -\subsection{测试方法} - -为确保系统完整性可靠性进行测试工作采用模块单元测试与集成系统测试结合的方式。路径生成模块测试首先测试在起点终点不同组合下均能规划出一条路径,以验证路径算法的跨场景适用性,如图 \ref{fig:progress_bar}所示即在路径点范围内可用路径。 - -\begin{figure}[H] - \centering - \includegraphics[width=1\textwidth]{images/available_path.pdf} - \caption{可用路径} - \label{fig:available_path} -\end{figure} - -其次,对传感器测试感知,分别测试激光雷达和碰撞检测模块,通过不同障碍物触发条件测试激光雷达和碰撞检测模块是否及时响应和记录事件,测试传感器的数据逻辑是否处理正确。再次,奖励系统,通过不同的典型情况测试实际输出的奖励值是否和设计一致,如达到目标、偏离路径、发生碰撞、避障成功,判断奖励的激励是否合理。最后,界面交互,测试用户的操作是否被正确操作执行,各个交互按键是否正常执行,导航的路径是否正常显示在界面上,日志和状态的输出是否正常显示在界面上,测试图形界面是否完整,交互可用,通过如图 \ref{fig:progress_bar}所示的进度条管理来反馈此时的训练进程给用户。 - -\begin{figure}[H] - \centering - \includegraphics[width=1\textwidth]{images/progress_bar.pdf} - \caption{运行进度条} - \label{fig:progress_bar} -\end{figure} - -\subsection{测试结果} - -系统经不同路径,场景的测试,在路径规划、障碍检测、UI交互、奖励回馈等关键方面都具备较强的稳定性、高效性。表 \ref{tab:test-results} 汇总了主要测试模块的结果。 - -\begin{table}[H] - \centering - \caption{系统测试结果汇总} - \label{tab:test-results} - \renewcommand{\arraystretch}{1.3} - \begin{tabular}{ - >{\centering\arraybackslash}p{4cm} - >{\centering\arraybackslash}p{3cm} - >{\centering\arraybackslash}p{6cm} - } - \toprule - \textbf{测试模块} & \textbf{结果} & \textbf{备注} \\ - \midrule - 路径规划 & 成功 & 最长路径点数 96 个 \\ - 避障检测 & 正确响应 & 成功避障率 95\% \\ - GUI 交互 & 正常 & 控件无卡顿 \\ - 奖励反馈 & 正确计算 & 终止条件有效 \\ - \bottomrule - \end{tabular} -\end{table} - -路径规划实验过程中,所有起始点和目标点都不相同的情况下,都能够规划出一条路径,路径最长点数为96,表明路径规划算法适应性强,稳定性好。避障检测实验,分别设置不同种类的静态、动态障碍物,系统检测与避障均能够被触发,系统避障率为95\%,表明避障检测实验能够较好检测到障碍物,对环境的适应性强。图形界面操作实验测试,交互按键均能够被系统快速识别,系统的训练、导入、模拟等操作没有出现卡帧、延时情况,图形界面显示的按键都能正常使用,系统交互操作较为稳定。奖励反馈方面,系统在满足结束条件(到达、碰撞)时均能够及时显示出相应的结果与惩罚,系统奖励与惩罚功能逻辑清晰准确,且稳定工作,对智能体的学习具有较好的指导意义。 - -\section{系统数据管理} - -行人在进行导航系统的训练与测试中,会涉及到大量与行走、路径规划、避障、强化学习相关的数据,为了便于保存,便于统一管理,便于后期分析,设计了轻量级数据库。 - -本节介绍数据库架构、数据来源、表结构设计、记录逻辑以及数据库在模型训练与评估中的应用。 - -\subsection{地图与可行走区域设置} - -导航系统使用CARLA平台中的Town01地图作为基础环境,地图结构包含道路、建筑、人行道与交通标志等元素。为构建有效导航起点与终点,系统预先提取可行走区域点集,并将其以CSV格式保存为walkable\_points\_Town01.csv。该文件记录了地图中经过筛选的可通行坐标点,字段包含x、y、z三维坐标,其中z值统一为0.3表示地面层高度,如下表所示。 - -\begin{table}[H] - \centering - \caption{部分可通行坐标点数据表} - \label{tab:coord_data} - \begin{tabular}{cccc} - \toprule - index & $x$ & $y$ & $z$ \\ - \midrule - 0 & 335.4899 & 273.7433 & 0.3000 \\ - 5 & 272.2900 & 59.3301 & 0.3000 \\ - 6 & 272.2900 & 55.8400 & 0.3000 \\ - 9 & 202.5500 & 59.3301 & 0.3000 \\ - 10 & 202.5500 & 55.8400 & 0.3000 \\ - 11 & 92.1100 & 227.2200 & 0.3000 \\ - 13 & 191.0800 & 55.8400 & 0.3000 \\ - 17 & 158.0800 & 27.1800 & 0.3000 \\ - 18 & 295.0818 & 199.0603 & 0.3000 \\ - 19 & 295.0818 & 195.5703 & 0.3000 \\ - \bottomrule - \end{tabular} -\end{table} - -地图的原始格式存储为.pcd和.bin文件,分别表示点云文件和生成地图路径图文件,在路径生成和障碍物探测方面进行。根据实际情况,有些区域障碍物比较多,系统就跳过障碍物,路径生成以目标点在无障碍的区域内为原则。 - -\subsection{模型与数据融合} - -系统采用PPO强化学习算法进行路径控制训练,训练过程中使用EnhancedPedestrianEnv作为交互环境,执行策略动作后将轨迹反馈、奖励变化与环境观测存储至数据库。模型训练模块封装于TrainingWrapper类,周期性保存模型参数至.zip格式,并记录每轮训练的统计指标。 - -系统训练流程中由trajectory\_log写入路径轨迹,collision\_events记录碰撞反馈,training\_summary跟踪整体表现。模型文件最终保存为pedestrian\_ppo.zip,包含策略网络权重与环境配置,便于复现与迁移。图\ref{fig:progress_bar}即为保存下来的模型压缩包内部文件。 - -\begin{figure}[H] - \centering - \includegraphics[width=1\textwidth]{images/model.pdf} - \caption{模型文件} - \label{fig:model} -\end{figure} - -GUI系统提供演示功能,加载模型并自动运行路径导航,期间继续采集数据并补充至数据库,支持实验复验与可视化重构。 - -该流程构建数据生成、模型训练与效果评估闭环,数据库不仅承担记录任务还作为策略分析与系统评估的基础核心。 - -\section{系统部署与维护} - -\subsection{部署方案} - -本文系统支持本地部署,硬件环境推荐 CPU 为英特尔 i7、硬盘 16G 及以上,部署前需预先安装 Carla 仿真平台及 PyQt6、stable-baselines3、gymnasium 等 Python 依赖库以确保系统正常运行,整个部署流程简洁,用户可按附录用户手册操作,主要步骤如下: - -\begin{enumerate} - \item 启动 Carla 仿真服务以初始化虚拟环境; - \item 运行系统图形界面程序,进入主控制面板; - \item 在界面中选择起始点与目标点,用户可选择重新训练强化学习模型,或加载已有模型直接进入导航仿真流程。 -\end{enumerate} - -上述部署过程可在具备基础开发经验的条件下快速完成,模块化架构设计也为系统的跨平台适配与扩展提供了便利。 - -\subsection{后期维护与优化} - -系统发生的所有重要的事件、状态的日志被记录在日志系统中,并且在图形化界面的状态栏中显示,如图 \ref{fig:gui-log} 所示。日志显示系统正在进行什么操作,或者检测到错误正在报警。当系统检测到错误或者报警时,在系统中会出现位置和类型,开发人员可以依据位置在源代码中定位修复错误。 - -\begin{figure}[H] - \centering - \includegraphics[width=1\textwidth]{images/gui_log.pdf} - \caption{日志显示截图} - \label{fig:gui-log} -\end{figure} - -为了提高系统可维护性,源程序的结构采用模块式的结构,对系统进行数据处理、策略学习、图形界面、仿真交互的划分,降低了它们之间的耦合性,让用户在维护的过程中便于对系统进行修改,并且便于使用者对系统进行个性化修改。 - -在完善方面,系统是可拓展的,后续可以设计多智能体协作,在更密集的交通环境中展开行人合作博弈实验;系统可以加载更复杂的仿真地图(Town02、Town03、Town04、Town05、Gender5),进一步测试模型在高密度交通环境中的泛化能力。同时,通过结合目标检测(如YOLO系列),动态识别对象、设计行为预测模块实现前瞻性规避障碍策略,能进一步提升系统应对动态变化的鲁棒性与智能性。 - -\section{本章小结} - -本章主要对行人导航系统的具体搭建进行详细说明,在虚幻引擎和Carla的基础上,对系统的环境生成、模型部署、界面设计、数据管理等进行了实现。首先对系统的代码流程以及具体模块进行介绍,完成了PPO模型的部署以及多维奖励函数,然后设计了键盘和GUI操作进行用户体验,最后完成了仿真环境内行人导航过程的显示。最后对路径长短、避障情况和路径正确与否等指标进行了测试和分析,在系统具体实现方面,本文对系统复杂环境的适应性以及可靠性进行了证明,对日后的研究工作有很大的借鉴意义。本章完成了系统的初步实现,为之后系统分析工作做出了铺垫。本系统的初步实现说明系统具备一定的完整性和可开发性,之后可以进行系统分析和系统改进工作。 diff --git a/tactile/undergraduat/content/chapter6.tex b/tactile/undergraduat/content/chapter6.tex deleted file mode 100644 index 57ec0537..00000000 --- a/tactile/undergraduat/content/chapter6.tex +++ /dev/null @@ -1,35 +0,0 @@ -\chapter{结果与展望} - -\section{实验结果} - -本文以CARLA模拟平台为实验环境,采用先进的基于增强学习算法训练行人路径规划模型的方法,构建可规避障碍物从而提升行人步行效率和步行安全的深度学习行人路径规划系统,通过多种天气、多种时间、多种交通密度等多种情况下的训练和实验,确保了其在各种复杂情况下的表现,取得了可供借鉴的实验效果,为行人路径规划研究提供参考意义。 - -1.\textbf{训练过程与效果:} - -本项目基于 CARLA 仿真平台设计实现行人导航系统,运用 PPO、DQN、PID 等多种强化学习算法训练行人移动并开展不同策略对比实验,结果显示基于 PPO 和 DQN 的模型在避障与目标导航任务中性能优异,不同训练阶段行人导航的成功率、路径效率和速度等指标有效提升,PPO 算法使行人在复杂环境中较稳定避障并快速找到目标位置,DQN 模型目标导向性和避障灵活性好但在复杂障碍物环境中响应迟缓,PID 控制策略稳定性高但面对多变障碍物灵活性不足。实验核心是用强化学习算法控制行人在模拟环境行进并避障,基于 PPO 算法训练行人模型并设置多场景模拟现实情况,训练中模型逐渐适应环境变化且多数情况下成功完成起点到目标的导航,PPO 算法适应能力良好,训练中模型提升对障碍物的感知与避让能力和行进效率,数万步训练后行人模型能在给定环境高效避开车辆、行人等动态障碍物到达目标位置。 - -2.\textbf{模型评估与性能分析:} - -通过测试在训练后模型在实际场景中的表现来验证模型的关键性指标,模型在复杂、动态的场景中能迅速规划出有效路径并规避无效绕行停顿,在可接受的时间内到达目标点;不受行人、车辆等其他动态障碍物的干扰有良好的避障能力,通过多次训练来适应各种障碍物所处位置和运动趋势而规划出正确路径避免碰撞。模型采用 PPO 算法在训练过程中稳定高效,训练通过几步就靠近最终目标,一般可以无碰撞在多个实验环境中达成目标。为了充分验证模型性能,评估了从简单到复杂多个难度等级的多种环境,训练后模型行人模型在复杂城市街道场景和简单开放场景中的成功率都很高,模型验证了复杂度不高的鲁棒性。 - -3.\textbf{实时控制效果:} - -模型训练后,在真实场景下仿真测试,检测实时控制效果。实时路径控制通过实时环境信息调整行人行走的速度和方向,确保行人方向可以正确避开障碍物并朝目标方向行进。模型在多种实验条件下均很好适应环境信息的变化,在复杂多变的障碍物场景中或环境信息切换的情况下,均能很好适应环境信息变化。 - -\section{未来工作与展望} - -虽然本论文完成了基于强化学习的行人导航控制系统,并在多个仿真环境中得到了比较满意的实验结果,但是仍有很多方面需要继续完善和改进。未来的研究工作可以从以下几个方向进行深入探索和扩展: - -1.\textbf{优化和增强算法:}本次研究中的 PPO 算法控制较好,但是也存在局限性,面对更难的交通场景,在完成训练并收敛需要耗费较长时间,后续研究可以将其与深度 Q 网络、基于模型的强化学习等算法结合,提高训练效率,加速收敛。深度 Q 网络、基于模型的强化学习等算法可继续研究,将其和 PPO 结合,可以提升算法在复杧行为环境中的算法性能,或者将混合强化学习的算法进行结合更多的场景,更为复杂的环境。 - -2.\textbf{多智能体协作与调度:}目前学术界和工业界研究重点多集中于单一行人导航控制技术,而随着智慧城市与智能交通系统的发展进步,未来研究方向有望拓展至多智能体系统。在多智能体系统中多个行人、车辆及其他智能体间的协作愈发关键,因此研究多人环境中行人与行人、行人与车辆的协作协调机制十分重要。采用多智能体强化学习(MARL)方法模拟不同智能体相互作用并优化其路径选择以提高系统运行效率是一个潜在研究方向。 - -3.\textbf{传感器环境认知能力提升:}已有的研究多使用激光雷达、摄像头这两种常用传感器进行感知认知,在后续的研究中可以引入更多种类的传感器来增强行人智能体对环境的感知能力,例如深度摄像头、红外传感器等。这些高层次的传感器能够提供低光、雨雾雪情况下更丰富的环境数据,感知能力增强后可以辅助行人智能体实现更好的避障、减少碰撞、获得更丰富更准确的环境信息,而环境信息又对智能体的路径规划决策起重要作用,辅助智能体更智能的规划出最优路径、提高效率、保障安全。 - -4.\textbf{复杂场景的应用与测试:}当前实验包括不同环境、不同障碍物等情况,由于仿真的限制,无法对真实场景中复杂的真实影响因素进行考验,今后工作中将系统投入到真实世界,在城市道路、繁忙地点、各种公共场所等复杂交通环境对实际障碍物更加复杂的情况进行考验,同时考虑交通环境中天气、光线等复杂影响因素对系统的影响。行人控制系统在真实世界的实时性和稳定性有更多考验,如何在实时高效率寻路的同时对复杂的外界变化进行处理是今后工作中的重点。 - -5.\textbf{集成与系统优化:}智能城市与自动驾驶技术的进步普及对行人导航控制系统提出多系统集成需求,需与自动驾驶、交通管理等系统协同以确保行人在自动驾驶环境中与车辆及其他元素协调共存,这成为未来研究的重要焦点。硬件部署、通信延迟、传感器精度等技术细节深刻影响系统实际应用效果,有效开展系统集成与优化以保障行人安全和交通流畅是未来研究不可忽视的关键课题。 - -\section{结论} - -本研究应用强化学习领域的 PPO 算法,基于 CARLA 平台开发行人路径规划与障碍物规避控制系统,通过模型训练及测试验证了系统在复杂环境中的稳定性与避障能力。未来研究将围绕算法改进、传感器算法优化、多智能体合作及实际场景测试展开,以拓展系统在实际应用中的广度与深度,适应更广泛环境。随着技术进步与多学科交叉融合,基于智能算法的行人控制系统在智能交通和智慧城市建设中的重要性愈发凸显,将为城市交通智能化与安全化发展贡献重要价值。​ \ No newline at end of file diff --git a/tactile/undergraduat/content/cmdel.bat b/tactile/undergraduat/content/cmdel.bat deleted file mode 100644 index c9642e0a..00000000 --- a/tactile/undergraduat/content/cmdel.bat +++ /dev/null @@ -1,2 +0,0 @@ -del /a /f *.xml *.bcf *.out *.log *.sav *.gz *.aux *.bbl *.bak *.dvi *.blg - diff --git a/tactile/undergraduat/content/content.tex b/tactile/undergraduat/content/content.tex deleted file mode 100644 index 6c2cd357..00000000 --- a/tactile/undergraduat/content/content.tex +++ /dev/null @@ -1,29 +0,0 @@ -%!TEX root = ../hutbthesis_main.tex - -%子章节为了便于查找和修改,建议通过input拆分文件 - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\input{content/chapter1.tex} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\input{content/chapter2.tex} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\input{content/chapter3.tex} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\input{content/chapter4.tex} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\input{content/chapter5.tex} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\input{content/chapter6.tex} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/tactile/undergraduat/content/cover.tex b/tactile/undergraduat/content/cover.tex deleted file mode 100644 index c172eec7..00000000 --- a/tactile/undergraduat/content/cover.tex +++ /dev/null @@ -1,24 +0,0 @@ -%!TEX root = ../hutbthesis_main.tex -% 文章信息(同时也是页眉) -\titlecn{基于虚幻引擎的行人强化学习控制和导航系统} -\headertitle{湖南工商大学毕业论文} -\titleen{Hunan University of Technology and Business Thesis \LaTeX{} Template v2.0} - - -%\minormajor{通信工程} -%\interestmajor{通信工程} -\author{张瀚驰} -\subsupervisor{} -\studentid{2123030023} -\priormajor{大数据与人工智能} -\myclass{数智2101班} -\supervisor{王海东} -\title{讲师} -\department{人工智能与先进计算学院} -\thesisdate{year=2025, month=5} - -%以下的对本科生没有用 -\clcnumber{TP391} % 中图分类号 Chinese Library Classification -\schoolcode{10533} % 学校代码 -\udc{004.9} % UDC -\academiccategory{学术学位} % 学术类别 diff --git a/tactile/undergraduat/content/declarationzh.tex b/tactile/undergraduat/content/declarationzh.tex deleted file mode 100644 index b617c7d6..00000000 --- a/tactile/undergraduat/content/declarationzh.tex +++ /dev/null @@ -1,28 +0,0 @@ -%!TEX root = ../hutbthesis_main.tex - -\begin{declarationzh} - -本人郑重声明:所呈交的本科毕业论文是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议,除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品成果。 -对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。 -本人完全意识到本声明的法律结果由本人承担。 -\\ -\\ -\\ -\\ -\\ -\\ -\\ -\\ - - \vspace{30pt} - \begin{tabular}{ll} - %\renewcommand{\arraystretch}{2} - \makebox[4em][s]{作者签名:} & \makebox[100pt][c]{ } \\ - \\ - \makebox[2em][s]{日期:} & - \makebox[100pt][c]{\qquad 年\quad 月\quad 日 } \\ - \end{tabular} - - - -\end{declarationzh} diff --git a/tactile/undergraduat/content/info.tex b/tactile/undergraduat/content/info.tex deleted file mode 100644 index 17f826ad..00000000 --- a/tactile/undergraduat/content/info.tex +++ /dev/null @@ -1,16 +0,0 @@ -%!TEX root = ../csuthesis_main.tex -% 文章信息 -\titlecn{湖南工商大学大学学位论文 \LaTeX{} } -\titleen{Hunan University Of Technology and Business Thesis \LaTeX{} } - -\priormajor{} -\minormajor{} -\interestmajor{} -\author{张瀚驰} -\supervisor{王海东\ 讲师} -\subsupervisor{} -\department{人工智能与先进计算学院} -\studentid{2123030023} -\thesisdate{year=2025,month=5} -\myclass{大数据与人工智能} - diff --git a/tactile/undergraduat/content/reference.bib b/tactile/undergraduat/content/reference.bib deleted file mode 100644 index 588035ad..00000000 --- a/tactile/undergraduat/content/reference.bib +++ /dev/null @@ -1,338 +0,0 @@ -@article{qian2024sac, - author = {钱立军 and 宣亮 and 陈健 and others}, - title = {基于SAC算法的多交叉口交通信号控制研究}, - journal = {天津大学学报(自然科学与工程技术版)}, - year = {2024}, - volume = {57}, - number = {1}, - pages = {105--111} -} - -@article{wei2021survey, - author = {Wei, H and Zheng, G and Gayah, V and others}, - title = {Recent advances in reinforcement learning for traffic signal control: A survey of models and evaluation}, - journal = {ACM SIGKDD Explorations Newsletter}, - year = {2021}, - volume = {22}, - number = {2}, - pages = {12--18} -} - -@article{tao2024motion, - author = {陶幸 and 俞帆山 and 宋越杰 and others}, - title = {基于惯性传感器的免对准动作的人体上肢运动捕捉方法}, - journal = {飞控与探测}, - year = {2024}, - volume = {7}, - number = {2}, - pages = {28--35} -} - -@inproceedings{chen2018ionet, - author = {Chen, Chao and Lu, Xiaoxuan and Markham, Andrew}, - title = {IONet: Learning to cure the curse of drift in inertial odometry}, - booktitle = {Proceedings of the 32nd AAAI Conference on Artificial Intelligence}, - year = {2018}, - pages = {3146--3152}, - location = {New Orleans, USA}, - series = {AAAI'18} -} - -@inproceedings{herath2020ronin, - author = {Herath, S and Yan, H and Furukawa, Y}, - title = {RoNIN: Robust neural inertial navigation in the wild: Benchmark, evaluations, \& new methods}, - booktitle = {Proceedings of the 2020 IEEE International Conference on Robotics and Automation (ICRA)}, - year = {2020}, - location = {Paris, France}, - pages = {3146--3152} -} - -@article{liu2020tlio, - author = {Liu, W and Caruso, D and Ilg, E and others}, - title = {TLIO: Tight learned inertial odometry}, - journal = {IEEE Robotics and Automation Letters}, - year = {2020}, - volume = {5}, - number = {4}, - pages = {5653--5660} -} - -@article{mnih2013dqn, - author = {Mnih, V and Kavukcuoglu, K and Silver, D and others}, - title = {Playing Atari with deep reinforcement learning}, - journal = {arXiv preprint arXiv:1312.5602}, - year = {2013}, - eprint = {arXiv:1312.5602} -} - -@article{yazdani2023ivpl, - author = {Yazdani, M and Sarvi, M and Bagloee, S A and others}, - title = {Intelligent vehicle pedestrian light (IVPL): A deep reinforcement learning approach for traffic signal control}, - journal = {Transportation Research Part C: Emerging Technologies}, - year = {2023}, - volume = {149}, - pages = {103991} -} - -@article{zhang2019pedestrian, - author = {Zhang, Y and Zhang, Y and Su, R}, - title = {Pedestrian-safety-aware traffic light control strategy for urban traffic congestion alleviation}, - journal = {IEEE Transactions on Intelligent Transportation Systems}, - year = {2019}, - volume = {22}, - number = {1}, - pages = {178--187} -} - -@inproceedings{mourikis2007msckf, - author = {Mourikis, A I and Roumeliotis, S I}, - title = {A multi-state constraint Kalman filter for vision-aided inertial navigation}, - booktitle = {Proceedings of the IEEE International Conference on Robotics and Automation}, - year = {2007}, - location = {Rome, Italy}, - pages = {3565--3572} -} - -@article{zhao2014crossing, - author = {赵靖 and 马万经 and 杨晓光}, - title = {考虑下游交叉口的路段行人过街优化控制模型}, - journal = {同济大学学报(自然科学版)}, - year = {2014}, - volume = {42}, - number = {10}, - pages = {1536--1542} -} - -@article{foxlin2005tracking, - author = {Foxlin, E}, - title = {Pedestrian tracking with shoe-mounted inertial sensors}, - journal = {IEEE Computer Graphics and Applications}, - year = {2005}, - volume = {25}, - number = {6}, - pages = {38--46} -} - -@article{campos2021orbslam3, - author = {Campos, C and Elvira, R and Rodr{\'i}guez, J J G and others}, - title = {ORB-SLAM3: An accurate open-source library for visual, visual-inertial, and multimap SLAM}, - journal = {IEEE Transactions on Robotics}, - year = {2021}, - volume = {37}, - number = {6}, - pages = {1874--1890} -} - -@article{guo2020pdr, - author = {Guo, S and Zhang, Y and Gui, X and others}, - title = {An improved PDR/UWB integrated system for indoor navigation applications}, - journal = {IEEE Sensors Journal}, - year = {2020}, - volume = {20}, - number = {14}, - pages = {8046--8061} -} - -@article{wang2023llio, - author = {Wang, Y and Kuang, J and Niu, X and others}, - title = {LLIO: Lightweight learned inertial odometer}, - journal = {IEEE Internet of Things Journal}, - year = {2023}, - volume = {10}, - number = {3}, - pages = {2508--2518} -} - -@inproceedings{simonyan2014action, - author = {Simonyan, K and Zisserman, A}, - title = {Two-stream convolutional networks for action recognition in videos}, - booktitle = {Advances in Neural Information Processing Systems}, - year = {2014} -} - -@article{bochkovskiy2020yolov4, - author = {Bochkovskiy, A and Wang, C Y and Liao, H}, - title = {YOLOv4: Optimal speed and accuracy of object detection}, - journal = {arXiv preprint arXiv:2004.10934}, - year = {2020}, - eprint = {arXiv:2004.10934} -} - -@article{arulkumaran2017deeprl, - author = {Arulkumaran, K and Deisenroth, M P and Brundage, M and others}, - title = {Deep reinforcement learning: A brief survey}, - journal = {IEEE Signal Processing Magazine}, - year = {2017}, - volume = {34}, - number = {6}, - pages = {26--38} -} - -@article{ren2017fasterrcnn, - author = {Ren, S and He, K and Girshick, R and others}, - title = {Faster R-CNN: Towards real-time object detection with region proposal networks}, - journal = {IEEE Transactions on Pattern Analysis and Machine Intelligence}, - year = {2017}, - volume = {39}, - number = {6}, - pages = {1137--1149} -} - -@article{redmon2017yolo9000, - author = {Redmon, Joseph and Farhadi, Ali}, - title = {YOLO9000: Better, faster, stronger}, - journal = {IEEE Transactions on Pattern Analysis and Machine Intelligence}, - year = {2017}, - volume = {39}, - number = {6}, - pages = {6517--6525} -} - -@article{reid1980tracking, - author = {Reid, D B}, - title = {An algorithm for tracking multiple targets}, - journal = {IEEE Transactions on Automatic Control}, - year = {1980}, - volume = {24}, - number = {6}, - pages = {843--854} -} - -@article{howard2017mobilenets, - author = {Howard, A G and Zhu, M and Chen, B and others}, - title = {MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications}, - journal = {arXiv preprint arXiv:1704.04861}, - year = {2017}, - eprint = {arXiv:1704.04861} -} - -@article{dai2017temporalcontext, - author = {Dai, X and Singh, B and Zhang, G and others}, - title = {Temporal Context Network for Activity Localization in Videos}, - journal = {IEEE Transactions on Pattern Analysis and Machine Intelligence}, - year = {2017} -} - -@article{lian2023inverseql, - author = {Lian, B and Xue, W and Xie, Y and others}, - title = {Off-policy inverse Q-learning for discrete-time antagonistic unknown systems}, - journal = {Automatica}, - year = {2023}, - volume = {155}, - pages = {111171} -} - -@article{clifton2020qlearning, - author = {Clifton, J and Laber, E}, - title = {Q-learning: Theory and applications}, - journal = {Annual Review of Statistics and Its Application}, - year = {2020}, - volume = {7}, - pages = {279--301} -} - -@article{zhang2023shapeiou, - author = {Zhang, H and Zhang, S J}, - title = {Shape-IoU: More accurate metric considering bounding box shape and scale}, - journal = {arXiv preprint arXiv:2312.17663}, - year = {2023}, - eprint = {arXiv:2312.17663} -} - -@article{wang2013densetrajectory, - author = {Wang, H and Kläser, A and Schmid, C and others}, - title = {Dense trajectories and motion boundary descriptors for action recognition}, - journal = {International Journal of Computer Vision}, - year = {2013}, - volume = {103}, - number = {1}, - pages = {60--79} -} - -@article{dsryolo2025, - author = {Anonymous}, - title = {DSR-YOLO: A lightweight and efficient YOLOv8 model for enhanced pedestrian detection}, - journal = {Cognitive Robotics}, - year = {2025}, - volume = {8}, - number = {4}, - pages = {105--120}, - note = {DOI: 10.1016/j.cogrob.2025.04.005} -} - -@article{ye2023fusion, - author = {Ye, Junhua}, - title = {Research on multi-sensor fusion pedestrian navigation and localization algorithm based on intelligent terminal}, - journal = {Acta Geodaetica et Cartographica Sinica}, - year = {2023}, - volume = {52}, - number = {1}, - pages = {170--170}, - doi = {10.11947/j.AGCS.2023.20210188} -} - -@inproceedings{luo2023adaptive, - author = {Luo, X. and Chen, W.}, - title = {Adaptive road configurations for improved autonomous vehicle-pedestrian interactions using reinforcement learning}, - booktitle = {Proceedings of the IEEE International Conference on Robotics and Automation}, - year = {2023}, - pages = {3146--3152}, - location = {London, UK} -} - -@techreport{sti2025, - author = {Shanghai Jiao Tong University}, - title = {STI-Bench: Are MLLMs Ready for Precise Spatial-Temporal World Understanding?}, - institution = {MIRA Lab}, - year = {2025}, - url = {https://arxiv.org/pdf/2503.23765} -} - -@patent{xiamen2025, - author = {Xiamen Road and Bridge Information Co., Ltd.}, - title = {Collision prediction method and system based on multi-agent reinforcement learning}, - number = {CN119091686B}, - year = {2025}, - date = {2025-01-29} -} - -@article{zhang2025traffic, - author = {Zhang, Q. and Lin, B.}, - title = {Joint imputation of multi-source traffic data based on shared multi-dimensional spatiotemporal feature}, - journal = {Journal of Sun Yat-sen University (Natural Science Edition)}, - year = {2025}, - volume = {63}, - number = {5}, - pages = {167--176} -} - -@article{changsha2021, - author = {Yuan, W.}, - title = {Intelligent pedestrian integrated signal light system in Changsha}, - journal = {Changsha Evening News}, - year = {2021}, - url = {http://hunan.sina.com.cn/news/2021-12-23/detail-ikyakumx5846490.shtml} -} - -@article{chen2025moo, - author = {Chen, W. and Zhang, X. and Lin, B.}, - title = {Gradient-based multi-objective deep learning: Algorithms, theories, applications, and beyond}, - journal = {arXiv preprint arXiv:2501.10945}, - year = {2025} -} - -@misc{openhutb2025, - author = {OpenHutB}, - title = {CARLA 行人导航教程[EB/OL]}, - howpublished = {\url{https://openhutb.github.io/carla_doc/tuto_G_pedestrian_navigation/}}, - year = {2025}, - note = {访问日期: 2025-04-27} -} - -@misc{csdn2023carla, - author = {CSDN 博客}, - title = {Carla 行人模型介绍与使用[EB/OL]}, - howpublished = {\url{https://blog.csdn.net/weixin_44983780/article/details/137682087?ops_request_misc=&request_id=&biz_id=102&utm_term=carla%E8%A1%8C%E4%BA%BA%E6%A8%A1%E6%8B%9F&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-137682087.142\^v102\^control&spm=1018.2226.3001.4187}}, - year = {2023}, - note = {访问日期: 2025-04-27} -} diff --git a/tactile/undergraduat/github/workflows/latex.yml b/tactile/undergraduat/github/workflows/latex.yml deleted file mode 100644 index 22a9393b..00000000 --- a/tactile/undergraduat/github/workflows/latex.yml +++ /dev/null @@ -1,27 +0,0 @@ - -name: latex Windows CI/CD - -on: - push: - branches: - - "*" - pull_request: - branches: - - master - -jobs: - windows-dev: - name: Windows CI/CD - timeout-minutes: 1440 - runs-on: self-hosted:windows - - steps: - - name: Checkout repository - uses: actions/checkout@v5 - with: - fetch-depth: 0 - - - name: build - run: | - call build_latex_tactile.bat - shell: cmd \ No newline at end of file diff --git a/tactile/undergraduat/hutbthesis.cls b/tactile/undergraduat/hutbthesis.cls deleted file mode 100644 index ab75e033..00000000 --- a/tactile/undergraduat/hutbthesis.cls +++ /dev/null @@ -1,1264 +0,0 @@ -% -% 本模版根据湖南工商大学本科生学位论文撰写规范创建 -% 论文内容一般应由十一个主要部分组成,依次为: -% 1.封面 -% 2.中文摘要; -% 3.英文摘要; -% 4.目录; -% 5.符号说明(必要时); -% 6.论文正文; -% 7.参考文献; -% 8.致谢。 -% -% -% 重构 -% 参考CSU Thesis,以及SJTU Thesis和WHU Thesis Latex模板进行重构。 - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% 声明部分(Identification) -% -% 指定模板使用的 Latex 版本,标识输出模板名 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\NeedsTeXFormat{LaTeX2e} -\ProvidesClass{hutbthesis}[v0.1, edited by tp2008] - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% 预先定义(Preliminary declarations) -% -% 定义kv对,在模板文件中使用的指令并引入依赖的包 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - -% 定义一些命令用于写文档 -% /cs 在ltxdoc 包中也提供,剩下是自定义的 -% 借鉴自thuthesis和ustcthesis模板 -\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}} -\DeclareRobustCommand\file{\nolinkurl} -\DeclareRobustCommand\env{\textsf} -\DeclareRobustCommand\pkg{\textsf} -\DeclareRobustCommand\cls{\textsf} - -% 模板类型选取 -\newif\ifhutb@type@bachelor -\hutb@type@bachelortrue -\newif\ifhutb@type@master -\hutb@type@masterfalse -\newif\ifhutb@type@doctor -\hutb@type@doctorfalse -\newif\ifhutb@type@course -\hutb@type@coursefalse -\newif\ifhutb@type@print -\hutb@type@printfalse -\newif\ifhutb@type@graduate -\hutb@type@graduatefalse -\ifhutb@type@master - \hutb@type@graduatetrue -\fi -\ifhutb@type@doctor - \hutb@type@graduatetrue -\fi - -% 定义致谢环境,盲审下隐藏致谢 -\newif\ifhutb@review -\hutb@reviewfalse - -% 定义模板选项 -\DeclareOption{doctor}{\hutb@type@doctortrue} -\DeclareOption{master}{\hutb@type@mastertrue} -\DeclareOption{bachelor}{\hutb@type@bachelortrue} -\DeclareOption{course}{\hutb@type@coursetrue} -%\DeclareOption{forprint}{\hutb@type@printtrue} -% 使用 \XeTeX{} 引擎时,\pkg{fontspec} 宏包会被 \pkg{xeCJK} 自动调用。传递给 -% \pkg{fontspec} 宏包 \opt{no-math} 选项,避免部分数学符号字体自动调整为 CMR。 -% 并使用 \opt{quiet} 忽略警告。 -% \begin{macrocode} -% \PassOptionsToPackage{no-math,quiet}{fontspec} -\PassOptionsToPackage{no-math}{fontspec} - -\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} -\ProcessOptions\relax - - -% 读取基类 -% \LoadClass[a4paper,12pt]{article} -\LoadClass[UTF8,openany,a4paper,oneside,zihao=-4]{ctexbook} -% 注意openany和oneside参数,默认是无空白页不区分双面印。 - -% 加载宏包 -% 引擎执行判断宏包 -\RequirePackage{ifxetex} -% 加载xparse宏包 -\RequirePackage{xparse} -% 报错与警告 -\NewDocumentCommand{\hutb@error}{ m o }{ - \ClassError{hutbthesis_error}{#1}{#2} -} -\NewDocumentCommand{\hutb@warning}{m o }{ - \ClassWarning{hutbthesis_warning}{#1}{#2} -} - -\RequireXeTeX -\ifxetex - % Pass -\else - \hutb@error{Please use xelatex driver instead of pdflatex.} -\fi - -% 支持中文的 ctex 宏包 -\RequirePackage{ctex} -% 页面布局 -\RequirePackage{geometry} -% 使用 \pkg{amsmath} 处理数学公式 -\RequirePackage{amsmath} -% 下面的数学宏包和unicode-math 冲突 -% \RequirePackage{amsfonts} -% \RequirePackage{amssymb} -% \RequirePackage{bm} -% 使用 \pkg{unicode-math} 处理数学字体 -\RequirePackage{unicode-math} -% 算法排版宏包 -\RequirePackage[chapter]{algorithm} -\RequirePackage{algorithmic} -\floatname{algorithm}{算法} - -% 自定义关键词 -\RequirePackage{pgfkeys} -% 设置目录 -\RequirePackage{titletoc} -% 设置字体 -\RequirePackage{fontenc} -% 设置颜色 -\RequirePackage{xcolor} -% 下划线换行 -\RequirePackage{ulem} -% 设置页眉和页脚 -\RequirePackage{fancyhdr} -% 代码高亮 -% 注:该包依赖python环境Pygments语法高亮显示工具包 -% 并且需要 -shell-escape参数 -% TODO: 日后需要修改为可配置 - -% 超链接 hyperref 的设置 -% 提供书签与链接 -\RequirePackage{hyperref} -% 插入图片 -\RequirePackage{graphicx} -% 表格 -\RequirePackage{array} -% 长表格 -\RequirePackage{longtable} -% booktabs 提供了\toprule 等命令. -\RequirePackage{booktabs} -% multirow 支持在表格中跨行 -\RequirePackage{multirow} -% 调整间隔, 让表格更好看些 -\RequirePackage{bigstrut} -%在跨行表格中输入定界符 -\RequirePackage{bigdelim} -% 保护脆弱命令 -\RequirePackage{cprotect} -% 设置代码高亮 -% \RequirePackage{minted} -% 设置代码环境 -\RequirePackage{listings} -\lstset{ - breaklines, - columns=fixed, - numbers=none, % 在左侧显示行号 - numberstyle=\tiny\color{gray}, % 设定行号格式 - frame=single, % 不显示背景边框 - rulecolor=\color{black}, % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. commens (green here)) -% backgroundcolor=\color[RGB]{245,245,244}, % 设定背景颜色 - keywordstyle=\color[RGB]{40,40,255}, % 设定关键字颜色 - numberstyle=\footnotesize\color{darkgray}, - commentstyle=\it\color[RGB]{0,96,96}, % 设置代码注释的格式 - stringstyle=\rmfamily\slshape\color[RGB]{128,0,0}, % 设置字符串格式 - showstringspaces=false, % 不显示字符串中的空格 - language=c++, % 设置语言 - aboveskip=20pt -} - - -% jing: ccaption宏包不能出现在 caption 宏包之后 -% 设置浮动体的标题 -\RequirePackage[justification=centering]{caption} -\RequirePackage[justification=centering]{subcaption} -% 定制列表环境 -\RequirePackage{enumitem} -% 提供\AtBeginEnvironment以方便全局调整一些结构的设置 -\RequirePackage{etoolbox} -% 确定宏定义的位置 -\RequirePackage{filehook} -% 枚举 -\RequirePackage{enumitem} -% 末尾页 -\RequirePackage{lastpage} -% -% \RequirePackage{hypdoc} - -% 参考文献格式 GB/T7714-2015 -% 来自https://github.com/hushidong/biblatex-gb7714-2015 -\RequirePackage[backend=biber,gbpub=false, style=gb7714-2015]{biblatex} - -\AtEndOfClass{ -% 根据模板类型加载不同配置 - -%\input{undergraduate.cls} -%\ifhutb@type@graduate -% \input{graduate.cls} -%\else -% \input{undergraduate.cls} -% % \input{test.cls} -%\fi -} - - -% 字体配置 -\let\sjtu@font@family@xits\@empty -\newcommand\sjtu@font@set@xits@names{% - \ifx\sjtu@font@family@xits\@empty - \IfFontExistsTF{XITSMath-Regular.otf}{% - \gdef\sjtu@font@family@xits{XITS}% - \gdef\sjtu@font@style@xits@rm{Regular}% - \gdef\sjtu@font@style@xits@bf{Bold}% - \gdef\sjtu@font@style@xits@it{Italic}% - \gdef\sjtu@font@style@xits@bfit{BoldItalic}% - \gdef\sjtu@font@name@xits@math@rm{XITSMath-Regular}% - \gdef\sjtu@font@name@xits@math@bf{XITSMath-Bold}% - }{% - \gdef\sjtu@font@family@xits{xits}% - \gdef\sjtu@font@style@xits@rm{regular}% - \gdef\sjtu@font@style@xits@bf{bold}% - \gdef\sjtu@font@style@xits@it{italic}% - \gdef\sjtu@font@style@xits@bfit{bolditalic}% - \gdef\sjtu@font@name@xits@math@rm{xits-math}% - \gdef\sjtu@font@name@xits@math@bf{xits-mathbold}% - }% - \fi -} -\let\sjtu@font@family@libertinus\@empty -\newcommand\sjtu@font@set@libertinus@names{% - \ifx\sjtu@font@family@libertinus\@empty - \IfFontExistsTF{LibertinusSerif-Regular.otf}{% - \gdef\sjtu@font@family@libertinus@serif{LibertinusSerif}% - \gdef\sjtu@font@family@libertinus@sans{LibertinusSans}% - \gdef\sjtu@font@name@libertinus@math{LibertinusMath-Regular}% - \gdef\sjtu@font@style@libertinus@rm{Regular}% - \gdef\sjtu@font@style@libertinus@bf{Bold}% - \gdef\sjtu@font@style@libertinus@it{Italic}% - \gdef\sjtu@font@style@libertinus@bfit{BoldItalic}% - }{% - \gdef\sjtu@font@family@libertinus@serif{libertinusserif}% - \gdef\sjtu@font@family@libertinus@sans{libertinussans}% - \gdef\sjtu@font@name@libertinus@math{libertinusmath-regular}% - \gdef\sjtu@font@style@libertinus@rm{regular}% - \gdef\sjtu@font@style@libertinus@bf{bold}% - \gdef\sjtu@font@style@libertinus@it{italic}% - \gdef\sjtu@font@style@libertinus@bfit{bolditalic}% - }% - \fi -} -\newcommand\sjtu@set@font@xits{% - \sjtu@font@set@xits@names - \setmainfont{\sjtu@font@family@xits}[ - Extension = .otf, - UprightFont = *-\sjtu@font@style@xits@rm, - BoldFont = *-\sjtu@font@style@xits@bf, - ItalicFont = *-\sjtu@font@style@xits@it, - BoldItalicFont = *-\sjtu@font@style@xits@bfit, - ] -} -\newcommand\sjtu@set@font@times{% - \setmainfont{Times New Roman}[Ligatures = Rare] - \setsansfont{Arial} - \setmonofont{Courier New}[Scale = MatchLowercase] -} -\newcommand\sjtu@set@font@stix{% - \setmainfont{STIX2Text}[ - Extension = .otf, - UprightFont = *-Regular, - BoldFont = *-Bold, - ItalicFont = *-Italic, - BoldItalicFont = *-BoldItalic, - ] -} -\newcommand\sjtu@set@font@step{% - \setmainfont{STEP}[ - Extension = .otf, - UprightFont = *-Regular, - BoldFont = *-Bold, - ItalicFont = *-Italic, - BoldItalicFont = *-BoldItalic, - ] -} -\newcommand\sjtu@set@font@source@sans@mono{% - \setsansfont{SourceSansPro}[ - Extension = .otf, - UprightFont = *-Regular , - ItalicFont = *-RegularIt , - BoldFont = *-Bold , - BoldItalicFont = *-BoldIt, - ] - \setmonofont{SourceCodePro}[ - Extension = .otf, - UprightFont = *-Regular , - ItalicFont = *-RegularIt , - BoldFont = *-Bold , - BoldItalicFont = *-BoldIt, - Scale = MatchLowercase, - ] -} -\newcommand\sjtu@set@font@termes{% - \setmainfont{texgyretermes}[ - Extension = .otf, - UprightFont = *-regular, - BoldFont = *-bold, - ItalicFont = *-italic, - BoldItalicFont = *-bolditalic, - ]% -} -\newcommand\sjtu@set@font@pagella{% - \setmainfont{texgyrepagella}[ - Extension = .otf, - UprightFont = *-regular, - BoldFont = *-bold, - ItalicFont = *-italic, - BoldItalicFont = *-bolditalic, - ]% -} -\newcommand\sjtu@set@font@texgyre@sans@mono{% - \setsansfont{texgyreheros}[ - Extension = .otf, - UprightFont = *-regular, - BoldFont = *-bold, - ItalicFont = *-italic, - BoldItalicFont = *-bolditalic, - ]% - \setmonofont{texgyrecursor}[ - Extension = .otf, - UprightFont = *-regular, - BoldFont = *-bold, - ItalicFont = *-italic, - BoldItalicFont = *-bolditalic, - ]% -} -\newcommand\sjtu@set@font@cambria{% - \setmainfont{Cambria} - \setsansfont{Calibri} - \setmonofont{Consolas}[Scale = MatchLowercase] -} -\newcommand\sjtu@set@font@libertinus{% - \sjtu@font@set@libertinus@names - \setmainfont{\sjtu@font@family@libertinus@serif}[ - Extension = .otf, - UprightFont = *-\sjtu@font@style@libertinus@rm, - BoldFont = *-\sjtu@font@style@libertinus@bf, - ItalicFont = *-\sjtu@font@style@libertinus@it, - BoldItalicFont = *-\sjtu@font@style@libertinus@bfit, - ]% - \setsansfont{\sjtu@font@family@libertinus@sans}[ - Extension = .otf, - UprightFont = *-\sjtu@font@style@libertinus@rm, - BoldFont = *-\sjtu@font@style@libertinus@bf, - ItalicFont = *-\sjtu@font@style@libertinus@it, - ]% - \setmonofont{lmmonolt10}[ - Extension = .otf, - UprightFont = *-regular, - BoldFont = *-bold, - ItalicFont = *-oblique, - BoldItalicFont = *-boldoblique, - ]% -} -\newcommand\sjtu@set@font@lm{% - \setmainfont{lmroman10}[ - Extension = .otf, - UprightFont = *-regular, - BoldFont = *-bold, - ItalicFont = *-italic, - BoldItalicFont = *-bolditalic, - ]% - \setsansfont{lmsans10}[ - Extension = .otf, - UprightFont = *-regular, - BoldFont = *-bold, - ItalicFont = *-oblique, - BoldItalicFont = *-boldoblique, - ]% - \setmonofont{lmmonolt10}[ - Extension = .otf, - UprightFont = *-regular, - BoldFont = *-bold, - ItalicFont = *-oblique, - BoldItalicFont = *-boldoblique, - ]% -} -% 使用 \pkg{unicode-math} 配置数学字体。 -\unimathsetup{ - math-style = ISO, - bold-style = ISO, - nabla = upright, - partial = upright, -} -\newcommand\sjtu@set@math@font@xits{% - \sjtu@font@set@xits@names - \setmathfont{\sjtu@font@name@xits@math@rm}[ - Extension = .otf, - BoldFont = \sjtu@font@name@xits@math@bf, - StylisticSet = 8, - ]% - \setmathfont{\sjtu@font@name@xits@math@rm}[ - Extension = .otf, - BoldFont = \sjtu@font@name@xits@math@bf, - StylisticSet = 1, - range = {cal,bfcal}, - ]% -} -\newcommand\sjtu@set@math@font@stix{% - \setmathfont{STIX2Math}[ - Extension = .otf, - StylisticSet = 8, - ]% - \setmathfont{STIX2Math}[ - Extension = .otf, - StylisticSet = 1, - range = {cal,bfcal}, - ]% -} -\newcommand\sjtu@set@math@font@step{% - \setmathfont{STEPMath-Regular}[ - Extension = .otf, - BoldFont = STEPMath-Bold, - StylisticSet = 8, - ]% - \setmathfont{STEPMath-Regular}[ - Extension = .otf, - BoldFont = STEPMath-Bold, - StylisticSet = 1, - range = {cal,bfcal}, - ]% -} -\newcommand\sjtu@set@math@font@termes{% - \setmathfont{texgyretermes-math.otf} -} -\newcommand\sjtu@set@math@font@pagella{% - \setmathfont{texgyrepagella-math.otf} -} -\newcommand\sjtu@set@math@font@cambria{% - \setmathfont{Cambria Math} -} -\newcommand\sjtu@set@math@font@libertinus{% - \sjtu@font@set@libertinus@names - \setmathfont{\sjtu@font@name@libertinus@math .otf}% -} -\newcommand\sjtu@set@math@font@lm{% - \setmathfont{latinmodern-math.otf}% -} -% \end{macrocode} -% -% 设置西文字体集。 -% \begin{macrocode} -\newcommand\sjtu@load@fontset@xits{% - \sjtu@set@font@xits - \sjtu@set@font@source@sans@mono - \sjtu@set@math@font@xits -} -\newcommand\sjtu@load@fontset@times{% - \sjtu@set@font@times - \sjtu@set@math@font@xits -} -\newcommand\sjtu@load@fontset@stix{% - \sjtu@set@font@stix - \sjtu@set@font@source@sans@mono - \sjtu@set@math@font@stix -} -\newcommand\sjtu@load@fontset@step{% - \sjtu@set@font@step - \sjtu@set@font@source@sans@mono - \sjtu@set@math@font@step -} -\newcommand\sjtu@load@fontset@termes{% - \sjtu@set@font@termes - \sjtu@set@font@texgyre@sans@mono - \sjtu@set@math@font@termes -} -\newcommand\sjtu@load@fontset@pagella{% - \sjtu@set@font@pagella - \sjtu@set@font@texgyre@sans@mono - \sjtu@set@math@font@pagella -} -\newcommand\sjtu@load@fontset@cambria{% - \sjtu@set@font@cambria - \sjtu@set@math@font@cambria -} -\newcommand\sjtu@load@fontset@libertinus{% - \sjtu@set@font@libertinus - \sjtu@set@math@font@libertinus -} -\newcommand\sjtu@load@fontset@lm{% - \sjtu@set@font@lm - \sjtu@set@math@font@lm -} -\newcommand\sjtu@load@fontset@none{\relax} -% \end{macrocode} -% -% 载入西文字体集。 -% \begin{macrocode} -% \newcommand\sjtu@load@fontset{% - % \@nameuse{sjtu@load@fontset@\sjtu@latinfontset} - % } -% latinfontset 是hutb的key 使用 对应的kv接口调用 现在没有实现 -% \sjtu@load@fontset@latinfontset -\sjtu@load@fontset@times -% linux系统请使用 stix -% \sjtu@load@fontset@stix -% \sjtu@option@hook{sjtu}{latinfontset}{% - % \sjtu@load@fontset - % } - - -\newcommand\hutb@pdfbookmark[2]{} -% 定义通用的chapter命令 -\NewDocumentCommand{\hutb@chapter}{s m}{ - \if@openright\cleardoublepage\else\clearpage\fi -% \addcontentsline{toc}{chapter}{#1}% -% \hutb@pdfbookmark{0}{#1} - \IfBooleanTF{#1}{ - \hutb@pdfbookmark{0}{#2} - }{ - \addcontentsline{toc}{chapter}{#2} - } - \chapter*{#2} -} - - -\AtEndOfPackageFile*{hyperref}{ - \hypersetup{ - linktoc = all, - bookmarksdepth = 2, - bookmarksnumbered = true, - bookmarksopen = true, - bookmarksopenlevel = 1, - unicode = true, - psdextra = true, - breaklinks = true, - plainpages = false, - pdfdisplaydoctitle = true, - hidelinks, - } - \newcounter{hutb@bookmark} - \renewcommand\hutb@pdfbookmark[2]{% - \phantomsection - \stepcounter{hutb@bookmark}% - \pdfbookmark[#1]{#2}{hutbchapter.\thehutb@bookmark}% - } -% \renewcommand\sjtu@phantomsection{% -% \phantomsection -% } -% \pdfstringdefDisableCommands{% -% \let\\\@empty -% \let\quad\@empty -% \let\hspace\@gobble -% } -% \@ifpackagelater{hyperref}{2019/04/27}{}{% -% \g@addto@macro\psdmapshortnames{\let\mu\textmu} -% }% -% \AtBeginDocument{% -% \hypersetup{ -% pdftitle = \sjtu@info@title, -% pdfsubject = \sjtu@name@subject, -% pdfkeywords = \sjtu@info@keywords, -% pdfauthor = \sjtu@info@author, -% pdfcreator = {LaTeX with SJTUThesis \version} -% } -% }% -} - - -% 定制titlepage -% 定义命令和定义相应的宏。 -%----------------------------------------------------------------------% -% 预定义全局使用的文字,如姓名、专业等信息,在content/info.tex中定义 -%----------------------------------------------------------------------% -% 以下定义封面相关命令和相应的宏,以titleen为例,\titleen为实际在源码中使用的命令,一旦执行就会因为\gdef\@titleen{#1}使得其产生一个\@titleen的宏,而该宏能够在后续的环境中使用。 -% TODO: 之后版本迁移至公共模板入口hutbthesis.cls 处(放置在引入子模版之后) -\newcommand*{\titlecn}[1]{\gdef\@titlecn{#1}} % 中文标题 -\newcommand*{\titleen}[1]{\gdef\@titleen{#1}} % 英文标题 -\newcommand*{\priormajor}[1]{\gdef\@priormajor{#1}} % 一级学科(学科专业) -\newcommand*{\minormajor}[1]{\gdef\@minormajor{#1}} % 二级学科(学科方向) -\newcommand*{\interestmajor}[1]{\gdef\@interestmajor{#1}} % 研究方向,关键词组 -\newcommand*{\department}[1]{\gdef\@department{#1}} % 二级培养单位 -\newcommand*{\supervisor}[1]{\gdef\@supervisor{#1}} % 导师 -\newcommand*{\myclass}[1]{\gdef\@myclass{#1}} % 班级 -\newcommand*{\subsupervisor}[1]{\gdef\@subsupervisor{#1}} % 副导师 -\newcommand*{\studentid}[1]{\gdef\@studentid{#1}} % 学号 - -\newcommand*{\clcnumber}[1]{\gdef\@clcnumber{#1}} % 中图分类号 Chinese Library Classification -\newcommand*{\schoolcode}[1]{\gdef\@schoolcode{#1}} % 学校代码 -\newcommand*{\udc}[1]{\gdef\@udc{#1}} % UDC -\newcommand*{\academiccategory}[1]{\gdef\@academiccategory{#1}} % 学术类别 -\newcommand*{\headertitle}[1]{\gdef\@headertitle{#1}} % 页眉字符串 - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% 页面布局 -% -% 设置页边距以及版芯行间距设置 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% 边距要求上2.5cm,下2.5cm,左3cm,右2cm -\geometry{top=2.5cm,bottom=2.5cm,left=3cm,right=2cm} -% 本科生从摘要开始就要有 -% 设置页眉和页脚 % -\pagestyle{fancy} -% 本科学位论文底部样式 -\newcommand{\hutb@thepage@format@zh}[2]{第~{#1}~页 共~{#2}~页} -\newcommand{\hutb@thepage@format@en}[1]{#1} -% 空白页清空页眉页脚 -\patchcmd{\cleardoublepage}{\newpage}{\thispagestyle{empty}\newpage}{}{} -% 对章节首页的特殊page style清除页眉页脚 -\patchcmd{\chapter}{\thispagestyle}{\@gobble}{}{} -% 内芯页眉设置 -\ifhutb@type@print -%\fancyhead[L]{\includegraphics[scale=0.10]{hutb_logo_maoti.png}} -\else -%\fancyhead[L]{\includegraphics[scale=0.10]{hutb_logo_maoti.png}} -\fi -% \fancyhf[RH]{\heiti \zihao{-5} {图像与激光融合的轨道扣件脱落检测}} % 设置所有(奇数和偶数)右侧页眉 -% UPDATE 更新配置为论文标题 -% 清空页眉,具体设置规则参考:https://www.overleaf.com/learn/latex/Headers_and_footers -\fancyhf{}% -\fancyhf[HC]{\heiti \zihao{-5} {\@headertitle}} -% frontmatter设置 -\renewcommand{\frontmatter}{ - \cleardoublepage - \@mainmatterfalse - % 根据学校要求使用大罗马编号 - \pagenumbering{Roman} - \def\hutb@thepage{\thepage} - \def\hutb@lastpageref{\pageref{LastPage}} - \fancyfoot[C]{\zihao{-5} \hutb@thepage@format@en{\hutb@thepage}} -} -% mainmatter设置 -\renewcommand{\mainmatter}{ - \cleardoublepage - \@mainmattertrue - % 正文部分启用阿拉伯数字编号 - \pagenumbering{arabic} - \def\hutb@thepage{\thepage} - \def\hutb@lastpageref{\pageref{LastPage}} - \fancyfoot[C]{\zihao{-5} \songti \hutb@thepage@format@zh{\hutb@thepage}{\hutb@lastpageref}} -} -% 给页眉留足空间(否则会有 \headheight is too small的warning) -\setlength{\headheight}{14.5pt} -% “磅”是衡量印刷字体大小的单位,约等于七十二分之一英寸。 -% 而 1英寸=25.4毫米,则1磅=25.4/72≈0.353毫米。 -% 磅和 LaTeX的 pt- points (大约 1/72 inch) 是一致的。 -% 基本行间距设置 -\renewcommand*{\baselinestretch}{1.3} % 几倍行间距 -\setlength{\baselineskip}{20pt} % 基准行间距 -% \setlength{\bibsep}{0.5ex} % 参考文献条目间距 - - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% 字体设置 -% -% 进行相关字体设置,定义必须的新字体 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% TODO: Times New Roman目前只能在Windows上使用,需要增加Linux系统字体 -% \setmainfont{Times New Roman} -% \setmonofont{Courier New} -% \setsansfont{Arial} -% \newfontfamily{\enheiti}{SimHei} % 解决标题英文括号不显示黑体 -% \newfontfamily{\enheiti}{\heiti} -% \renewcommand\normalsize{% - % \@setfontsize\normalsize{12.05}{14.45}% - % \abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@ - % \abovedisplayshortskip \z@ \@plus3\p@ - % \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@ - % } -% 协议页的标题按模板是华文新魏 -% \setCJKfamilyfont{hwxw}{STXinwei} -% \newcommand{\huawenxinwei}{\CJKfamily{hwxw}} -% 实现楷体GB_2312 -% \setCJKfamilyfont{kaitigb}{KaiTi_GB2312.ttf} -% \newcommand{\kgb}{\CJKfamily{kaitigb}} -% 重定义ctex定义好的宋体和黑体,以支持伪加粗AutoFakeBold -% 即支持类似word里的给黑体、宋体等中文字体加粗的操作,用\bfseries -% \let\heiti\relax -% \newCJKfontfamily[hei]\heiti{SimHei}[AutoFakeBold] -% \let\songti\relax -% \newCJKfontfamily[song]\songti{SimSun}[AutoFakeBold] -% \newcommand{\kaiti}{\CJKfamily{kai}} -% \newcommand{\kgb}{\CJKfamily{kai}} -% 设置参考文献的字体格式 -% \renewcommand{\bibfont}{\zihao{5} \kgb} - - -% 预定义名称 -\newcommand*{\hutb@name@cover}{扉页} -\newcommand*{\hutb@name@declaration@zh}{声明} -\newcommand*{\hutb@name@authorization@zh}{声明} -\newcommand*{\hutb@name@abstract@zh}{中文摘要} -\newcommand*{\hutb@name@abstract@en}{英文摘要} -\newcommand*{\hutb@name@keywords}{关键字} -\newcommand*{\hutb@name@contents}{目录} -\newcommand*{\hutb@name@listfigure}{插图清单} -\newcommand*{\hutb@name@listtable}{附表清单} -\newcommand*{\hutb@name@index}{索引} -\newcommand*{\hutb@name@figure}{图} -\newcommand*{\hutb@name@table}{表} -\newcommand*{\hutb@name@appendix}{附录} -\newcommand*{\hutb@name@acknowledge}{致谢} - -%--------------------------------------------- -%控制引用格式,选用上标引用 -% \newcommand\supercite[2][]{% - % \textsuperscript{\cite[#1]{#2}}} - - -% 定义命令:参数1=颜色,参数2=实线长度,参数3=空白长度 -\newcommand{\adjustabledashunderline}[4][black]{% - \tikz[baseline=(text.base)]{% - \node[inner sep=0pt, outer sep=0pt] (text) {#4}; - \draw[color=#1, dash pattern=on #2 off #3] (text.south west) -- (text.south east); - }% -} - - - -%\newCJKfontfamily\sonti{SimSun}[BoldFont=FandolSong-Bold] - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% 封面扉页 -% -% 提供本科毕业论文封面扉页设计 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% 论文日期 -% 采用key-value对的方式来制定存储信息的pgf路径 -\pgfkeys{/thesisdate/pgf/.cd, % 定义pgf路径 - year/.store in = \year, % 指定关键词year的存储位置为\year - month/.store in = \month % 指定关键词month的存储位置为\month -} -% 利用上述的pgf的key-value定制论文日期命令 -\newcommand{\thesisdate}[1] { - \pgfkeys{/thesisdate/pgf/.cd,#1} % 指定使用/thesisdate/pgf/.cd来解释参数,然后在后文能直接使用存储位置来指定解释的内容 - \gdef\@thesisdate{\year{} 年 \month{} 月} % 将构建好的日期存储到宏(\@thesisdate)中 -} -% 重定义\maketitle实现封面(扉页)绘制 -\RenewDocumentCommand{\maketitle}{}{% - \hutb@pdfbookmark{0}{\hutb@name@cover} - \hutb@make@cover@zh% -} -% 构建封面绘制宏 -\NewDocumentCommand{\hutb@make@cover@zh}{} { - \thispagestyle{empty} - \begin{center} - \vspace*{0pt} - \begin{figure}[hbt] - % \noindent 表示logo靠左对齐j - \centering % logo居中对齐 - \ifhutb@type@print - \includegraphics[width=0.7\textwidth]{hutb_and_log.png} - \else - \includegraphics[width=0.7\textwidth]{hutb_and_log.png} - \fi - \end{figure} - \vspace{40pt} - \begingroup - % 做系统的用“毕业设计”,做算法的用毕业论文 - \fontsize{50.0}{50}\selectfont 毕业设计 \par - % 45磅,黑体 - \endgroup - \vspace*{6pt} - \begingroup - % \zihao{1} \setmainfont{SimHei} GRADUATION DESIGN(THESIS) \par - % \zihao{1} GRADUATION DESIGN(THESIS) \par - % 1号,黑体 - \endgroup - \begin{figure}[hbt] - \centering - \vspace{55pt} % 空行 - \ifhutb@type@print - %\includegraphics[width=0.2\textwidth]{hutb_logo.png} - \else - %\includegraphics[width=0.2\textwidth]{hutb_logo.png} - \fi - \end{figure} - \vspace{10pt} % 空行 - \begingroup - \linespread{1.3} - \zihao{-2} - \songti - \begin{tabular}{ll} % 实线是 \underline;虚线的 \hdashrule - \hspace{12pt} \makebox[4em][s]{\textbf{题\qquad 目}} & \underline{\parbox[b][][c]{250pt}{\center \kaishu \@titlecn}} \\ - \hspace{12pt} \makebox[4em][s]{\textbf{学生姓名}} & \underline{\makebox[250pt][c]{\kaishu \@author}} \\ - \hspace{12pt} \makebox[4em][s]{\textbf{学\qquad 号}} & \underline{\makebox[250pt][c]{\kaishu \@studentid}} \\ - \hspace{12pt} \makebox[4em][s]{\textbf{学\qquad 院}} & \underline{\makebox[250pt][c]{\kaishu \@department}} \\ - \hspace{12pt} \makebox[4em][s]{\textbf{专业班级}} & \underline{\makebox[250pt][c]{\kaishu \@priormajor}} \\ - % \hspace{12pt} \makebox[4em][s]{\textbf{班\qquad 级}} & \underline{\makebox[250pt][c]{\kaishu \@myclass}} \\ - \hspace{12pt} \makebox[4em][s]{\textbf{指导教师}} & \underline{\makebox[250pt][c]{\kaishu \@supervisor}} \\ - \hspace{12pt} \makebox[4em][s]{\textbf{职\qquad 称}} & \underline{\makebox[250pt][c]{\kaishu \@title}} \\ - - \end{tabular} - \endgroup - \par - \vspace{40pt} - % \vfill - \begingroup - % {\zihao{2} \heiti 人工智能与先进计算学院 \par} - \vspace{10pt} - {\zihao{-2} \heiti \@thesisdate \par} - \endgroup - \end{center} -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% 诚信声明 -% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\newenvironment{declarationzh} { - %\begin{titlepage}% - \hutb@pdfbookmark{0}{\hutb@name@declaration@zh} - %\renewcommand*{\headsep}{20pt} - \vspace*{0pt} - % \begin{center} \zihao{-2} \heiti \@titlecn \end{center} - \vspace{0pt} - \begin{center} \zihao{2} \heiti 湖南工商大学本科毕业设计诚信声明 \end{center} % 摘要为三号黑体 - \vspace{12pt} - \linespread{1.5} - \zihao{4}\songti % 内容为四号宋体 - - %\end{titlepage}% - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% 诚信声明 -% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\newenvironment{authorizationzh} { - %\begin{titlepage}% - \hutb@pdfbookmark{0}{\hutb@name@authorization@zh} - %\renewcommand*{\headsep}{20pt} - \vspace*{0pt} - % \begin{center} \zihao{-2} \heiti \@titlecn \end{center} - \vspace{0pt} - \begin{center} \zihao{2} \heiti 湖南工商大学本科毕业设计\\版权使用授权书 \end{center} % 摘要为三号黑体 - \vspace{12pt} - \linespread{1.5} - \zihao{4}\songti % 内容为四号宋体 - - %\end{titlepage}% - -} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% 摘要 -% -% 提供中英文摘要样式 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% ---------------------------------------------- -% 中文摘要 -% ---------------------------------------------- -% 中文摘要格式具体见样例8,居中打印论文题名(三号黑体) -% 换行顶格编排“摘要”(四号黑体)及摘要内容(四号宋体)、 -% 每段开头空二格。摘要内容后下换行顶格编排“关键词”和“分类号”(四号黑体)。 -% 每篇论文应选取3-8个关键词,每一关键词之间用分号分开,最后一个关键词后不打标点符号。 -\newcommand*{\keywordscn}[1]{\gdef\@keywordscn{#1}} % 定义中文关键词 -%\newcommand*{\categorycn}[1]{\gdef\@categorycn{#1}} % 定义中文分类 -% 定义中文摘要环境 -\newenvironment{abstractzh} { - \hutb@pdfbookmark{0}{\hutb@name@abstract@zh} - \renewcommand*{\headsep}{0pt} - \vspace*{0pt} - %\begin{center} \zihao{-2} \heiti \@titlecn \end{center} - \vspace{0pt} - \begin{center} \zihao{3} \heiti 摘\qquad 要 \end{center} % 摘要为三号黑体 - \vspace{12pt} - \linespread{1.5} - \zihao{-4}\songti % 内容为四号宋体 -} -% 显示中文关键词和分类号 -{ - \begin{flushleft} - \noindent {\zihao{-4} \bfseries \songti 关键词:} {\zihao{-4} \songti \@keywordscn} \par % 关键词为小四号宋体加粗,内容为小四号宋体 - \end{flushleft} -} - -% ---------------------------------------------- -% 英文摘要 -% ---------------------------------------------- -% 英文摘要格式和内容与中文摘要相对应,另起一页,具体见样例9。居中打印论文英文题名(三号Times New Roman字体),换行顶格编排“Abstract”及英文摘要内容(四号Times New Roman字体),摘要内容每段开头留四个字符空格。摘要内容后下换行顶格编排“Keywords”和“Classification”。 -% 定义英文摘要,字体全部为timesnewroman -\newcommand*{\keywordsen}[1]{\gdef\@keywordsen{#1}} % 英文关键词 - -\newenvironment{abstracten} { % 新建英文摘要环境 - \hutb@pdfbookmark{0}{\hutb@name@abstract@en} - \vspace*{0pt} - %\begin{center} \zihao{-2} \bfseries \@titleen \end{center} - - \begin{center} \zihao{3} \bfseries ABSTRACT \end{center} - \vspace{12pt} - \linespread{1.5} - \zihao{-4} % 内容为四号宋体 -} -{ - \begin{flushleft} - \noindent {\zihao{4} \bfseries Key\ words:~} {\zihao{4} \@keywordsen} \par % 关键词为四号黑体,内容为四号宋体 - \end{flushleft} -} - - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% 5. 目录 % -% -----------------------------------------------% -% 目录应列出论文的大标题、一级和二级节标题,逐项标明页码(具体见样例10)。各级标题应简明扼要、点出各部分主要内容。学位论文的页码编排为:正文和后置部分用阿拉伯数字编连续码,前置部分用罗马数字单独编连续码(封面除外)。 -% “目录”两字居中(三号黑体),下空两行为章、节、小节及其开始页码(靠右顶格)。章、节、小节分别以阶梯式排列:1(第1章)、1.1、1.1.1依次标出。章、节、小节的题名与页码之间用“......”连接。除“目录”两字外,其余字体均为小四号宋体。 - -%TODO: 本科和硕博目录格式要求不同 -% \renewcommand{\contentsname}{\hfill \heiti \zihao{3} 目\quad 录\hfill} -% \renewcommand{\contentsname}{目录} -% \renewcommand*{\baselinestretch}{1.5} % 行间距 -% \tableofcontents -% } -\renewcommand\tableofcontents{ -\hutb@chapter*{\contentsname} -% \hutb@pdfbookmark{0}{\contentsname} - -% \chapter*{目录} -% \hutb@pdfbookmark{0}{\hutb@name@contents} -\@starttoc{toc} -} - - - -\setcounter{secnumdepth}{3} -% 定义作为标题的格式 -% \titleformat{command}[shape]%定义标题类型和标题样式 -% {format}%定义标题格式 -% {label}%定义标题的标签,即标题的标号等 -% {sep}%定义标题和标号之间的水平距离 -% {before-code}%定义标题前的内容 -% [after-code]%定义标题后的内容 - -% TODO: 修复章节标题样式 -% \renewcommand{\chaptername}{第{\thesection}章} -% \titleformat{\chapter}{\zihao{3} \heiti \centering}{\chaptername}{1em}{} -% \titleformat{\section}{\zihao{-4} \heiti}{\thesection}{1em}{} -% \titleformat{\subsection}{\zihao{-4} \kaishu}{\thesubsection}{1em}{} - -% 定义在目录中的格式 -% \titlecontents{标题名} -% [左间距] -% {标题格式} -% {标题标志} -% {无序号标题} -% {指引线与页码} -% [下间距] - -% \titlecontents{section} -% [0em] % 按样例目录左侧是和前置部分文字左侧对齐的 -% {\zihao{-4} \songti} -% %{\contentslabel {1em}} -% {第\thecontentslabel\ 章\quad}% -% {\hspace*{-1em}} -% {\titlerule*[0.5pc]{.}\contentspage} - -% \titlecontents{subsection} -% [4em] -% {\zihao{-4} \songti} % note that 3.8 = 1.5 + 2.3 -% {\contentslabel{2.2em}} -% {\hspace*{-3.5em}} -% {\titlerule*[0.5pc]{.}\contentspage} - -% \titlecontents{subsubsection} -% [7em] -% {\zihao{-4} \songti} % note that 3.8 = 1.5 + 2.3 -% {\contentslabel{3.0em}} -% {\hspace*{-5em}} -% {\titlerule*[0.5pc]{.}\contentspage} - -% 6. 符号说明(必要时)% -% ---------------------------------------------------------% -% TODO: -% -% 如果论文中使用了大量的物理量符号、标志、缩略词、专门计量单位、自定义名词和术语等,应编写成注释说明汇集表,说明论文中所用符号所表示的意义及单位(或量纲)。若上述符号和缩略词使用数量不多,可以不设专门的注释说明汇集表,仅在论文中出现时加以说明。 -% “符号说明”四字居中(三号黑体)。 - - -% 7. 论文正文 % -% -------------------------------------------------------% -% 论文正文是主体,主体部分应从另页右页开始,每一章应另起页。一般由序号标题、文字叙述、图、表格和公式等五个部分构成。 -% 写作形式可因研究内容的性质不同而变化,一般可包括绪论(或综述)、理论分析、计算方法、实验装置和测试方法、实验结果分析和讨论、研究成果、结论及意义等。 -% 该部分由用户编写 - -% 图表等浮动环境设置 % -% ----------------------------------------------------------% -% TODO % -% 图、表、公式:文中的图、表、附注、公式一律采用阿拉伯数字分章(或连续)编号,如:图2-5,表3-2,公式(5-1)等。 -% 图序及图名居中置于图的下方,如果图中含有几个不同部分,应将分图号标注在分图的左上角,并在图解下列出各部分内容。图中的术语、符号、单位等应与正文表述所用一致。 -% 表序及表名置于表的上方,表中参数应标明量和单位的符号。表的编排应采用国际通用的三线表。续表均应重复表头,如表需转页接排,随后各页应重复表的编号,其后跟表题(可省略)和“续”置于表上方。 -% 图序及图名、表序及表名采用五号楷体字。若图或表中有附注,采用英文小写字母顺序编号,附注写在图或表的下方。公式的编号用括号括起写在右边行末,其间不加虚线。 -% 图、表、公式等与正文之间要有一定的行间距。 -% \RequirePackage{caption} -% 默认情况下, \LaTeX{} 要求每页的文字至少占据 20%,否则该页就只单独放置一个浮动环境, -% 而这通常不是我们想要的, 我们将这个要求降低到 5%. -\renewcommand*{\textfraction}{0.05} -% 有时如果多个浮动环境连续放在一起, \LaTeX{} -% 会将它们分在几个不同页,即使它们可在同一页放 -% 得下. 我们可以通过修改 |\topfraction| 和 |\bottomfraction| 分别设置顶端和底端的浮 -% 动环境的最大比例. -\renewcommand*{\topfraction}{0.9} -\renewcommand*{\bottomfraction}{0.8} -% 有时\LaTeX{}会把一个浮动环境单独放在一页, -% 我们要求这个环境至少要占据 85% 才能单独放在一页. -% 注意: |\floatpagefraction| 的数值必须小于 |\topfraction|. -\renewcommand*{\floatpagefraction}{0.85} -% 关于图片 graphicx -% 如果图片没有指定后缀, 依次按下列顺序搜索 -\DeclareGraphicsExtensions{.pdf,.eps,.jpg,.png,.tif} -% 设置图表搜索路径, 可以给图表文件夹取如下名字 -\graphicspath{{figures/}{figure/}{pictures/}% -{picture/}{pic/}{pics/}{image/}{images/}} - - - - -% 插图格式 -% ------------------------------------------------------% -% \captionsetup[subfigure]{labelfont=normalfont,textfont=normalfont,singlelinecheck=off,justification=raggedright} -% singlelinecheck=off 表示即使caption只有一行, justification 也生效 -% justification=raggedright 使子图 caption 靠左对齐,而caption的上下位置由\caption标签的位置决定,以此实现了学校要求的子图标签在左上角显示。 -% 这部分功能由 subcaption 这个包实现,而这个包不能和 subfigure 同时使用,所以子图的写法也与 subfigure 包的不大一样。 -\captionsetup[subfigure]{singlelinecheck=off,justification=raggedright} - -% 图下方描述的黑体 -\DeclareCaptionFont{hei}{\heiti} -\DeclareCaptionFont{five}{\zihao{5}} -\renewcommand{\thefigure}{\arabic{chapter}-\arabic{figure}} -% \renewcommand{\thefigure} {\thesection-\arabic{figure}} - -\captionsetup[figure]{ -format=plain, % 标题从第二行开始是否缩进,plain无缩进,hang有缩进 -labelsep=quad, % 分隔符是一个空格 -font={hei,five}, -position=bottom % position=bottom, 不代表标题放在下面, 标题仍放在你放\caption的位置. -} -% 表格格式 -% ------------------------------------------------------% -\renewcommand{\thetable}{\arabic{chapter}-\arabic{table}} -% \renewcommand {\thetable} {\thesection-\arabic{table}} -\captionsetup[table]{ -format=plain, % 标题从第二行开始是否缩进,plain无缩进,hang有缩进 -labelsep=quad, % 分隔符是一个空格 -font={hei,five}, % 表的字体, 宋体小四 -position=top -} - - - -% 列表环境设置 % -% ------------------------------------------------------------------% -\setlist{% -topsep=0.3em, % 列表顶端的垂直空白 -partopsep=0pt, % 列表环境前面紧接着一个空白行时其顶端的额外垂直空白 -itemsep=0ex plus 0.1ex, % 列表项之间的额外垂直空白 -parsep=0pt, % 列表项内的段落之间的垂直空白 -leftmargin=1.5em, % 环境的左边界和列表之间的水平距离 -rightmargin=0em, % 环境的右边界和列表之间的水平距离 -labelsep=0.5em, % 包含标签的盒子与列表项的第一行文本之间的间隔 -labelwidth=2em % 包含标签的盒子的正常宽度;若实际宽度更宽,则使用实际宽度。 -} - -% 表格 % -% ------------------------------------------------------% -% 修改tabular 环境, 设置表格中的行间距为正文行间距. -\let\hutb@oldtabular\tabular -\let\hutb@endoldtabular\endtabular -\renewenvironment{tabular} { -\bgroup -\renewcommand{\arraystretch}{0.92} -\hutb@oldtabular -} { -\hutb@endoldtabular\egroup -} - -% 表格字号应比正文小,一般五号/10.5pt,但是暂时没法再cls里设置(不然会影响到封面等tabular环境) -% 所以目前只好在主文件里局部\AtBeginEnvironment - -% 数学环境, 定理等设置 % -% -------------------------------------------------------% -\newtheorem{definition}{\hutb@cap@definition} -\newtheorem{theorem}{\hutb@cap@theorem} -\newtheorem{lemma}{\hutb@cap@lemma} -\newtheorem{corollary}{\hutb@cap@corollary} -\newtheorem{assumption}{\hutb@cap@assumption} -\newtheorem{conjecture}{\hutb@cap@conjecture} -\newtheorem{axiom}{\hutb@cap@axiom} -\newtheorem{principle}{\hutb@cap@principle} -\newtheorem{problem}{\hutb@cap@problem} -\newtheorem{example}{\hutb@cap@example} -\newtheorem{proof}{\hutb@cap@proof} -\newtheorem{solution}{\hutb@cap@solution} - -% 数学定理相关的常量 -\newcommand*{\hutb@cap@definition}{定义} -\newcommand*{\hutb@cap@theorem}{定理} -\newcommand*{\hutb@cap@lemma}{引理} -\newcommand*{\hutb@cap@corollary}{推论} -\newcommand*{\hutb@cap@assumption}{假设} -\newcommand*{\hutb@cap@conjecture}{猜想} -\newcommand*{\hutb@cap@axiom}{公理} -\newcommand*{\hutb@cap@principle}{定律} -\newcommand*{\hutb@cap@problem}{问题} -\newcommand*{\hutb@cap@example}{例} -\newcommand*{\hutb@cap@proof}{证明} -\newcommand*{\hutb@cap@solution}{解} - - -% TODO 测试段落后间距 -% 各级标题格式设置。 -\ctexset{% -chapter = {% - % 居中 \centering - format = \zihao{3} \heiti, - % {第, 章} - name = {,.}, - nameformat = {}, - number = \arabic{chapter}, - numberformat = {}, - titleformat = {}, - aftername = \quad, - afterindent = true, - % beforeskip 默认为 50pt 适当缩减 - fixskip = true, - beforeskip = {15pt}, - % beforeskip = {\ifhutb@type@graduate 20pt \else 5pt\fi} - % afterskip 默认为 40pt 适当缩减 - afterskip = {40pt}, - % afterskip = {\ifhutb@type@graduate 30pt\else 20pt\fi}, -}, -% 二级标题 -section = {% - format = \zihao{4} \bfseries \songti, - afterindent = true, - % beforeskip 默认为 3.5ex plus 1ex minus .2ex 适当缩减 - % beforeskip = {20pt}, - % beforeskip = {\ifhutb@type@graduate 30pt \else 20pt\fi} - % afterskip 默认为 2.3ex plus .2ex 适当缩减 - afterskip = {1ex \@plus .2ex}, -}, -% 三级标题 -subsection = {% - format = \zihao{-4} \songti, - afterindent = true, - % afterskip 默认为 2.3ex plus .2ex 适当缩减 - afterskip = {1ex \@plus .2ex}, - %fixskip = true, -}, -% 四级标题 -subsubsection = {% - format = \zihao{-4} \songti, - afterindent = true, - afterskip = {1ex \@plus .2ex}, - %fixskip = true, -}, -} - -% 定义描述距离的变量 -\newlength{\hutb@headings@indent@fixed} -\setlength{\hutb@headings@indent@fixed}{2\ccwd} -\newcommand{\hutb@style@set@indent@heading}{% -\gdef\hutb@headings@indent{\hutb@headings@indent@fixed} -% \ifsjtu@type@graduate\relax\else -% 本科毕设设置四级标题 -\ctexset{% - subsubsection/name = {(,)}, - subsubsection/number = \arabic{subsubsection}, -} -% \fi -% 设标题的缩进 -\ctexset{% - section/indent = \hutb@headings@indent, - subsection/indent = \hutb@headings@indent, - subsubsection/indent = \hutb@headings@indent, -} -} -\hutb@style@set@indent@heading - -% 全文首行缩进 2 字符, 标点符号用全角 -% \ctexset{% -% punct = quanjiao, -% space = auto, -% autoindent = true, -% } - -% % 编号分章节。如需要连续编号,注释\makeatletter下面对应内容即可。 -% \renewcommand{\theequation}{\arabic{section}-\arabic{equation}} -% \makeatletter -% \@addtoreset{figure}{section} -% \@addtoreset{table}{section} -% \@addtoreset{equation}{section} -% \makeatother - -% 8. 参考文献 % -% ------------------------------------------------------% -% TODO % -% 文后参考文献只列出作者直接阅读过、在正文中被引用过的文献资料,务必实事求是。参考文献一律列在正文的末尾,不得放在各章之后。人文社科类学位论文中不宜用文后参考文献列出的注释可采用页下注,包括对学位论文中某些关键词句、论点的详细说明。在引用别人的科研成果时,应在引用处加以说明,遵循学术道德规范,严禁论文抄袭、剽窃等学术不端行为。 -% 参考文献可以采用顺序编码制组织,也可以按“著者-出版年”制组织。建议按顺序编码制,即按中文引用的顺序将参考文献附于文末。作者姓名写到第三位,余者写“,等”或“,et al.”。“参考文献”四字居中(三号黑体),空一行左起按顺序依次列出参考文献,将序号置于方括号内(如[1]),用小四号宋体字,所有符号均用半角编排。 -% 目前采用bgt7714-2005标准进行文献索引,详见gbt7714-2005.bst. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% 附录 -% -% 附录中主要列入正文内不便列出的过分冗长的公式推导,供查读方便所需的辅助性数学工具或表格、重复性数据图表、计算程序及说明等。 -% 附录依次为附录1,附录2……等,“附录X”三字居中(三号黑体)。附录中的图表公式另编排序号,与正文分开。 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% 定义附录环境 -% 在\appendix 后直接使用 chapter -% 暂不需要 -% \newenvironment{appendixs}{ -% % \ifhutb@review\else -% \hutb@chapter{\hutb@name@appendix} -% % \fi -% } - - -% 10. 攻读学位期间主要研究成果 % -% --------------------------------------------------------% -% 分类按时间顺序列出作者在攻读学位期间取得的与学位论文相关的研究成果,含参加的研究项目、获奖情况、专利、专著、发表学术论文(含正式录用论文)等,书写格式参照参考文献格式。“攻读学位期间主要研究成果”字体居中(三号黑体) - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% 致谢 -% -% 作者对给予指导、各类资助和协助完成研究工作以及提供各种对论文工作有利条件的单位及个人表示感谢。“致谢”二字居中(三号黑体)。 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% 定义致谢环境 -\newenvironment{acknowledgements}{ -% \ifhutb@review\relax\else -\ifhutb@review\else -% \hutb@chapter{\hutb@name@acknowledgements} -\hutb@chapter{\hutb@name@acknowledge} -\fi -} - - -% 篇眉和页码要求 % -% ---------------------------------------------------------% -% 篇眉从正文开始至全文结束,采用宋体五号字左起书写“博(或硕)士学位论文”,靠右写章标题。 -% 页码从正文开始至全文结束按阿拉伯数字连续编排,前置部分(如学位论文原创性声明和版权使用授权书、中文摘要、英文摘要、目录、符号说明等)用罗马数字分别单独编排。页码位于页面底端,居中书写。 - - - - -%\endinput diff --git a/tactile/undergraduat/hutbthesis_main.tex b/tactile/undergraduat/hutbthesis_main.tex deleted file mode 100644 index 27022f56..00000000 --- a/tactile/undergraduat/hutbthesis_main.tex +++ /dev/null @@ -1,142 +0,0 @@ -%!TEX program = xelatex -% !BIB program = biber -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% 载入模版 -% -% 载入 hutbthesis.cls文件定义的模板 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\documentclass[AutoFakeBold]{hutbthesis} - -\addbibresource{content/reference.bib} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% 基本信息 -% -% 用户自行输入标题、作者等基本信息 -% 都存储在\content\info.tex文件中 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\include{content/cover} - - - -\begin{document} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% 封面绘制 -% -% 1.5版本重新编写了封面绘制宏,并用latex使用者更习惯的 -% \maketitle代替之前的\makecoverpage -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\maketitle - -%\declarationzh - -% 启用大罗马字母进行编号 -\frontmatter -% 设置页眉和页脚 - -%\include{content/info} - -\include{content/declarationzh} - -% 授权书 -\include{content/authorizationzh} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% 中文摘要 -% -% 存储在\content\abstractzh.tex文件中 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\include{content/abstractzh} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% 英文摘要 -% -% 存储在\content\abstracten.tex文件中 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\include{content/abstracten} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% 目录 -% -% 使用重定义的tableofcontents宏绘制目录 -% 满足学校的样式要求 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\tableofcontents - - -% 启用数字编号,改为第 x 页 共 x 页格式 -\mainmatter - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% 正文 -% -% 存储在\content\content.tex文件中 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% 正文 -%\include{content/content} - - -\include{content/chapter1.tex} -\include{content/chapter2.tex} -\include{content/chapter3.tex} -\include{content/chapter4.tex} -\include{content/chapter5.tex} - -% % 主文件有代码去掉页眉章节编号的“.”,但这会因为bug导致无编号章节显示一个错误编号,所以这里在无编号章节之前再次重定义sectionmark。 -% \renewcommand{\sectionmark}[1]{\markright{#1}} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% 参考文献 -% -% 存储在\content\acknowledgements.tex文件中 -% 根据本科生院的要求,致谢应该在参考文献的前面,不编章号,而附录应该位于参考文献后。 -% 有待修复 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% \section{参考文献} % bibliography会自动显示参考文献四个字 -\addcontentsline{toc}{chapter}{参考文献} % 由于参考文献不是chapter,这句把参考文献加入目录 -% \nocite{*} % 该命令用于显示全部参考文献,即使文中没引用 -% cls文件中已经引入package,这里不需要调用 \bibliographystyle 了。 -%\bibliographystyle{gbt7714-2005} -%\bibliography{reference} - -\printbibliography - - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% 附录部分 -% -% 根据学校要求,正文中不应出现长篇幅的代码段或公式推证 -% 应单独放置在正文后的附录部分 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% https://www.zhihu.com/question/29413517/answer/44358389 % -% 说明如下: -% secnumdepth 这个计数器是 LaTeX 标准文档类用来控制章节编号深度的。 -% 在 article 中,这个计数器的值默认是 3,对应的章节命令是 \subsubsection。 -% 也就是说,默认情况下,article 将会对 \subsubsection 及其之上的所有章节标题进行编号,也就是 \part, \section, \subsection, \subsubsection。LaTeX 标准文档类中,最大的标题是 \part。它在 book 和 report 类中的层级是「-1」,在 article 类中的层级是「0」。这里,我们在调用 \appendix 的时候将计数器设置为 -2,因此所有的章节命令都不会编号了。不过,一般还是会保留 \part 的编号的。所以在实际使用中,将它设置为 0 就可以了。 - -% 在修改过程中请注意不要破环命令的完整性 - -% \renewcommand\appendix{\setcounter{secnumdepth}{-2}} -\appendix -\include{content/appendix} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% 致谢 -% -% 存储在\content\acknowledgements.tex文件中 -% 根据本科生院的要求,致谢应该在参考文献的前面,不编章号,而附录应该位于参考文献后。 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\include{content/acknowledgements} - -%\bibliography{hutbtheisi_main} -\newpage - - - -\end{document} diff --git a/tactile/undergraduat/images/Carla.pdf b/tactile/undergraduat/images/Carla.pdf deleted file mode 100644 index fe4150e4..00000000 Binary files a/tactile/undergraduat/images/Carla.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/Progress_bar.pdf b/tactile/undergraduat/images/Progress_bar.pdf deleted file mode 100644 index 226e4a46..00000000 Binary files a/tactile/undergraduat/images/Progress_bar.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/Town1.pdf b/tactile/undergraduat/images/Town1.pdf deleted file mode 100644 index 27987696..00000000 Binary files a/tactile/undergraduat/images/Town1.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/Unreal_Engine.pdf b/tactile/undergraduat/images/Unreal_Engine.pdf deleted file mode 100644 index a7f1284a..00000000 Binary files a/tactile/undergraduat/images/Unreal_Engine.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/available_path.pdf b/tactile/undergraduat/images/available_path.pdf deleted file mode 100644 index 29a6a32b..00000000 Binary files a/tactile/undergraduat/images/available_path.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/collision_detection.pdf b/tactile/undergraduat/images/collision_detection.pdf deleted file mode 100644 index 3a7db1cc..00000000 Binary files a/tactile/undergraduat/images/collision_detection.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/crossing_path1.pdf b/tactile/undergraduat/images/crossing_path1.pdf deleted file mode 100644 index 5f65ce7a..00000000 Binary files a/tactile/undergraduat/images/crossing_path1.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/crossing_path2.pdf b/tactile/undergraduat/images/crossing_path2.pdf deleted file mode 100644 index 3264e5b4..00000000 Binary files a/tactile/undergraduat/images/crossing_path2.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/crossing_walking1.pdf b/tactile/undergraduat/images/crossing_walking1.pdf deleted file mode 100644 index 0d5e1951..00000000 Binary files a/tactile/undergraduat/images/crossing_walking1.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/crossing_walking2.pdf b/tactile/undergraduat/images/crossing_walking2.pdf deleted file mode 100644 index 2fd94fb7..00000000 Binary files a/tactile/undergraduat/images/crossing_walking2.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/crossing_walking3.pdf b/tactile/undergraduat/images/crossing_walking3.pdf deleted file mode 100644 index 49a48f31..00000000 Binary files a/tactile/undergraduat/images/crossing_walking3.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/crossing_walking4.pdf b/tactile/undergraduat/images/crossing_walking4.pdf deleted file mode 100644 index c12e05fa..00000000 Binary files a/tactile/undergraduat/images/crossing_walking4.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/crossing_walking5.pdf b/tactile/undergraduat/images/crossing_walking5.pdf deleted file mode 100644 index 0cf38c6f..00000000 Binary files a/tactile/undergraduat/images/crossing_walking5.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/crossing_walking6.pdf b/tactile/undergraduat/images/crossing_walking6.pdf deleted file mode 100644 index d5c9ec23..00000000 Binary files a/tactile/undergraduat/images/crossing_walking6.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/crossing_walking7.pdf b/tactile/undergraduat/images/crossing_walking7.pdf deleted file mode 100644 index 4010c3ba..00000000 Binary files a/tactile/undergraduat/images/crossing_walking7.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/crossing_walking8.pdf b/tactile/undergraduat/images/crossing_walking8.pdf deleted file mode 100644 index 5d3d9565..00000000 Binary files a/tactile/undergraduat/images/crossing_walking8.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/gui_interface.pdf b/tactile/undergraduat/images/gui_interface.pdf deleted file mode 100644 index 79453871..00000000 Binary files a/tactile/undergraduat/images/gui_interface.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/gui_layout.pdf b/tactile/undergraduat/images/gui_layout.pdf deleted file mode 100644 index 4b48fa8b..00000000 Binary files a/tactile/undergraduat/images/gui_layout.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/gui_log.pdf b/tactile/undergraduat/images/gui_log.pdf deleted file mode 100644 index 19dd6897..00000000 Binary files a/tactile/undergraduat/images/gui_log.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/hutb_eim.png b/tactile/undergraduat/images/hutb_eim.png deleted file mode 100644 index 57ca9ea6..00000000 Binary files a/tactile/undergraduat/images/hutb_eim.png and /dev/null differ diff --git a/tactile/undergraduat/images/location_point.pdf b/tactile/undergraduat/images/location_point.pdf deleted file mode 100644 index 98699b18..00000000 Binary files a/tactile/undergraduat/images/location_point.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/location_select.pdf b/tactile/undergraduat/images/location_select.pdf deleted file mode 100644 index 579b1ce2..00000000 Binary files a/tactile/undergraduat/images/location_select.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/model.pdf b/tactile/undergraduat/images/model.pdf deleted file mode 100644 index 84c6c2f1..00000000 Binary files a/tactile/undergraduat/images/model.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/nav_perspective1.pdf b/tactile/undergraduat/images/nav_perspective1.pdf deleted file mode 100644 index ad998b9c..00000000 Binary files a/tactile/undergraduat/images/nav_perspective1.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/nav_perspective2.pdf b/tactile/undergraduat/images/nav_perspective2.pdf deleted file mode 100644 index 6243dc1d..00000000 Binary files a/tactile/undergraduat/images/nav_perspective2.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/nav_system_architecture.pdf b/tactile/undergraduat/images/nav_system_architecture.pdf deleted file mode 100644 index 093543d4..00000000 Binary files a/tactile/undergraduat/images/nav_system_architecture.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/nav_system_architecture.png b/tactile/undergraduat/images/nav_system_architecture.png deleted file mode 100644 index b4a466ce..00000000 Binary files a/tactile/undergraduat/images/nav_system_architecture.png and /dev/null differ diff --git a/tactile/undergraduat/images/obstacle_avoidance.pdf b/tactile/undergraduat/images/obstacle_avoidance.pdf deleted file mode 100644 index fe3a9573..00000000 Binary files a/tactile/undergraduat/images/obstacle_avoidance.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/path_planning.pdf b/tactile/undergraduat/images/path_planning.pdf deleted file mode 100644 index e9ae0311..00000000 Binary files a/tactile/undergraduat/images/path_planning.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/path_waypoint.pdf b/tactile/undergraduat/images/path_waypoint.pdf deleted file mode 100644 index a714bad1..00000000 Binary files a/tactile/undergraduat/images/path_waypoint.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/path_waypoint1.pdf b/tactile/undergraduat/images/path_waypoint1.pdf deleted file mode 100644 index b8fff6b7..00000000 Binary files a/tactile/undergraduat/images/path_waypoint1.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/path_waypoint2.pdf b/tactile/undergraduat/images/path_waypoint2.pdf deleted file mode 100644 index 8b2376e7..00000000 Binary files a/tactile/undergraduat/images/path_waypoint2.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/pedestrain_navgation.pdf b/tactile/undergraduat/images/pedestrain_navgation.pdf deleted file mode 100644 index 3b56009a..00000000 Binary files a/tactile/undergraduat/images/pedestrain_navgation.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/pedestrian_avoidance.pdf b/tactile/undergraduat/images/pedestrian_avoidance.pdf deleted file mode 100644 index d2d8a7e8..00000000 Binary files a/tactile/undergraduat/images/pedestrian_avoidance.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/pedestrian_skeleton.pdf b/tactile/undergraduat/images/pedestrian_skeleton.pdf deleted file mode 100644 index 010ac64b..00000000 Binary files a/tactile/undergraduat/images/pedestrian_skeleton.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/sensor_architecture.pdf b/tactile/undergraduat/images/sensor_architecture.pdf deleted file mode 100644 index 4ba9736f..00000000 Binary files a/tactile/undergraduat/images/sensor_architecture.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/system_architecture.pdf b/tactile/undergraduat/images/system_architecture.pdf deleted file mode 100644 index 3928abc6..00000000 Binary files a/tactile/undergraduat/images/system_architecture.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/system_architecture.png b/tactile/undergraduat/images/system_architecture.png deleted file mode 100644 index 612674ce..00000000 Binary files a/tactile/undergraduat/images/system_architecture.png and /dev/null differ diff --git a/tactile/undergraduat/images/tech_route.pdf b/tactile/undergraduat/images/tech_route.pdf deleted file mode 100644 index 3b9cec98..00000000 Binary files a/tactile/undergraduat/images/tech_route.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/training1.pdf b/tactile/undergraduat/images/training1.pdf deleted file mode 100644 index a46ee837..00000000 Binary files a/tactile/undergraduat/images/training1.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/training2.pdf b/tactile/undergraduat/images/training2.pdf deleted file mode 100644 index 037b5267..00000000 Binary files a/tactile/undergraduat/images/training2.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/training3.pdf b/tactile/undergraduat/images/training3.pdf deleted file mode 100644 index 2dd72f24..00000000 Binary files a/tactile/undergraduat/images/training3.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/training4.pdf b/tactile/undergraduat/images/training4.pdf deleted file mode 100644 index 9726124b..00000000 Binary files a/tactile/undergraduat/images/training4.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/training5.pdf b/tactile/undergraduat/images/training5.pdf deleted file mode 100644 index fe0a2ead..00000000 Binary files a/tactile/undergraduat/images/training5.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/training6.pdf b/tactile/undergraduat/images/training6.pdf deleted file mode 100644 index 8e6167a8..00000000 Binary files a/tactile/undergraduat/images/training6.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/training7.pdf b/tactile/undergraduat/images/training7.pdf deleted file mode 100644 index 03b38f5e..00000000 Binary files a/tactile/undergraduat/images/training7.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/training8.pdf b/tactile/undergraduat/images/training8.pdf deleted file mode 100644 index c02fcb73..00000000 Binary files a/tactile/undergraduat/images/training8.pdf and /dev/null differ diff --git a/tactile/undergraduat/images/walking_back_and_forth.pdf b/tactile/undergraduat/images/walking_back_and_forth.pdf deleted file mode 100644 index b45a6e5a..00000000 Binary files a/tactile/undergraduat/images/walking_back_and_forth.pdf and /dev/null differ diff --git a/tactile/undergraduat/init_proj.m b/tactile/undergraduat/init_proj.m deleted file mode 100644 index 84bb4ecf..00000000 --- a/tactile/undergraduat/init_proj.m +++ /dev/null @@ -1,40 +0,0 @@ -% 初始化工程 -% 测试:init_proj('calligraphy_score') -function init_proj(proj_name) - -cur_dir = fileparts(mfilename('fullpath')); - -home_dir = fileparts(cur_dir); - -proj_dir = fullfile(home_dir, proj_name); - -if ~exist(proj_dir, 'dir') - mkdir(proj_dir); -end - -cd(proj_dir); - -% 创建一个空的README.md文件 -fid = fopen('README.md', 'w'); -fclose(fid); - -system('git init') -system('git add README.md') -system('git submodule add https://github.com/OpenHUTB/undergraduate.git') -system('git commit -m init') - -% 添加远程链接 -remote_url = ['https://github.com/OpenHUTB/' proj_name '.git']; -system(['git remote add origin ' remote_url]) - -% 推送到远端 -system('git push --set-upstream origin master') - -cd(cur_dir); - -end - - - - - diff --git a/tactile/undergraduat/latexmkrc b/tactile/undergraduat/latexmkrc deleted file mode 100644 index 5212721e..00000000 --- a/tactile/undergraduat/latexmkrc +++ /dev/null @@ -1,3 +0,0 @@ -$pdflatex = 'pdflatex --halt-on-error %O %S'; -$lualatex = 'lualatex --halt-on-error %O %S'; -$xelatex = 'xelatex --halt-on-error %O %S'; \ No newline at end of file diff --git a/tactile/undergraduat/reference.bib b/tactile/undergraduat/reference.bib deleted file mode 100644 index e62a87cb..00000000 --- a/tactile/undergraduat/reference.bib +++ /dev/null @@ -1,258 +0,0 @@ -@article{qian2024sac, - author = {钱立军 and 宣亮 and 陈健 and others}, - title = {基于 SAC 算法的多交叉口交通信号控制研究}, - journal = {天津大学学报(自然科学与工程技术版)}, - year = {2024}, - volume = {57}, - number = {01}, - pages = {105--111} -} - -@article{wei2021survey, - author = {Wei, H and Zheng, G and Gayah, V and others}, - title = {Recent advances in reinforcement learning for traffic signal control: A survey of models and evaluation}, - journal = {ACM SIGKDD Explorations Newsletter}, - year = {2021}, - volume = {22}, - number = {2}, - pages = {12--18} -} - -@article{tao2024motion, - author = {陶幸 and 俞帆山 and 宋越杰 and others}, - title = {基于惯性传感器的免对准动作的人体上肢运动捕捉方法}, - journal = {飞控与探测}, - year = {2024}, - volume = {7}, - number = {2}, - pages = {28--35} -} - -@inproceedings{chen2018ionet, - author = {Chen, C and Lu, X and Markham, A and others}, - title = {IONet: Learning to cure the curse of drift in inertial odometry}, - booktitle = {Proceedings of 32nd AAAI Conference on Artificial Intelligence}, - year = {2018}, - location = {New Orleans} -} - -@inproceedings{herath2020ronin, - author = {Herath, S and Yan, H and Furukawa, Y}, - title = {RoNIN: Robust neural inertial navigation in the wild: Benchmark, evaluations, & new methods}, - booktitle = {Proceedings of 2020 IEEE International Conference on Robotics and Automation (ICRA)}, - year = {2020}, - location = {Paris}, - pages = {3146--3152} -} - -@article{liu2020tlio, - author = {Liu, W and Caruso, D and Ilg, E and others}, - title = {TLIO: Tight learned inertial odometry}, - journal = {IEEE Robotics and Automation Letters}, - year = {2020}, - volume = {5}, - number = {4}, - pages = {5653--5660} -} - -@article{mnih2013dqn, - author = {Mnih, V and Kavukcuoglu, K and Silver, D and others}, - title = {Playing Atari with deep reinforcement learning}, - journal = {arXiv preprint arXiv:1312.5602}, - year = {2013} -} - -@article{yazdani2023ivpl, - author = {Yazdani, M and Sarvi, M and Bagloee, S A and others}, - title = {Intelligent vehicle pedestrian light (IVPL): A deep reinforcement learning approach for traffic signal control}, - journal = {Transportation Research Part C: Emerging Technologies}, - year = {2023}, - volume = {149}, - pages = {103991} -} - -@article{zhang2019pedestrian, - author = {Zhang, Y and Zhang, Y and Su, R}, - title = {Pedestrian-safety-aware traffic light control strategy for urban traffic congestion alleviation}, - journal = {IEEE Transactions on Intelligent Transportation Systems}, - year = {2019}, - volume = {22}, - number = {1}, - pages = {178--187} -} - -@inproceedings{mourikis2007msckf, - author = {Mourikis, A I and Roumeliotis, S I}, - title = {A multi-state constraint Kalman filter for vision-aided inertial navigation}, - booktitle = {Proceedings of IEEE International Conference on Robotics and Automation}, - year = {2007}, - location = {Rome}, - pages = {3565--3572} -} - -@article{zhao2014crossing, - author = {赵靖 and 马万经 and 杨晓光}, - title = {考虑下游交叉口的路段行人过街优化控制模型}, - journal = {同济大学学报(自然科学版)}, - year = {2014}, - volume = {42}, - number = {10}, - pages = {1536--1542} -} - -@article{foxlin2005tracking, - author = {Foxlin, E}, - title = {Pedestrian tracking with shoe-mounted inertial sensors}, - journal = {IEEE Computer Graphics and Applications}, - year = {2005}, - volume = {25}, - number = {6}, - pages = {38--46} -} - -@article{campos2021orbslam3, - author = {Campos, C and Elvira, R and Rodr{\\'i}guez, J J G and others}, - title = {ORB-SLAM3: An accurate open-source library for visual, visual-inertial, and multimap SLAM}, - journal = {IEEE Transactions on Robotics}, - year = {2021}, - volume = {37}, - number = {6}, - pages = {1874--1890} -} - -@article{guo2020pdr, - author = {Guo, S and Zhang, Y and Gui, X and others}, - title = {An improved PDR/UWB integrated system for indoor navigation applications}, - journal = {IEEE Sensors Journal}, - year = {2020}, - volume = {20}, - number = {14}, - pages = {8046--8061} -} - -@article{wang2023llio, - author = {Wang, Y and Kuang, J and Niu, X and others}, - title = {LLIO: Lightweight learned inertial odometer}, - journal = {IEEE Internet of Things Journal}, - year = {2023}, - volume = {10}, - number = {3}, - pages = {2508--2518} -} - -@inproceedings{simonyan2014action, - author = {Simonyan, K and Zisserman, A}, - title = {Two-stream convolutional networks for action recognition in videos}, - booktitle = {Advances in Neural Information Processing Systems}, - year = {2014} -} - -@article{bochkovskiy2020yolov4, - author = {Bochkovskiy, A and Wang, C Y and Liao, H}, - title = {YOLOv4: Optimal speed and accuracy of object detection}, - journal = {arXiv preprint arXiv:2004.10934}, - year = {2020} -} - -@article{arulkumaran2017deeprl, - author = {Arulkumaran, K and Deisenroth, M P and Brundage, M and others}, - title = {Deep reinforcement learning: A brief survey}, - journal = {IEEE Signal Processing Magazine}, - year = {2017}, - volume = {34}, - number = {6}, - pages = {26--38} -} - -@article{ren2017fasterrcnn, - author = {Ren, S and He, K and Girshick, R and others}, - title = {Faster R-CNN: Towards real-time object detection with region proposal networks}, - journal = {IEEE Transactions on Pattern Analysis and Machine Intelligence}, - year = {2017}, - volume = {39}, - number = {6}, - pages = {1137--1149} -} - -@article{redmon2017yolo9000, - author = {Redmon, J and Farhadi, A}, - title = {YOLO9000: Better, faster, stronger}, - journal = {IEEE Transactions on Pattern Analysis and Machine Intelligence}, - year = {2017}, - pages = {6517--6525} -} - -@article{reid1980tracking, - author = {Reid, D B}, - title = {An algorithm for tracking multiple targets}, - journal = {IEEE Transactions on Automatic Control}, - year = {1980}, - volume = {24}, - number = {6}, - pages = {843--854} -} - -@article{howard2017mobilenets, - author = {Howard, A G and Zhu, M and Chen, B and others}, - title = {MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications}, - journal = {arXiv preprint arXiv:1704.04861}, - year = {2017} -} - -@article{dai2017temporalcontext, - author = {Dai, X and Singh, B and Zhang, G and others}, - title = {Temporal Context Network for Activity Localization in Videos}, - journal = {IEEE Transactions on Pattern Analysis and Machine Intelligence}, - year = {2017} -} - -@article{lian2023inverseql, - author = {Lian, B and Xue, W and Xie, Y and others}, - title = {Off-policy inverse Q-learning for discrete-time antagonistic unknown systems}, - journal = {Automatica}, - year = {2023}, - volume = {155}, - pages = {111171} -} - -@article{clifton2020qlearning, - author = {Clifton, J and Laber, E}, - title = {Q-learning: Theory and applications}, - journal = {Annual Review of Statistics and Its Application}, - year = {2020}, - volume = {7}, - pages = {279--301} -} - -@article{zhang2023shapeiou, - author = {Zhang, H and Zhang, S J}, - title = {Shape-IoU: More accurate metric considering bounding box shape and scale}, - journal = {arXiv preprint arXiv:2312.17663}, - year = {2023} -} - -@article{wang2013densetrajectory, - author = {Wang, H and Kläser, A and Schmid, C and others}, - title = {Dense trajectories and motion boundary descriptors for action recognition}, - journal = {International Journal of Computer Vision}, - year = {2013}, - volume = {103}, - number = {1}, - pages = {60--79} -} - -@misc{openhutb2025, - author = {OpenHutB}, - title = {CARLA 行人导航教程[EB/OL]}, - howpublished = {\url{https://openhutb.github.io/carla_doc/tuto_G_pedestrian_navigation/}}, - year = {2025}, - note = {访问日期: 2025-04-27} -} - -@misc{csdn2023carla, - author = {CSDN 博客}, - title = {Carla 行人模型介绍与使用[EB/OL]}, - howpublished = {\url{https://blog.csdn.net/weixin_44983780/article/details/137682087?ops_request_misc=&request_id=&biz_id=102&utm_term=carla%E8%A1%8C%E4%BA%BA%E6%A8%A1%E6%8B%9F&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-137682087.142\^v102\^control&spm=1018.2226.3001.4187}}, - year = {2023}, - note = {访问日期: 2025-04-27} -} diff --git a/tactile/undergraduate/content/abstracten.tex b/tactile/undergraduate/content/abstracten.tex new file mode 100644 index 00000000..578b6bef --- /dev/null +++ b/tactile/undergraduate/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/undergraduate/content/abstractzh.tex b/tactile/undergraduate/content/abstractzh.tex new file mode 100644 index 00000000..5ae43073 --- /dev/null +++ b/tactile/undergraduate/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/undergraduate/content/acknowledgements.tex b/tactile/undergraduate/content/acknowledgements.tex new file mode 100644 index 00000000..3440d3c7 --- /dev/null +++ b/tactile/undergraduate/content/acknowledgements.tex @@ -0,0 +1,14 @@ +% acknowledgements.tex +\section*{致谢} + +时光流逝,大学本科阶段的学习与生活就要结束,回想这段充实又宝贵的过程,我收获了知识,也获得了成长,而且得到了师长、同窗以及家人细心的扶持和陪伴,在这里,我衷心地向所有给我帮助和关怀的人表示最诚真的感谢。 + +我要向我的导师致以最高的敬意,从论文选题开始,一直到框架搭建、理论梳理,再到最后的撰写和修订阶段,导师都投入了很多心血。他治学严谨,学术底蕴深厚,而且指导时非常耐心细致,给我指引了研究方向,并不断充实和完善我的研究思路,导师不但在学术上给我专业的引导,还用自己务实负责、追求卓越的态度,让我真挚地感受到科研的意义所在,在这里,我由衷地感谢我的导师。 + +要感谢学院所有的任课教师,大学时期,老师们具备扎实的专业知识、丰富的教学经验以及认真负责的教学态度,给我构筑了稳固的理论根基,并引领我渐渐迈进专业范畴,无论是课堂上细致的讲解还是课后耐心的回答,都令我收获良多,为当前毕业设计的如期完成形成了关键基础。 + +感激那些一同学习、共同成长的同学们,在学习和生活方面,我们互相勉励,彼此扶持,一起应对挑战,分享快乐。课堂上的议论,实验时的合作,撰写论文时的交流,这些全都成了我大学时期温馨又宝贵的回忆,这段携手走过的岁月,既让我收获了知识,也让我收获了珍贵的友情。 + +我最想感谢的是我的家人,他们是我最稳固的依靠,一直默默奉献,毫无保留地支撑着我的学业以及人生选择。不论遭遇怎样的艰难险阻和压力,家人总是给我最温馨的鼓舞,最笃定的信任,从而令我能专心致志地去完成学业,他们的领悟、宽容以及付出,便是我不断向前迈进的力量源泉和内心依恃。 + +感激各位专家老师在百忙之中参与本论文的评审及答辩,非常感谢你们给出的珍贵意见和专业建议,这些使得本论文能够得到进一步的完善。 \ No newline at end of file diff --git a/tactile/undergraduate/content/chapter1.tex b/tactile/undergraduate/content/chapter1.tex new file mode 100644 index 00000000..343869b0 --- /dev/null +++ b/tactile/undergraduate/content/chapter1.tex @@ -0,0 +1,72 @@ +% chapter1.tex +\section{绪论} + +\subsection{研究背景与意义} +虚拟现实、机器人控制、远程医疗、虚拟培训等领域中,可变形物体(如软组织、柔性材料、布料、器官等)的交互仿真的技术越来越成为关键技术依赖的对象,刚体物体的建模和交互技术比较成熟,但是可变形物体受到力的作用时会表现出非线性力学特性,产生较大的变形,其参数随时间变化,接触状态也较为复杂,因此要实现高精度、高时效性的建模与交互仍然存在很大困难,柔性体的力触觉建模复杂度远高于刚体模型,传统建模方式难以适配动态形变的交互需求,无法满足精细仿真作业要求\cite{yang2023}。仅仅依靠视觉信息很难支持精细的操作,因为操作人员缺乏力觉和触觉的感受,无法准确判断接触力、变形程度和表面纹路,导致操作不稳、任务完成率低,严重制约了远程手术、精密装配、康复训练等场景的实际应用\cite{fang2011}。 + +在此背景下,将依靠物理引擎的即时仿真与触觉反馈技术相结合,这是冲破前面瓶颈的关键途径,MuJoCo凭借高效多体动力学求解能力、优秀的柔性体仿真性能,在可变形物体建模、接触计算、实时性保障方面具有明显优势,能有效适配柔性交互场景的动态仿真需求,目前已广泛应用于机器人柔顺交互、精密操作仿真等相关研究领域\cite{zhang2024}。WEART触觉手套可以给指尖提供压力、纹理、温度等多模态的触觉反馈,它们互相配合就形成了一个视觉、物理仿真、触觉反馈的闭环系统。 + +本课题以MuJoCo可变形物体即时触摸建模与仿真系统为研究对象,围绕可变形物体触摸交互中即时形变建模、接触力精确计算、触觉信号映射、视触同步、量化评价等主要问题展开研究,试图构建出一个高刷新率、低时延且可以进行定量评定的视触融合仿真平台,从而为可变形物体交互原理的研究、算法验证和应用系统开发提供标准化、可重现的实验环境,具有重要的理论价值和工程意义。 + +\subsection{国内外研究现状} + +\subsubsection{国内研究现状} +国内学者对于可变形物体建模、触觉渲染、XR交互、医疗机器人、生物力学、复合材料仿真等各个方面已经形成了比较系统全面的研究架构,包含理论方法、硬件设计到系统实现的一整套技术。 + +胡子阳等人提出了一种结合CBAM注意力机制的人体软组织多物理场快速同步建模方法,该方法将深度学习和有限元结合起来,在保留一定的精度的同时实现了效率的极大提高,为虚拟手术模拟提供了一种高效的建模方法\cite{hu2025}。刘代清从手法淋巴引流的角度创建了皮肤软组织力学模型,并用有限元做了淋巴动力学的分析,拓展了生物力学建模在康复和医疗方面的应用范围\cite{liu2025}。张天明对人类运动进行肌骨系统生物力学建模和仿真研究,给运动分析、康复工程提供力学依据\cite{zhang2024a}。吕晓庆等人对人体生物力学仿真和可视化相关研究做了全面的梳理,总结出多体建模、有限元、肌骨仿真等主要的技术路线,为人体交互仿真的方法提供参考\cite{lv2023}。陈卓利用OpenSim平台概述了人体肌骨仿真建模的发展历程,使仿真工具在体育科学、康复工程领域向着标准化的方向发展\cite{chen2023}。 + +潘言心设计并制作出分布式三维力触觉传感器,解决了分布式接触力精确采集的问题,给高分辨率触觉交互提供硬件支持\cite{pan2024}。陈大鹏等人提出依靠数据的纹理摩擦建模和触觉渲染方法,通过采集真实物体表面摩擦特性来提高触觉渲染的真实性、材质区分度\cite{chen2025}。陈庚对虚拟纹理全面属性建模和力触觉重现展开研究,将触觉反馈从单一的力值扩展为粗糙度、摩擦、纹理等全面特征,再次提升了虚拟交互的沉浸感\cite{chen2024}。王宏润关注XR自然手势交互,创建起触觉加强系统,探寻手势识别和触觉反馈融合的方法,改进沉浸式交互的自然程度\cite{wang2025}。 + +刘浩城针对针灸机器人软组织安全交互难点,提出柔性末端控制方法并重视力觉约束和安全策略,给医疗场景下柔性人机交互提供安全范例\cite{liu2025a}。梅欣根据物体力触觉属性识别,对机器人自适应抓取进行研究,用触觉感知提高复杂物体操作的稳定性、鲁棒性\cite{mei2025}。 + +马雨前把RPIM无网格法应用到虚拟手术软组织形变仿真中,改进了碰撞检测算法,既保证了仿真精度又保证了实时性\cite{ma2024}。冯上涛从虚拟手术缝合过程出发,加强了软组织形变仿真和碰撞检测的真实性、即时性,更符合临床手术操作的要求\cite{feng2024}。吕双祺等对气凝胶复合材料做细观力学建模和变形行为仿真,扩大了可变形物体建模在先进功能材料领域中的应用范围\cite{lv2025}。李浩达对多体系统非理想运动副进行接触力学建模与仿真分析,完善了复杂约束下动力学求解的方法\cite{li2025}。赵飞对重载履带式爬壁机器人进行力学建模与仿真,为大型装备柔性接触操作提供动力学支持\cite{zhao2025}。 + +国内的研究在力学建模的改良、触觉渲染维度的拓展、医疗和机器人场景的应用、硬件传感器的设计等各方面都取得了很多成果,但是系统级视触同步、多线程即时架构、跨设备标准化融合、全流程定量评价体系以及完整的“建模-交互-评价”循环平台创建还存在很大的改进空间。 + +\subsubsection{国外研究现状} +国外对于可变形物体触觉交互、即时仿真、数字孪生、柔性机器人、多模态交互等已经有了较早的研究,已经形成了一套包含基础理论、算法框架、系统整合和量化评定的技术体系,非常重视即时性、鲁棒性和工程应用能力。 + +Tzimos N等对虚拟现实触觉接口和多模态交互进行研究,探究VR环境下3D物体的触觉接口多模态交互机制,证明触觉反馈可以明显提高交互的可靠性和准确性,也可以提高用户沉浸感\cite{tzimos2025}。Taghizad H等人的即时仿真理论及框架综述了多速率即时仿真技术、模型、框架以及主要难点,为高保真、高即时性交互系统规划提供理论依据\cite{taghizad2026}。 + +Laukaitis A等人把Webots与MuJoCo结合使用生成式AI来改善仿真的机器人学习和智能控制的实用价值,给多引擎仿真协同开拓了新途径\cite{laukaitis2025}。Islam U N M等人把人体姿态稳定和神经控制结合起来,用键合图模型提高姿态稳定性预测精度\cite{islam2026}。 + +航天和极端环境仿真中,Han Z Z等人用变分积分器建立小行星探测器的轨道动力学模型并进行仿真,从而提高长时间仿真的数值稳定性\cite{han2026}。Mao Z等人站在系统动力学的角度研究教师数字素养和革新的影响机理,给复杂的社会系统仿真建模提供理论上的借鉴\cite{mao2026}。针对复杂的群体运动仿真,Zhang B等人给出滑雪场景下行人动力学建模及仿真的框架,给复杂的运动交互提供可扩展的方法\cite{zhang2026}。 + +柔性机器人建模与控制研究中,柔体外翻式生长机器人动态建模、物理分析及仿真实验验证由Kalibala A等人完成,使软体机器人可以得到准确的控制\cite{kalibala2026}。为了解决精密设备在振动环境下产生抖振等问题而建立的空间磁悬浮隔振控制系统进行动力学建模和仿真研究,Ye M等人提出了一种新的提高精密设备稳定性的方法\cite{ye2026}。对于可变形物体的形状控制,Zueco C I等人给出了一个多尺度弹性轮廓映射的方法,可以实现对复杂可变形物体高精度的形状调整和跟踪\cite{zueco2025}。 + +国外研究大多集中在高即时性保障、多速率同步机制、严格量化评价体系、跨平台硬件融合等几个方面,许多工作直接采用“物理引擎+触觉设备+VR”循环结构,表现出当下可变形物体触觉交互仿真领域的主要技术走向。 + +\subsubsection{研究述评} +综合国内外的相关研究可知,可变形物体触觉交互、即时仿真在力学建模、触觉渲染、多模态融合、柔性机器人、医疗仿真等各方面已经取得了很多成果,但是目前的研究成果还不能完全满足沉浸式、高真实感、低时延的实际交互需求。 + +可变形物体具有非线性,大形变的特性,即时性与物理保真度很难同时满足,轻量化模型会降低触觉真实感,高精度模型又不能达到触觉交互需要的高刷新率和低时延。物理引擎接触信息、触觉设备缺少对可变形物体的专门映射逻辑,力反馈、纹理渲染大多采用简单的线性映射,材质区分度、触感自然度与真实的物理交互存在差异。 + +视觉渲染与触觉反馈的时间没有共同合作,在时间上不同步,使得各个模块有不同的速度,从而产生延迟、抖动、体感错位等现象,从而影响到操作的稳定性以及沉浸感。 + +大部分研究只对单个模块或者视觉效果的表现形式进行关注,很少有人会制定统一的定量评价标准并做对照实验,对于任务效率、力量稳定性、系统时延、材质识别准确率等重要数据并没有进行系统的收集和验证,因此研究成果很难被重现,也无法进行横向比较。 + +目前该领域缺少创建模型规范、反馈真实、同步精准、性能稳定且支持全流程定量评定的可变形物体即时触摸仿真平台,本课题就从这里出发,用MuJoCo作为物理仿真核心、WEART作为触觉终端、VR作为视觉通道来构建视触融合的系统,通过多线程框架、自适应触觉渲染、改进后的逆运动学和标准化实验评价来弥补现有的技术缺陷,为虚拟手术、柔性操作、远程触觉交互等应用提供标准平台和技术参照。 + +\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/undergraduate/content/chapter2.tex b/tactile/undergraduate/content/chapter2.tex new file mode 100644 index 00000000..4bc37cce --- /dev/null +++ b/tactile/undergraduate/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/undergraduate/content/chapter3.tex b/tactile/undergraduate/content/chapter3.tex new file mode 100644 index 00000000..126bc207 --- /dev/null +++ b/tactile/undergraduate/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/undergraduate/content/chapter4.tex b/tactile/undergraduate/content/chapter4.tex new file mode 100644 index 00000000..7bb8646e --- /dev/null +++ b/tactile/undergraduate/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/undergraduate/content/chapter5.tex b/tactile/undergraduate/content/chapter5.tex new file mode 100644 index 00000000..4c0dbbad --- /dev/null +++ b/tactile/undergraduate/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/undergraduate/content/chapter6.tex b/tactile/undergraduate/content/chapter6.tex new file mode 100644 index 00000000..75581c9d --- /dev/null +++ b/tactile/undergraduate/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/undergraduate/content/chapter7.tex b/tactile/undergraduate/content/chapter7.tex new file mode 100644 index 00000000..9bf88b5d --- /dev/null +++ b/tactile/undergraduate/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/undergraduate/content/cover.tex b/tactile/undergraduate/content/cover.tex new file mode 100644 index 00000000..633d430a --- /dev/null +++ b/tactile/undergraduate/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/undergraduate/content/declarationzh.tex b/tactile/undergraduate/content/declarationzh.tex new file mode 100644 index 00000000..119c0d34 --- /dev/null +++ b/tactile/undergraduate/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/undergraduate/content/figures/desktop.ini b/tactile/undergraduate/content/figures/desktop.ini new file mode 100644 index 00000000..9fe739b6 --- /dev/null +++ b/tactile/undergraduate/content/figures/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/undergraduate/content/figures/hutb_and_log.png similarity index 100% rename from tactile/undergraduat/images/hutb_and_log.png rename to tactile/undergraduate/content/figures/hutb_and_log.png diff --git a/tactile/undergraduat/images/hutb_building.png b/tactile/undergraduate/content/figures/hutb_building.png similarity index 100% rename from tactile/undergraduat/images/hutb_building.png rename to tactile/undergraduate/content/figures/hutb_building.png diff --git a/tactile/undergraduat/images/hutb_logo.png b/tactile/undergraduate/content/figures/hutb_logo.png similarity index 100% rename from tactile/undergraduat/images/hutb_logo.png rename to tactile/undergraduate/content/figures/hutb_logo.png diff --git a/tactile/undergraduat/images/hutb_logo_maoti.png b/tactile/undergraduate/content/figures/hutb_logo_maoti.png similarity index 100% rename from tactile/undergraduat/images/hutb_logo_maoti.png rename to tactile/undergraduate/content/figures/hutb_logo_maoti.png diff --git "a/tactile/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/figures/\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/undergraduate/content/main.tex b/tactile/undergraduate/content/main.tex new file mode 100644 index 00000000..bb2c32c5 --- /dev/null +++ b/tactile/undergraduate/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/undergraduate/content/reference.bib b/tactile/undergraduate/content/reference.bib new file mode 100644 index 00000000..5af65e65 --- /dev/null +++ b/tactile/undergraduate/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