Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
b79862a
Add README.txt for graduation project folder
EvilBatman Jan 16, 2026
669d053
Add main LaTeX file for thesis document
EvilBatman Jan 16, 2026
64f0c52
Create chapter01.tex
EvilBatman Jan 16, 2026
7a393cd
Create abstract.tex
EvilBatman Jan 16, 2026
96dcc2b
Create acknowledgements.tex
EvilBatman Jan 16, 2026
7b2c1ec
Add references to various UAV research papers
EvilBatman Jan 16, 2026
4d3e00d
Create hutbthesis.cls
EvilBatman Jan 16, 2026
4a4ed8c
Create latexmkrc
EvilBatman Jan 16, 2026
856fac0
Create .gitignore
EvilBatman Jan 16, 2026
72cbe25
Create README.md
EvilBatman Jan 16, 2026
60d4263
Delete 2209040027-liuwenjie/undergraduate directory
EvilBatman Jan 16, 2026
c4a4548
Create README.md
EvilBatman Jan 16, 2026
0d0c85d
Create hutbthesis_main.tex
EvilBatman Jan 16, 2026
f9beab0
Add HUTB Thesis LaTeX class file
EvilBatman Jan 16, 2026
b6a00ab
Create chapter01.tex
EvilBatman Jan 16, 2026
72cda5b
Create abstract.tex
EvilBatman Jan 16, 2026
1506dd7
Create acknowledgements.tex
EvilBatman Jan 16, 2026
02efc23
Create reference.bib
EvilBatman Jan 16, 2026
4610a9d
Create latexmkrc
EvilBatman Jan 16, 2026
00a8588
Create .gitignore
EvilBatman Jan 16, 2026
c5fb603
Delete swarm directory
EvilBatman Jan 16, 2026
fa0f399
Create .gitkeep
EvilBatman Jan 16, 2026
8a8ec36
Create hutbthesis_main.tex
EvilBatman Jan 16, 2026
c154e1a
Create chapter01.tex
EvilBatman Jan 16, 2026
7a2b939
Create abstract.tex
EvilBatman Jan 16, 2026
64c32ae
Create acknowledgements.tex
EvilBatman Jan 16, 2026
d4159cc
Create reference.bib
EvilBatman Jan 16, 2026
a03d0d1
Create hutbthesis.cls
EvilBatman Jan 16, 2026
99ebfab
Create latexmkrc
EvilBatman Jan 16, 2026
d35c0d7
Create .gitignore
EvilBatman Jan 16, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions swarm/README.md

This file was deleted.

1 change: 1 addition & 0 deletions swarm/undergraduate/content/.gitkeep
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
% !TeX program = xelatex
% !TeX encoding = UTF-8

\documentclass{hutbthesis}

% 论文信息
\titlecn{基于AirSim的无人机集群仿真软件性能优化}
\titleen{Performance Optimization of UAV Swarm Simulation Software Based on AirSim}
\author{刘文杰}
\studentid{2209040027}
\college{智能机器人学院}
\major{机器人工程}
\class{2201}
\supervisor{王海东}
\date{2026年5月}

\begin{document}

% 封面
\maketitle

% 摘要
\include{content/abstract}

% 目录
\tableofcontents

% 正文
\mainmatter
\include{content/chapter01} % 第一章
% 后续章节需要时再添加

% 参考文献
\bibliography{reference}

% 致谢
\include{content/acknowledgements}

\end{document}
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
\chapter{绪论}
\label{chap:introduction}

\section{研究背景与意义}
\label{sec:background}

随着无人机技术的快速发展,无人机集群在军事侦察、物流配送、协同测绘、灾害救援等领域的应用日益广泛。集群无人机能够通过协同合作完成复杂任务,具有效率高、灵活性好、鲁棒性强等优势。然而,大规模无人机集群的实际部署与测试面临着成本高昂、安全性难以保障、环境条件受限等挑战。在此背景下,高保真仿真技术成为验证无人机集群算法、评估系统性能的重要手段。

