跳转至

DistSim


DistSim 是 RflySim 工具链中的分布式节点管理与部署工具,用来解决“单机跑不动”以及“多台设备如何协同启动和运行”的问题。它不是仿真器,也不是地面站,而是多节点实验的组织和调度层。


软件定位

当实验进入以下场景时,DistSim 基本就会变得重要:

  • 多架无人机同时仿真
  • 多台主机分担 CopterSimRflySim3D、算法程序的负载
  • Windows、Linux、WSL、Jetson 等混合部署
  • 需要远程批量启动脚本和统一查看节点状态

因此,DistSim 主要解决的不是“飞行仿真怎么做”,而是“多台设备如何一起做仿真”。


为什么需要 DistSim

单机瓶颈

RflySim 的典型单机链路里,同时可能存在:

  • 多个 CopterSim 实例
  • 一个或多个 RflySim3D
  • PX4 SITL
  • Python / ROS 感知与控制程序

当载具数增加或视觉闭环变复杂时,CPU、GPU、内存和网络都会成为瓶颈。

RflySim 的天然分布式属性

RflySim 工具链本身就是进程分离、网络互联的设计:

  • 动力学解算和三维渲染是分开的
  • 飞控仿真和地面站是分开的
  • 外部控制与视觉算法也可以独立部署

DistSim 的意义,就是把这种“本来就可以分开”的架构真正组织成可用的集群。

多电脑分布式仿真拓扑图


在工具链中的角色

DistSim 可以理解为局域网中的实验调度器:

SimCreate / BAT
    -> DistSim 发现节点
    -> DistSim 选择目标节点
    -> DistSim 分发命令或脚本
    -> 各节点启动 CopterSim / RflySim3D / Python / SITL
    -> DistSim 维持在线状态与执行反馈

和其他核心软件相比:

软件 主要职责
CopterSim 解算载具运动与飞控接口
RflySim3D 三维渲染与传感器生成
QGroundControl 监控、任务与参数配置
SimCreate 单次实验的配置与启动脚本生成
DistSim 跨主机节点管理与脚本分发

分布式架构总览

在比较典型的分布式部署里,不同主机往往承担不同角色:

RflySim集群仿真框架

节点角色 典型职责
主控节点 运行 DistSim GUI、查看在线状态、下发命令
动力学节点 运行多个 CopterSim 实例
渲染节点 运行 RflySim3D / RflySimUE5
算法节点 运行 Python / ROS / MATLAB 控制与感知程序
嵌入式节点 运行 Jetson / Linux 侧算法或服务

如果视觉负载很重,渲染节点往往需要单独拿出来;如果只是大规模飞控群体仿真而没有图像链路,则更偏向把算力投入到 CopterSim 节点。


核心功能

节点自动发现

DistSim 最重要的能力,是让同一局域网中的各节点自动发现彼此。这样用户不需要手工维护复杂的节点列表,就能知道哪些机器在线、哪些角色已经加入集群。

网卡与网络健康管理

真实实验室环境里,很多机器同时有:

  • 有线网卡
  • Wi-Fi
  • VMware / Hyper-V 虚拟网卡
  • VPN / 代理网卡

DistSim 的一个实际价值,就是尽量自动过滤不适合的虚拟网卡,优先选择真正能参与局域网仿真的物理网卡。

远程命令与脚本执行

它可以向目标节点发送:

  • 直接命令
  • BAT / Shell 脚本
  • 多文件打包执行链路

这使得它非常适合把 SimCreate 生成的脚本继续扩展到多机运行。

节点信息管理

在大规模实验里,知道“哪台机器是谁”很重要。DistSim 会维护节点名称、操作系统类型、MAC 地址、UAV 范围等信息,方便在集群中定位问题。


运行模式

GUI 模式

适合:

  • 实验室调试
  • 节点在线观察
  • 手动下发命令
  • 现场确认集群状态

守护模式

适合:

  • Jetson、服务器或无显示器的节点
  • Linux 自启动服务
  • 后台持续运行的节点发现与执行代理

在真正的分布式集群里,这两种模式往往会同时存在:主控机跑 GUI,边缘节点跑守护模式。


配置与执行方式

五阶段思路

DistSim 的实验执行常按阶段推进,例如:

  1. 启动仿真组件
  2. 检查环境是否就绪
  3. 启动控制脚本
  4. 执行人工或任务阶段
  5. 清理并结束实验

这种阶段化设计的价值在于:多机系统不再是“谁先起来算谁”,而是带有顺序和依赖关系的可控流程。

SimCreate 的衔接

对很多项目而言,较稳妥的方式是:

  1. SimCreate 生成标准脚本
  2. DistSim 将这些脚本发往不同节点
  3. 再由各节点运行对应的本地组件

这样可以把“实验描述”和“分布式执行”分开管理。


典型部署场景

多台 Windows PC

这是最常见的实验室部署方式,适合:

  • 多机编队
  • 多机 HITL / SITL
  • 一台渲染、一台动力学、一台算法的拆分结构

Windows + WSL / Linux

适合:

  • PX4 SITL 运行在 WSL
  • 算法运行在 Linux
  • 图形界面和管理端保留在 Windows

Windows + Jetson NX

适合:

  • 把嵌入式算法节点纳入仿真集群
  • 模拟机载计算环境
  • 让 Jetson 作为视觉或控制边缘节点

大规模纯仿真

如果不跑重视觉链路,而是重点做大规模集群控制,DistSim 可以把多台主机组织成大规模 CopterSim 集群。

重视觉分布式仿真

如果每台载具都带相机或 LiDAR,RflySim3D 的 GPU 压力会明显升高,此时 DistSim 的意义更在于把渲染和算法负载摊到多台主机。

RflySim多机通信、组网及转发框架


使用建议与常见问题

推荐做法

  • 先在两台机器上跑通最小闭环
  • 再扩展到三台以上节点
  • 先把动力学节点和渲染节点拆开
  • 网络优先用有线,不要先上复杂 Wi-Fi 环境

常见问题

问题 更可能的原因 处理思路
发现不到节点 网段、防火墙、网卡选择有问题 先用最简单局域网检查连通性
节点频繁掉线 网络不稳定或错误网卡在发心跳 先固定物理网卡环境
脚本发出去了但没执行 权限或工作目录异常 先用简单命令验证执行链路
多机视觉很卡 渲染负载集中 增加渲染节点或减少单机传感器负担
大规模集群不同步 网络带宽和节点负载不足 降低单机实例数并简化数据模式

相关例程

DistSim 通信与接口

分布式控制部署

大规模集群

脚本与批量启动