AirSim 无人机仿真入门:实现起飞与降落控制
环境准备
AirSim 是基于 Unreal Engine 开发的开源仿真平台,主要用于模拟无人机和自动驾驶汽车。为了运行它,我们需要先搭建好基础环境。推荐使用 Unreal Engine 4.27.2 版本,它对 AirSim 的兼容性较好。
安装依赖
- Epic Games Launcher:注册账号后下载引擎。
- Visual Studio 2022:务必勾选"C++ 桌面开发'及对应的 Windows SDK,并在组件中安装最新的 .NET Framework SDK。
- Git Bash:用于克隆项目仓库。
编译 AirSim
进入目标磁盘目录,执行 git clone 获取 AirSim 源码。随后在根目录下运行 build.cmd 进行编译。成功后会在 AirSim\Unreal 下生成 Plugins 文件夹,这是后续导入的关键。
工程配置
创建一个新的 Unreal 工程是连接仿真器与控制程序的第一步。
- 新建工程:从商城选择一个场景(如山脉景观),生成
.uproject文件。 - 添加插件:将之前编译好的
Plugins文件夹复制到工程目录中。 - 修改配置:编辑
DefaultGame.ini和.uproject文件以启用插件。 - 生成项目:右键
.uproject选择 "Generate Visual Studio project files"。 - 设置模式:在
settings.json中将SimMode改为"Multirotor",确保是多旋翼模式。 - 启动调试:在 VS 中设置为
DebugGame Editor并启动,确认编辑器右下角提示插件可用。最后在游戏模式重载中选择AirSimGameMode并保存关卡。
此时点击绿色三角运行,即可看到仿真场景加载成功。
Python 控制脚本
环境就绪后,我们可以使用 Python 编写控制逻辑。这里推荐使用 Anaconda 管理虚拟环境,PyCharm 作为编辑器。
依赖安装
在终端中激活环境并安装必要的库:
pip install msgpack-rpc-python
pip install airsim
通信机制
AirSim 默认监听 41451 端口,使用 msgpack-rpc 协议。这意味着控制端和仿真端可以物理隔离,甚至部署在不同机器上。如果端口冲突,可在配置文件中修改端口号。
控制代码
以下是一个完整的起飞与降落示例。注意 join() 方法的作用,它确保异步任务完成后再执行下一行,避免时序错误。
import airsim
# 建立连接
client = airsim.MultirotorClient()
client.confirmConnection()
# 获取控制权
client.enableApiControl(True)
# 解锁电机
client.armDisarm()
client.takeoffAsync().join()
client.landAsync().join()
client.armDisarm()
client.enableApiControl()