AirSim是由微软发布的一款开源、高保真无人机与自动驾驶仿真平台,基于游戏引擎(Unreal Engine/Unity)构建,提供逼真的物理引擎、传感器模拟和灵活的控制接口。凭借其开源特性、高物理逼真度以及与机器人操作系统(ROS)的良好兼容性,AirSim已成为无人机相关研究领域的重要工具,被广泛应用于路径规划、视觉导航、控制算法等多个研究方向。

然而,随着无人机集群规模的扩大,AirSim在仿真效率方面暴露出明显瓶颈。现有研究表明,当仿真无人机数量超过18-20架时,系统会出现帧率(FPS)断崖式下跌、仿真延迟显著增加、CPU内核态时间占比异常升高等现象,严重制约了仿真系统的实时性和准确性。这一性能瓶颈限制了AirSim在大规模无人机集群协同算法验证与性能评估中的应用价值,使得研究人员难以在仿真环境中开展大规模的集群行为研究和算法测试。

本研究旨在深入分析并优化AirSim在多无人机集群仿真中的性能问题。该研究的价值主要体现在以下三个方面:

\textbf{理论价值}方面,本研究通过深入剖析高并发实时仿真系统的性能退化机理,聚焦于操作系统线程调度机制、CPU内核态与用户态切换开销、自旋等待算法在超线程环境下的异常行为等核心问题,为仿真系统性能建模提供新的理论视角和案例支撑。

\textbf{应用价值}方面,研究成果将直接提升AirSim平台支持大规模无人机集群仿真的能力。通过性能优化,能够为路径规划、编队控制、协同感知等集群算法的研发与测试提供更稳定、高效的仿真环境,降低实机测试成本与风险,加速无人机集群技术的落地应用进程。

\textbf{实践价值}方面,本研究遵循``问题定位-方案设计-实验验证''的完整工程研究路径。研究过程中对AirSim源码的深入分析、多种线程模型的对比实现以及系统化的性能评估方法,可为后续研究者进行类似的仿真平台性能调优提供可复现的技术范式和实践参考。

\section{国内外研究现状}
\label{sec:literature}

无人机集群仿真技术经历了从单机模拟到分布式协同仿真的发展过程。早期研究多集中于单机动力学建模与控制算法验证,如张旭(2021)对无人机导航卡尔曼滤波算法的改进研究。随着集群概念的兴起,分布式仿真成为研究热点,伍智锋(2003)较早开展了分布式飞行仿真技术研究,为多实体协同仿真奠定了基础。

在仿真平台发展方面,当前主流的无人机仿真平台可分为两大类:一类是基于游戏引擎的高保真视觉仿真平台,如AirSim、CARLA;另一类是侧重于动力学与通信的轻量化仿真环境,如Gazebo with ROS。方仪豪等(2025)在多旋翼无人机仿真平台综述中指出,AirSim凭借其出色的图形渲染保真度和灵活的API接口,在视觉相关算法测试中占据优势,但其在多机仿真效率方面存在挑战。

在AirSim平台的应用研究方面,近年来涌现出大量研究成果。在控制与编队领域,郑筱宇等(2025)基于AirSim实现了无人机位置跟踪与编队控制;席建祥等(2025)研究了协同性能约束下的四旋翼无人机集群预设性能优化编队控制。在感知与规划领域,方璨琦(2023)利用AirSim进行基于深度强化学习的无人机路径规划研究;周游(2020)基于该平台研究无人机三维避障算法。在集群协同领域,刘彦辰等(2024)研究了基于改进SVO的分布式旋翼无人机集群避碰规划;石辅天等(2023)和朱博顺等(2021)分别利用AirSim进行多无人机协同搜索与蜂群侦察搜索的仿真研究。

然而,上述研究多数仿真规模有限,当仿真实体数量增加时,性能问题开始凸显。章铭泽(2025)在集群组网通信仿真研究中提到了仿真效率的重要性;龙腾飞(2023)在研究AirSim虚实交互平台时,也涉及了系统实时性问题。这些研究侧面反映了对AirSim进行性能优化的潜在需求。

