AirSim
微软开源的 Unreal Engine 自动驾驶仿真平台,支持无人机/汽车/视觉三种模式,用于训练
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
微软开源的 Unreal Engine 自动驾驶仿真平台,支持无人机/汽车/视觉三种模式,用于训练
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你是否见过这样的场景:一架无人机在雨林上方盘旋,镜头里的画面逼真得像真实航拍——但它其实只是一行行代码在模拟器里跑出来的画面。这不是电影特效,这是 AirSim 正在做的事。
2017年,微软研究院的一支团队注意到一个痛点:训练自动驾驶算法需要海量的真实路况数据,但在真实世界中测试无人机或无人车,成本高、风险大,而且数据采集速度远远跟不上算法迭代的需求。
于是他们萌生了一个想法——能不能在游戏引擎里搭建一个高度逼真的虚拟世界,让 AI 在里面练习? 团队选择了 Unreal Engine(虚幻引擎)作为基底,因为这款游戏引擎在光影渲染、物理仿真方面已经达到了电影级水准,能够生成极为真实的视觉画面。随后他们将这个模拟平台命名为 AirSim,并以开源方式发布,很快成为了自动驾驶研究领域的标杆工具。
2022年,微软宣布 AirSim 将被新的 Project AirSim(商业版)取代,原仓库将逐步归档。同时,IAMAI 团队也 fork 了自己的版本继续维护——这个项目在学术和产业界的双重影响力由此可见一斑。
AirSim 支持三种核心仿真模式,每种都对应不同的研究场景:
多旋翼无人机模式(Multirotor) 是最经典的使用场景。用户可以通过键盘手动操控无人机飞行,也可以编写 Python/C++ 代码让无人机自主执行任务。模拟器提供前视摄像头、深度图、IMU(惯性测量单元)、GPS 等传感器数据,开发者可以直接在虚拟环境中训练计算机视觉或强化学习模型。AirSim 还支持硬件在环(Hardware-in-the-Loop)仿真,可以直接连接真实的 PX4 或 ArduPilot 飞控固件,让虚拟测试和真实飞控无缝衔接。
汽车模式(Car) 让研究者在虚拟城区街道上训练自动驾驶算法。支持方向盘控制(兼容真实赛车方向盘设备)、多车道、红绿灯等交通元素,还能模拟碰撞场景。对于研究端到端自动驾驶感知-决策链路的研究者来说,这是个低成本的验证环境。
计算机视觉模式(ComputerVision) 完全关闭物理引擎,只保留传感器数据输出,适合纯视觉算法(如 SLAM、深度估计、光流)的独立研究,无需处理车辆动力学。
AirSim 的代码架构可以用"插件 + API"双层结构来理解。
核心层(AirLib) 是整个项目的技术底座,用 C++ 实现,模块划分清晰:
AirLib/src/api/ — 统一的车辆控制 API,所有语言的客户端都通过这个接口与模拟器通信。API 风格采用 RPC 机制,支持获取图像、控制电机、查询状态等操作。AirLib/src/vehicles/ — 车辆动力学模型,包含多旋翼无人机的飞行动力学、汽车的轮胎物理模型,支持自定义车辆参数。AirLib/src/safety/ — 安全层,包括碰撞检测、地理围栏(Geofence)、故障注入等。AirLib/src/common/ — 公共基础设施,包括日志、配置管理、数学库(Eigen)等。插件层(Unreal/Unity) 负责将上述 C++ 逻辑接入游戏引擎。AirSim 以 Unreal Engine 插件的形式存在,可以直接拖入任何 UE4 项目。Unity 版本则是实验性支持。
客户端层 提供多语言 API:
PythonClient/)是使用最广泛的,提供了从基础控制到高级示例(强化学习、模仿学习、目标检测等)的完整 Demo。ros/、ros2/)让 AirSim 无缝接入机器人操作系统生态,支持将模拟器数据发布到 ROS topic。HelloCar/、HelloDrone/)展示了如何用原生语言调用 API。从代码质量来看,AirSim 作为微软研究院项目,代码结构规范,包含完整的 Visual Studio 项目文件(.sln、.vcxproj),有持续集成立覆(Windows/Ubuntu GitHub Actions),文档质量较高(MkDocs 生成文档站点)。测试方面有独立的 AirLibUnitTests 单元测试目录。
不过需要注意的是,项目主分支处于维护状态(微软已转向商业版),学术界影响力正在逐渐转移到衍生项目。

图1:AirSim 模拟的无人机前视摄像头画面,虚拟森林环境与真实航拍高度相似。
坦率地说,AirSim 的部署难度是相当高的,这是所有基于游戏引擎的仿真平台的共同特点。
最核心的问题是 Unreal Engine 本身:完整的 UE4 源码版本需要 Epic Games 账号授权(免费),但下载和编译一次需要数十GB存储空间和数小时的编译时间。即使使用预编译二进制版本,仍需要:NVIDIA GPU(CUDA 10.0+)来渲染画面、Docker 19.03+ 来运行官方 Docker 镜像、至少 50GB 可用磁盘空间。
好在项目方提供了两种 Docker 方案来降低门槛:
Dockerfile_binary):基于 nvidia/cudagl:10.0-devel-ubuntu18.04,可以直接 pip install airsim,适合快速验证 Python API 功能,无需完整 UE4 环境。Dockerfile_source):基于 adamrehn/ue4-engine:4.19.2-cudagl10.0,完整构建 AirSim,适合需要修改模拟器内核的用户。docker 目录下还提供了 run_airsim_image_binary.sh 和 run_airsim_image_source.sh 启动脚本,支持 --headless 无头模式运行(无显示输出,适合服务器环境)。

图2:AirSim 系统架构图,展示了模拟器与外部控制系统的交互关系。
AirSim 并非万能。它的核心价值在于低成本、高安全性地采集自动驾驶感知数据,以及训练端到端决策模型。但如果你的目标是快速验证一个强化学习算法,或者只是想了解无人机控制的基本原理,直接用开源强化学习框架(如 Stable-Baselines3)配合 Gym 环境会是更轻量的选择。
对于真正需要它的用户来说,AirSim 提供的价值是无可替代的:它让你可以在一个下午内完成上万公里的虚拟里程测试,而不需要真的跑坏一台无人机。

图3:AirSim 支持多种地形环境,包括平原、山区、城市等,可模拟不同场景下的自动驾驶训练。
回顾自动驾驶仿真器的演进历程,AirSim 的出现是一个标志性事件。在它之前,学术界训练无人机 AI 往往依赖 Gazebo(ROS 生态的通用机器人仿真器),但 Gazebo 的视觉渲染能力较为简陋,难以满足感知端到端训练的需求。AirSim 将游戏引擎级别的画面质量引入了自动驾驶研究,大大降低了"Sim2Real"(仿真到真实的迁移)的研究门槛。
18,000+ 的 GitHub Stars 和 4,800+ 的 Forks 证明了它在社区中的认可度。虽然微软已转向商业化路径,但 AirSim 留下的技术遗产——包括感知数据 API 规范、硬件在环仿真模式、以及 ROS 集成方案——至今仍被后续的仿真项目(如 AirSim 的各 fork 版本)广泛借鉴。
对于 AI 研究者和自动驾驶从业者来说,理解 AirSim 的设计思路,是深入自动驾驶仿真领域的一堂必修课。