// CONNECTION_GUIDE · AIRSIM_BRIDGE_SETUP_v1.0
建立 AIRSIM 链路
系统当前处于 OFFLINE 状态。AirSim 模拟器需运行在 Windows 主机上, 通过网络将飞行数据推送至服务器后端。按照以下步骤完成链路建立。
AIRSIM SIMULATOR
Windows PC · Blocks.exe
端口 41451 (MsgPack-RPC)
↔
局域网/公网
FLASK BACKEND
Linux Server · Python
端口 5000 · WebSocket 10Hz
↔
HTTPS/WSS
UAV COMMAND HUD
Browser · uav.opennexus.top
实时态势显示
1
启动模拟器
2
配置网络
3
建立链路
4
验证遥测
启动 AirSim 模拟器
WINDOWS HOST · BLOCKS ENVIRONMENT
AirSim 是 Microsoft 开发的无人机物理仿真引擎,必须运行在 Windows 平台(支持 Unreal Engine)。服务器(Linux)无法直接运行,需要通过局域网或公网连接。
重要:AirSim 目前不支持在此 Linux 服务器上直接运行。你需要一台 Windows PC(或云 Windows VM)单独运行模拟器,再通过网络连接。
// OPTION A — 本地 Windows PC
下载 AirSim Blocks 环境(UE4 预编译版)
解压后运行 Blocks.exe,选择 No 跳过 VR
确认 AirSim 设置文件存在
~/Documents/AirSim/settings.json确保防火墙放行 41451 端口(TCP),允许入站连接
// settings.json 最小配置(多旋翼模式)
{
"SettingsVersion": 1.2,
"SimMode": "Multirotor",
"Vehicles": {
"Drone1": {
"VehicleType": "SimpleFlight"
}
}
}
// OPTION B — 云 Windows VM(推荐生产环境)
可在阿里云/腾讯云购买 GPU Windows Server 实例,安装 AirSim 后通过公网 IP 连接。带 GPU 的 VM 每小时约 ¥3-10,按需开关机,成本可控。后续集成 Docker 版 AirSim 后可直接在 Linux 上运行(P1 计划)。
配置网络连接
IP ADDRESS · PORT FORWARDING · FIREWALL
Flask 后端需要能访问 AirSim 的 41451 端口。根据你的网络环境选择方案:
同局域网:直接填写 Windows PC 的局域网 IP(如 192.168.1.x)
跨网络(公网):在路由器上将 41451 端口转发到 Windows PC
云 VM:直接使用 VM 公网 IP,在安全组放行 41451/TCP
// 查询 Windows PC 局域网 IP
# 在 Windows 命令提示符中运行
ipconfig
# 找到「以太网适配器」或「WLAN」下的 IPv4 地址
# 示例: IPv4 地址 . . . . . . . . . . . : 192.168.1.105
// 验证后端能否访问 AirSim(在服务器上运行)
nc -zv <AIRSIM_IP> 41451
# 成功:Connection to <IP> 41451 port [tcp/*] succeeded!
# 失败:则检查防火墙/端口转发配置
// 实时后端状态
Flask 后端服务检测中...
WebSocket 就绪检测中...
后端版本v2.4 · 10Hz Push
AirSim 连接状态检测中...
在控制台建立链路
UAV COMMAND HUD · UPLINK PANEL
AirSim 运行后,打开 UAV 控制台,在左侧 UPLINK 上行链路面板中填写 AirSim 所在主机的 IP 地址,点击「建立链路」。
在「NODE IP ADDRESS」填写 AirSim 主机 IP(本机测试填 127.0.0.1)
「COMM PORT」保持默认 41451(AirSim 默认端口)
点击 「⬡ 建立链路」按钮,等待 2-5 秒
顶部状态徽章由 OFFLINE 变为 ONLINE,表示连接成功
连接失败时,COMMS LOG 会显示具体错误信息。最常见原因:AirSim 未启动 或 防火墙拦截了 41451 端口。
验证遥测数据与首飞
TELEMETRY CHECK · ARM · TAKEOFF
链路建立后,左侧 KINEMATICS 面板应出现实时数值(10Hz 刷新)。按以下顺序操作完成首飞验证:
确认 KINEMATICS 面板显示 POS·X/Y/Z 数值(非 ----)
点击 ARM 按钮解锁无人机,状态标签变为 LANDED
点击 起飞,ADI 姿态仪出现动态数据,状态变为 AIRBORNE
使用虚拟摇杆或目标坐标导航控制飞行,轨迹显示在 TRACK 面板
连接后可点击 START FEED 启动 EO/IR 相机流(需 AirSim 渲染支持)。帧率约 1-2fps,取决于模拟器性能。
确保后端服务持续运行
LINUX SERVER · FLASK · SUPERVISOR
Flask 后端(端口 5000)当前已在服务器运行。以下是手动重启和配置守护进程的方法:
# 重启后端
kill $(lsof -ti:5000) 2>/dev/null; sleep 1
cd /www/wwwroot/uav.opennexus.top/web_panel
nohup venv/bin/python3 app.py > /tmp/uav-panel.log 2>&1 &
echo "PID: $!"
# /etc/supervisor/conf.d/uav-panel.conf
[program:uav-panel]
command=/www/wwwroot/uav.opennexus.top/web_panel/venv/bin/python3 app.py
directory=/www/wwwroot/uav.opennexus.top/web_panel
autostart=true
autorestart=true
stdout_logfile=/tmp/uav-panel.log
stderr_logfile=/tmp/uav-panel-err.log
supervisorctl reread && supervisorctl update
supervisorctl start uav-panel
supervisorctl status uav-panel
宝塔面板已安装 Supervisor,可在面板「软件商店 → Supervisor」中添加守护进程,无需手动编辑配置文件。
// FAQ · 常见问题
点击「建立链路」后连接超时或失败▼
最常见原因:① AirSim 模拟器未运行 ② Windows 防火墙拦截 41451 端口 ③ IP 地址填写错误。在 Windows PowerShell(管理员)执行:
New-NetFirewallRule -DisplayName "AirSim" -Direction Inbound -LocalPort 41451 -Protocol TCP -Action Allow 放行端口。连接成功但遥测数据全是 0 或不变化▼
正常现象——无人机在地面静止时速度/加速度为 0。点击「ARM」再「起飞」后数据才会变化。若起飞后仍无变化,检查 settings.json 的 SimMode 是否为 "Multirotor"。
Flask 后端崩溃了怎么重启▼
执行:
kill $(lsof -ti:5000) 2>/dev/null; cd /www/wwwroot/uav.opennexus.top/web_panel && nohup venv/bin/python3 app.py > /tmp/uav-panel.log 2>&1 & 重启后端。建议配置 Supervisor 自动守护。没有 Windows PC,能否在服务器上测试 UI?▼
可以。在 app.py 的 _ws_push_worker 中,当 client 为 None 时发送模拟数据包,即可在无 AirSim 环境下测试 UI。这是下一步开发计划中的「离线演示模式」(P0 优先级)。
如何让整个系统作为 OpenNexus 子系统运行?▼
UAV 系统已通过 Nginx 反向代理挂载到 uav.opennexus.top,并在 www.opennexus.top 主页注册了入口卡片。后续集成计划:将飞行数据通过 WebSocket 推送到 NEXUS BRAIN,实现跨系统的飞行态势感知和 AI 辅助决策。