在并发仿真性能优化方面,高性能并发仿真的核心挑战在于资源管理与任务调度。在分布式仿真领域,冯一飞(2023)研究了基于行为法的分布式集群控制与仿真,通过分布式架构分摊计算负载;郭首江(2021)从网络协议层面对无人机集群接入控制进行了性能优化研究。在单系统多线程优化层面,性能瓶颈常出现在线程同步与等待机制上。不当的线程睡眠或自旋策略会导致频繁的上下文切换和极高的内核态CPU占用,这正是高并发实时系统的大忌。

尽管已有研究关注无人机集群仿真和AirSim平台应用,但针对AirSim这一具体平台的线程级性能深入分析与优化的系统性研究尚显不足。现有文献大多将性能问题作为现象提及,缺乏对其根本原因的深入剖析和有效解决方案的提出。这正是本研究的切入点。

\section{研究内容与目标}
\label{sec:research-content}

本研究的主要目标是系统分析AirSim在多无人机集群仿真中的性能瓶颈,设计并实现高效的线程调度优化方案,显著提升AirSim支持大规模无人机集群仿真的能力。具体研究内容包括:

\begin{enumerate}
\item \textbf{性能瓶颈分析与定位}:构建多无人机仿真测试环境,复现性能问题现象;使用性能剖析工具深入分析系统运行时的CPU使用情况,特别是内核态与用户态时间占比;通过代码审查与理论分析,定位性能瓶颈的根本原因。

\item \textbf{线程模型优化方案设计}:基于瓶颈分析结果,设计多种线程调度优化方案,包括单线程分发器、标准阻塞睡眠、协作式让出、改良自旋等待和纯自旋等待五种策略;分析各方案在不同并发场景下的适用性和优劣。

\item \textbf{方案实现与系统集成}:在AirSim源码中实现上述优化方案,确保代码的正确性和兼容性;设计灵活的配置机制,便于不同方案的切换和对比测试。

\item \textbf{实验评估与方案优选}:设计系统化的实验方案,从微观定时精度、集成准确性、仿真规模上限、CPU资源使用等多个维度评估各优化方案的效果;通过对比分析,选择最优方案,并分析其性能提升机理。

\item \textbf{优化效果验证与总结}:在实际应用场景中验证最优方案的优化效果,总结研究经验,形成可推广的仿真平台性能优化范式。
\end{enumerate}

\section{技术路线与研究方法}
\label{sec:methodology}

本研究采用理论分析与实验验证相结合的技术路线,具体研究方法如下:

\begin{enumerate}
\item \textbf{文献研究法}:系统梳理无人机集群仿真、AirSim平台应用、多线程调度优化等相关领域的研究成果,明确研究现状、热点问题和未来趋势,为本研究提供理论基础和方向指导。

\item \textbf{实验分析法}:设计控制变量实验,逐步增加仿真无人机数量,观测系统性能变化趋势;使用Windows Performance Analyzer、Linux perf等性能剖析工具监控系统运行状态,定位性能瓶颈。

\item \textbf{原型系统法}:修改AirSim源码,实现多种线程调度优化方案;构建可配置的测试框架,确保实验的可重复性和可比性。

\item \textbf{定量评估法}:定义帧率(FPS)、任务执行偏差时间、CPU内核态时间占比等关键性能指标;设计标准化的测试流程和数据采集方法;使用统计分析方法处理实验数据,得出科学结论。

\item \textbf{对比研究法}:通过横向对比五种优化方案在不同测试场景下的表现,分析各方案的优缺点;通过纵向对比优化前后的系统性能,验证优化效果。
\end{enumerate}

技术路线遵循``需求分析→问题定位→方案设计→系统实现→测试评估→优化迭代''的循环过程,确保研究的系统性和完整性。

\section{论文结构安排}
\label{sec:structure}

本文共分为六章,具体结构安排如下:

