惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
T
Tor Project blog
AWS News Blog
AWS News Blog
量子位
博客园 - 聂微东
L
LINUX DO - 热门话题
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
小众软件
小众软件
人人都是产品经理
人人都是产品经理
A
About on SuperTechFans
L
Lohrmann on Cybersecurity
Know Your Adversary
Know Your Adversary
V
Visual Studio Blog
P
Privacy International News Feed
K
Kaspersky official blog
NISL@THU
NISL@THU
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
G
GRAHAM CLULEY
S
Securelist
Last Week in AI
Last Week in AI
Latest news
Latest news
B
Blog
T
Tenable Blog
Cisco Talos Blog
Cisco Talos Blog
宝玉的分享
宝玉的分享
T
The Exploit Database - CXSecurity.com
N
Netflix TechBlog - Medium
A
Arctic Wolf
SecWiki News
SecWiki News
C
Cisco Blogs
月光博客
月光博客
PCI Perspectives
PCI Perspectives
Cloudbric
Cloudbric
H
Hacker News: Front Page
F
Full Disclosure
TaoSecurity Blog
TaoSecurity Blog
V2EX - 技术
V2EX - 技术
The Last Watchdog
The Last Watchdog
S
Schneier on Security
罗磊的独立博客
S
Security Affairs
Scott Helme
Scott Helme
P
Proofpoint News Feed
GbyAI
GbyAI
Google Online Security Blog
Google Online Security Blog
The Register - Security
The Register - Security
W
WeLiveSecurity
Hugging Face - Blog
Hugging Face - Blog
博客园 - 叶小钗

博客园_首页

