打造你自己的AirSim仿真环境:从选择UE4场景到布置车辆与相机的完整路径
【免费下载链接】AirSimOpen source simulator for autonomous vehicles built on Unreal Engine / Unity, from Microsoft AI & Research项目地址: https://gitcode.com/gh_mirrors/ai/AirSim
🚁AirSim是微软 AI & Research 团队开源的自动驾驶仿真平台,基于 Unreal Engine(UE4)与 Unity 构建,让开发者在照片级真实感的虚拟世界中测试多旋翼无人机与自动驾驶汽车。本文将从零讲清AirSim 仿真环境的搭建路径:如何选择 UE4 场景、如何布置车辆、如何配置相机,帮你快速跑出自己的自动驾驶仿真实验。
一、先选场景:内置 Blocks 环境 vs 自定义 UE4 场景
AirSim 提供两条路线,按你的需求选择:
| 路线 | 适用人群 | 特点 |
|---|---|---|
| 内置 Blocks 环境 | 新手、快速验证 | 体积极小、启动快,仓库自带,位于 Unreal/Environments/Blocks/Blocks.uproject |
| 自定义 UE4 环境 | 需要高保真场景的正式实验 | 可从 Unreal Marketplace 导入山地、城市等写实场景 |
1. 新手起步:Blocks 环境 5 分钟跑通
官方文档给出了最简步骤(见 docs/unreal_blocks.md):
- 完成 AirSim 与 Unreal 引擎的安装构建(docs/build_windows.md / docs/build_linux.md);
- 用 Visual Studio 打开
Unreal\Environments\Blocks\Blocks.sln,构建配置选择DebugGame_Editor+Win64; - 按 F5 启动 Unreal 编辑器,按下Play按钮,无人机就会出现在方块世界里。
💡 小技巧:
Unreal\Environments\Blocks目录里有一批.bat/.sh脚本(如clean.bat、update_to_git.bat),用于同步代码与清理中间文件,开发时非常顺手。
2. 进阶玩法:用 Unreal Marketplace 场景打造专属世界
想要照片级真实感?官方推荐用 Epic Games Launcher 的 Learn 标签页里的Landscape Mountains作为示例环境(完整步骤见 docs/unreal_custenv.md):
- 创建项目:在 Launcher 中点击该环境的 "Create Project" 下载内容包;
- 注入 AirSim 插件:把 AirSim 仓库中的
Unreal\Plugins文件夹整个复制进你的环境项目根目录; - 编辑
.uproject文件:为 Modules 添加"AdditionalDependencies": ["AirSim"],并在顶层Plugins中启用 AirSim; - 修改
Config\DefaultGame.ini:追加+MapsToCook=(FilePath="/AirSim/AirSimAssets"),确保打包时包含全部 AirSim 资产; - 重新生成 VS 工程文件,F5 运行,在 World Outliner 中确认PlayerStart位置合理(这是 AirSim 放置车辆的坐标原点)。
⚠️ 注意:PlayerStart 悬太高会导致车辆一启动就坠落,行为变得不可预测;如环境自带 Matinee 播放片头动画,记得删除 MatineeActor。
插件资产内容可以在插件目录中直接查看:Unreal/Plugins/AirSim/
🎮 使用 Unity 引擎的开发者同样可以搭建环境:仓库自带 CarDemo 与 DroneDemo 两个轻量示例项目,详见 docs/Unity.md 与 docs/custom_unity_environments.md。
二、布置车辆:从单架无人机到多车混编
AirSim 1.2 版本起完整支持多车辆,核心全靠一个settings.json配置文件(格式详解见 docs/settings.md)。
1. 用 Vehicles 节点定义车辆与初始位姿
位置采用NED 坐标系(单位:米),原点是 UE4 场景里的 PlayerStart;朝向用 Yaw/Pitch/Roll 角度表示。想飞多旋翼就设"SimMode": "Multirotor",想开车就设"SimMode": "Car"(开车玩法见 docs/using_car.md):
{ "SettingsVersion": 1.2, "SimMode": "Car", "Vehicles": { "Car1": { "VehicleType": "PhysXCar", "X": 4, "Y": 0, "Z": -2 }, "Car2": { "VehicleType": "PhysXCar", "X": -4, "Y": 0, "Z": -2, "Yaw": 90 } } }多旋翼同理,把VehicleType换成SimpleFlight即可。每辆车在 API 中都用这个名字(如Car1、Drone2)来寻址,listVehicles()可返回当前所有车辆名。
2. 运行时动态添加车辆
不想改配置文件?simAddVehicleAPI 允许在运行中动态生成车辆(支持 SimpleFlight、PhysXCar 等类型),并可通过pawn_path指定自定义车辆蓝图。示例代码:
- C++ 版:HelloSpawnedDrones/HelloSpawnedDrones.cpp
- Python 版:PythonClient/car/runtime_car.py
更多车辆玩法与 API 用法见 docs/multi_vehicle.md;想给自己的车换模型,可以看 docs/meshes.md。
三、配置相机:让数据采集视角随心所欲
AirSim 的相机系统是数据采集的核心,屏幕上的每个子窗口都对应simGetImagesAPI 能拉取的视图(深度图、分割图、RGB 等,详解见 docs/camera_views.md)。
1. 给车辆挂载自定义相机
在settings.json中,每辆车的Cameras节点下按相机名字定义参数,例如:
"PhysXCar": { "VehicleType": "PhysXCar", "Cameras": { "FrontCam": { "Width": 1024, "Height": 768, "FOV_Degrees": 110 }, "DepthCam": { "ImageType": 1, "Width": 512, "Height": 512 } } }常用参数速查:
- X / Y / Z:相机相对车辆的位置(米)
- FOV_Degrees:视场角
- ImageType:0=RGB、1=深度、2=分割 等
- Gimbal:云台增稳与俯仰/偏航角度
- CaptureSettings:分辨率与投影模式,对全部相机生效的默认值写在
CameraDefaults中
2. 快捷键切换视图与手动控制
- 按F1查看开关各视图的快捷键,可切换 "Fly with Me"、FPV、地面视角等模式;
- 按M进入手动相机模式,WASD + 方向键自由推拉镜头,方便先"巡视"一遍场景再决定相机挂载点。
3. 验证你的环境配置
环境搭好、车辆与相机就位后,用 Python 客户端一键验证。多旋翼起飞示例(PythonClient/multirotor/takeoff.py):
import airsim client = airsim.MultirotorClient() client.enableApiControl(True) client.armDisarm(True) client.takeoff().join()汽车示例(PythonClient/car/hello_car.py):
client = airsim.CarClient() client.enableApiControl(True) client.setCarControl(airsim.CarControl(throttle=1, steer=0.5))客户端完整 API 参考 docs/apis.md。
四、常见问题速查(FAQ)
| 问题 | 解决方案 |
|---|---|
| 启动时播片头动画,看不到车 | 删除环境中的 MatineeActor |
| 车辆启动即坠落 | 把 PlayerStart 降到贴近地面 |
| 找不到默认地图 | 在 Project Settings > Maps & Modes 中设置 Editor Starter Map |
| 报 "_BuiltData" 文件缺失警告 | 中间产物,可安全忽略 |
| 想让已有 UE 项目接入 AirSim | 复制Unreal\Plugins目录 + 按上文修改.uproject |
| Linux 上如何创建自定义环境 | 自定义环境需 Windows 制作,完成后把项目文件夹拷到 Linux 即可 |
写在最后
回顾一下完整路径:选场景(Blocks / Marketplace)→ 注入 AirSim 插件 → settings.json 布置车辆位姿 → Cameras 节点挂载相机 → Python 客户端验证。跟着 docs/unreal_proj.md 的指引,从内置环境练手,再逐步过渡到自定义 UE4 场景,你就能把 AirSim 变成专属的自动驾驶算法试验场。🛠️
祝仿真愉快,飞得又高又稳!
【免费下载链接】AirSimOpen source simulator for autonomous vehicles built on Unreal Engine / Unity, from Microsoft AI & Research项目地址: https://gitcode.com/gh_mirrors/ai/AirSim
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考