Unreal Engine中AirSim无人机未按自定义局部轴移动问题求助
AirSim无人机在Unreal Engine中局部坐标移动失效问题排查与解决
问题描述
我在Unreal Engine环境中运行AirSim无人机时遇到以下问题:
- 在自定义环境中设置无人机Actor的起始位置并旋转至预期朝向後,运行时无人机朝向混乱,始终沿环境全局坐标移动,而非我设置的局部坐标。
- 已在Unreal Engine中调整Actor轴心并旋转使其轴与朝向对齐,保存打包项目后,运行脚本时无人机仍沿自定义环境的全局轴移动。
相关截图:
期望的全局坐标下的旋转:
已按预期对齐旋转与轴,但运行时无变化:
解决步骤
1. 检查AirSim坐标系统配置
AirSim默认采用NED(北东地)坐标系统,需确认settings.json中的配置与UE环境匹配:
- 打开项目目录下的
AirSim/settings.json文件 - 检查
SimMode节点下的LocalNedOrigin参数,确保其与无人机起始位置、旋转对应 - 若需以局部坐标控制,添加或设置
UseLocalCoordinates: true
2. 确认无人机Root Component设置
- 在UE编辑器中选中无人机Actor,确保Root Component(如SceneComponent)的旋转已正确应用,且未被其他组件的继承旋转覆盖
- 验证Root Component的
Relative Rotation为0,保证Actor全局旋转直接作用于根组件
3. 同步AirSim Pawn初始旋转
- 检查AirSim无人机Pawn类的初始化逻辑,确认Spawn时是否正确读取Actor初始旋转并同步到AirSim内部坐标系统
- 可在UE蓝图中,在无人机Spawn后调用AirSim的
SetVehicleOrientation接口,手动同步Actor旋转
4. 清理打包缓存
- 打包前清理UE的Derived Data Cache:编辑 → 项目设置 → 引擎 → 内容 → 清理Derived Data Cache
- 打包时选择「完全重新构建」,避免旧配置缓存干扰
5. 修正控制脚本的坐标参考
- 检查控制脚本,确保使用局部坐标接口(如
GetRelativeLocation/GetRelativeRotation)而非全局坐标接口 - 若使用AirSim API控制(如Python),调用移动接口时指定
frame_id为local_origin,而非global
内容的提问来源于stack exchange,提问作者Coolio
相关产品推荐
相关产品推荐

