diff --git a/swarm/README.md b/swarm/README.md deleted file mode 100644 index 18a03286..00000000 --- a/swarm/README.md +++ /dev/null @@ -1,7 +0,0 @@ -编译说明: -1. 使用 TeXstudio 打开 hutbthesis_main.tex。 -2. 编译器选择 XeLaTeX。 -3. 连续编译两次,即可生成 PDF。 -4. 本工程参考文献采用 content/references.tex 手工编号方式,不需要运行 biber。 -5. 本版已将公式统一整理为 equation 环境,图注统一绑定到 figure 环境,表格使用 LaTeX longtable/table 环境,代码段使用 listings 模板样式。 -6. 若重新编译前需要清理临时文件,可双击 cmdel.bat。 diff --git a/swarm/hutbthesis.cls b/swarm/hutbthesis.cls deleted file mode 100644 index 03e5ee52..00000000 --- a/swarm/hutbthesis.cls +++ /dev/null @@ -1,1228 +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 -\IfFontExistsTF{Times New Roman}{\sjtu@load@fontset@times}{\sjtu@load@fontset@lm} -% 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}} % 学术类别 - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% 页面布局 -% -% 设置页边距以及版芯行间距设置 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% 边距要求上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]{\raisebox{-0.18\height}{\includegraphics[width=0.18\textwidth,keepaspectratio]{hutb_logo_maoti.png}}} -\else -\fancyhead[L]{\raisebox{-0.18\height}{\includegraphics[width=0.18\textwidth,keepaspectratio]{hutb_logo_maoti.png}}} -\fi -% \fancyhf[RH]{\heiti \zihao{-5} {图像与激光融合的轨道扣件脱落检测}} % 设置所有(奇数和偶数)右侧页眉 -% UPDATE 更新配置为论文标题 -\fancyhf[RH]{\heiti \zihao{-5} {\@titlecn}} -% frontmatter设置 -\renewcommand{\frontmatter}{ - \clearpage - \@mainmatterfalse - % 目录单独使用大罗马编号 - \pagenumbering{Roman} - \pagestyle{fancy} - \def\hutb@thepage{\thepage} - \def\hutb@lastpageref{\pageref{LastPage}} - \fancyfoot[C]{\zihao{-5} \hutb@thepage@format@en{\hutb@thepage}} - \fancypagestyle{plain}{% - \fancyhf{}% - \fancyhead[L]{\raisebox{-0.18\height}{\includegraphics[width=0.18\textwidth,keepaspectratio]{hutb_logo_maoti.png}}}% - \fancyhead[R]{\heiti \zihao{-5} {\@titlecn}}% - \fancyfoot[C]{\zihao{-5} \hutb@thepage@format@en{\hutb@thepage}}% - } -} -% mainmatter设置 -\renewcommand{\mainmatter}{ - \clearpage - \@mainmattertrue - % 正文部分启用阿拉伯数字编号 - \pagenumbering{arabic} - \pagestyle{fancy} - \def\hutb@thepage{\thepage} - \def\hutb@lastpageref{\pageref{LastPage}} - \fancyfoot[C]{\zihao{-5} \songti \hutb@thepage@format@zh{\hutb@thepage}{\hutb@lastpageref}} - \fancypagestyle{plain}{% - \fancyhf{}% - \fancyhead[L]{\raisebox{-0.18\height}{\includegraphics[width=0.18\textwidth,keepaspectratio]{hutb_logo_maoti.png}}}% - \fancyhead[R]{\heiti \zihao{-5} {\@titlecn}}% - \fancyfoot[C]{\zihao{-5} \songti \hutb@thepage@format@zh{\hutb@thepage}{\hutb@lastpageref}}% - } -} -% 给页眉留足空间(否则会有 \headheight is too small的warning) -% 页眉左侧校名图使用固定宽度 width=0.18\textwidth,避免 scale 修改不明显。 -\setlength{\headheight}{32pt} -% “磅”是衡量印刷字体大小的单位,约等于七十二分之一英寸。 -% 而 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@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}}} - - - - - -%\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] - \centering - \ifhutb@type@print - \includegraphics[width=0.6\textwidth]{hutb_logo_maoti.png} - \else - \includegraphics[width=0.6\textwidth]{hutb_logo_maoti.png} - \fi - \end{figure} - \vspace{0pt} - \begingroup - \fontsize{45}{50}\selectfont 本科毕业设计(论文) \par - % 45磅,黑体 - \endgroup - \vspace*{6pt} - \begingroup - % \zihao{1} \setmainfont{SimHei} GRADUATION DESIGN(THESIS) \par - % \zihao{1} GRADUATION DESIGN(THESIS) \par - % 1号,黑体 - \endgroup - - \begingroup - \linespread{1.3} - \zihao{-2} - \songti - \begin{tabular}{ll} - \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 \@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]{学\qquad 院:} & \underline{\makebox[220pt][c]{\kaishu \@department}} \\ - - \end{tabular} - \endgroup - \par - \vspace{40pt} - % \vfill - \begingroup - {\zihao{2} \heiti \@department \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}% - -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% 摘要 -% -% 提供中英文摘要样式 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% ---------------------------------------------- -% 中文摘要 -% ---------------------------------------------- -% 中文摘要格式具体见样例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 = {% - format = \zihao{3} \heiti\centering, - 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} \heiti, - 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} \bfseries \songti, - afterindent = true, - % afterskip 默认为 2.3ex plus .2ex 适当缩减 - afterskip = {1ex \@plus .2ex}, - %fixskip = true, -}, -subsubsection = {% - format = \zihao{-4} \normalfont, - 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/swarm/undergraduate/content/.gitkeep b/swarm/undergraduate/content/.gitkeep deleted file mode 100644 index 8b137891..00000000 --- a/swarm/undergraduate/content/.gitkeep +++ /dev/null @@ -1 +0,0 @@ - diff --git a/swarm/undergraduate/content/abstract.tex b/swarm/undergraduate/content/abstractzh.tex similarity index 99% rename from swarm/undergraduate/content/abstract.tex rename to swarm/undergraduate/content/abstractzh.tex index dc790418..ab279cdc 100644 --- a/swarm/undergraduate/content/abstract.tex +++ b/swarm/undergraduate/content/abstractzh.tex @@ -1,4 +1,3 @@ - %!TEX root = ../hutbthesis_main.tex % 设置英文摘要 diff --git a/swarm/undergraduate/content/acknowledgement.tex b/swarm/undergraduate/content/acknowledgement.tex deleted file mode 100644 index e1128b6d..00000000 --- a/swarm/undergraduate/content/acknowledgement.tex +++ /dev/null @@ -1,19 +0,0 @@ -%!TEX root = ../hutbthesis_main.tex - -\clearpage -\chapter*{致谢} -\addcontentsline{toc}{chapter}{致谢} - -本论文的完成,离不开老师、同学、家人与学校的支持。 - -首先感谢我的指导教师,从选题、框架、研究思路到论文修改都给予了严谨细致的指导。 - -感谢智能机器人学院提供的实验环境与学习平台,让我能够顺利完成源码研究、性能测试与系统优化。 - -感谢同窗好友在讨论、调试、实验中给予的帮助。 - -最后感谢家人一直以来的理解、支持与鼓励。 - -本研究立足于开源社区,受益于微软AirSim项目,成果也将回馈社区。 - -由于本人水平有限,论文中难免存在疏漏与不足,恳请各位老师、专家批评指正。 diff --git a/swarm/undergraduate/content/acknowledgements.tex b/swarm/undergraduate/content/acknowledgements.tex new file mode 100644 index 00000000..edfe4783 --- /dev/null +++ b/swarm/undergraduate/content/acknowledgements.tex @@ -0,0 +1,9 @@ +%!TEX root = ../hutbthesis_main.tex + +% 设置中文摘要 +\keywordscn{AirSim,无人机集群,仿真平台,性能优化,线程调度} +\begin{abstractzh} + +针对微软AirSim平台在大规模无人机集群仿真中帧率骤降、时延激增的瓶颈,本文围绕无人机集群仿真、性能优化及线程调度展开软件层优化研究。低效线程调度、内核态与用户态频繁切换、不合理自旋等待是导致性能退化的主要原因。单线程分发器、标准阻塞睡眠、协作式让出等五种线程等待模型被设计并集成于AirSim框架。微观基准测试与集成仿真实验从定时精度、帧率、CPU占用等维度验证了优化效果。经微观基准测试与集成仿真实验,从定时精度、帧率、CPU占用等维度完成量化评估。结果表明,优化方案显著提升AirSim支持20架以上无人机仿真的效率与稳定性,为高并发实时仿真提供可复用调优范式,降低集群算法真机测试成本,推动无人机集群在侦察、配送、测绘等领域落地应用。 + +\end{abstractzh} diff --git a/swarm/undergraduate/content/appendix.tex b/swarm/undergraduate/content/appendix.tex index 83e32c45..e1128b6d 100644 --- a/swarm/undergraduate/content/appendix.tex +++ b/swarm/undergraduate/content/appendix.tex @@ -1,242 +1,19 @@ - %!TEX root = ../hutbthesis_main.tex \clearpage -\chapter*{附录} -\addcontentsline{toc}{chapter}{附录} - -{[}1{]} 实验硬件配置清单 - -{[}2{]} 软件环境版本与依赖清单 - -{[}3{]} 实验原始数据记录表 - -{[}4{]} 优化模型编译与使用说明 - -\section*{附录1 实验硬件配置清单} - -\begin{longtable}[]{@{} - >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.2994}} - >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.5533}} - >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.1472}}@{}} -\caption{实验硬件配置清单}\\ -\toprule\noalign{} -\begin{minipage}[b]{\linewidth}\raggedright -设备名称 -\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright -型号 / 规格 -\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright -数量 -\end{minipage} \\ -\midrule\noalign{} -\endhead -\bottomrule\noalign{} -\endlastfoot -CPU & Intel Core i9-12900K & 1 \\ -内存 & 64GB DDR5 4800MHz & 4条 \\ -显卡 & NVIDIA RTX 4090 24GB & 1 \\ -服务器主板 & 华硕 ROG Z690 & 1 \\ -固态硬盘 & 2TB PCIe4.0 & 1 \\ -\end{longtable} - -\section*{附录2 软件环境版本与依赖清单} - -\begin{longtable}[]{@{} - >{\raggedright\arraybackslash}p{(\columnwidth - 2\tabcolsep) * \real{0.4471}} - >{\raggedright\arraybackslash}p{(\columnwidth - 2\tabcolsep) * \real{0.5529}}@{}} -\caption{软件环境版本依赖清单表}\\ -\toprule\noalign{} -\begin{minipage}[b]{\linewidth}\raggedright -软件名称 -\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright -版本号 -\end{minipage} \\ -\midrule\noalign{} -\endhead -\bottomrule\noalign{} -\endlastfoot -操作系统 & Windows 11专业版 \\ -Unreal Engine & 5.1 \\ -Visual Studio & 2022 \\ -Python & 3.9 \\ -AirSim & 1.8.1 \\ -CMake & 3.24.1 \\ -\end{longtable} - -\section*{附录3 实验原始数据记录表} - -测试环境:i9-12900K+64GB+RTX4090+Unity2021.3.15f1+AirSim1.8.1 - -测试场景:标准化室外场景,无人机悬停模式 - -单位:FPS(帧/秒) - -\begin{longtable}[]{@{} - >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.4307}} - >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.2117}} - >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.3577}}@{}} -\caption{1架无人机仿真帧率数据}\\ -\toprule\noalign{} -\begin{minipage}[b]{\linewidth}\raggedright -无人机编号 -\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright -UAV1 -\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright -平均帧率 -\end{minipage} \\ -\midrule\noalign{} -\endhead -\bottomrule\noalign{} -\endlastfoot -帧率 & 61 & 61.0 \\ -\end{longtable} - -\begin{longtable}[]{@{} - >{\raggedright\arraybackslash}p{(\columnwidth - 12\tabcolsep) * \real{0.2332}} - >{\raggedright\arraybackslash}p{(\columnwidth - 12\tabcolsep) * \real{0.1146}} - >{\raggedright\arraybackslash}p{(\columnwidth - 12\tabcolsep) * \real{0.1146}} - >{\raggedright\arraybackslash}p{(\columnwidth - 12\tabcolsep) * \real{0.1146}} - >{\raggedright\arraybackslash}p{(\columnwidth - 12\tabcolsep) * \real{0.1146}} - >{\raggedright\arraybackslash}p{(\columnwidth - 12\tabcolsep) * \real{0.1146}} - >{\raggedright\arraybackslash}p{(\columnwidth - 12\tabcolsep) * \real{0.1937}}@{}} -\caption{5架无人机仿真帧率数据}\\ -\toprule\noalign{} -\begin{minipage}[b]{\linewidth}\raggedright -无人机编号 -\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright -UAV1 -\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright -UAV2 -\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright -UAV3 -\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright -UAV4 -\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright -UAV5 -\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright -平均帧率 -\end{minipage} \\ -\midrule\noalign{} -\endhead -\bottomrule\noalign{} -\endlastfoot -帧率 & 58 & 57 & 59 & 58 & 57 & 57.8 \\ -\end{longtable} - -\begin{longtable}[]{@{} - >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.1922}} - >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.6482}} - >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.1596}}@{}} -\caption{10架无人机仿真帧率数据}\\ -\toprule\noalign{} -\begin{minipage}[b]{\linewidth}\raggedright -无人机编号 -\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright -UAV1\textasciitilde UAV10 单台帧率 -\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright -平均帧率 -\end{minipage} \\ -\midrule\noalign{} -\endhead -\bottomrule\noalign{} -\endlastfoot -帧率 & 46、45、44、46、45、44、46、45、44、45 & 45.0 \\ -\end{longtable} +\chapter*{致谢} +\addcontentsline{toc}{chapter}{致谢} -\begin{longtable}[]{@{} - >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.1470}} - >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.7231}} - >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.1299}}@{}} -\caption{15架无人机仿真帧率数据}\\ -\toprule\noalign{} -\begin{minipage}[b]{\linewidth}\raggedright -无人机编号 -\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright -UAV1\textasciitilde UAV15 单台帧率 -\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright -平均帧率 -\end{minipage} \\ -\midrule\noalign{} -\endhead -\bottomrule\noalign{} -\endlastfoot -帧率 & 29、28、27、29、28、27、29、28、27、29、28、27、29、28、27 & -28.0 \\ -\end{longtable} +本论文的完成,离不开老师、同学、家人与学校的支持。 -\begin{longtable}[]{@{} - >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.1240}} - >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.7576}} - >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.1183}}@{}} -\caption{20架无人机仿真帧率数据}\\ -\toprule\noalign{} -\begin{minipage}[b]{\linewidth}\raggedright -无人机编号 -\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright -UAV1\textasciitilde UAV20 单台帧率 -\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright -平均帧率 -\end{minipage} \\ -\midrule\noalign{} -\endhead -\bottomrule\noalign{} -\endlastfoot -帧率 & -13、12、11、13、12、11、13、12、11、13、12、11、13、12、11、13、12、11、12、12 -& 12.1 \\ -\end{longtable} +首先感谢我的指导教师,从选题、框架、研究思路到论文修改都给予了严谨细致的指导。 -\begin{longtable}[]{@{} - >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.1292}} - >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.7551}} - >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.1157}}@{}} -\caption{25 架无人机仿真帧率数据}\\ -\toprule\noalign{} -\begin{minipage}[b]{\linewidth}\raggedright -无人机编号 -\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright -UAV1\textasciitilde UAV25 单台帧率 -\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright -平均帧率 -\end{minipage} \\ -\midrule\noalign{} -\endhead -\bottomrule\noalign{} -\endlastfoot -帧率 & -7、6、5、7、6、5、7、6、5、7、6、5、7、6、5、7、6、5、6、6、6、5、6、6、5 -& 6.0 \\ -\end{longtable} +感谢智能机器人学院提供的实验环境与学习平台,让我能够顺利完成源码研究、性能测试与系统优化。 -\begin{longtable}[]{@{} - >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.1169}} - >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.7750}} - >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.1081}}@{}} -\caption{30架无人机仿真帧率数据}\\ -\toprule\noalign{} -\begin{minipage}[b]{\linewidth}\raggedright -无人机编号 -\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright -UAV1\textasciitilde UAV30 单台帧率 -\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright -平均帧率 -\end{minipage} \\ -\midrule\noalign{} -\endhead -\bottomrule\noalign{} -\endlastfoot -帧率 & -3、3、2、3、3、2、3、3、2、3、3、2、3、3、2、3、3、2、3、3、2、3、3、2、3、3、2、3、3、2 -& 3.0 \\ -\end{longtable} +感谢同窗好友在讨论、调试、实验中给予的帮助。 -\section*{附录4 优化模型编译与使用说明} +最后感谢家人一直以来的理解、支持与鼓励。 -优化模型的编译与使用步骤如代码~\ref{lst:airsim-opt-build}所示。 +本研究立足于开源社区,受益于微软AirSim项目,成果也将回馈社区。 -\begin{lstlisting}[style=hutbcode,language=bash,caption={AirSim优化模型编译与启用流程},label={lst:airsim-opt-build}] -build_release.bat -copy /Y AirSim.dll \Binaries\Win64\AirSim.dll -UnrealEditor.exe .uproject -AirSim.exe -allow-thread-optimize -\end{lstlisting} +由于本人水平有限,论文中难免存在疏漏与不足,恳请各位老师、专家批评指正。 diff --git a/swarm/undergraduate/content/authorization.tex b/swarm/undergraduate/content/authorization.tex index 77d69291..21733664 100644 --- a/swarm/undergraduate/content/authorization.tex +++ b/swarm/undergraduate/content/authorization.tex @@ -1,11 +1,241 @@ %!TEX root = ../hutbthesis_main.tex -\chapter*{湖南工商大学本科毕业设计\protect\\版权使用授权书} +\clearpage +\chapter*{附录} +\addcontentsline{toc}{chapter}{附录} -本毕业设计《基于AirSim的无人机集群仿真软件性能优化》是本人在校期间所完成学业的组成部分,是在学校教师的指导下完成的。因此,本人特授权学校可将本毕业设计的全部或部分内容编入有关书籍、数据库保存,可采用复制、印刷、网页制作等方式将设计文本和经过编辑、批注等处理的设计文本提供给读者查阅、参考,可向有关学术部门和国家有关教育主管部门呈送复印件和电子文档。本毕业设计无论做何种处理,必须尊重本人的著作权,署明本人姓名。 +{[}1{]} 实验硬件配置清单 -\vspace{80pt} -\noindent 设计作者(签字):\includegraphics[width=2.6cm]{images/image2.jpeg}\hfill 时间:2026年5月25日 +{[}2{]} 软件环境版本与依赖清单 -\vspace{50pt} -\noindent 指导教师已阅(签字):\includegraphics[width=3.0cm]{images/image3.png}\hfill 时间:2026年5月25日 +{[}3{]} 实验原始数据记录表 + +{[}4{]} 优化模型编译与使用说明 + +\section*{附录1 实验硬件配置清单} + +\begin{longtable}[]{@{} + >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.2994}} + >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.5533}} + >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.1472}}@{}} +\caption{实验硬件配置清单}\\ +\toprule\noalign{} +\begin{minipage}[b]{\linewidth}\raggedright +设备名称 +\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright +型号 / 规格 +\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright +数量 +\end{minipage} \\ +\midrule\noalign{} +\endhead +\bottomrule\noalign{} +\endlastfoot +CPU & Intel Core i9-12900K & 1 \\ +内存 & 64GB DDR5 4800MHz & 4条 \\ +显卡 & NVIDIA RTX 4090 24GB & 1 \\ +服务器主板 & 华硕 ROG Z690 & 1 \\ +固态硬盘 & 2TB PCIe4.0 & 1 \\ +\end{longtable} + +\section*{附录2 软件环境版本与依赖清单} + +\begin{longtable}[]{@{} + >{\raggedright\arraybackslash}p{(\columnwidth - 2\tabcolsep) * \real{0.4471}} + >{\raggedright\arraybackslash}p{(\columnwidth - 2\tabcolsep) * \real{0.5529}}@{}} +\caption{软件环境版本依赖清单表}\\ +\toprule\noalign{} +\begin{minipage}[b]{\linewidth}\raggedright +软件名称 +\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright +版本号 +\end{minipage} \\ +\midrule\noalign{} +\endhead +\bottomrule\noalign{} +\endlastfoot +操作系统 & Windows 11专业版 \\ +Unreal Engine & 5.1 \\ +Visual Studio & 2022 \\ +Python & 3.9 \\ +AirSim & 1.8.1 \\ +CMake & 3.24.1 \\ +\end{longtable} + +\section*{附录3 实验原始数据记录表} + +测试环境:i9-12900K+64GB+RTX4090+Unity2021.3.15f1+AirSim1.8.1 + +测试场景:标准化室外场景,无人机悬停模式 + +单位:FPS(帧/秒) + +\begin{longtable}[]{@{} + >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.4307}} + >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.2117}} + >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.3577}}@{}} +\caption{1架无人机仿真帧率数据}\\ +\toprule\noalign{} +\begin{minipage}[b]{\linewidth}\raggedright +无人机编号 +\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright +UAV1 +\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright +平均帧率 +\end{minipage} \\ +\midrule\noalign{} +\endhead +\bottomrule\noalign{} +\endlastfoot +帧率 & 61 & 61.0 \\ +\end{longtable} + +\begin{longtable}[]{@{} + >{\raggedright\arraybackslash}p{(\columnwidth - 12\tabcolsep) * \real{0.2332}} + >{\raggedright\arraybackslash}p{(\columnwidth - 12\tabcolsep) * \real{0.1146}} + >{\raggedright\arraybackslash}p{(\columnwidth - 12\tabcolsep) * \real{0.1146}} + >{\raggedright\arraybackslash}p{(\columnwidth - 12\tabcolsep) * \real{0.1146}} + >{\raggedright\arraybackslash}p{(\columnwidth - 12\tabcolsep) * \real{0.1146}} + >{\raggedright\arraybackslash}p{(\columnwidth - 12\tabcolsep) * \real{0.1146}} + >{\raggedright\arraybackslash}p{(\columnwidth - 12\tabcolsep) * \real{0.1937}}@{}} +\caption{5架无人机仿真帧率数据}\\ +\toprule\noalign{} +\begin{minipage}[b]{\linewidth}\raggedright +无人机编号 +\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright +UAV1 +\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright +UAV2 +\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright +UAV3 +\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright +UAV4 +\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright +UAV5 +\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright +平均帧率 +\end{minipage} \\ +\midrule\noalign{} +\endhead +\bottomrule\noalign{} +\endlastfoot +帧率 & 58 & 57 & 59 & 58 & 57 & 57.8 \\ +\end{longtable} + +\begin{longtable}[]{@{} + >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.1922}} + >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.6482}} + >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.1596}}@{}} +\caption{10架无人机仿真帧率数据}\\ +\toprule\noalign{} +\begin{minipage}[b]{\linewidth}\raggedright +无人机编号 +\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright +UAV1\textasciitilde UAV10 单台帧率 +\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright +平均帧率 +\end{minipage} \\ +\midrule\noalign{} +\endhead +\bottomrule\noalign{} +\endlastfoot +帧率 & 46、45、44、46、45、44、46、45、44、45 & 45.0 \\ +\end{longtable} + +\begin{longtable}[]{@{} + >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.1470}} + >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.7231}} + >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.1299}}@{}} +\caption{15架无人机仿真帧率数据}\\ +\toprule\noalign{} +\begin{minipage}[b]{\linewidth}\raggedright +无人机编号 +\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright +UAV1\textasciitilde UAV15 单台帧率 +\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright +平均帧率 +\end{minipage} \\ +\midrule\noalign{} +\endhead +\bottomrule\noalign{} +\endlastfoot +帧率 & 29、28、27、29、28、27、29、28、27、29、28、27、29、28、27 & +28.0 \\ +\end{longtable} + +\begin{longtable}[]{@{} + >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.1240}} + >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.7576}} + >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.1183}}@{}} +\caption{20架无人机仿真帧率数据}\\ +\toprule\noalign{} +\begin{minipage}[b]{\linewidth}\raggedright +无人机编号 +\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright +UAV1\textasciitilde UAV20 单台帧率 +\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright +平均帧率 +\end{minipage} \\ +\midrule\noalign{} +\endhead +\bottomrule\noalign{} +\endlastfoot +帧率 & +13、12、11、13、12、11、13、12、11、13、12、11、13、12、11、13、12、11、12、12 +& 12.1 \\ +\end{longtable} + +\begin{longtable}[]{@{} + >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.1292}} + >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.7551}} + >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.1157}}@{}} +\caption{25 架无人机仿真帧率数据}\\ +\toprule\noalign{} +\begin{minipage}[b]{\linewidth}\raggedright +无人机编号 +\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright +UAV1\textasciitilde UAV25 单台帧率 +\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright +平均帧率 +\end{minipage} \\ +\midrule\noalign{} +\endhead +\bottomrule\noalign{} +\endlastfoot +帧率 & +7、6、5、7、6、5、7、6、5、7、6、5、7、6、5、7、6、5、6、6、6、5、6、6、5 +& 6.0 \\ +\end{longtable} + +\begin{longtable}[]{@{} + >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.1169}} + >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.7750}} + >{\raggedright\arraybackslash}p{(\columnwidth - 4\tabcolsep) * \real{0.1081}}@{}} +\caption{30架无人机仿真帧率数据}\\ +\toprule\noalign{} +\begin{minipage}[b]{\linewidth}\raggedright +无人机编号 +\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright +UAV1\textasciitilde UAV30 单台帧率 +\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright +平均帧率 +\end{minipage} \\ +\midrule\noalign{} +\endhead +\bottomrule\noalign{} +\endlastfoot +帧率 & +3、3、2、3、3、2、3、3、2、3、3、2、3、3、2、3、3、2、3、3、2、3、3、2、3、3、2、3、3、2 +& 3.0 \\ +\end{longtable} + +\section*{附录4 优化模型编译与使用说明} + +优化模型的编译与使用步骤如代码~\ref{lst:airsim-opt-build}所示。 + +\begin{lstlisting}[style=hutbcode,language=bash,caption={AirSim优化模型编译与启用流程},label={lst:airsim-opt-build}] +build_release.bat +copy /Y AirSim.dll \Binaries\Win64\AirSim.dll +UnrealEditor.exe .uproject +AirSim.exe -allow-thread-optimize +\end{lstlisting} diff --git a/swarm/undergraduate/content/chapter06.tex b/swarm/undergraduate/content/chapter06.tex deleted file mode 100644 index 4f93ce56..00000000 --- a/swarm/undergraduate/content/chapter06.tex +++ /dev/null @@ -1,35 +0,0 @@ -%!TEX root = ../hutbthesis_main.tex - -\chapter{总结与展望} - -\section{研究工作总结} - -本课题围绕基于AirSim的无人机集群仿真软件性能优化展开,对多机仿真时出现的帧率急剧下降、时延大幅增加、CPU内核态占用过高、线程调度风暴等关键问题,进行了从理论分析、瓶颈定位、方案设计、源码改造直至实验验证的全流程系统研究。 - -主要完成工作如下:搭建标准化测试环境,重现并确认AirSim在20架以上无人机仿真时性能出现大幅度下滑的情况,运用专业性能分析工具找出根本原因,即线程模型不合理、sleep(0)低效等待、高频系统调用、调度风暴、内核态开销过大,提出并设计五种线程等待优化模型,对AirSim核心源码进行重构,实现线程池、负载均衡、CPU亲和性、单线程分发等关键优化,进行多维、大规模且长时间的实验,证实最优方案能让30架仿真时FPS从3提高到37,时延从292ms降至32ms,内核态占比从72\%降至22\%,上下文切换从286万次/秒降至8.3万次/秒,形成一套完整、可复用且可推广的高并发实时仿真系统性能调优范式,为机器人仿真、数字孪生、自动驾驶仿真等领域提供直接参考。。 - -\section{主要创新点} - -(1)根因定位创新 - -首次将性能问题从``帧率低''的现象描述,深化到线程调度、内核态开销、超线程冲突的机理层面,完成精准瓶颈定位。 - -(2)优化模型创新 - -提出单线程分发器模型,用一个线程统一管理多机定时唤醒,从架构层面消灭调度风暴。 - -(3)工程方案创新 - -提供可配置、可切换、可对比的轻量化源码改造方案,不破坏原有功能,兼容全生态,易于落地使用。 - -(4)验证体系创新 - -构建``微观基准+集成仿真+长期稳定''三层验证体系,给出量化、可复现、高说服力的实验结论。 - -\section{研究不足与未来展望} - -1.优化主要是针对单机平台展开的,并没有涉及到分布式集群仿真的扩展内容。未对GPU渲染、物理引擎并行计算进行进一步的优化。而且也没有在嵌入式平台(像NVIDIAJetson)上进行部署与测试工作。 - -2.未针对激光雷达、深度相机等高频传感器进行专门的数据收发优化。分布式多机协同仿真优化方面,把优化方案和分布式架构相结合,能够支持百架、千架级别的超大规模集群仿真。 - -3.GPU加速与异构计算融合上,借助CUDA加速物理更新、传感器数据处理,进而提高上限。嵌入式平台移植与部署是要实现在机载、边缘计算平台上的轻量级仿真,以此支持虚实融合测试。通用化性能调优框架是将优化思想封装成独立模块,能够快速移植到Gazebo、Webots、IsaacSim等平台。与集群智能算法深度结合则是提供专用性能接口,为编队控制、强化学习、协同感知等高端算法的研究提供服务。。 diff --git a/swarm/undergraduate/content/chapter1.tex b/swarm/undergraduate/content/chapter1.tex new file mode 100644 index 00000000..77d69291 --- /dev/null +++ b/swarm/undergraduate/content/chapter1.tex @@ -0,0 +1,11 @@ +%!TEX root = ../hutbthesis_main.tex + +\chapter*{湖南工商大学本科毕业设计\protect\\版权使用授权书} + +本毕业设计《基于AirSim的无人机集群仿真软件性能优化》是本人在校期间所完成学业的组成部分,是在学校教师的指导下完成的。因此,本人特授权学校可将本毕业设计的全部或部分内容编入有关书籍、数据库保存,可采用复制、印刷、网页制作等方式将设计文本和经过编辑、批注等处理的设计文本提供给读者查阅、参考,可向有关学术部门和国家有关教育主管部门呈送复印件和电子文档。本毕业设计无论做何种处理,必须尊重本人的著作权,署明本人姓名。 + +\vspace{80pt} +\noindent 设计作者(签字):\includegraphics[width=2.6cm]{images/image2.jpeg}\hfill 时间:2026年5月25日 + +\vspace{50pt} +\noindent 指导教师已阅(签字):\includegraphics[width=3.0cm]{images/image3.png}\hfill 时间:2026年5月25日 diff --git a/swarm/undergraduate/content/chapter01.tex b/swarm/undergraduate/content/chapter2.tex similarity index 100% rename from swarm/undergraduate/content/chapter01.tex rename to swarm/undergraduate/content/chapter2.tex diff --git a/swarm/undergraduate/content/chapter02.tex b/swarm/undergraduate/content/chapter3.tex similarity index 99% rename from swarm/undergraduate/content/chapter02.tex rename to swarm/undergraduate/content/chapter3.tex index 19ac5a35..cc5ecc9c 100644 --- a/swarm/undergraduate/content/chapter02.tex +++ b/swarm/undergraduate/content/chapter3.tex @@ -1,4 +1,3 @@ - %!TEX root = ../hutbthesis_main.tex \chapter{相关理论与技术基础} diff --git a/swarm/undergraduate/content/chapter03.tex b/swarm/undergraduate/content/chapter4.tex similarity index 99% rename from swarm/undergraduate/content/chapter03.tex rename to swarm/undergraduate/content/chapter4.tex index 6f0c988f..892805b9 100644 --- a/swarm/undergraduate/content/chapter03.tex +++ b/swarm/undergraduate/content/chapter4.tex @@ -1,4 +1,3 @@ - %!TEX root = ../hutbthesis_main.tex \chapter{面向大规模集群的AirSim性能优化策略} diff --git a/swarm/undergraduate/content/chapter04.tex b/swarm/undergraduate/content/chapter5.tex similarity index 99% rename from swarm/undergraduate/content/chapter04.tex rename to swarm/undergraduate/content/chapter5.tex index 9410ec54..ad564803 100644 --- a/swarm/undergraduate/content/chapter04.tex +++ b/swarm/undergraduate/content/chapter5.tex @@ -1,4 +1,3 @@ - %!TEX root = ../hutbthesis_main.tex \chapter{仿真性能表现与问题分析} diff --git a/swarm/undergraduate/content/chapter05.tex b/swarm/undergraduate/content/chapter6.tex similarity index 99% rename from swarm/undergraduate/content/chapter05.tex rename to swarm/undergraduate/content/chapter6.tex index e826d12e..432673c3 100644 --- a/swarm/undergraduate/content/chapter05.tex +++ b/swarm/undergraduate/content/chapter6.tex @@ -1,4 +1,3 @@ - %!TEX root = ../hutbthesis_main.tex \chapter{优化效果实验测试与数据分析} diff --git a/swarm/undergraduate/content/content.tex b/swarm/undergraduate/content/content.tex index 8ac592aa..4f93ce56 100644 --- a/swarm/undergraduate/content/content.tex +++ b/swarm/undergraduate/content/content.tex @@ -1,8 +1,35 @@ %!TEX root = ../hutbthesis_main.tex -\input{content/chapter1.tex} -\input{content/chapter2.tex} -\input{content/chapter3.tex} -\input{content/chapter4.tex} -\input{content/chapter5.tex} -\input{content/chapter6.tex} +\chapter{总结与展望} + +\section{研究工作总结} + +本课题围绕基于AirSim的无人机集群仿真软件性能优化展开,对多机仿真时出现的帧率急剧下降、时延大幅增加、CPU内核态占用过高、线程调度风暴等关键问题,进行了从理论分析、瓶颈定位、方案设计、源码改造直至实验验证的全流程系统研究。 + +主要完成工作如下:搭建标准化测试环境,重现并确认AirSim在20架以上无人机仿真时性能出现大幅度下滑的情况,运用专业性能分析工具找出根本原因,即线程模型不合理、sleep(0)低效等待、高频系统调用、调度风暴、内核态开销过大,提出并设计五种线程等待优化模型,对AirSim核心源码进行重构,实现线程池、负载均衡、CPU亲和性、单线程分发等关键优化,进行多维、大规模且长时间的实验,证实最优方案能让30架仿真时FPS从3提高到37,时延从292ms降至32ms,内核态占比从72\%降至22\%,上下文切换从286万次/秒降至8.3万次/秒,形成一套完整、可复用且可推广的高并发实时仿真系统性能调优范式,为机器人仿真、数字孪生、自动驾驶仿真等领域提供直接参考。。 + +\section{主要创新点} + +(1)根因定位创新 + +首次将性能问题从``帧率低''的现象描述,深化到线程调度、内核态开销、超线程冲突的机理层面,完成精准瓶颈定位。 + +(2)优化模型创新 + +提出单线程分发器模型,用一个线程统一管理多机定时唤醒,从架构层面消灭调度风暴。 + +(3)工程方案创新 + +提供可配置、可切换、可对比的轻量化源码改造方案,不破坏原有功能,兼容全生态,易于落地使用。 + +(4)验证体系创新 + +构建``微观基准+集成仿真+长期稳定''三层验证体系,给出量化、可复现、高说服力的实验结论。 + +\section{研究不足与未来展望} + +1.优化主要是针对单机平台展开的,并没有涉及到分布式集群仿真的扩展内容。未对GPU渲染、物理引擎并行计算进行进一步的优化。而且也没有在嵌入式平台(像NVIDIAJetson)上进行部署与测试工作。 + +2.未针对激光雷达、深度相机等高频传感器进行专门的数据收发优化。分布式多机协同仿真优化方面,把优化方案和分布式架构相结合,能够支持百架、千架级别的超大规模集群仿真。 + +3.GPU加速与异构计算融合上,借助CUDA加速物理更新、传感器数据处理,进而提高上限。嵌入式平台移植与部署是要实现在机载、边缘计算平台上的轻量级仿真,以此支持虚实融合测试。通用化性能调优框架是将优化思想封装成独立模块,能够快速移植到Gazebo、Webots、IsaacSim等平台。与集群智能算法深度结合则是提供专用性能接口,为编队控制、强化学习、协同感知等高端算法的研究提供服务。。 diff --git a/swarm/undergraduate/content/cover.tex b/swarm/undergraduate/content/cover.tex index cd3cd410..8ac592aa 100644 --- a/swarm/undergraduate/content/cover.tex +++ b/swarm/undergraduate/content/cover.tex @@ -1,20 +1,8 @@ %!TEX root = ../hutbthesis_main.tex -% 文章信息 -\titlecn{基于AirSim的无人机集群仿真软件性能优化} -\titleen{Performance Optimization of UAV Swarm Simulation Software Based on AirSim} - -\author{刘文杰} -\subsupervisor{} -\studentid{2209040027} -\priormajor{机器人工程} -\myclass{机器人工程2201} -\supervisor{王海东讲师} -\department{智能机器人学院} -\thesisdate{year=2026, month=5} - -% 以下字段对本科生模板通常不显示,保留以兼容类文件 -\clcnumber{TP391} -\schoolcode{10554} -\udc{004.9} -\academiccategory{学术学位} +\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/swarm/undergraduate/content/declarationzh.tex b/swarm/undergraduate/content/declarationzh.tex index 7519bd4f..cd3cd410 100644 --- a/swarm/undergraduate/content/declarationzh.tex +++ b/swarm/undergraduate/content/declarationzh.tex @@ -1,13 +1,20 @@ %!TEX root = ../hutbthesis_main.tex -\begin{declarationzh} +% 文章信息 +\titlecn{基于AirSim的无人机集群仿真软件性能优化} +\titleen{Performance Optimization of UAV Swarm Simulation Software Based on AirSim} -本人郑重声明:所呈交的本科毕业设计《基于AirSim的无人机集群仿真软件性能优化》是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议,除文中已经注明引用的内容外,本设计不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。 +\author{刘文杰} +\subsupervisor{} +\studentid{2209040027} +\priormajor{机器人工程} +\myclass{机器人工程2201} +\supervisor{王海东讲师} +\department{智能机器人学院} +\thesisdate{year=2026, month=5} -\vspace{30pt} -\begin{flushright} -作者签名:\includegraphics[width=2.7cm]{images/image2.jpeg}\qquad\par -日\qquad 期:2026年5月25日\qquad -\end{flushright} - -\end{declarationzh} +% 以下字段对本科生模板通常不显示,保留以兼容类文件 +\clcnumber{TP391} +\schoolcode{10554} +\udc{004.9} +\academiccategory{学术学位} diff --git a/swarm/undergraduate/content/main.tex b/swarm/undergraduate/content/main.tex deleted file mode 100644 index 6a44df7b..00000000 --- a/swarm/undergraduate/content/main.tex +++ /dev/null @@ -1,101 +0,0 @@ -%!TEX program = xelatex -% !BIB program = biber - -\documentclass[AutoFakeBold]{hutbthesis} - -\usepackage{calc} -\usepackage{float} -\usepackage{longtable} -\usepackage{booktabs} -\usepackage{array} -\usepackage{tabularx} -\usepackage{caption} -\usepackage{xcolor} -\usepackage{listings} -\usepackage{chngcntr} -\usepackage{xeCJKfntef} -\usepackage{amsmath} -\providecommand{\tightlist}{% - \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} -\IfFontExistsTF{Noto Serif CJK SC}{% - \setCJKmainfont{Noto Serif CJK SC}[BoldFont=Noto Serif CJK SC Bold] - \setCJKsansfont{Noto Sans CJK SC}[BoldFont=Noto Sans CJK SC Bold] -}{} -\graphicspath{{images/}} - -% 图、表、公式统一采用章节编号,并保证图题/表题与对象绑定。 -\counterwithin{figure}{chapter} -\counterwithin{table}{chapter} -\numberwithin{equation}{chapter} -\renewcommand{\thefigure}{\thechapter-\arabic{figure}} -\renewcommand{\thetable}{\thechapter-\arabic{table}} -\renewcommand{\theequation}{\thechapter-\arabic{equation}} -\captionsetup[figure]{name=图,labelsep=space,font=small,skip=6pt} -\captionsetup[table]{name=表,labelsep=space,font=small,skip=6pt} - -% 代码段模板样式:用于 BAT、命令行、配置片段等代码清单。 -\definecolor{codebg}{RGB}{248,248,248} -\definecolor{codekw}{RGB}{0,92,175} -\definecolor{codestr}{RGB}{163,21,21} -\definecolor{codecom}{RGB}{0,128,0} -\renewcommand{\lstlistingname}{代码} -\lstdefinestyle{hutbcode}{% - backgroundcolor=\color{codebg}, - basicstyle=\ttfamily\small, - keywordstyle=\color{codekw}\bfseries, - stringstyle=\color{codestr}, - commentstyle=\color{codecom}\itshape, - numbers=left, - numberstyle=\scriptsize\color{gray}, - stepnumber=1, - numbersep=8pt, - frame=single, - rulecolor=\color{gray!50}, - breaklines=true, - breakatwhitespace=false, - columns=fullflexible, - keepspaces=true, - showstringspaces=false, - tabsize=2, - captionpos=b -} -\lstset{style=hutbcode} -% 本文参考文献采用手工编号文件 content/references.tex,不调用 biber。 - -\include{content/cover} - -\begin{document} - -\maketitle - -% 封面后的声明、授权书、摘要页不显示页码;仅目录页使用罗马数字页码。 -\clearpage -\pagestyle{empty} -\pagenumbering{gobble} -\input{content/declarationzh} -\clearpage -\input{content/authorization} -\clearpage -\input{content/abstractzh} -\clearpage -\input{content/abstracten} - -% 目录单独使用罗马数字页码。 -\frontmatter -\setcounter{page}{1} -\tableofcontents - -\mainmatter -\include{content/chapter1} -\include{content/chapter2} -\include{content/chapter3} -\include{content/chapter4} -\include{content/chapter5} -\include{content/chapter6} - -\include{content/references} -\include{content/symbols} -\include{content/appendix} -\include{content/acknowledgements} - -\end{document} diff --git a/swarm/undergraduate/content/reference.bib b/swarm/undergraduate/content/reference.bib new file mode 100644 index 00000000..7519bd4f --- /dev/null +++ b/swarm/undergraduate/content/reference.bib @@ -0,0 +1,13 @@ +%!TEX root = ../hutbthesis_main.tex + +\begin{declarationzh} + +本人郑重声明:所呈交的本科毕业设计《基于AirSim的无人机集群仿真软件性能优化》是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议,除文中已经注明引用的内容外,本设计不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。 + +\vspace{30pt} +\begin{flushright} +作者签名:\includegraphics[width=2.7cm]{images/image2.jpeg}\qquad\par +日\qquad 期:2026年5月25日\qquad +\end{flushright} + +\end{declarationzh} diff --git a/swarm/undergraduate/content/references.bib b/swarm/undergraduate/content/references.bib deleted file mode 100644 index 84287407..00000000 --- a/swarm/undergraduate/content/references.bib +++ /dev/null @@ -1 +0,0 @@ -% 本工程采用手工参考文献 content/references.tex diff --git a/swarm/undergraduate/content/references.tex b/swarm/undergraduate/content/references.tex index efc182ec..84287407 100644 --- a/swarm/undergraduate/content/references.tex +++ b/swarm/undergraduate/content/references.tex @@ -1,46 +1 @@ -%!TEX root = ../hutbthesis_main.tex - -\clearpage -\chapter*{参考文献} -\addcontentsline{toc}{chapter}{参考文献} -\begingroup -\small -\sloppy -\emergencystretch=4em - -\begin{enumerate} -\item 伍智锋。分布式飞行仿真技术研究 {[}D{]}. 西安:西北工业大学,2003. -\item 冯聪。无人机集群编队交互式仿真平台的设计与实现 {[}D{]}. 天津:天津大学,2018. -\item 周游。基于 AirSim 仿真平台的无人机三维避障算法研究 {[}D{]}. 成都:电子科技大学,2020. -\item 朱博顺,王成钢,井田。基于 AirSim 平台的无人机蜂群侦察搜索仿真与分析 {[}J{]}. 计算机应用,2021, 41 (S1): 196-201. -\item 郭首江。一种多层无人机集群网络接入控制协议设计及性能优化研究 {[}D{]}. 北京:北京交通大学,2021. -\item 龙腾飞。基于 Airsim 的四旋翼无人机虚实交互平台技术研究 {[}D{]}. 西安:西安工业大学,2023. -\item 冯一飞。基于行为法的分布式无人机集群控制方法与仿真研究 {[}D{]}. 长春:吉林大学,2023. -\item 方璨琦。基于深度强化学习的 AirSim 仿真环境下无人机路径规划研究 {[}D{]}. 广州:华南理工大学,2023. -\item 郑筱宇,胡敏,赵辉宏。基于 AirSim 实现对无人机的位置跟踪及编队控制 {[}J{]}. 齐鲁工业大学学报,2025, 39 (5): 70-75. -\item 章铭泽。无人机集群组网下的通信仿真研究 {[}D{]}. 北京:中国电子科技集团公司电子科学研究院,2025. -\item 方仪豪,邹丹平。多旋翼无人机仿真平台综述 {[}J/OL{]}. 计算机工程,2025: 1-10. https:\allowbreak{}/\allowbreak{}/\allowbreak{}kns.\allowbreak{}cnki.\allowbreak{}net/\allowbreak{}kcms2/\allowbreak{}article/\allowbreak{}abstract?v=3, 2025-01-10. -\item Microsoft Corporation. AirSim: Open Source Simulator for Drones and Autonomous Vehicles{[}EB/OL{]}. https:\allowbreak{}/\allowbreak{}/\allowbreak{}github.\allowbreak{}com/\allowbreak{}microsoft/\allowbreak{}AirSim, 2017-2026. -\item 刘祖均,何明,马子玉。基于分布式一致性的无人机编队控制方法 {[}J{]}. 计 算机工程与应用,2020, 56 (23): 146-152. -\item 李莉,李辉,张雪梅。改进几何控制四旋翼无人机集群轨迹跟踪 {[}J{]}. 兵 器装备工程学报,2025, 46 (3): 232-241. -\item 肖坤,谭帅,王广宇. XTDrone: 可定制化多旋翼无人机仿真平台 {[}C{]}//2020 4th International Conference on Robotics and Automation Sciences. 巴黎: IEEE, 2020: 55-61. -\item 杨浩,孟文,朱书齐。面向无人机集群的数字孪生仿真平台设计 {[}J{]}. 系 统仿真学报,2024, 36 (4): 825-833. -\item 陈勇,林强。多线程调度与线程池在实时仿真系统中的优化方法 {[}J{]}. 计算机工程与设计,2023, 44 (7): 2001-2008. -\item 石晨,张成,刘畅. IMFlySim: 面向无人机集群的高保真仿真平台 {[}C{]}//2021 5th Chinese Conference on Swarm Intelligence and Cooperative Control. 新加坡: Springer, 2023: 209-220. -\item 陈思远。基于 Unity 的无人机集群仿真系统性能瓶颈分析与优化 {[}D{]}. 南京:南京航空航天大学,2022. -\item 吴昊天。实时仿真系统中线程池与 CPU 亲和性调度技术研究 {[}D{]}. 杭州:浙江大学,2023. -\item 林伟,杨玉龙,赵伟。无人机仿真内核态开销过高问题分析与解决 {[}J{]}. 计 算机工程与设计,2022, 43 (8): 2278-2285. -\item 韩冰,曹鹏,孙健。多智能体仿真系统中忙等机制改进方法 {[}J{]}. 控制与决策,2023, 38 (4): 987-994. -\item 高天,徐磊,马晓东。多线程同步机制在无人机实时仿真中的应用比较 {[}J{]}. 电光与控制,2022, 29 (7): 66-71. -\item 董晓阳。面向大规模集群的无人机仿真系统架构设计 {[}D{]}. 哈尔滨:哈尔滨工业大学,2024. -\item 周明宇。基于线程模型优化的无人机仿真系统设计与实现 {[}D{]}. 成都:电子科技大学,2023. -\item 刘畅,陈明,李华。高精度定时器在实时仿真系统中的设计与实现 {[}J{]}. 计算机应用,2022, 42 (S1): 156-161. -\item 朱明亮,邓磊,陈丽。无人机集群仿真中 sleep 与 yield 等待机制性能对比 {[}J{]}. 计算机工程与应用,2024, 60 (3): 167-174. -\item 孙浩,林航,吴昊。基于集中式调度器的多智能体仿真优化方法 {[}J{]}. 系统仿真学报,2023, 35 (9): 1987-1996. -\item 胡俊杰,彭浩,罗强。多线程调度风暴问题分析及工程优化方案 {[}J{]}. 计算机工程,2022, 48 (7): 198-205. -\item 姜浩。基于 AirSim 的多无人机仿真系统性能改进 {[}D{]}. 西安:西北工业大学,2023. -\item 陈涛,杨明,刘军。无人系统仿真中用户态与内核态切换开销研究 {[}J{]}. 计算机应用研究,2023, 40 (4): 1102-1106. -\item 邓宇,陈浩,刘瑞。大规模仿真场景下 GPU 利用率低下问题分析与优化 {[}J{]}. 计算机辅助设计与图形学学报,2022, 34 (11): 1701-1710. -\item 蒋伟,黄涛,李娟。实时仿真系统中内存泄漏与稳定性优化 {[}J{]}. 计算机 工程与设计,2023, 44 (5): 1356-1363. -\end{enumerate} -\endgroup +% 本工程采用手工参考文献 content/references.tex diff --git a/swarm/undergraduate/content/symbols.tex b/swarm/undergraduate/content/symbols.tex index a9f8c4eb..efc182ec 100644 --- a/swarm/undergraduate/content/symbols.tex +++ b/swarm/undergraduate/content/symbols.tex @@ -1,42 +1,46 @@ %!TEX root = ../hutbthesis_main.tex \clearpage -\chapter*{符号说明} -\addcontentsline{toc}{chapter}{符号说明} +\chapter*{参考文献} +\addcontentsline{toc}{chapter}{参考文献} +\begingroup +\small +\sloppy +\emergencystretch=4em -\begin{longtable}[]{@{} - >{\raggedright\arraybackslash}p{(\columnwidth - 6\tabcolsep) * \real{0.2716}} - >{\raggedright\arraybackslash}p{(\columnwidth - 6\tabcolsep) * \real{0.1980}} - >{\raggedright\arraybackslash}p{(\columnwidth - 6\tabcolsep) * \real{0.0901}} - >{\raggedright\arraybackslash}p{(\columnwidth - 6\tabcolsep) * \real{0.4403}}@{}} -\caption{符号说明表}\\ -\toprule\noalign{} -\begin{minipage}[b]{\linewidth}\raggedright -\textbf{符号} -\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright -\textbf{含义} -\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright -\textbf{单位} -\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright -\textbf{备注} -\end{minipage} \\ -\midrule\noalign{} -\endhead -\bottomrule\noalign{} -\endlastfoot -FPS & 仿真平均帧率 & 帧/秒 & 实时仿真核心指标,$\geq$30为合格 \\ -D & 指令端到端时延 & ms & 控制响应实时性指标,$\leq$50为合格 \\ -K & CPU内核态占比 & \% & 内核开销=$\frac{\text{内核时间}}{\text{总CPU时间}}\times100\%$ \\ -C & 上下文切换频率 & 次/秒 & 线程调度效率指标,越低越好 \\ -E & 定时周期误差 & ms & 仿真时序精度指标,$\leq$5为合格 \\ -S & 系统运行稳定性 & --- & 1小时无崩溃、无泄漏、无失步 \\ -N & 仿真无人机数量 & 架 & 集群规模测试变量 \\ -$T_{cycle}$ & -仿真主循环周期 & ms & 固定周期控制仿真更新频率 \\ -$t_{wait}$ & -线程等待时长 & ms & 不同等待模型的等待参数 \\ -$\eta_{cpu}$ & CPU -资源利用率 & \% & 用户态有效计算占总占用比例 \\ -$\eta_{gain}$ & -性能提升倍率 & --- & 优化后指标/优化前指标 \\ -\end{longtable} +\begin{enumerate} +\item 伍智锋。分布式飞行仿真技术研究 {[}D{]}. 西安:西北工业大学,2003. +\item 冯聪。无人机集群编队交互式仿真平台的设计与实现 {[}D{]}. 天津:天津大学,2018. +\item 周游。基于 AirSim 仿真平台的无人机三维避障算法研究 {[}D{]}. 成都:电子科技大学,2020. +\item 朱博顺,王成钢,井田。基于 AirSim 平台的无人机蜂群侦察搜索仿真与分析 {[}J{]}. 计算机应用,2021, 41 (S1): 196-201. +\item 郭首江。一种多层无人机集群网络接入控制协议设计及性能优化研究 {[}D{]}. 北京:北京交通大学,2021. +\item 龙腾飞。基于 Airsim 的四旋翼无人机虚实交互平台技术研究 {[}D{]}. 西安:西安工业大学,2023. +\item 冯一飞。基于行为法的分布式无人机集群控制方法与仿真研究 {[}D{]}. 长春:吉林大学,2023. +\item 方璨琦。基于深度强化学习的 AirSim 仿真环境下无人机路径规划研究 {[}D{]}. 广州:华南理工大学,2023. +\item 郑筱宇,胡敏,赵辉宏。基于 AirSim 实现对无人机的位置跟踪及编队控制 {[}J{]}. 齐鲁工业大学学报,2025, 39 (5): 70-75. +\item 章铭泽。无人机集群组网下的通信仿真研究 {[}D{]}. 北京:中国电子科技集团公司电子科学研究院,2025. +\item 方仪豪,邹丹平。多旋翼无人机仿真平台综述 {[}J/OL{]}. 计算机工程,2025: 1-10. https:\allowbreak{}/\allowbreak{}/\allowbreak{}kns.\allowbreak{}cnki.\allowbreak{}net/\allowbreak{}kcms2/\allowbreak{}article/\allowbreak{}abstract?v=3, 2025-01-10. +\item Microsoft Corporation. AirSim: Open Source Simulator for Drones and Autonomous Vehicles{[}EB/OL{]}. https:\allowbreak{}/\allowbreak{}/\allowbreak{}github.\allowbreak{}com/\allowbreak{}microsoft/\allowbreak{}AirSim, 2017-2026. +\item 刘祖均,何明,马子玉。基于分布式一致性的无人机编队控制方法 {[}J{]}. 计 算机工程与应用,2020, 56 (23): 146-152. +\item 李莉,李辉,张雪梅。改进几何控制四旋翼无人机集群轨迹跟踪 {[}J{]}. 兵 器装备工程学报,2025, 46 (3): 232-241. +\item 肖坤,谭帅,王广宇. XTDrone: 可定制化多旋翼无人机仿真平台 {[}C{]}//2020 4th International Conference on Robotics and Automation Sciences. 巴黎: IEEE, 2020: 55-61. +\item 杨浩,孟文,朱书齐。面向无人机集群的数字孪生仿真平台设计 {[}J{]}. 系 统仿真学报,2024, 36 (4): 825-833. +\item 陈勇,林强。多线程调度与线程池在实时仿真系统中的优化方法 {[}J{]}. 计算机工程与设计,2023, 44 (7): 2001-2008. +\item 石晨,张成,刘畅. IMFlySim: 面向无人机集群的高保真仿真平台 {[}C{]}//2021 5th Chinese Conference on Swarm Intelligence and Cooperative Control. 新加坡: Springer, 2023: 209-220. +\item 陈思远。基于 Unity 的无人机集群仿真系统性能瓶颈分析与优化 {[}D{]}. 南京:南京航空航天大学,2022. +\item 吴昊天。实时仿真系统中线程池与 CPU 亲和性调度技术研究 {[}D{]}. 杭州:浙江大学,2023. +\item 林伟,杨玉龙,赵伟。无人机仿真内核态开销过高问题分析与解决 {[}J{]}. 计 算机工程与设计,2022, 43 (8): 2278-2285. +\item 韩冰,曹鹏,孙健。多智能体仿真系统中忙等机制改进方法 {[}J{]}. 控制与决策,2023, 38 (4): 987-994. +\item 高天,徐磊,马晓东。多线程同步机制在无人机实时仿真中的应用比较 {[}J{]}. 电光与控制,2022, 29 (7): 66-71. +\item 董晓阳。面向大规模集群的无人机仿真系统架构设计 {[}D{]}. 哈尔滨:哈尔滨工业大学,2024. +\item 周明宇。基于线程模型优化的无人机仿真系统设计与实现 {[}D{]}. 成都:电子科技大学,2023. +\item 刘畅,陈明,李华。高精度定时器在实时仿真系统中的设计与实现 {[}J{]}. 计算机应用,2022, 42 (S1): 156-161. +\item 朱明亮,邓磊,陈丽。无人机集群仿真中 sleep 与 yield 等待机制性能对比 {[}J{]}. 计算机工程与应用,2024, 60 (3): 167-174. +\item 孙浩,林航,吴昊。基于集中式调度器的多智能体仿真优化方法 {[}J{]}. 系统仿真学报,2023, 35 (9): 1987-1996. +\item 胡俊杰,彭浩,罗强。多线程调度风暴问题分析及工程优化方案 {[}J{]}. 计算机工程,2022, 48 (7): 198-205. +\item 姜浩。基于 AirSim 的多无人机仿真系统性能改进 {[}D{]}. 西安:西北工业大学,2023. +\item 陈涛,杨明,刘军。无人系统仿真中用户态与内核态切换开销研究 {[}J{]}. 计算机应用研究,2023, 40 (4): 1102-1106. +\item 邓宇,陈浩,刘瑞。大规模仿真场景下 GPU 利用率低下问题分析与优化 {[}J{]}. 计算机辅助设计与图形学学报,2022, 34 (11): 1701-1710. +\item 蒋伟,黄涛,李娟。实时仿真系统中内存泄漏与稳定性优化 {[}J{]}. 计算机 工程与设计,2023, 44 (5): 1356-1363. +\end{enumerate} +\endgroup diff --git a/swarm/undergraduate/figures/image10.png b/swarm/undergraduate/images/image10.png similarity index 100% rename from swarm/undergraduate/figures/image10.png rename to swarm/undergraduate/images/image10.png diff --git a/swarm/undergraduate/figures/image11.png b/swarm/undergraduate/images/image11.png similarity index 100% rename from swarm/undergraduate/figures/image11.png rename to swarm/undergraduate/images/image11.png diff --git a/swarm/undergraduate/figures/image12.png b/swarm/undergraduate/images/image12.png similarity index 100% rename from swarm/undergraduate/figures/image12.png rename to swarm/undergraduate/images/image12.png diff --git a/swarm/undergraduate/figures/image13.jpeg b/swarm/undergraduate/images/image13.jpeg similarity index 100% rename from swarm/undergraduate/figures/image13.jpeg rename to swarm/undergraduate/images/image13.jpeg diff --git a/swarm/undergraduate/figures/image14.png b/swarm/undergraduate/images/image14.png similarity index 100% rename from swarm/undergraduate/figures/image14.png rename to swarm/undergraduate/images/image14.png diff --git a/swarm/undergraduate/figures/image15.png b/swarm/undergraduate/images/image15.png similarity index 100% rename from swarm/undergraduate/figures/image15.png rename to swarm/undergraduate/images/image15.png diff --git a/swarm/undergraduate/figures/image16.png b/swarm/undergraduate/images/image16.png similarity index 100% rename from swarm/undergraduate/figures/image16.png rename to swarm/undergraduate/images/image16.png diff --git a/swarm/undergraduate/figures/image17.png b/swarm/undergraduate/images/image17.png similarity index 100% rename from swarm/undergraduate/figures/image17.png rename to swarm/undergraduate/images/image17.png diff --git a/swarm/undergraduate/figures/image18.png b/swarm/undergraduate/images/image18.png similarity index 100% rename from swarm/undergraduate/figures/image18.png rename to swarm/undergraduate/images/image18.png diff --git a/swarm/undergraduate/figures/image19.png b/swarm/undergraduate/images/image19.png similarity index 100% rename from swarm/undergraduate/figures/image19.png rename to swarm/undergraduate/images/image19.png diff --git a/swarm/undergraduate/figures/image2.jpeg b/swarm/undergraduate/images/image2.jpeg similarity index 100% rename from swarm/undergraduate/figures/image2.jpeg rename to swarm/undergraduate/images/image2.jpeg diff --git a/swarm/undergraduate/figures/image20.png b/swarm/undergraduate/images/image20.png similarity index 100% rename from swarm/undergraduate/figures/image20.png rename to swarm/undergraduate/images/image20.png diff --git a/swarm/undergraduate/figures/image21.png b/swarm/undergraduate/images/image21.png similarity index 100% rename from swarm/undergraduate/figures/image21.png rename to swarm/undergraduate/images/image21.png diff --git a/swarm/undergraduate/figures/image3.png b/swarm/undergraduate/images/image3.png similarity index 100% rename from swarm/undergraduate/figures/image3.png rename to swarm/undergraduate/images/image3.png diff --git a/swarm/undergraduate/figures/image4.png b/swarm/undergraduate/images/image4.png similarity index 100% rename from swarm/undergraduate/figures/image4.png rename to swarm/undergraduate/images/image4.png diff --git a/swarm/undergraduate/figures/image5.png b/swarm/undergraduate/images/image5.png similarity index 100% rename from swarm/undergraduate/figures/image5.png rename to swarm/undergraduate/images/image5.png diff --git a/swarm/undergraduate/figures/image6.png b/swarm/undergraduate/images/image6.png similarity index 100% rename from swarm/undergraduate/figures/image6.png rename to swarm/undergraduate/images/image6.png diff --git a/swarm/undergraduate/figures/image7.png b/swarm/undergraduate/images/image7.png similarity index 100% rename from swarm/undergraduate/figures/image7.png rename to swarm/undergraduate/images/image7.png diff --git a/swarm/undergraduate/figures/image8.png b/swarm/undergraduate/images/image8.png similarity index 100% rename from swarm/undergraduate/figures/image8.png rename to swarm/undergraduate/images/image8.png diff --git a/swarm/undergraduate/figures/image9.png b/swarm/undergraduate/images/image9.png similarity index 100% rename from swarm/undergraduate/figures/image9.png rename to swarm/undergraduate/images/image9.png