Plist 二进制格式 Milvus 和 PGVector,哪个更好? OpenClaw 已过时?在 VS Code 中运行 Hermes Agent! 第30篇文章:一个大三计科生的自白 Manim如何在数学公式中完美显示中文? Docker 部署 RocketMQ 5 并发编程核心概念辨析 C#事务处理最佳实践:别再让“主表存了、明细丢了”的破事发生 CLI 是什么?为什么大厂突然集体卷命令行? 【从0到1构建一个ClaudeAgent】协作-自主Agent UIImageView 设置图片不生效的原因排查 最小二乘问题详解20:无先验约束下的增量式SFM自由网平差 痞子衡嵌入式:大话双核i.MXRT1180之XIP应用里借助MU实现可靠Flash IAP的方法 AI Chat 封装, SemanticKerne.AiProvider.Unified 已发布 Windows下右键编辑js文件无法打开记事本——在注册表中使用环境变量 在后台服务中使用 Scoped 服务,为什么总是报错? H200 安装驱动并使用sglang启动模型 wireshark 抓包Trap上报告警内容 我用 AI 辅助开发了一系列小工具(2):图片压缩工具 [A Primer On MC and CC] 2.1 Memory Consistency 1 - 指令重排序和 SC 模型 Oracle数据库SCN推进技术详解与实践指南 玩转控件:封装个带图片的Label控件 Claude Code 4.7 真正该升级的不是模型,而是你的工作流 前端小白一句话,AI 帮我做了个颜值拉满的桌面媒体播放器。当代码不再是门槛,一句话编程就是现实。 5. WorkBuddy: 小龙虾的灵魂三件套,让你的小龙虾不只是工具 SQLite 分片方案实战:三种分片策略的深度对比 告别简陋 UI!一款基于 Fluent Design 和基于 WinUI 的开源免费、现代化的 Avalonia UI 控件库 关于二进制排列组合枚举的总结 AI开发-python-LangGraph框架(3-27-LangGraph从零实现大模型智能决策工作流) ElasticSearch主分片和副本分片概念详解 【002】HTTPS 粗解:证书、TLS 握手与对后端配置的影响 Hermes Agent 一周暴涨五万 Star,但我劝你别急着追 明明连接的是Redis的DB0,为什么能查到DB3的数据? 【从0到1构建一个ClaudeAgent】协作-Agent团队 熟悉电子元器件之后,电子小白下一步该怎么走? MAF快速入门(23)通过C#类定义Skills .NET 高级开发 | 手写一个对象映射框架 FastAPI数据库ORM怎么选?我肝了三个Demo后,终于不再纠结了 mysqldump 参数拾遗:在遗忘与铭记之间 C# .NET 周刊|2026年3月5期 Claude code入门 - 陈彦斌 一文学习入门 ThingsBoard 开源物联网平台 GitHub 热门项目 | 2026年04月16日 如何为GIT设置全局勾子,为每次提交追加信息 Number.isFinite和isFinite与isNaN()和Number.isNaN的区别 PortSwigger SQL注入LAB2 推荐一个测试人必备的Skills,从功能到性能全搞定(附详细实操和安装下载方式) 筑基期:掌握Odoo基础核心知识点02(Odoo XML 开发方式详解) GLM模型这么火,咱们用vllm也咧一个呗! 深入理解 AbortController:从底层原理到跨语言设计哲学 字符串学习笔记 多租户系统框架的基础模块设计和分析设计 Apache SeaTunnel Zeta 为什么能做到“又快又稳”? AI开发-python-LangGraph框架(3-26-LangGraph基本概念及第一个简单样例) Vue 3 组件通信,别只会用 Props 和 Emits 了,这几个狠活儿你得看看 ElasticSearch7.X版本配置密码 用Manim实现动态交点计算--从一个动点问题说起 团结引擎+Addressable+Instant Game打包抖音小游戏 function call 实战:让 LLM 自动判断 pod 异常、调用日志工具并完成故障分析 bubseek —— 让 Agent 的足迹,变成团队的洞察 通过 C# 读取并导出 PDF 书签 如何用 GitHub Actions 实现 Steam 自动化发布 【从0到1构建一个ClaudeAgent】并发-后台任务 .NET 高级开发 | 定制 ASP.NET Core 框架 电子小白:什么是运算放大器(运放) zero2Agent:面向大厂面试的 Agent 工程教程,从概念到生产的完整学习路线 堆上的ORW HC32F460 USB CDC通信异常:非对齐访问异常排查 20260413-Hyperbridge 攻击事件:发生在默克尔山上的验证绕过 那些喊着AI 要淘汰你的人,正在靠你的焦虑赚大钱! 深度学习进阶(八)Swin Transformer 最小二乘问题详解19:带先验约束的增量式SFM优化与实现 SnapTranslate 3.0 正式发布:全局划词翻译 + 完整英语学习闭环,一站式搞定查词、记词、复习 工作的意义、工作的困难认知再思考 .NET + AI 进阶实战:基于类的技能开发 - 打造可治理的 Agent 能力模块 【从0到1构建一个ClaudeAgent】规划与协调-技能 上周热点回顾(4.6-4.12) 电子小白的工具三件套:面包板、杜邦线、万能板 单表五亿数据的查询优化 | Mysql、StarRocks 2. WorkBuddy:从“我是谁”到“帮我干活” C# 如何减少代码运行时间:7 个实战技巧 基于HelixToolkit.SharpDX 渲染3D模型 - 笺上知微 从零开始的双臂具身VLA起源及现阶段发展综述 - SkyXZ 记对 xonsh shell 的使用, 脚本编写, 迁移及调优 - pluvium27 受够了Vibe Coding的失控?换个起点,让AI事半功倍 从开始配置漏洞环境到漏洞复现流程 - 難しい 关于10年工作经验的程序员对OpenClaw的实战经验分享以及看法 - 虚无境 Any metadata 的内存布局 C# .NET 周刊|2026年3月2期 - InCerry 我帮你测过了,测试圈排名第二的 Skill 依然很牛逼 Skill Discovery | 无监督技能发现的经典工作总结 - MoonOut 上下文工程是什么?过时了么?一文讲明白! - 一枫说码 开了 TUN 模式还是直连?90% 的人都踩过这个坑 AScript扩展多种脚本语言 - rockey627 AI 学习笔记:Agent 的记忆机制 你能被装进一个文件里吗?——7 万人把同事"蒸馏"成了 AI - 我没有三颗心脏 Claude Code 通关手册(七):给 AI 装上技能包——Skills 完全指南 - 暮色之狐 在浏览器中快速编辑代码:VSCode Web 集成实践 - Newbe36524 蒸馏自己 skill?基于 Deepseek 的蒸馏器,丐版蒸馏方式,简单便捷 - To_Carpe_Diem Spring AI Aliababa和AgentScope,哪个更好? - 苏三说技术
AirSIM+PX4+QGC无人机仿真环境
TokE648 · 2026-05-17 · via 博客园_首页

PX4 + AirSim + QGC 仿真环境搭建完整指南