第一章为绪论,主要介绍研究背景与意义、国内外研究现状、研究内容与目标、技术路线与研究方法,以及论文的结构安排。

第二章为相关理论与技术基础,概述无人机集群仿真技术,分析AirSim仿真平台架构,介绍多线程调度与并发编程基础,以及系统性能评估方法。

第三章为AirSim集群仿真性能瓶颈分析与定位,详细描述多无人机仿真测试环境的构建过程,复现性能问题现象,使用性能剖析工具定位瓶颈,并深入分析其根本原因。

第四章为基于线程模型重构的性能优化方法,详细阐述五种线程等待策略的设计原则和实现方案,包括单线程分发器、标准阻塞睡眠、协作式让出、改良自旋等待和纯自旋等待,并介绍其在AirSim源码中的集成方法。

第五章为实验评估与分析,详细介绍实验环境和测试方案,从微观定时精度、集成准确性、仿真规模上限、CPU资源使用等多个维度评估各优化方案的效果,并进行综合对比与优选。

第六章为总结与展望,总结研究工作、主要创新点和存在问题,并提出未来的改进方向和研究展望。

论文最后为参考文献、致谢和附录部分,附录包含实验数据表、核心代码片段和测试环境配置详情等补充材料。

通过以上结构安排,本文系统性地展示了从问题发现到方案设计再到实验验证的完整研究过程,为无人机集群仿真软件性能优化提供了理论指导和实践参考。
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
\begin{abstractcn}
随着无人机集群技术的发展,高保真仿真平台成为验证集群算法的重要手段。AirSim作为主流仿真平台,在多无人机场景下存在性能瓶颈。本文深入分析AirSim在多机仿真中的性能问题,定位其根源在于低效的线程调度机制。通过设计并实现五种线程优化方案,显著提升了仿真规模上限。实验结果表明,优化后的系统支持无人机数量从18架提升至210架,为大规模集群算法验证提供了高效仿真环境。

\keywords{无人机集群;仿真平台;性能优化;线程调度;AirSim}
\end{abstractcn}

\begin{abstracten}
With the development of UAV swarm technology, high-fidelity simulation platforms have become important for validating swarm algorithms. AirSim, as a mainstream simulation platform, exhibits performance bottlenecks in multi-UAV scenarios. This paper deeply analyzes the performance issues of AirSim in multi-drone simulation, identifying the root cause as inefficient thread scheduling mechanisms. By designing and implementing five thread optimization schemes, the simulation scale limit is significantly improved. Experimental results show that the optimized system supports an increase in UAV count from 18 to 210, providing an efficient simulation environment for large-scale swarm algorithm validation.

\keywords{UAV Swarm; Simulation Platform; Performance Optimization; Thread Scheduling; AirSim}
\end{abstracten}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
\begin{acknowledgements}
衷心感谢我的导师王海东副教授在整个毕业设计过程中给予的悉心指导与宝贵建议。王老师严谨的治学态度、深厚的专业知识和耐心的指导,使我受益匪浅。

感谢智能机器人学院所有老师的教诲与帮助,为我奠定了扎实的专业基础。

感谢在论文研究和撰写过程中提供支持的同学与朋友们,你们的建议和鼓励是我前进的动力。

最后,感谢各位评审老师在百忙之中审阅我的论文并提出宝贵意见。

由于作者水平有限,文中难免存在疏漏和不足之处,恳请各位老师和同学批评指正。
\end{acknowledgements}
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
@article{fang2025survey,
title={多旋翼无人机仿真平台综述},
author={方仪豪 and 邹丹平},
journal={计算机工程},
year={2025},
note={已录用}
}

@inproceedings{shi2023airsim,
title={基于AirSim的多无人机协同搜索分布式仿真研究},
author={石辅天 and 王龙飞 and 童鹏飞 and others},
booktitle={第24届中国系统仿真技术及其应用学术年会论文集},
pages={47--53},
year={2023}
}

