任务
一些参考的网站
点击查看代码
https://zhaoxuhui.top/blog/2021/12/01/airsim-note3-settings.html#31-采集平台选择
https://search.freefind.com/find.html?si=29065426&pid=r&n=0&charset=UTF-8&bcd=%C3%B7&query=airsim
https://microsoft.github.io/AirSim/apis_cpp/
https://microsoft.github.io/AirSim/
https://microsoft.github.io/AirSim/design/
✅ 项目整体 ToDo List(按功能模块划分)
一、系统架构与初始化
二、仿真场景设计与配置
2.1 地形与地图
2.2 环境要素
2.3 静态与动态对象
三、飞机控制系统
3.1 视景模式控制
3.2 仿真模式控制(AirSim 控制器)
3.3 多无人机支持
四、虚拟传感器与通信模块
4.1 传感器配置
4.2 传感器数据处理
4.3 外部数据通信(态势显示)
五、多视角系统
六、UI 系统开发
6.1 基础界面
6.2 系统展示与操作
6.3 UI 与逻辑联动
七、系统展示与交互控制
八、工程部署与测试
九、代码结构与工具支持
- 这几个是在同样的代码下跑出来的。
- 我那些修改只实现了一部分,有一部分暂时还没实现,因为我测试加上去指标又低了
- 先拿这个跑别的,同时再继续实现吧。
- 对比就先用mmp,这个,dePT那个用学弟跑的,
Airsim的闪退问题太严重了。。。。
为什么我封装的那个子类,一重新编译蓝图里就报缺失?是否和Airsim的特殊引入方式有关?
-
论文方面进展不大和昨天差不多, 等我确认没啥效果的话我看看用点办法整我之前的那个,改改想法
-
项目方面也是. 遇到点瓶颈, airsim相关文档实在不多,而且我用它api属于是问题百出. 在同一个项目里的所有操作都得用异步,而且会重新编译会出现蓝图重载问题需要重新修改.
-
我在找别人对airsim的修改.
-
如何实现通信控制?是死磕目前这套技术方案, 还是整个python服务端来转发并用airsim pythonapi来控制?
架构图
graph TB
%% 外部仿真机系统
subgraph SIM["🖥️ 仿真机端"]
DYNAMICS["无人机动力学模型"]
PATHPLAN["路径规划算法"]
DECISION["决策控制系统"]
UDPSEND["UDP数据发送器"]
DYNAMICS --> UDPSEND
PATHPLAN --> UDPSEND
DECISION --> UDPSEND
end
%% Python中间件
subgraph MIDDLEWARE["🐍 Python中间件服务器"]
subgraph COMM["通信模块"]
UDPRECV["UDP接收器<br/>端口:12345"]
TCPSERVER["TCP服务器<br/>端口:12346"]
WSSERVER["WebSocket服务器<br/>端口:12347"]
end
subgraph CORE["核心处理模块"]
MODEMANAGER["模式管理器<br/>仿真/视景切换"]
DATAPARSER["数据解析器<br/>位置/姿态/速度"]
CMDPROCESSOR["命令处理器<br/>天气/场景/控制"]
end
subgraph API["AirSim API封装"]
POSITIONAPI["位置控制API"]
SENSORAPI["传感器数据API"]
ENVAPI["环境控制API"]
PHYSICSAPI["物理引擎API"]
end
UDPRECV --> DATAPARSER
TCPSERVER --> CMDPROCESSOR
WSSERVER --> CMDPROCESSOR
DATAPARSER --> MODEMANAGER
CMDPROCESSOR --> MODEMANAGER
MODEMANAGER --> POSITIONAPI
MODEMANAGER --> ENVAPI
MODEMANAGER --> PHYSICSAPI
end
%% UE AirSim系统
subgraph UE["🎮 UE AirSim端"]
subgraph AIRSIM["AirSim插件"]
FLYINGPAWN["BP_FlyingPawn<br/>无人机实体"]
SENSORS["传感器系统<br/>D435i + MID360"]
PHYSICS["物理引擎<br/>多旋翼动力学"]
ENVIRONMENT["环境系统<br/>天气/光照/季节"]
end
subgraph SCENE["场景系统"]
TERRAIN["地形系统<br/>中蒙/中印/中朝边境"]
VEGETATION["植被系统<br/>树木/灌木"]
ANIMALS["动态目标<br/>飞鸟/动物/敌机"]
WEATHER["天气系统<br/>风/雨/雾"]
end
subgraph UI["用户界面"]
SCENECONFIG["场景配置面板"]
WEATHERCONTROL["天气控制面板"]
TIMECONTROL["时间控制面板"]
VIEWCONTROL["视角切换控制"]
STATUSDISPLAY["实时状态显示"]
end
FLYINGPAWN --> SENSORS
PHYSICS --> FLYINGPAWN
ENVIRONMENT --> WEATHER
ENVIRONMENT --> SCENE
end
%% 展示UI软件
subgraph DISPLAY["📊 展示UI软件"]
CONFIGUI["态势配置界面"]
MONITORING["实时监控面板"]
TRAJECTORY["轨迹显示"]
DATALOG["数据记录"]
end
%% 数据流连接
UDPSEND -.->|"UDP 100Hz<br/>位置/姿态数据"| UDPRECV
POSITIONAPI -->|"AirSim API调用"| FLYINGPAWN
SENSORAPI -->|"传感器数据获取"| SENSORS
ENVAPI -->|"环境参数设置"| ENVIRONMENT
PHYSICSAPI -->|"物理引擎控制"| PHYSICS
UI -->|"TCP命令<br/>天气/场景控制"| TCPSERVER
WSSERVER -->|"WebSocket<br/>实时状态推送"| STATUSDISPLAY
CONFIGUI -->|"TCP连接<br/>场景配置"| TCPSERVER
MONITORING <-->|"WebSocket<br/>双向数据"| WSSERVER
%% 模式切换逻辑
MODEMANAGER -.->|"仿真模式<br/>启用物理引擎"| PHYSICS
MODEMANAGER -.->|"视景模式<br/>禁用物理引擎"| PHYSICS
%% 传感器数据流
SENSORS -.->|"传感器数据"| SENSORAPI
SENSORAPI -.->|"数据转发"| WSSERVER
%% 环境控制流
SCENECONFIG --> CMDPROCESSOR
WEATHERCONTROL --> CMDPROCESSOR
TIMECONTROL --> CMDPROCESSOR
%% 样式定义
classDef simBox fill:#e1f5fe,stroke:#01579b,stroke-width:2px
classDef middlewareBox fill:#f3e5f5,stroke:#4a148c,stroke-width:2px
classDef ueBox fill:#e8f5e8,stroke:#1b5e20,stroke-width:2px
classDef uiBox fill:#fff3e0,stroke:#e65100,stroke-width:2px
class SIM simBox
class MIDDLEWARE middlewareBox
class UE ueBox
class DISPLAY uiBox
数据流
sequenceDiagram
participant SIM as 仿真机
participant MW as Python中间件
participant UE as UE AirSim
participant UI as 展示界面
participant SENSORS as 传感器系统
Note over MW: 系统启动和初始化
MW->>UE: 连接AirSim API
MW->>MW: 设置默认仿真模式
MW->>UE: 启用物理引擎
Note over SIM,UI: 仿真模式数据流
loop 仿真模式 (100Hz)
SIM->>MW: UDP位置数据 {x,y,z,roll,pitch,yaw}
MW->>MW: 解析位置数据
MW->>UE: 透传API控制命令
UE->>UE: 物理引擎计算
UE->>SENSORS: 更新传感器位置
SENSORS->>MW: 传感器数据 (D435i/MID360)
MW->>UI: WebSocket推送状态
end
Note over MW,UI: 模式切换流程
UI->>MW: TCP请求切换到视景模式
MW->>UE: 禁用物理引擎
MW->>MW: 切换到视景模式
MW->>UI: 确认模式切换成功
Note over SIM,UI: 视景模式数据流
loop 视景模式 (100Hz)
SIM->>MW: UDP位置数据
MW->>MW: 解析数据并忽略物理
MW->>UE: 直接设置Actor位置 (瞬移)
UE->>SENSORS: 更新传感器位置
SENSORS->>MW: 传感器数据
MW->>UI: WebSocket推送状态
end
Note over UI,UE: 环境控制流程
UI->>MW: TCP天气控制命令 {type:"rain", intensity:0.8}
MW->>UE: AirSim天气API调用
UE->>UE: 更新天气效果
UE->>MW: 天气状态反馈
MW->>UI: WebSocket状态更新
Note over UI,UE: 场景配置流程
UI->>MW: TCP场景配置 {trees, terrain, animals}
MW->>UE: 场景参数设置
UE->>UE: 动态生成场景元素
UE->>MW: 场景配置完成
MW->>UI: 配置结果反馈
Note over SENSORS,UI: 传感器数据流
loop 传感器数据 (30Hz)
SENSORS->>MW: 深度图像/点云数据
MW->>MW: 数据格式转换
MW->>UI: WebSocket传感器数据流
UI->>UI: 实时显示传感器视图
end
Note over SIM,UE: 错误处理流程
SIM-->>MW: 连接中断
MW->>MW: 检测超时
MW->>UE: 暂停位置更新
MW->>UI: 推送连接状态警告
SIM->>MW: 重新连接
MW->>UI: 恢复正常状态
分层图
graph TD
%% 应用层
subgraph APP["🎯 应用层"]
PATROL["边境巡逻任务"]
PATHPLAN["路径规划评估"]
DATACOLLECT["仿真数据采集"]
REALTIME["实时态势显示"]
end
%% 业务逻辑层
subgraph BUSINESS["🔧 业务逻辑层"]
MODESWITCH["仿真/视景模式切换"]
SCENEMANAGE["场景管理"]
VEHICLECONTROL["无人机控制"]
SENSORMANAGE["传感器管理"]
ENVCONTROL["环境控制"]
end
%% 中间件层
subgraph MIDDLEWARE["⚙️ 中间件层 (Python服务器)"]
subgraph PROTOCOL["协议适配"]
UDP["UDP服务器<br/>高频位置数据"]
TCP["TCP服务器<br/>控制命令"]
WS["WebSocket<br/>实时推送"]
end
subgraph PROCESSING["数据处理"]
PARSER["数据解析器"]
VALIDATOR["数据校验器"]
CONVERTER["格式转换器"]
BUFFER["数据缓冲器"]
end
subgraph APIGATEWAY["API网关"]
AIRSIMAPI["AirSim API封装"]
CMDROUTER["命令路由器"]
RESPMANAGER["响应管理器"]
end
end
%% 平台层
subgraph PLATFORM["🏗️ 平台层"]
subgraph AIRSIMCORE["AirSim核心"]
SIMAPI["AirSim Python API"]
MULTIROTOR["多旋翼仿真器"]
SENSORS["传感器仿真"]
PHYSICS["物理引擎"]
end
subgraph UEENGINE["UE引擎"]
RENDERING["渲染引擎"]
BLUEPRINT["蓝图系统"]
UIFRAMEWORK["UI框架"]
ASSETMANAGE["资源管理"]
end
end
%% 基础设施层
subgraph INFRA["🔧 基础设施层"]
subgraph NETWORK["网络基础"]
ETHERNET["以太网"]
LOCALHOST["本地回环"]
FIREWALL["防火墙配置"]
end
subgraph SYSTEM["系统基础"]
WINDOWS["Windows OS"]
DRIVERS["硬件驱动"]
MEMORY["内存管理"]
GPU["GPU加速"]
end
end
%% 连接关系
APP --> BUSINESS
BUSINESS --> MIDDLEWARE
MIDDLEWARE --> PLATFORM
PLATFORM --> INFRA
%% 具体连接
PATROL --> MODESWITCH
PATHPLAN --> VEHICLECONTROL
DATACOLLECT --> SENSORMANAGE
REALTIME --> ENVCONTROL
MODESWITCH --> UDP
SCENEMANAGE --> TCP
VEHICLECONTROL --> PARSER
SENSORMANAGE --> WS
ENVCONTROL --> CONVERTER
UDP --> SIMAPI
TCP --> MULTIROTOR
WS --> SENSORS
PARSER --> PHYSICS
SIMAPI --> RENDERING
MULTIROTOR --> BLUEPRINT
SENSORS --> UIFRAMEWORK
PHYSICS --> ASSETMANAGE
RENDERING --> ETHERNET
BLUEPRINT --> LOCALHOST
UIFRAMEWORK --> WINDOWS
ASSETMANAGE --> GPU
%% 关键数据流标注
PATROL -.->|"任务参数"| DATACOLLECT
VEHICLECONTROL -.->|"控制指令"| SENSORMANAGE
APIGATEWAY -.->|"API调用"| AIRSIMCORE
AIRSIMCORE -.->|"渲染数据"| UEENGINE
%% 样式定义
classDef appLayer fill:#ffeb3b,stroke:#f57f17,stroke-width:2px
classDef businessLayer fill:#4caf50,stroke:#1b5e20,stroke-width:2px
classDef middlewareLayer fill:#9c27b0,stroke:#4a148c,stroke-width:2px
classDef platformLayer fill:#2196f3,stroke:#0d47a1,stroke-width:2px
classDef infraLayer fill:#ff5722,stroke:#bf360c,stroke-width:2px
class APP appLayer
class BUSINESS businessLayer
class MIDDLEWARE middlewareLayer
class PLATFORM platformLayer
class INFRA infraLayer

浙公网安备 33010602011771号