本文档记录了在 Windows 11 + WSL2 (Ubuntu 22.04/24.04) 环境下,从零开始搭建 PX4 v1.15.2、AirSim v1.8.1 和 QGC 仿真环境的完整过程。

image


📌 目录

  1. 环境要求
  2. 软件安装
  3. AirSim 配置
  4. PX4 配置
  5. QGC 配置
  6. 启动流程
  7. 常见问题与解决方案
  8. 参考资源

环境要求

项目 要求
系统 Windows 11
磁盘空间 80GB+
WSL WSL2 (Ubuntu 22.04/24.04)
仿真引擎 Unreal Engine 4.27
IDE Visual Studio 2022
飞控固件 PX4 v1.15.2
仿真插件 AirSim v1.8.1
地面站 QGroundControl

VS2022 必需组件

image

  • ✅ .NET 桌面应用开发
  • ✅ 使用 C++ 的桌面应用开发

软件安装

1. Visual Studio 2022

下载并安装 VS2022,安装时勾选:

  • ".NET 桌面应用开发"
  • "使用 C++ 的桌面应用开发"

2. Unreal Engine 4.27

  • 从整合包直接安装,选择 UE 4.27 版本引擎
  • 或通过 Epic Games Launcher 安装

3. WSL Ubuntu 安装

查看可用发行版

wsl --list --online

安装 Ubuntu

wsl --install -d Ubuntu-22.04

离线安装方式

下载离线包:

# 创建安装目录
mkdir C:\WSL\Ubuntu2204

# 导入镜像
wsl --import Ubuntu-22.04 C:\WSL\Ubuntu2204 "下载路径\ubuntu-22.04.5-wsl-amd64.wsl" --version 2

# 启动并创建用户
wsl -d Ubuntu-22.04 -u root
adduser <用户名>
passwd <用户名>

# 以普通用户登录
wsl -d Ubuntu-22.04 -u <用户名>

AirSim 配置

编译 AirSim

重要:必须在 x64 Native Tools Command Prompt for VS 2022 中运行

cd AirSim-1.8.1-windows
build.cmd

配置 settings.json

配置文件位置:C:\Users\<你的用户名>\Documents\AirSim\settings.json

{
    "SettingsVersion": 1.2,
    "SimMode": "Multirotor",
    "ClockType": "SteppableClock",
    "Vehicles": {
        "PX4": {
            "VehicleType": "PX4Multirotor",
            "UseTcp": true,
            "TcpPort": 4560,
            "LockStep": true,
            "LocalHostIp": "0.0.0.0"   // 关键:监听所有接口
        }
    }
}

或(将整合包里的setting内容黏贴进去,将"LocalHostIp"改成"0.0.0.0")

打开 Unreal 项目

\AirSim-1.8.1-windows\Unreal\Environments\Blocks\Blocks.uproject

用 UE4 打开,点击运行即可。

成功连接显示:
image


PX4 配置

1. 复制并解压 PX4 源码

# 从 Windows 复制到 WSL
sudo mv /mnt/c/Users/<用户名>/Desktop/px4v1.15.2.zip ~/

# 解压
unzip px4v1.15.2.zip -d ~/
cd ~/px4v1.15.2

2. 安装系统依赖

sudo apt update
sudo apt install -y \
    python3-empy python3-packaging python3-kconfiglib \
    python3-jinja2 python3-jsonschema python3-toml \
    python3-serial python3-numpy python3-pyparsing \
    python3-yaml python3-argcomplete \
    cmake gcc g++ ninja-build git make \
    net-tools python3-venv

3. 创建 Python 虚拟环境

# 创建虚拟环境
python3 -m venv venv

# 激活虚拟环境
source venv/bin/activate

# 安装 Python 依赖
pip install kconfiglib empy packaging jinja2 jsonschema toml pyros-genmsg pyyaml future

4. 运行 PX4 安装脚本

bash ./Tools/setup/ubuntu.sh

5. 编译 PX4

make px4_sitl_default none_iris

成功标志:出现 pxh>px4> 提示符
image


QGC 配置

  • 下载 Windows 版 QGroundControl
  • 直接安装运行
  1. 连接 QGC
    image

打开 Windows 版 QGroundControl:
image
进入 Application Settings (应用设置) → Comm Links (通信连接)
点击 Add (添加)
配置:
Name: WSL_PX4
Type: UDP
Port: 14550
Server Address: 留空(或填 127.0.0.1)
点击 Connect


启动流程