@article{zhu2021swarm,
title={基于AirSim平台的无人机蜂群侦察搜索仿真与分析},
author={朱博顺 and 王成钢 and 井田 and others},
journal={计算机应用},
volume={41},
number={S1},
pages={196--201},
year={2021}
}

@article{zheng2025tracking,
title={基于AirSim实现对无人机的位置跟踪及编队控制},
author={郑筱宇 and 胡敏 and 赵辉宏},
journal={齐鲁工业大学学报},
volume={39},
number={5},
pages={70--75},
year={2025}
}

@mastersthesis{long2023airsim,
title={基于Airsim的四旋翼无人机虚实交互平台技术研究},
author={龙腾飞},
school={西安工业大学},
year={2023}
}

@mastersthesis{feng2023distributed,
title={基于行为法的分布式无人机集群控制方法与仿真研究},
author={冯一飞},
school={吉林大学},
year={2023}
}

@mastersthesis{zhou2020obstacle,
title={基于AirSim仿真平台的无人机三维避障算法研究},
author={周游},
school={电子科技大学},
year={2020}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{hutbthesis}[2025/01/01 HUTB Thesis Template]

\LoadClass[12pt,a4paper]{article}

% 中文字体设置
\usepackage{fontspec}
\setmainfont{Times New Roman}
\setCJKmainfont{SimSun}

% 页面设置
\usepackage[top=2.5cm,bottom=2.5cm,left=3cm,right=2.5cm]{geometry}

% 定义命令
\newcommand{\titlecn}[1]{\def\@titlecn{#1}}
\newcommand{\titleen}[1]{\def\@titleen{#1}}
\newcommand{\author}[1]{\def\@author{#1}}
\newcommand{\studentid}[1]{\def\@studentid{#1}}
\newcommand{\college}[1]{\def\@college{#1}}
\newcommand{\major}[1]{\def\@major{#1}}
\newcommand{\class}[1]{\def\@class{#1}}
\newcommand{\supervisor}[1]{\def\@supervisor{#1}}

% 封面
\newcommand{\maketitle}{
\begin{titlepage}
\centering
\vspace*{2cm}
{\zihao{1} \heiti 湖南工商大学\\}
\vspace{1cm}
{\zihao{2} \heiti 本科毕业设计(论文)\\}
\vspace{3cm}
{\zihao{2} \heiti \@titlecn\\}
\vspace{1cm}
{\zihao{3} \heiti \@titleen\\}
\vspace{3cm}
{\zihao{4} \songti
学\hspace{2em}院:\@college\\
专\hspace{2em}业:\@major\\
班\hspace{2em}级:\@class\\
学\hspace{2em}号:\@studentid\\
姓\hspace{2em}名:\@author\\
指导教师:\@supervisor\\}
\vspace{2cm}
{\zihao{4} \@date}
\end{titlepage}
}

% 章节设置
\usepackage{titlesec}
\titleformat{\chapter}{\centering\zihao{3}\heiti}{第\chinese{chapter}章}{1em}{}

% 摘要环境
\newenvironment{abstractcn}{
\chapter*{摘要}
\addcontentsline{toc}{chapter}{摘要}
}{}
\newenvironment{abstracten}{
\chapter*{ABSTRACT}
\addcontentsline{toc}{chapter}{ABSTRACT}
}{}
\newcommand{\keywords}[1]{\par\vspace{1em}\noindent\textbf{关键词:}#1}

% 致谢环境
\newenvironment{acknowledgements}{
\chapter*{致谢}
\addcontentsline{toc}{chapter}{致谢}
}{}

% 参考文献
\usepackage[backend=biber,style=gb7714-2015]{biblatex}

\endinput
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
$pdf_mode = 1;
$xelatex = 'xelatex -shell-escape -synctex=1 -interaction=nonstopmode';
$clean_ext = "bbl blg aux dvi log nav out snm synctex.gz toc lof lot";
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
*.aux
*.log
*.out
*.toc
*.bbl
*.blg
*.pdf
*.synctex.gz
*.fls
*.fdb_latexmk
*.xdv