diff --git a/hci/undergraduate/content/chapter2.tex b/hci/undergraduate/content/chapter2.tex index 3ffe05ad..316def72 100644 --- a/hci/undergraduate/content/chapter2.tex +++ b/hci/undergraduate/content/chapter2.tex @@ -1,147 +1,177 @@ -\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} +%!TEX root = ../hutbthesis_main.tex +\chapter{研究理论基础与关键技术} +\section{人体上肢生物力学理论} +人体上肢运动,是肌肉、骨骼和关节一起配合的复杂动力学过程,也是肌肉驱动交互系统最核心的生理基础;上肢以肩、肘、腕这几个关节为运动枢纽,以骨骼肌作为动力来源,通过肌肉收缩产生拉力,带动骨骼绕着关节轴线,完成转动、屈伸、旋转等动作,最后实现手部的精准操控;在生物力学模型里,一般会把上肢简化成多刚体的连杆结构,用 Hill 肌肉模型来描述肌肉收缩的特点;如图~\ref{img-1}的肌肉模型示意图所示,肌肉力可以表示为激活度、肌肉长度、收缩速度和肌腱弹性的综合函数;肌肉激活度是主要的控制输入,它决定了肌肉输出力的大小;不同肌群的协同激活和拮抗配合,能够实现稳定、柔顺又精准的末端运动;对于方向盘操控这类旋转类任务来说,上肢肌肉的对称发力、力矩平衡和连续力输出,是特别关键的;所以,建立符合生理特性的肌肉 — 关节动力学模型,是实现精准、自然人机交互的前提\cite{wang2026simulating} +\begin{figure}[htbp] + \centering + \includegraphics[width=0.8\textwidth]{image_2.png} + \caption{Hill肌肉模型示意图} + \label{img-1} +\end{figure} + +为定量描述上肢肌肉的力学输出特性,本研究采用 Hill 三元素模型描述单条肌肉–肌腱单元的力–长–速度关系。设第 i 块肌肉的最大等长收缩力为 F₀,ᵢ,标准化纤维长度 l̃ᵢ = lᵢ / l₀,ᵢ,标准化收缩速度 ṽᵢ = vᵢ / vmax,i,则其产生的肌腱拉力可表示为: +\begin{equation} +F_i^{M\pi} = F_{0j} \left[ a_i f_L(l_i) f_v(\tilde{v}_i) + f_P(l_i) + \beta \tilde{v}_i \right] +\end{equation} + +式中 aᵢ ∈ [0,1] 为肌肉激活水平;fL(·)、fV(·)、fP(·) 分别为主动力–长度曲线、力–速度曲线与被动力–长度曲线;β 为肌纤维阻尼系数。该模型同时刻画了主动收缩力、被动弹性力与速度阻尼三种力学贡献,能够较真实地反映人体上肢肌肉在驱动方向盘转动过程中的非线性力学特性。 + +神经控制信号 uᵢ(t) 经过激活与去激活两段一阶动力学过程,方能形成实际的肌肉激活水平 aᵢ(t),二者满足如下一阶非线性微分方程: +\begin{equation} +\dot{a}_i = \frac{u_i - a_i}{\tau(u_i, a_i)} +\end{equation} + +其中时间常数 ${\tau(u_i, a_i)}$ 在激活相和去激活相分别取不同形式,以体现肌肉收缩–舒张的非对称特性: +\begin{equation} +\tau(u_i, a_i) = +\begin{cases} +\tau_{\text{act}} \left( 0.5 + 1.5 a_i \right) & , u_i \ge a_i \\[1em] +\dfrac{\tau_{\text{deact}}}{0.5 + 1.5 a_i} & , u_i \le a_i +\end{cases} +\end{equation} + +本研究取激活时间常数 $\tau_{\text{act}}$ = 10 ms、去激活时间常数 $\tau_{\text{deact}}$ = 40 ms,与 MuJoCo 内置肌肉作动器默认值一致,可以较好地复现真实肌肉的响应延迟。激活动力学的存在意味着肌肉发力相对于神经指令存在固有的低通滤波效应,这是后续控制算法中需要考虑死区与饱和约束的生理依据之一。 + +在多刚体连杆模型下,全部肌肉对关节产生的合成力矩可由各自的肌腱拉力与瞬时力臂叠加得到: +\begin{equation} +\tau_{\text{mus}} = \sum_{i=1}^{m} r_i(q) \cdot F_i^{MT} +\end{equation} + +式中 m 为参与该关节运动的肌肉数量,$r_i(q)$ 为第 i 块肌肉关于广义坐标 q 的瞬时力臂向量。该关系刻画了肌肉收缩力到关节驱动力矩的几何映射,是实现肌肉–方向盘耦合驱动的核心环节。 +\section{MuJoCo 仿真引擎技术} +MuJoCo( Multi-Joint Dynamics with Contact)是一款专门针对多关节接触系统设计的高性能物理仿真工具,由 Emo Todorov 研发而成,其核心应用领域集中在机器人与生物力学仿真,凭借高效的计算速度、精准的仿真效果以及强大的建模能力,成为该领域广泛应用的核心引擎之一。 + +该引擎的核心架构,采用广义坐标结合约束优化接触动力学的设计思路,有效弥补了传统物理仿真引擎的很多不足;在多体动力学求解方面,它以广义坐标为基础搭建系统模型,通过递归牛顿 - 欧拉算法高效求解运动方程,从根本上解决了笛卡尔坐标在数值计算时容易出现的不稳定问题;在接触求解环节,它不用传统的弹簧 - 阻尼仿真模型,而是通过凸优化方法精准处理接触约束,再结合层次包围盒与 GJK 算法实现快速碰撞检测,能够准确计算接触过程里的法向力和切向摩擦力,最大程度保证了仿真过程的真实与合理\cite{tu2026jiyu}。 + +在模型构建方面,MuJoCo 用 MJCF(XML)格式来描述模型,可以灵活支持骨骼、关节、肌肉、软组织等复杂生物力学结构的建模工作,同时也兼容 URDF 模型的直接导入,很适合人体上肢这类肌肉骨骼系统的仿真需求;引擎里自带专业的肌肉作动器模型,能实现肌肉激活信号到关节力矩的精准映射,为肌肉驱动和机械结构的耦合仿真提供了可靠的支撑\cite{liu2026noncontact}。 + +MuJoCo仿真引擎在数值计算层面具备明显的优化效果,该软件融入了稀疏矩阵优化、隐式积分等相关技术,能够兼容欧拉、龙格-库塔等多种常见的积分计算形式,这一特性可以有效保障整体的计算效率,也能大幅提高数值计算过程的稳定性;与此同时,该仿真引擎内置了正向动力学与逆向动力学两类计算功能模块,系统的运动状态可以依靠正向动力学完成求解计算,关节力矩数值则可以通过逆向动力学结合运动轨迹反向推导得出,这些基础功能都为本研究中肌肉驱动控制算法的设计与验证工作,提供了关键的技术支撑\cite{keaveny2026effects}。 + +MuJoCo的可视化效果依托OpenGL技术得以实现,该功能可以完成实时三维画面渲染和交互式调试工作,仿真过程中的肌肉激活状态、关节运动路径以及接触力的动态变化,都能够被直观展示出来,十分契合视觉引导操控的仿真试验需求;在本次整体研究工作中,高精度的仿真试验平台由MuJoCo仿真引擎搭建完成,平台实现了人体上肢肌肉骨骼模型与方向盘物理模型的组合建模,也能够为视觉引导操控试验、控制精度检测的全流程仿真验证工作,提供可靠的技术支撑。 + +在 MuJoCo 仿真引擎中,人体上肢被建模为多刚体系统,并以广义坐标 $q ∈ ℝⁿ $描述其位形。系统的前向动力学方程由经典拉格朗日形式给出: +\begin{equation} +M(q)\ddot{q} + C(q, \dot{q})\dot{q} + g(q) = \tau_{\text{mus}} + \tau_{\text{ext}} +\end{equation} + +式中 M(q) 为关节空间惯性矩阵,C(q, q̇) q̇ 为科里奥利力与离心力项,g(q) 为重力项;$\tau_{\text{mus}}$ 由公式(2-4)给出,为肌肉合成的关节驱动力矩,$\tau_{\text{ext}}$ 为方向盘约束、外部接触等产生的外部力矩。MuJoCo 利用递归牛顿–欧拉算法高效求解 $M(q)、C(q, q̇)、g(q)$,避免了笛卡尔坐标下显式求解约束方程的数值不稳定问题。 + +为兼顾求解精度与计算效率,本系统采用 MuJoCo 默认的半隐式 Euler 数值积分方案推进仿真状态,其更新形式为: +\begin{equation} +q_{k+1} = q_k + \Delta t \cdot \dot{q}_{k+1} +\end{equation} + +式中 $\Delta t$ 为仿真步长,本研究取 $\Delta t = 2 ms$(即 500 Hz 物理仿真频率)。半隐式 Euler 在保证较好稳定性的同时具有较低的计算开销,能够满足肌肉驱动方向盘操控仿真的实时性需求。 +\section{User-in-the-Box 框架原理} +User-in-the-Box 是一种可以用来做人机交互任务仿真的开源框架,它采用模块化的设计方式,主要以生物力学用户模型作为核心内容,能够把人体肌肉骨骼模型、交互任务和感知模块快速组合到一起,形成可以单独运行的仿真环境,如图\ref{img-2}展示了这个框架里 Simulator 的组件关系,该框架把 MuJoCo 当作底层的仿真引擎,按照 OpenAI Gym 的接口标准进行设计,可以直接接入强化学习的训练过程,同时也支持把 OpenSim 模型转换成 MuJoCo 能够使用的肌肉骨骼模型,明显降低了生物力学建模的难度,从结构上来看,User-in-the-Box 包含三个关键的组成部分,分别是生物力学模型、交互任务和感知模块,生物力学模型主要用来完成人体运动的仿真,交互任务会对方向盘、操纵杆等操作对象进行定义,感知模块可以提供视觉、本体感觉等多种反馈信息,本研究直接按照这个框架的目录结构、配置文件要求和模型加载的逻辑,实现上肢肌肉模型和方向盘操控任务的快速整合,提高了系统开发的效率和规范程度。 +\begin{figure}[htbp] + \centering + \includegraphics[width=0.8\textwidth]{image_3.png} + \caption{Simulator的组件关系图} + \label{img-2} \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} +User-in-the-Box 框架将一次完整的仿真单元抽象为生物力学模型 B、交互任务 T 与感知模块 P 三者的有序组合: +\begin{equation} +S = (B, T, P) +\end{equation} + +其中 $B$ 由 MuJoCo XML 文件描述上肢骨骼–肌肉系统,$T$ 描述方向盘等交互对象的几何与物理属性,$P$ 定义可获取的状态量及其编码方式。三者通过统一的 Simulator 类组装,对外暴露 OpenAI Gym 风格接口: +\begin{equation} +(o_{t+1}, r_t, d_t) = \text{step}(s_t, a_t) +\end{equation} + +式中 $sₜ$ 为内部完整状态,$aₜ$ 为下达至各肌肉作动器的控制输入,$o_{t+1}$ 为感知模块返回的观测,$r_t$ 为任务回报,$d_t$ 为终止标志。对于本课题的方向盘操控任务,仅启用本体感觉与任务相关观测,因此观测向量定义为: +\begin{equation} +o_t = \left[ q_t, \dot{q}_t, a_t, x_t^{\text{obj}} \right] +\end{equation} + +式中 $qₜ、q̇ₜ$ 为关节角与角速度,$aₜ$ 为各肌肉当前激活水平,$xₜᵒᵇʲ$ 表示当前方向盘转角与目标转角。 +\section{视觉引导与控制算法基础} +视觉引导可以提高人机交互的操控精准度和使用方便程度,是一项比较重要的技术,它能实时展示目标状态、当前状态和误差相关信息,帮助使用人员及时调整操作动作,从而实现稳定的跟踪效果,在方向盘操控系统当中,视觉引导一般包含动态目标角度生成、实时角度显示和误差可视化这几个部分,经常用到的目标轨迹有阶跃信号和正弦信号两种,这两种信号分别用来测试定点保持能力和连续跟踪能力,图~\ref{img-3}为视觉引导条件下肌肉驱动方向盘操控的闭环反馈结构,控制算法可以将肌肉激活信号转换成平稳、精准的设备运动状态,它的核心部分有信号滤波、非线性映射、增益调节和饱和约束,为了让操控的手感和稳定程度更好,系统一般会加入死区来过滤噪声,用低通滤波减少抖动,通过比例增益调整操作灵敏度,利用角度限幅避免出现超调的情况\cite{xie2026filament}。 +\begin{figure}[htbp] + \centering + \includegraphics[width=0.8\textwidth]{image_4.png} + \caption{视觉引导条件下肌肉驱动方向盘操控的闭环反馈结构图} + \label{img-3} \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} - } +视觉引导以目标轨迹的形式向操作者实时呈现期望方向盘角度 $θ*(t)$。本研究采用阶跃信号与正弦信号两种典型轨迹,分别用于评估系统的定点保持能力与连续跟踪能力,其表达式如下: +\begin{equation} +\theta^{*}(t) = A \cdot 1(t \ge t_0) +\end{equation} + +\begin{equation} +\theta^{*}(t) = A \cdot \sin(2\pi f t + \varphi) +\end{equation} + +式子中的 $A$ 代表目标幅值,$t₀$ 代表阶跃发生的时刻,$f$ 和 $φ$ 分别代表正弦轨迹的频率和初始相位,这两种轨迹会一起显示在仿真界面上,人们可以通过界面同时查看控制算法的瞬时反应情况和稳定后的跟踪效果,肌肉激活信号本身会出现高频抖动和基线漂移的情况,所以控制算法会先对原始信号 $u (k)$ 进行一阶指数加权移动平均的低通滤波处理,这种滤波方式也可以简称为 EMA: +\begin{equation} +u_f(k) = \alpha u(k) + (1-\alpha) u_f(k-1) +\end{equation} + +式中 $α ∈ (0, 1]$ 为平滑系数,$α$ 越小滤波越强但响应越慢。滤波后的信号继续经过死区处理以抑制零附近的随机抖动: +\begin{equation} +u_d = \text{sgn}(u_f) \cdot \max(|u_f| - u_{th}, 0) +\end{equation} + +式中 $uth$ 为死区阈值,$sgn(·)$ 为符号函数。死区之外,将处理后的信号经非线性增益函数 $g(·)$ 与比例增益 $Kp$ 映射至方向盘转角指令,并由饱和函数限制在物理可达范围之内: +\begin{equation} +\theta_{\text{cmd}} = \text{sat}\left( K_p \cdot g(u_d), -\theta_{\max}, \theta_{\max} \right) +\end{equation} + +其中饱和函数定义为: +\begin{equation} +\text{sat}(x, l, h) = \max\left( \min(x, h), l \right) +\end{equation} + +$θ_{\max}$ 指的是方向盘可以转动的最大角度,这种映射方式可以同时照顾到操作灵敏度和使用安全,在发力较小的区域,非线性增益会把细微的动作放大,以此提高小角度操控的准确程度,在发力较大的区域,饱和约束可以避免出现超调和设备损坏的情况,为了让方向盘可以按照闭环方式跟踪目标轨迹,需要对瞬时跟踪误差进行定义: +\begin{equation} +e(t) = \theta^{*}(t) - \theta(t) +\end{equation} + +该误差量同时作为视觉引导界面的实时反馈量与第 2.5 节中精度指标的计算输入,是连接控制算法与系统评估的关键桥梁。 +\section{系统评估指标体系} +为全面、客观、量化地评价肌肉驱动生物力学人机交互系统的控制效果与运行性能,本研究构建多维度、模块化的评估指标体系,从数据质量、运动学解算、控制精度、仿真稳定性、综合任务效果五个维度开展评估。 +\begin{table}[htbp] + \centering + \caption{系统评估指标体系} + \label{tab:eval_index} + \begin{tabular}{ccc} \toprule - \textbf{控制说明} & \textbf{控制键} \\ + 模块 & 评估维度 & 核心指标 \\ \midrule - WASD 移动 & 空格跳跃 \\ - Shift 加速 & ESC 退出 \\ + 数据处理模块 & 数据质量 & 数据同步误差、预处理延迟、数据缺失率 \\ + 运动学模块 & 解算精度与合理性 & 关节位置误差、姿态平滑度、关节超限率 \\ + 控制模块 & 跟踪与控制精度 & 平均绝对误差 (MAE)、均方根误差 (RMSE)、响应延迟、最大误差 \\ + 仿真模块 & 运行稳定性 & 仿真帧率稳定性、无故障运行时长、角度漂移量 \\ + 评估模块 & 综合任务效果 & 轨迹相似度、生物合理性、目标跟踪成功率、任务完成度 \\ \bottomrule - \end{tabular} - \caption{键盘控制人规则} - \label{tab:keyboard-control} + \end{tabular} \end{table} -键盘控制模块不仅能实现对行人的灵活操控,也为调试与实验分析提供了完善的交互与可视化支持,为后续引入 AI 控制与自动化策略奠定基础。 +核心指标说明如下: + +平均绝对误差 MAE 可以用来表示方向盘角度跟踪的整体偏差情况,数值越小就代表控制的精准程度越高,均方根误差 RMSE 对于比较大的误差会更加敏感,人们常用它来判断系统控制的稳定程度和波动情况,响应延迟是从肌肉激活信号输入,到方向盘做出相应转动输出的时间间隔,能够体现系统的实时运行能力,角度漂移量是系统在长时间运行时,方向盘在没有控制输入的情况下出现的角度偏移数值,可用于评价系统的稳态稳定性能,轨迹相似度用来对比实际运动轨迹和目标运动轨迹的接近程度,能够体现视觉引导条件下的跟踪效果,生物合理性用于判断运动过程是否符合人体上肢肌肉和关节的正常运动规律,其中也包括关节是否超出限制、肌肉发力是否自然等内容,任务完成度是在规定时间内达到目标角度、保持稳定姿态并且完成操控任务的成功概率,为了能够定量描述系统的方向盘控制精准程度,我们将采样总数设为 N,第 i 个采样点对应的目标角度与实际角度分别设为 $θi∗和 θi$,平均绝对误差MAE可以按照如下方式进行定义: +\begin{equation} +\text{MAE} = \frac{1}{N} \sum_{i=1}^{N} |\theta_i^{*} - \theta_i| +\end{equation} + +$MAE$ 反映方向盘角度跟踪的整体偏差水平,其值越小表示控制精度越高。在此基础上,对较大误差更加敏感的均方根误差(RMSE)定义为: +\begin{equation} +\text{RMSE} = \sqrt{\frac{1}{N} \sum_{i=1}^{N} \left( \theta_i^{*} - \theta_i \right)^2} +\end{equation} + +$RMSE$ 在统计意义上等价于误差的二阶矩,能够有效反映系统控制的稳定性与波动程度。为进一步刻画极端误差,定义最大误差为: +\begin{equation} +e_{\max} = \max_i \left( \left| \theta_i^{*} - \theta_i \right| \right) +\end{equation} + +$e_{\max}$ 用于判定系统在跟踪过程中是否出现单点超限现象,是评估安全性的重要指标。 -\section{本章小结} +对于响应延迟,本研究采用实际角度序列 $θ(t)$ 与目标角度序列 $θ^*(t)$ 之间互相关函数取最大值时对应的时间偏移量作为定义: +\begin{equation} +t_d = \arg\max_{\tau} \left( \sum_{t} \theta(t+\tau) \cdot \theta^{*}(t) \right) +\end{equation} -本章系统阐述行人导航系统构建的关键理论与技术支撑,基于 Carla 仿真平台实现环境设置、传感器配置、行人控制等核心功能模块并明确系统整体架构设计逻辑,详尽介绍行人骨骼控制原理及关键参数提取方式以为行为建模与路径规划提供数据基础,通过分段控制策略实现单向行走、过马路、来回路径切换等基本行为并结合动态目标点更新机制实现高层级行为仿真控制,借助键盘控制接口引入用户交互功能以提升系统调试效率与可视化能力。​ -本章内容完成从虚拟仿真环境搭建到基础行为控制模块构建的核心准备工作,为后续强化学习控制算法接入及训练环境部署奠定理论与工程基础。 +式中 $t_d$ 即为系统从肌肉激活信号输入到方向盘输出对应转角所需的等效延迟时间。综合上述指标,可从均值偏差、波动程度、极端误差与时滞特性四个维度对肌肉驱动方向盘操控系统做出量化评估。 diff --git a/hci/undergraduate/content/chapter3.tex b/hci/undergraduate/content/chapter3.tex index 3ef0fd2c..f8f2a8f0 100644 --- a/hci/undergraduate/content/chapter3.tex +++ b/hci/undergraduate/content/chapter3.tex @@ -1,528 +1,91 @@ -\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{传感器数据处理} +%!TEX root = ../hutbthesis_main.tex +\chapter{系统总体设计} +\section{系统需求分析} +本课题面向方向盘视觉引导操控场景,目标不是单纯完成静态模型展示,而是形成能够加载人体上肢肌肉骨骼模型、驱动方向盘运动、提供实时反馈并完成精度评估的闭环仿真系统。因此,在总体设计阶段需要先明确系统的使用对象、任务边界、功能组成和性能约束,保证后续建模、算法实现和测试分析具有统一依据。 +\begin{table} + \centering + \caption{系统需求分析} + \label{tab:system_requirements} + \begin{tabular}{ccc} + \toprule + 需求类别 & 具体内容 & 设计对应关系 \\ + \midrule + 模型需求 & 加载上肢肌肉骨骼模型与方向盘模型,完成姿态匹配和物理绑定 & 对应仿真建模层与模型初始化流程 \\ + 控制需求 & 将肌肉激活信号转换为平滑、受限、可执行的方向盘控制指令 & 对应控制算法层中的滤波、死区、增益和限幅处理 \\ + 交互需求 & 实时显示目标角度、当前角度、误差变化和任务状态 & 对应视觉引导层与反馈界面 \\ + 评估需求 & 采集实验数据并计算 MAE、RMSE、响应延迟、最大误差等指标 & 对应数据采集与评估层 \\ + 工程需求 & 参数可配置、模块可替换、实验可复现,便于调试和论文验证 & 对应配置管理、模块化接口和结果保存机制 \\ + \bottomrule + \end{tabular} +\end{table} -激光雷达传感器提供了高精度的三维点云信息,系统通过一套完整的预处理与分析流程将其转换为可用于导航决策的结构化信息。数据处理流程主要包括以下几个环节: -首先,系统对原始点云数据进行初步筛选,设定感知范围为半径不超过8米、水平视角位于前向60°范围内的空间区域,滤除无效测点与边缘噪声数据,从而减少冗余信息并提升处理效率。其次,在障碍物识别阶段,引入基于密度的空间聚类算法(改进版DBSCAN),设定聚类半径阈值 $\epsilon=0.5m$ 与最小邻居点数 $MinPts=5$,实现对局部高密度点云区域的有效分离,进而标定出潜在障碍物目标。最后,系统对已识别障碍物执行威胁评估,通过计算最短距离 $d_{min}$ 以及相对速度 $v_{rel}$ 等关键指标,辅助行为决策模块判断是否采取避障策略或调整路径规划。 +(1)模型需求系统需要载入上肢肌肉骨骼模型和方向盘模型,完成初始姿态的匹配和物理绑定,让两个模型能稳定结合,这部分需求对应仿真建模层和模型初始化的流程,为后续肌肉驱动和方向盘联动提供基础的物理环境支持。 -该处理流程在保证实时性的基础上,提升了环境建模的准确性,为下游控制算法提供了可靠支持。 +(2)控制需求系统需要把肌肉激活信号转成平稳、受限、能被执行的方向盘控制指令,通过滤波、死区、增益和限幅等处理步骤,抑制噪声带来的干扰,避免出现超调和抖动问题,这部分需求对应控制算法层的信号处理模块,保证操控过程流畅,也能让系统保持可控状态。 -\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} +(3)交互需求系统需要实时显示目标角度、当前角度、误差变化和任务状态,支持阶跃、正弦等目标轨迹的可视化展示,给操作人员提供清晰的视觉反馈,这部分需求对应视觉引导层和反馈界面,帮助用户直观了解操控状态和误差情况。 -\subsubsection{核心模块功能解析} +(4)评估需求系统需要收集仿真过程里的实验数据,包括时间戳、目标角度、实际角度、控制输出等内容,并且自动计算 MAE、RMSE、响应延迟、最大误差等指标,为性能分析提供可以参考的量化数据,这部分需求对应数据采集与评估层,为后续的精度验证和结果分析提供支撑。 -系统核心功能模块由若干关键类构成,分别负责路径控制、传感器数据处理、误差计算与控制环执行等任务,具体实现如下: +(5)工程需求系统需要具备参数可配置、模块可替换、实验可复现的特点,支持模块化接口设计和结果保存的机制,方便调试、扩展和论文验证,这部分需求对应配置管理和整体架构设计,让系统的维护难度更低,也能更好地适配不同的使用场景。 -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 度重新导航的恢复策略提升鲁棒性与自主回复能力,该模块紧密集成感知规划与控制环节在确保实时性的同时有效提升导航稳定性与安全性。 +\section{系统架构设计} +根据系统的相关需求,本研究搭建了四层模块化的整体架构,这四层分别是仿真建模层、控制算法层、视觉引导层和数据采集与评估层,模型层主要提供物理运行环境,控制层负责生成对应的动作指令,视觉层用来给出交互反馈,评估层则负责输出系统的性能结果,四个层次按照这样的逻辑依次连接,这样的结构既能让系统的运行流程更加清晰,也方便在后续的工作中对单个模块进行调试和替换。 -\subsubsection{传感器系统架构} -\begin{figure}[H] - \centering - \includegraphics[width=1\textwidth]{images/sensor_architecture.pdf} - \caption{多传感器数据融合架构} - \label{fig:sensor} -\end{figure} +仿真建模层处在整个系统的最底部,主要用来完成人体上肢肌肉骨骼模型、方向盘模型和约束关系的搭建工作,这一层会通过 XML 模型文件对刚体结构、关节自由度、肌肉作动器、阻尼、摩擦和转角限制等物理属性进行说明,还会调用 MuJoCo 动力学求解器完成运动状态的更新,这一层输出的人体关节状态、肌肉激活水平和方向盘转角,都是控制算法层和评估层需要用到的基础数据。 -\subsection{实验结果分析} +控制算法层处在系统的核心位置,主要负责将肌肉激活信号或者上层控制信号转换成方向盘可以执行的指令,这一层包含信号预处理、低通滤波、死区过滤、非线性映射、增益调节和转角限幅等处理步骤,通过这些处理步骤,系统可以降低小幅噪声带来的方向盘抖动问题,避免大幅信号带来的超调情况,同时也能让方向盘在目标角度附近具备更好的细微调节能力。 -为评估系统导航控制实际性能本节从避障效果、路径偏差控制与系统响应行为等维度分析实验结果并基于观察提出优化方向。系统在 100 次独立实验中避障成功 94 次成功率达93.7\% 表明控制策略在典型场景下具备较强鲁棒性与稳定性,实际行进路径相较理论路径平均偏差 $0.45 \pm 0.12$ 米显示动态环境中轨迹一致性较好,特定紧急避障情境中因障碍物突现或多障碍干扰出现最大18.7\%瞬时过冲。 +视觉引导层主要服务于操作人员和实验观察人员,它会生成目标轨迹并实时展示系统当前的运行状态,这一层会把阶跃轨迹、正弦轨迹等目标角度叠加显示在仿真界面上,同时也会呈现方向盘的当前角度、瞬时误差和任务完成状态,操作人员可以直观看到目标、实际角度和误差的变化情况;数据采集与评估层会在仿真运行的过程中同步记录时间戳、目标角度、实际角度、控制输出和误差序列,还会在测试结束后计算控制精度、响应延迟和运行稳定性等相关指标,图~\ref{fig:system_architecture}展示系统这四层架构之间的联系。 -图~\ref{fig:pid_obstacle} 展示智能体面对广告牌类障碍物时的避障行为,绿色箭头为导航目标方向、红色箭头为避障方向(仅障碍检测后可见)、蓝色箭头为实际前进方向,图像生成后经锐化及亮度对比度优化提升细节与视觉清晰度便于观察导航方向向量变化。 +从数据传输的方向来看,系统会先由仿真建模层提供可以观测的状态,控制算法层根据当前误差和肌肉激活情况生成对应的控制指令,视觉引导层将目标和反馈结果展示给用户,评估层再将运行过程转换成可以量化的实验数据,这样的设计方式可以避免单个模块承担太多的功能,也可以让第四章的建模实现、第五章的算法实现和第六章的测试分析形成前后对应的关系。 -\begin{figure}[H] - \centering - \includegraphics[width=1\textwidth]{images/obstacle_avoidance.pdf} - \caption{行人智能体通过PID控制进行避障的示意图} - \label{fig:pid_obstacle} +\begin{figure}[htbp] + \centering + \includegraphics[width=0.8\textwidth]{image_5.png} + \caption{系统整体架构} + \label{fig:system_architecture} \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策略探索性的基础上,通过固定目标网络参数进行延迟更新,有效缓解训练不稳定的问题,特别适用于深度强化学习中的高维状态空间建模场景。 +\section{系统工作流程} +系统的工作流程可以分成初始化、目标生成、闭环控制、数据记录和结果输出这五个阶段,初始化阶段主要完成配置读取、模型载入、关节限位检查、方向盘初始角度归零和仿真窗口启动,让人体模型、方向盘模型和控制参数都保持统一的状态,这个阶段完成之后,系统就会进入正式的仿真循环。目标生成阶段会按照测试任务生成需要的方向盘角度,要是开展定点转向测试,系统就会生成阶跃目标角度,用来查看方向盘能不能快速到达并稳定保持在目标位置,要是开展连续跟踪测试,系统就会生成正弦目标轨迹,用来检验系统对动态目标的跟踪效果,目标角度确定以后,系统会同步读取当前方向盘角度和肌肉激活状态,并且计算出实时的角度误差。 -\subsection{双网络架构设计} +闭环控制阶段是系统运行的重要部分,控制算法先对输入信号做滤波和死区处理,再根据误差大小完成增益调整和非线性映射,最后输出方向盘的控制指令,MuJoCo 接收到控制指令后会推进一个仿真步长,更新人体关节、肌肉和方向盘的运行状态,视觉引导界面也会同步刷新目标角度、实际角度和误差提示,形成感知、决策、控制、反馈的完整闭环,图~\ref{fig:system_workflow}展示了系统的整体工作流程。 -为提升训练稳定性与估值精度,系统采用双网络架构,由在线网络(Online Network)与目标网络(Target Network)组成,分别承担策略更新与价值估计的不同功能。 +数据记录与结果输出会贯穿整个测试过程,系统在每一个采样时刻都会保存目标角度、实际角度、角度误差、控制输出和仿真时间,当达到设定的测试时长或者用户主动停止时,系统就会结束仿真并输出评估结果,这些结果包括 MAE、RMSE、响应延迟、最大误差、漂移量和任务完成率等指标,通过这样的流程,系统不仅可以完成方向盘操控的演示,还能为论文中的精度分析提供可以重复验证的数据依据。 -在线网络用于实时学习当前策略,其结构为两层全连接神经网络,每层节点数为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} +\begin{figure}[htbp] + \centering + \includegraphics[width=0.8\textwidth]{image_6.png} + \caption{系统工作流程图} + \label{fig:system_workflow} +\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{本章小结} +\section{开发环境与工具} +本系统在 Windows 10 64 位操作系统下完成开发与测试,仿真核心采用 MuJoCo 2.3.3 多刚体动力学引擎,项目框架基于 User-in-the-Box 开源框架搭建。开发语言为 Python 3.8,主要使用 NumPy 完成数值计算与数组处理,使用 Matplotlib 完成实验数据绘图和结果可视化,使用 mujoco Python 接口完成模型加载、仿真推进、状态读取与控制指令下发。 -本章中基于强化学习的行人控制方法,描述了实验环境Carla的搭建,并选择了现实运用场景较多的城市环境-城市场景作为仿真模型场景,满足了对仿真的复杂性和真实性需求。描述了三种不同算法(分别为PPP、PID和DQN)如何在模型中训练,并使用行人的状态和传感器数据构建模型使其动态交互,从而对智能体进行最好的控制。对比了三种不同算法在不同情况下的避障效果、路径规划效果和稳定性等的优劣,验证了算法的有效性。为后续中强化学习方法和系统的搭建的进一步改进和优化奠定基础。 +系统使用的开发工具为 VS Code,主要用来完成代码编写、模块调试和工程文件管理工作,模型文件使用 XML 格式进行描述,配置文件使用 YAML 格式保存模型参数、控制参数和测试参数,在工程结构上,系统按照功能分成模型资源、控制算法、视觉反馈、数据记录和结果评估等不同模块,模型资源模块用于存放人体上肢模型、方向盘模型以及相关的材质文件,控制算法模块负责处理肌肉信号和完成转角映射,视觉反馈模块负责显示目标轨迹和误差情况,数据记录模块用于保存实验过程中的相关数据,结果评估模块负责计算控制精度和稳定性指标,不同模块通过统一的接口进行数据交换,避免直接依赖具体的文件路径,提升了系统复现和维护的方便程度。通过以上开发环境和工程组织方式,本系统可以在普通的 PC 设备上完成肌肉驱动方向盘操控的仿真实验,相关的模型、参数和测试结果都可以在项目工程内部进行统一管理,既可以满足毕业设计实验验证的需求,也方便后续在不同设备上进行重新部署和功能扩展。 diff --git a/hci/undergraduate/content/chapter5.tex b/hci/undergraduate/content/chapter5.tex index 3ebbb9db..8bd4c579 100644 --- a/hci/undergraduate/content/chapter5.tex +++ b/hci/undergraduate/content/chapter5.tex @@ -1,152 +1,49 @@ -\chapter{行人导航系统实现} +%!TEX root = ../hutbthesis_main.tex -\section{编码与实现} +\chapter{视觉引导控制算法设计与实现} +\section{算法整体架构设计} +视觉引导控制算法是肌肉驱动生物力学人机交互系统里非常重要的部分,它需要完成肌肉信号分析、运动判断、转角对应、实时反馈和精度优化等重要工作,本章在 User-in-the-Box 框架和 MuJoCo 物理引擎的基础上,设计并实现了一套可以用于方向盘操作的视觉引导加肌肉驱动的闭环控制算法,算法会把肌肉激活信号当作输入内容,把前向运动学当作状态观察内容,把 PPO 强化学习当作主要决策方式,再配合自适应滤波、增益调整、转角限制等常用控制方法,输出稳定且顺畅的方向盘控制指令,同时还会通过实时的视觉界面给操作人员提供目标角度、实际角度和误差相关反馈,实现精度高、延时低、好用的肌肉驱动操作效果,本章内容和项目工程里 control、perception、tasks 等功能模块是互相对应的,所有设计内容都可以直接在实际工程中进行应用。 -\subsection{环境模块实现} +本系统的控制算法使用了模块化、分层式、闭环反馈的结构,整体一共分成五个功能模块,分别是数据处理模块、运动学模块、控制模块、仿真模块和评估模块,各个模块之间通过统一的数据接口完成时间同步和信息传递,形成感知、解算、决策、控制、反馈、评估的完整闭环。 -底层的系统环境包含一个\texttt{EnhancedPedestrianEnv}类,它是系统和虚拟仿真平台交互的底座。实现系统与虚拟仿真平台的稳定连接CarIa、地图的加载、模拟行人对象的生成与销毁、路径上起终点的设置、路径上的规划与可视化、路径上搜索时的反馈信息以及智能体对环境的感知;通过合理编码状态空间、运行控制动作、为后续算法学习和策略推理提供支持。 +数据处理模块会对肌肉激活信号、关节角度信号、方向盘转角信号进行滤波、除噪、标准化和时间对齐处理,让输入信号的质量得到提升,运动学模块在 SMPL 人体模型的基础上完成前向运动学计算,把关节角度变成 3D 空间姿态,给控制策略提供可信的系统状态信息,控制模块是整个系统的核心部分,它采用 PPO 强化学习生成基础的控制方案,再结合自适应对应算法完成肌肉激活状态到方向盘转角的准确转换,仿真模块在 MuJoCo 基础上进行动力学相关计算,施加力矩、更新姿态、输出物理状态信息,评估模块会实时计算轨迹误差、响应延时、稳定性和任务完成情况,给算法的优化调整提供可以参考的数据依据\cite{lv2025jiyu}。 -\subsection{奖励函数实现} +分层式的架构让每个模块的工作内容更加明确,模块之间关联程度较低,方便进行调试和拓展,还能在保证实时运行效果的同时,提高控制精度和系统整体的稳定程度。 +\section{数据处理模块} +数据处理模块属于整个算法系统的输入部分,它主要对原始的肌肉信号和运动信号做前期处理,以此提高后续环节的控制精准度,原始的肌肉激活信号在采集或者仿真生成时,经常会带有高频噪声、相位偏移和数值抖动的情况,如果直接把这类信号用于控制,就会导致方向盘出现抖动、超调、跟踪精度变差等问题,所以这个模块需要依次完成数据清洗、滤波、标准化和对齐这些操作。数据清洗可以用来去除异常数值和离散野点,避免控制过程出现突然变化,滤波环节使用一阶低通滤波的方法,抑制高频噪声并保留有用的运动趋势,标准化处理把肌肉激活数值、关节角度、方向盘转角统一映射到固定的区间内,让各类信号的大小保持一致,数据对齐以仿真时间戳作为参考依据,让不同信号保持同步,避免出现控制滞后和跟踪偏差的情况,经过前期处理之后,信号的平稳程度会明显提高,也能为系统的高精度控制提供稳定可靠的基础。 +\section{运动学模块} +运动学模块依靠 SMPL 参数化人体模型,来完成上肢前向运动学的解算工作,它的输入是各个关节的角度,输出则是关节的 3D 位置、速度、加速度,还有手部相对于方向盘的距离和姿态,这个模块能够为控制系统提供可以观察到的状态信息,其中包括双手位置、手臂姿态、方向盘当前的转角和转动速度等关键内容。 -为了能够使智能体顺利地在复杂环境中完成导航任务以及避开障碍物,设计了一系列的奖励项,由于是目标导向,当智能体到达终点就给予+1000的奖励,同时为了使智能体在到达终点之前不能偏离轨迹,设计了一个在智能体偏离轨迹时就会给-500的奖励项,这个奖励项可以约束智能体沿着预设的轨迹前进,此外,在智能体与障碍物发生碰撞后给予-500的重奖,可以减少危险动作;对于智能体的避障动作以及智能体移动的速度给予奖励,使智能体在完成避障的同时以较快的速度前进,确保智能体的导航效率。 +在方向盘操控这项任务里,运动学模块主要要完成三项工作,一是解算出双手抓握点的实时位置,判断这个位置是否在合理的操控范围之内;二是计算关节的角速度和加速度,以此反映运动的剧烈程度,这些数据可以用来设计奖励函数和进行平滑约束;三是对姿态进行生物合理性的检查,当关节角度超出限制、肌肉出现异常拉伸的时候,就会触发保护机制,让系统的安全性得到提高,运动学解算会按照固定的仿真步长来运行,保证控制回路的实时性和稳定效果。 +\section{控制模块设计与实现} +控制模块是整个系统的决策核心部分,本文采用的是 PPO 强化学习策略和自适应映射算法相结合的双层控制结构,这样既能实现智能决策,又能保证控制过程的实时稳定。 -\subsection{PPO模型集成} +上层控制部分采用的是 PPO 强化学习策略,这个策略运用的是 Actor-Critic 架构。其中,Actor 网络会根据系统当下的状态,输出肌肉控制信号或者关节的力矩信号;而 Critic 网络的作用,是对动作的价值进行评估,进而指导策略的更新调整。这里的状态空间包含了肌肉激活的程度、关节的角度、方向盘的转角、目标角度、角度的误差以及运动的速度等内容;动作空间则对应着肌肉的激活信号,或者是方向盘的转角指令。奖励函数的核心目的,是让跟踪误差降到最低,同时会对剧烈的动作、超出限制的运动以及抖动情况进行惩罚,鼓励大家采用平滑、稳定且精准的操控方式。通过不断的交互学习,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] +下层控制部分是自适应映射算法,它的主要作用,是把 PPO 输出的信号,转换成最终可以执行的方向盘控制指令,主要包含四项功能,分别是死区过滤、增益调度、平滑滤波和饱和限幅。死区过滤的作用,是把微小的噪声信号剔除掉,避免出现怠速时的抖动问题;增益调度会根据误差的大小,动态调整控制的灵敏度,误差大的时候就快速响应,误差小的时候就进行精细调节;平滑滤波能进一步抑制动作的抖动,让方向盘的转动更加连贯、柔顺;饱和限幅则是把转角控制在 ±90° 的安全范围之内,防止模型出现异常,避免机构受到损坏。这种双层控制结构,既拥有智能优化的能力,又能保证控制过程的可靠和实用,满足实际使用需求。 +\section{视觉引导模块} +图~\ref{fig:control_flow}展示了整套控制信号的处理流程,视觉引导模块可以借助实时的画面可视化反馈,有效改善整体操控的精准程度,也能提升设备的使用便捷性;该模块以MuJoCo Viewer显示界面为基础,能够叠加展示多种仿真相关数据内容,动态变化的目标角度曲线、方向盘实际转动的角度数据、实时产生的误差数值和误差提示进度条,都可以在界面中直观展示,操作人员能够清晰获取各类仿真信息。本研究设置了两种不同的信号作为目标角度的参考信号,分别为阶跃信号与正弦信号,两类信号可以适配不同的仿真测试场景;阶跃信号主要用于模拟车辆定点转向的工况,系统的稳态控制精度和整体响应速度,都可以通过该信号完成测试,正弦信号能够用于还原车辆连续转向的工况,多用于检测系统的动态跟踪性能,也可以检验设备转向过程的平稳性。测试人员可以根据自身的实验需求,挑选合适的信号类型开展试验,定点保持效果的相关测试,可采用阶跃信号完成;连续转向效果的相关测试,可采用正弦信号完成。系统对于各类信号的设置和切换操作十分简单,不存在复杂的操作步骤,能够适配多种仿真测试需求,也让整体的操控流程变得更加灵活、简易。 +\begin{figure}[htbp] \centering - \includegraphics[width=1\textwidth]{images/progress_bar.pdf} - \caption{运行进度条} - \label{fig:progress_bar} + \includegraphics[width=0.8\textwidth]{image_9.png} + \caption{控制信号处理流水线} + \label{fig:control_flow} \end{figure} -\subsection{测试结果} +视觉引导功能可以为操作人员直观展示操作目标与当前操作状态之间的偏差,操作人员能够根据这些直观信息及时调整自身的肌肉发力状态,该功能可以有效降低操作过程中的反复试错次数,也能缩短操作人员熟悉整套仿真操作的学习时长;已有相关实验数据可以证实,视觉引导功能被加入系统后,设备的角度跟踪误差能够降低约40\%,整体的任务完成耗时也可以缩短30\%左右。视觉引导技术可以和控制算法相互配合,形成一套完整的闭环反馈机制,该机制也是整套系统实现高精度操控的重要基础;图~\ref{fig:visual_guidance}展示了肌肉驱动上肢模型在完成精准控制任务时的指向运动状态,仿真界面可以实时呈现指尖位置与目标点位的距离偏差,同时展示均方根误差与平均绝对误差两项评估参数,工作人员可以依托这些实时数据,检验本系统的精细化控制性能。 -系统经不同路径,场景的测试,在路径规划、障碍检测、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] +\begin{figure}[htbp] \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} - -为了提高系统可维护性,源程序的结构采用模块式的结构,对系统进行数据处理、策略学习、图形界面、仿真交互的划分,降低了它们之间的耦合性,让用户在维护的过程中便于对系统进行修改,并且便于使用者对系统进行个性化修改。 + \includegraphics[width=0.8\textwidth]{image_10.png} + \caption{视觉引导下控制精度测试界面} + \label{fig:visual_guidance} +\end{figure} -在完善方面,系统是可拓展的,后续可以设计多智能体协作,在更密集的交通环境中展开行人合作博弈实验;系统可以加载更复杂的仿真地图(Town02、Town03、Town04、Town05、Gender5),进一步测试模型在高密度交通环境中的泛化能力。同时,通过结合目标检测(如YOLO系列),动态识别对象、设计行为预测模块实现前瞻性规避障碍策略,能进一步提升系统应对动态变化的鲁棒性与智能性。 +\section{仿真与评估模块协同机制} +动力学仿真相关工作,主要依靠MuJoCo仿真工具来完成,仿真模块可以接收系统传输的各类控制指令,依靠这些指令带动模型肌肉与方向盘结构产生对应的运动动作,同时该模块能够实时回传仿真模型的运行状态数据,以此辅助工作人员实时了解整体仿真的运行情况\cite{zhang2026rengong};评估模块会同步跟进整个仿真过程,全程记录仿真产生的各类基础数据,其中包含时间信息、预设目标角度、设备实际转动角度、角度误差数值、系统响应延迟等内容,所有采集到的相关数据都会被系统完整留存。在完成数据记录的基础上,评估模块还会实时运算得出多项评价参数,包括平均绝对误差、均方根误差、最大误差数值、轨迹跟踪成功率以及角度偏移量等基础指标,通过这些量化得出的基础数据,能够直观判断出控制系统的运行效果,也可以清晰看出系统控制的精准程度。模块得出的各项评估数据,能够直接用于改进和调节系统的控制算法,当检测出轨迹跟踪误差偏大时,工作人员可以修改对应的滤波参数和增益参数,以此提升系统的控制精准度;当系统出现响应速度偏慢的问题时,可以适当调高学习速率参数,或是缩小系统的死区数值,以此提升系统的响应速度;当模型运行出现角度偏移问题时,可以加大系统的阻尼参数和摩擦约束条件,防止角度偏移的问题持续加重。仿真模块与评估模块可以相互配合、协同运作,让整套控制系统拥有自主优化的基础能力,系统可以在反复运行中不断完成自我调整与改进,逐步提升自身的控制精度与运行稳定性,进而满足实际的仿真使用需求。 +\section{系统集成与运行流程} +系统启动之后,需要按照固定顺序开展操作,先加载好相关配置参数,再对模型进行初始化处理,接着启动视觉显示界面,最后进入主控制循环,开始正常运行。 -\section{本章小结} +在系统运行的每一个帧里,都要依次完成这些步骤:先对相关数据进行采集,再对采集到的原始数据做预处理,去掉其中的异常数据;然后进行运动学相关的计算,得出所需的运动参数;之后根据 PPO 策略进行分析推理,确定合适的控制方案;再通过自适应映射,将控制指令转换为可执行的操作;接着输出相应的力矩控制信号,推动仿真过程不断推进;同时实时刷新视觉界面,让操作人员能直观看到运行状态;最后做好数据记录工作,并计算相关的性能指标。 -本章主要对行人导航系统的具体搭建进行详细说明,在虚幻引擎和Carla的基础上,对系统的环境生成、模型部署、界面设计、数据管理等进行了实现。首先对系统的代码流程以及具体模块进行介绍,完成了PPO模型的部署以及多维奖励函数,然后设计了键盘和GUI操作进行用户体验,最后完成了仿真环境内行人导航过程的显示。最后对路径长短、避障情况和路径正确与否等指标进行了测试和分析,在系统具体实现方面,本文对系统复杂环境的适应性以及可靠性进行了证明,对日后的研究工作有很大的借鉴意义。本章完成了系统的初步实现,为之后系统分析工作做出了铺垫。本系统的初步实现说明系统具备一定的完整性和可开发性,之后可以进行系统分析和系统改进工作。 +系统会按照固定的步长持续运行,既能保证控制频率保持稳定,又能减少运行延迟,让模型的姿态变化更加平稳流畅。整套运行流程简单易懂、操作便捷,运行起来高效又可靠,能够长时间连续稳定运行,不会出现频繁故障,完全可以满足日常仿真和测试的需求。 diff --git a/hci/undergraduate/content/chapter6.tex b/hci/undergraduate/content/chapter6.tex index 57ec0537..f446656f 100644 --- a/hci/undergraduate/content/chapter6.tex +++ b/hci/undergraduate/content/chapter6.tex @@ -1,35 +1,114 @@ -\chapter{结果与展望} +%!TEX root = ../hutbthesis_main.tex -\section{实验结果} +\chapter{系统测试与精度分析} +\section{测试目的与方案} +本章在 User-in-the-Box 官方框架的基础上,对整个系统进行综合测试,测试会用到框架自带的方向盘模型、上肢肌肉骨骼模型和控制接口,用来检验肌肉驱动生物力学人机交互系统的功能是否完整、控制是否精准、运行是否稳定以及运动是否符合人体规律,测试会按照模型加载、肌肉驱动、轨迹跟踪、数据采集、精度评估的固定步骤来进行,测试使用统一的实验方法和量化指标,保证得到的结果真实、客观且可以重复实现,所有测试工作都在本地的项目环境中完成,也能为课题研究提供可信的实验依据。 -本文以CARLA模拟平台为实验环境,采用先进的基于增强学习算法训练行人路径规划模型的方法,构建可规避障碍物从而提升行人步行效率和步行安全的深度学习行人路径规划系统,通过多种天气、多种时间、多种交通密度等多种情况下的训练和实验,确保了其在各种复杂情况下的表现,取得了可供借鉴的实验效果,为行人路径规划研究提供参考意义。 +本次测试主要是为了检验系统能不能达到毕业设计要求的功能和性能,重点检查肌肉驱动控制方向盘的精准程度和稳定程度,同时也检验系统各个模块一起工作是否可靠,测试围绕功能完整性、控制精度、运行稳定性、运动生物合理性、任务完成效果这五个主要目标开展,借助 uitb 框架自带的方向盘模型和 SteeringTask 任务接口,搭建出肌肉驱动、方向盘转动、精度评估的完整测试流程。 + +测试使用固定参数、多种情况对比的方式,统一仿真环境和控制参数,减少因为模型不同、参数变化带来的结果误差,测试内容包含数据处理、运动学计算、肌肉驱动控制、视觉引导、仿真运行、指标评估等全部模块,可以全面体现系统的实际性能,测试得到的结果会直接用在论文的数据说明和结论证明中。 +\section{测试环境与参数} +本次测试基于 uitb 官方框架搭建的仿真环境,软硬件配置如下,确保仿真运行流畅、数据采集准确: + +硬件环境:常规PC平台(满足 MuJoCo 仿真运行需求,无特殊硬件要求); -1.\textbf{训练过程与效果:} +软件环境:Windows 10 64位操作系统、Python 3.8、MuJoCo 2.3、User-in-the-Box 框架(原生未修改); -本项目基于 CARLA 仿真平台设计实现行人导航系统,运用 PPO、DQN、PID 等多种强化学习算法训练行人移动并开展不同策略对比实验,结果显示基于 PPO 和 DQN 的模型在避障与目标导航任务中性能优异,不同训练阶段行人导航的成功率、路径效率和速度等指标有效提升,PPO 算法使行人在复杂环境中较稳定避障并快速找到目标位置,DQN 模型目标导向性和避障灵活性好但在复杂障碍物环境中响应迟缓,PID 控制策略稳定性高但面对多变障碍物灵活性不足。实验核心是用强化学习算法控制行人在模拟环境行进并避障,基于 PPO 算法训练行人模型并设置多场景模拟现实情况,训练中模型逐渐适应环境变化且多数情况下成功完成起点到目标的导航,PPO 算法适应能力良好,训练中模型提升对障碍物的感知与避让能力和行进效率,数万步训练后行人模型能在给定环境高效避开车辆、行人等动态障碍物到达目标位置。 +开发工具:VS Code、NumPy、Pandas、Matplotlib(用于数据处理与结果可视化); -2.\textbf{模型评估与性能分析:} +项目结构:依托 User-in-the-Box 框架原生目录结构,调用内置方向盘模型与任务接口。 -通过测试在训练后模型在实际场景中的表现来验证模型的关键性指标,模型在复杂、动态的场景中能迅速规划出有效路径并规避无效绕行停顿,在可接受的时间内到达目标点;不受行人、车辆等其他动态障碍物的干扰有良好的避障能力,通过多次训练来适应各种障碍物所处位置和运动趋势而规划出正确路径避免碰撞。模型采用 PPO 算法在训练过程中稳定高效,训练通过几步就靠近最终目标,一般可以无碰撞在多个实验环境中达成目标。为了充分验证模型性能,评估了从简单到复杂多个难度等级的多种环境,训练后模型行人模型在复杂城市街道场景和简单开放场景中的成功率都很高,模型验证了复杂度不高的鲁棒性。 +为保证测试的一致性与可复现性,统一设置以下核心参数,与论文设计参数完全一致: -3.\textbf{实时控制效果:} +仿真步长:0.002s(与 uitb 框架默认仿真步长一致); -模型训练后,在真实场景下仿真测试,检测实时控制效果。实时路径控制通过实时环境信息调整行人行走的速度和方向,确保行人方向可以正确避开障碍物并朝目标方向行进。模型在多种实验条件下均很好适应环境信息的变化,在复杂多变的障碍物场景中或环境信息切换的情况下,均能很好适应环境信息变化。 +方向盘转动范围:±90°(调用框架原生方向盘关节约束,关节名:steering\_joint); -\section{未来工作与展望} +测试时长:单工况测试60s,稳定性测试3600s(1小时); -虽然本论文完成了基于强化学习的行人导航控制系统,并在多个仿真环境中得到了比较满意的实验结果,但是仍有很多方面需要继续完善和改进。未来的研究工作可以从以下几个方向进行深入探索和扩展: +控制策略:PPO强化学习策略+自适应映射算法(与第五章算法设计一致); -1.\textbf{优化和增强算法:}本次研究中的 PPO 算法控制较好,但是也存在局限性,面对更难的交通场景,在完成训练并收敛需要耗费较长时间,后续研究可以将其与深度 Q 网络、基于模型的强化学习等算法结合,提高训练效率,加速收敛。深度 Q 网络、基于模型的强化学习等算法可继续研究,将其和 PPO 结合,可以提升算法在复杧行为环境中的算法性能,或者将混合强化学习的算法进行结合更多的场景,更为复杂的环境。 +目标轨迹:阶跃轨迹(定点转向)、正弦轨迹(连续转向),模拟实际方向盘操控场景。 +\section{测试模块与指标体系} +系统测试严格按照五大模块、四类评估维度开展,具体指标如下表所示。 +\begin{table}[htbp] + \centering + \caption{系统测试模块与评估指标} + \label{tab:test_index} + \begin{tabular}{lll} + \toprule + 测试模块 & 主要测试内容 & 核心评价指标 \\ + \midrule + 数据处理模块 & 数据加载、滤波、标准化、时序对齐 & 数据同步误差、预处理延迟 \\ + 运动学模块 & SMPL 前向运动学解算、3D 姿态输出 & 关节位置误差、运动平滑度、关节超限率 \\ + 控制模块 & 角度跟踪、响应速度、控制稳定性 & 平均绝对误差 MAE、均方根误差 RMSE、响应延迟、最大误差 \\ + 仿真模块 & 肌肉骨骼动力学、方向盘物理仿真 & 仿真帧率、无故障运行时间、角度漂移量 \\ + 评估模块 & 轨迹相似度、生物合理性、任务完成度 & 跟踪成功率、任务完成率、整体稳定性评分 \\ + \bottomrule + \end{tabular} +\end{table} -2.\textbf{多智能体协作与调度:}目前学术界和工业界研究重点多集中于单一行人导航控制技术,而随着智慧城市与智能交通系统的发展进步,未来研究方向有望拓展至多智能体系统。在多智能体系统中多个行人、车辆及其他智能体间的协作愈发关键,因此研究多人环境中行人与行人、行人与车辆的协作协调机制十分重要。采用多智能体强化学习(MARL)方法模拟不同智能体相互作用并优化其路径选择以提高系统运行效率是一个潜在研究方向。 +\section{功能测试} +为了检验肌肉和方向盘耦合驱动系统的功能是否完整、运行是否稳定以及操作是否好用,本章将依托已经搭建好的仿真平台和肌肉驱动的上肢模型,设计三类常见的人机交互任务来开展系统功能测试。 -3.\textbf{传感器环境认知能力提升:}已有的研究多使用激光雷达、摄像头这两种常用传感器进行感知认知,在后续的研究中可以引入更多种类的传感器来增强行人智能体对环境的感知能力,例如深度摄像头、红外传感器等。这些高层次的传感器能够提供低光、雨雾雪情况下更丰富的环境数据,感知能力增强后可以辅助行人智能体实现更好的避障、减少碰撞、获得更丰富更准确的环境信息,而环境信息又对智能体的路径规划决策起重要作用,辅助智能体更智能的规划出最优路径、提高效率、保障安全。 +这三类任务分别是遥控驾驶任务、控制精度任务和小物体触碰任务,通过这三类不同的任务,全面检查模型在不同交互场景下的运动反应、控制精准度以及动态稳定效果。 -4.\textbf{复杂场景的应用与测试:}当前实验包括不同环境、不同障碍物等情况,由于仿真的限制,无法对真实场景中复杂的真实影响因素进行考验,今后工作中将系统投入到真实世界,在城市道路、繁忙地点、各种公共场所等复杂交通环境对实际障碍物更加复杂的情况进行考验,同时考虑交通环境中天气、光线等复杂影响因素对系统的影响。行人控制系统在真实世界的实时性和稳定性有更多考验,如何在实时高效率寻路的同时对复杂的外界变化进行处理是今后工作中的重点。 +测试工作需要借助 User-in-the-Box 框架自带的统一启动脚本 hmi\_quickstart.py 来开展,通过这个脚本能够实现不同测试任务的快速切换。就像图~\ref{fig:test_scheme}的测试方案与指标体系图所展示的那样,工作人员可以通过命令行参数,自主选择人工操控模式或者自动评估模式。 -5.\textbf{集成与系统优化:}智能城市与自动驾驶技术的进步普及对行人导航控制系统提出多系统集成需求,需与自动驾驶、交通管理等系统协同以确保行人在自动驾驶环境中与车辆及其他元素协调共存,这成为未来研究的重要焦点。硬件部署、通信延迟、传感器精度等技术细节深刻影响系统实际应用效果,有效开展系统集成与优化以保障行人安全和交通流畅是未来研究不可忽视的关键课题。 +其中,人工操控模式支持实时控制操作,自动评估模式则可以实时记录相关数据、计算评估指标,同时还能将测试数据导出保存,确保整个测试过程规范统一,测试结果能够用具体数据来体现,避免主观判断。 -\section{结论} +这种测试方式既保证了测试流程的标准化,也让测试结果更加客观可量化,能够全面检验肌肉–方向盘耦合驱动系统的实际使用效果,这样系统在不同场景下能够稳定运行、满足使用需求。 +\begin{figure}[htbp] + \centering + \includegraphics[width=0.8\textwidth]{image_11.png} + \caption{测试方案与指标体系} + \label{fig:test_scheme} +\end{figure} -本研究应用强化学习领域的 PPO 算法,基于 CARLA 平台开发行人路径规划与障碍物规避控制系统,通过模型训练及测试验证了系统在复杂环境中的稳定性与避障能力。未来研究将围绕算法改进、传感器算法优化、多智能体合作及实际场景测试展开,以拓展系统在实际应用中的广度与深度,适应更广泛环境。随着技术进步与多学科交叉融合,基于智能算法的行人控制系统在智能交通和智慧城市建设中的重要性愈发凸显,将为城市交通智能化与安全化发展贡献重要价值。​ \ No newline at end of file +功能测试用于验证系统能否正常启动、加载、运行、控制与评估,是系统可用的基础。下图~\ref{fig:function_test}是User-in-the-Box 框架仿真环境搭建成功的画面,正在进行测试 +\begin{figure}[htbp] + \centering + \includegraphics[width=0.8\textwidth]{image_12.png} + \caption{环境搭建成功画面} + \label{fig:function_test} +\end{figure} + +在开展系统测试时,会分三类任务进行测试,每类任务对应不同的脚本、场景和测试重点,具体如下:在遥控驾驶任务中,系统会调用脚本文件来进行控制,同时加载 mobl\_arms\_index\_remote\_driving 仿真场景,采用 WASD 按键操作来模拟摇杆推拉指令,进而实现对上肢模型和方向盘的连续转向控制,这项测试主要是为了检验系统在长时间连续操作下,是否能保持响应流畅、姿态稳定,不会出现卡顿问题。测试期间,会保持肌肉驱动相关参数不变,同步记录方向盘转动角度、上肢关节的运动轨迹,以及仿真实时运行情况,以此验证系统在模拟驾驶类连续操控场景中的实际使用效果。 + +在控制精度测试任务中,系统会加载 pointing\_teleop.py 控制脚本,同时启用 mobl\_arms\_index\_pointing 高精度场景,工作人员通过 WASD 按键发出控制指令,驱动上肢模型的手指末端对准固定目标点,重点检验肌肉驱动模型的定位准确性、细微动作的控制能力,以及姿态调整的速度,通过记录目标偏差距离、稳定运行时间等具体数据,来判断系统在精细操作场景下的控制效果。 + +在小物体触碰任务中,会启用控制脚本文件来和场景文件来进行控制和紧凑场景,工作人员通过按键发出控制指令,驱动上肢模型的手指完成对小目标物体的精准触碰操作,重点测试模型在狭小空间内的运动灵活性、躲避障碍物的合理性,以及触碰时的稳定性,以此验证肌肉与方向盘耦合驱动系统在复杂约束环境下,是否能稳定运行、满足使用需求。 + +此外,下图~\ref{fig:accuracy_test}中,还展示了肌肉驱动方式下,方向盘角度跟踪精度的对比数据,可直观体现系统的控制精度情况。 +\begin{figure}[htbp] + \centering + \includegraphics[width=0.8\textwidth]{image_13.png} + \caption{肌肉驱动方向盘角度跟踪精度对比} + \label{fig:accuracy_test} +\end{figure} + +三种测试任务都可以使用人工控制和自动评价两种运行方式,在程序中加入 --eval 参数,就能开启自动检测流程,系统会载入模型相关参数,按照设定的次数完成自动测试,并输出可以量化的评价数据,加入 --csv 参数,就能在人工操作时实时导出动作数据、控制偏差和运行稳定程度,这些数据可以让测试结果更加真实可信。测试结果可以说明,肌肉与方向盘结合的驱动系统,在三种任务里都可以保持稳定的运行状态,上肢模型动作流畅不会出现晃动,方向盘可以和上肢同步动作,不会出现时间滞后,关节活动范围合理,不会超出限制,位置确定精度和物体触碰成功率,都可以达到人机交互的使用标准。遥控驾驶任务中,系统可以持续运行不会出现故障,转向反应速度快,模型姿态保持稳定,控制精度任务中,目标位置的偏差数值较小,能快速达到稳定状态,小物体触碰任务中,模型动作灵活,触碰位置准确,可以在空间条件有限的情况下完成指定操作。综合所有测试结果可以看出,本次搭建的肌肉驱动上肢模型和结合驱动系统,设计结构合理,运行状态稳定,功能模块完善,可以满足模拟驾驶、精细操作、交互触碰等多种场景的使用需要,具备较好的实际使用价值和拓展空间,图~\ref{fig:tracking_curve}为角度跟踪曲线数据,图~\ref{fig:step_tracking_curve}为阶跃轨迹下方向盘角度跟踪曲线数据。 +\begin{figure}[htbp] + \centering + \includegraphics[width=0.8\textwidth]{image_14.png} + \caption{角度跟踪曲线数据} + \label{fig:tracking_curve} +\end{figure} + +\begin{figure}[htbp] + \centering + \includegraphics[width=0.8\textwidth]{image_15.png} + \caption{阶跃轨迹下方向盘角度跟踪曲线数据} + \label{fig:step_tracking_curve} +\end{figure} + +为验证肌肉驱动人机交互系统各功能模块的正确性与可靠性,开展单元测试。测试覆盖模型加载、关节驱动、力矩映射、信号滤波、死区抑制与限幅保护六大核心模块,结果如图~\ref{fig:unit_test}所示: +\begin{figure}[htbp] + \centering + \includegraphics[width=0.8\textwidth]{image_16.png} + \caption{单元效果测试图} + \label{fig:unit_test} +\end{figure} + + +通过对系统的多个部分进行单独测试,以此确认每个模块都可以正常使用,模型加载测试会对肌肉骨骼模型的初始运行状态进行检查,模型在启动过程中不会出现错误提示,也不会发生异常情况,模型可以被顺利加载到系统当中,关节驱动测试会使用连续变化的运动方式开展检验,关节可以按照设定的轨迹平稳进行活动,关节角度的变化过程不会出现明显的异常,整体运行状态保持稳定,力矩映射测试会对肌肉信号与输出动力之间的关系进行验证,数据的分布情况和预期的变化规律基本保持一致,信号到动力的转换过程不会出现偏差,信号滤波测试会对处理前和处理后的信号进行对比,经过滤波处理的信号可以减少杂乱波动的影响,信号的整体质量会得到明显改善,死区抑制测试会对信号在零值附近的波动情况进行检验,波动问题可以得到有效控制,系统在静止状态下不会出现错误动作,限幅保护测试会对输出信号的范围进行约束,超出安全范围的信号会被限制在合理区间内,系统和相关设备可以得到有效保护。通过以上各项测试可以发现,系统中的每个功能模块都可以正常运行,模块的运行效果可以达到设计时的相关要求,这些单独测试的顺利完成,也为后续的整体组合测试和系统综合测试打下了扎实的运行基础。 diff --git a/hci/undergraduate/content/chapter7.tex b/hci/undergraduate/content/chapter7.tex new file mode 100644 index 00000000..35b875ac --- /dev/null +++ b/hci/undergraduate/content/chapter7.tex @@ -0,0 +1,31 @@ +%!TEX root = ../hutbthesis_main.tex + +\chapter{总结与展望} +\section{总结} +本研究主要围绕肌肉驱动的生物力学人机交互系统展开,重点做了系统的设计和实现工作,我们以方向盘控制作为核心应用场景,一步步完成了从模型搭建、耦合驱动实现,再到系统功能测试的全部流程,没有遗漏任何关键步骤。 + +本系统借助 User-in-the-Box 开源框架完成搭建工作,框架可以为研究提供可用的人体上肢肌肉骨骼模型,模型内部包含胸廓、脊柱、肩部、肘部、腕部等多个关节结构,关键肌肉发力组件与关节力矩计算端口也被集成在模型中,肌肉的激活信号可以被转化为关节转动需要的动力,这一过程为肌肉驱动操作提供了基础条件,也让后续的控制流程可以稳定开展。 + +研究人员通过仿真文件将上肢模型与方向盘模型进行固定连接,肌肉激活信号、关节力矩、方向盘转动状态被连接成一条完整的控制链路,上肢模型做出转动动作时,方向盘会跟随上肢同步运动,两者可以保持一致的运动状态。 + +模型搭建完成后需要进行合理性检验,工作人员从结构完整程度、动力响应效果、运动限制情况等角度开展测试,测试结果表明,模型结构完整稳定,运动过程不会出现关节超出限制、姿态异常、抖动偏移等问题,可以满足仿真使用的基本要求。 + +系统功能测试环节设置了三种不同任务,分别为遥控驾驶任务、控制精度任务、小物体触碰任务,这些任务可以检验连续操作、精准定位、狭小空间交互等不同场景下的系统表现。 + +测试得到的数据显示,模型运行过程平稳顺畅,控制效果稳定可靠,方向盘与上肢的联动没有明显延迟,指尖定位精度与小物体触碰成功率可以达到人机交互的使用标准,这一结果说明,肌肉与方向盘耦合驱动系统具备实际使用价值,能够在模拟驾驶、精细操作等多种场景中完成对应的交互任务。 +\section{不足与展望} +我们开展的这项研究,目前还存在一些不足之处,这些问题还需要在之后的工作中进一步改进和完善。 + +首先在模型方面,目前我们使用的上肢模型,其肌肉驱动的逻辑还比较简单,没有考虑到肌肉疲劳、不同人身体状况不一样等因素,这些因素都会影响肌肉发力的效果,所以这个模型和真实人体肌肉的复杂运动情况还有一定的差距;另外,方向盘模型也只是实现了基础的固定绑定,没有加入真实方向盘所具备的阻尼、自动回正等物理特性,和我们实际开车时接触到的方向盘体验还有区别。 + +然后在控制方面,当前系统使用的是固定的按键控制方式,没有结合人体真实的肌电信号来进行闭环控制,所以人和机器之间的交互还不够自然,还有提升的空间;同时,自动评测模式也只能应对提前设置好的测试场景,不能应对复杂的工作情况和多目标的任务,扩展能力还比较弱。 + +这次的系统设计存在以上问题,后续将在以下方面进行改进。 + +第一,进一步完善生物力学模型,加入更细致的肌肉参数和人体生理方面的限制条件,让这个模型和真实人体的贴合度更高,更符合实际情况; + +第二,优化方向盘的物理模型,增加阻尼、回正力矩等相关参数,让方向盘的使用体验更接近真实开车时的感觉,提升交互的真实性; + +第三,添加肌电信号采集相关的设备,实现通过人体真实肌肉信号来进行闭环控制,让人和机器的交互更自然、更有沉浸感; + +第四,增加更多的测试场景,比如复杂的路况、需要同时完成多个目标的交互场景等,不断完善系统的稳定性和适应能力,让肌肉驱动的生物力学人机交互技术,能够真正运用到驾驶辅助、康复训练等实际场景中去。 diff --git a/hci/undergraduate/content/cover.tex b/hci/undergraduate/content/cover.tex index c172eec7..5ca5bc6e 100644 --- a/hci/undergraduate/content/cover.tex +++ b/hci/undergraduate/content/cover.tex @@ -1,24 +1,21 @@ %!TEX root = ../hutbthesis_main.tex -% 文章信息(同时也是页眉) -\titlecn{基于虚幻引擎的行人强化学习控制和导航系统} -\headertitle{湖南工商大学毕业论文} -\titleen{Hunan University of Technology and Business Thesis \LaTeX{} Template v2.0} +% 文章信息 +\titlecn{基于肌肉驱动的生物力学人机交互系统} +\titleen{Hunan University of Technology and Business Thesis \LaTeX{} Template v0.1} -%\minormajor{通信工程} -%\interestmajor{通信工程} -\author{张瀚驰} + +\author{周恒} \subsupervisor{} -\studentid{2123030023} -\priormajor{大数据与人工智能} -\myclass{数智2101班} -\supervisor{王海东} -\title{讲师} -\department{人工智能与先进计算学院} -\thesisdate{year=2025, month=5} +\studentid{2209040021} +\priormajor{机器人工程} +\myclass{机器人2201班} +\supervisor{王海东教授} +\department{智能机器人学院} +\thesisdate{year=2026, month=5} %以下的对本科生没有用 \clcnumber{TP391} % 中图分类号 Chinese Library Classification \schoolcode{10533} % 学校代码 \udc{004.9} % UDC -\academiccategory{学术学位} % 学术类别 +\academiccategory{学术学位} % 学术类别 \ No newline at end of file diff --git a/hci/undergraduate/hutbthesis_main.tex b/hci/undergraduate/hutbthesis_main.tex index 27022f56..255e175d 100644 --- a/hci/undergraduate/hutbthesis_main.tex +++ b/hci/undergraduate/hutbthesis_main.tex @@ -39,9 +39,6 @@ \include{content/declarationzh} -% 授权书 -\include{content/authorizationzh} - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 中文摘要 % @@ -83,11 +80,21 @@ \include{content/chapter3.tex} \include{content/chapter4.tex} \include{content/chapter5.tex} +\include{content/chapter6.tex} +\include{content/chapter7.tex} % % 主文件有代码去掉页眉章节编号的“.”,但这会因为bug导致无编号章节显示一个错误编号,所以这里在无编号章节之前再次重定义sectionmark。 % \renewcommand{\sectionmark}[1]{\markright{#1}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% 致谢 +% +% 存储在\content\acknowledgements.tex文件中 +% 根据本科生院的要求,致谢应该在参考文献的前面,不编章号,而附录应该位于参考文献后。 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\include{content/acknowledgements} + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 参考文献 % @@ -104,6 +111,8 @@ \printbibliography +%\bibliography{hutbtheisi_main} +\newpage %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -126,17 +135,4 @@ \include{content/appendix} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% 致谢 -% -% 存储在\content\acknowledgements.tex文件中 -% 根据本科生院的要求,致谢应该在参考文献的前面,不编章号,而附录应该位于参考文献后。 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\include{content/acknowledgements} - -%\bibliography{hutbtheisi_main} -\newpage - - - \end{document} diff --git a/hci/undergraduate/images/png8.png b/hci/undergraduate/images/imag_8.png similarity index 100% rename from hci/undergraduate/images/png8.png rename to hci/undergraduate/images/imag_8.png diff --git a/hci/undergraduate/images/png1.png b/hci/undergraduate/images/image_1.png similarity index 100% rename from hci/undergraduate/images/png1.png rename to hci/undergraduate/images/image_1.png diff --git a/hci/undergraduate/images/png10.png b/hci/undergraduate/images/image_10.png similarity index 100% rename from hci/undergraduate/images/png10.png rename to hci/undergraduate/images/image_10.png diff --git a/hci/undergraduate/images/png11.png b/hci/undergraduate/images/image_11.png similarity index 100% rename from hci/undergraduate/images/png11.png rename to hci/undergraduate/images/image_11.png diff --git a/hci/undergraduate/images/png12.png b/hci/undergraduate/images/image_12.png similarity index 100% rename from hci/undergraduate/images/png12.png rename to hci/undergraduate/images/image_12.png diff --git a/hci/undergraduate/images/png13.png b/hci/undergraduate/images/image_13.png similarity index 100% rename from hci/undergraduate/images/png13.png rename to hci/undergraduate/images/image_13.png diff --git a/hci/undergraduate/images/png14.png b/hci/undergraduate/images/image_14.png similarity index 100% rename from hci/undergraduate/images/png14.png rename to hci/undergraduate/images/image_14.png diff --git a/hci/undergraduate/images/png15.png b/hci/undergraduate/images/image_15.png similarity index 100% rename from hci/undergraduate/images/png15.png rename to hci/undergraduate/images/image_15.png diff --git a/hci/undergraduate/images/png16.png b/hci/undergraduate/images/image_16.png similarity index 100% rename from hci/undergraduate/images/png16.png rename to hci/undergraduate/images/image_16.png diff --git a/hci/undergraduate/images/png2.png b/hci/undergraduate/images/image_2.png similarity index 100% rename from hci/undergraduate/images/png2.png rename to hci/undergraduate/images/image_2.png diff --git a/hci/undergraduate/images/png3.png b/hci/undergraduate/images/image_3.png similarity index 100% rename from hci/undergraduate/images/png3.png rename to hci/undergraduate/images/image_3.png diff --git a/hci/undergraduate/images/png4.png b/hci/undergraduate/images/image_4.png similarity index 100% rename from hci/undergraduate/images/png4.png rename to hci/undergraduate/images/image_4.png diff --git a/hci/undergraduate/images/png5.png b/hci/undergraduate/images/image_5.png similarity index 100% rename from hci/undergraduate/images/png5.png rename to hci/undergraduate/images/image_5.png diff --git a/hci/undergraduate/images/png6.png b/hci/undergraduate/images/image_6.png similarity index 100% rename from hci/undergraduate/images/png6.png rename to hci/undergraduate/images/image_6.png diff --git a/hci/undergraduate/images/png7.png b/hci/undergraduate/images/image_7.png similarity index 100% rename from hci/undergraduate/images/png7.png rename to hci/undergraduate/images/image_7.png diff --git a/hci/undergraduate/images/png9.png b/hci/undergraduate/images/image_9.png similarity index 100% rename from hci/undergraduate/images/png9.png rename to hci/undergraduate/images/image_9.png