标准启动顺序(重要!)

顺序 操作 说明
1 启动 AirSim (UE4) 双击 Blocks.uproject 或按 F5
2 等待 AirSim 加载 看到 3D 场景出现
3 启动 PX4 make px4_sitl_default none_iris
4 等待连接成功 出现 pxh> 提示符
5 启动 MAVLink mavlink start -p -u 14550 -t 172.25.143.255
6 连接 QGC UDP 端口 14550
7 解锁起飞 在 QGC 中操作

PX4 常用控制命令

# 在 pxh> 提示符下输入
commander takeoff    # 起飞
commander land       # 降落
commander arm        # 解锁
commander disarm     # 上锁
vehicle status       # 查看状态
mavlink status       # 查看 MAVLink 状态

QGC 虚拟摇杆开启

  1. 连接飞机后,点击左上角 Q 图标应用设置
  2. 勾选 "虚拟摇杆" (Virtual Joystick)
  3. 返回飞行界面即可看到摇杆

常见问题与解决方案

问题1:WSL 网络不通 / apt update 超时

现象ping 8.8.8.8 不通,apt update 卡住

解决方案

  1. 关闭 Hyper-V 防火墙
  2. 或在 WSL 设置中将网络模式改为 Net
    image

WSL 网络配置C:\Users\<用户名>\.wslconfig

[wsl2]
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true

问题2:pip installexternally-managed-environment

原因:Ubuntu 24.04 的 PEP 668 保护机制

解决方案

# 方案一:使用 apt 安装
sudo apt install python3-<包名>

# 方案二:使用虚拟环境(推荐)
python3 -m venv venv
source venv/bin/activate
pip install <包名>

# 方案三:强制安装(不推荐)
pip install --break-system-packages <包名>

问题3:编译错误 module 'em' has no attribute 'RAW_OPT'

原因empy 版本过高

解决方案

pip uninstall empy em
pip install empy==3.3.4

问题4:AirSim 连接不上 PX4

现象:PX4 显示 Waiting for simulator to accept connection on TCP port 4560

解决方案

  1. 确保 AirSim 先启动
  2. 修改 settings.json"LocalHostIp": "0.0.0.0"
  3. 在 PX4 启动前设置:
    export PX4_SIM_HOSTNAME=<Windows主机IP>
    

问题5:QGC 无法连接 / 无数据显示

解决方案

# 在 PX4 控制台中执行
param set MAV_0_BROADCAST 1
mavlink stop-all
mavlink start -p -u 14550 -t 172.25.143.255

问题6:AirSim 中无人机显示为汽车

解决方案:修改 settings.json 中的 "SimMode": "Multirotor"

问题7:端口 4560 被占用错误

解决方案

# Windows PowerShell 中
netstat -ano | findstr :4560
taskkill /PID <PID> /F
wsl --shutdown

问题8:QGC 中没有虚拟摇杆

解决方案

  1. 确保飞机已连接
  2. QGC 设置中勾选"虚拟摇杆"
  3. 检查 PX4 参数:
    param set COM_RC_IN_MODE 1
    

参考资源

视频教程

保姆级教程!AirSIM+PX4+QGC从零开始搭建无人机仿真环境

资源下载

UP主准备了环境部署包,可关注后下载:

百度网盘:https://pan.baidu.com/s/1OE0Zxqfb_kOniaRDCZMDXQ?pwd=ytjy
image

关键路径汇总

组件 路径
AirSim 源码 D:\install\AirSim-1.8.1-windows
AirSim 配置 C:\Users\<用户名>\Documents\AirSim\settings.json
Unreal 项目 ...\AirSim-1.8.1-windows\Unreal\Environments\Blocks\Blocks.uproject
PX4 源码 ~/px4v1.15.2 (WSL 中)
QGC Windows 桌面应用
WSL 网络配置 C:\Users\<用户名>\.wslconfig

成功标志

当所有组件正常运行后,你应该看到:

组件 状态指示
AirSim 3D 场景显示,无人机模型
PX4 终端 pxh> 提示符,Simulator connected
MAVLink mavlink status 显示广播地址
QGC 实时数据(姿态、高度、卫星数),虚拟摇杆可用
通信 可执行起飞、降落命令

文档版本:1.0
最后更新:2026-05-17
测试环境:Windows 11 + WSL2 Ubuntu 24.04 + PX4 v1.15.2 + AirSim v1.8.1 + UE4.27