跳转至

AirSim N: An Aerodynamic, Computer Vision, and Network Simulator for Drone-based Wireless Networks

一语概括:

提出一个名为 "AirSim N" 的新型开源模拟器, 专用于评估无人机无线网络

  1. 功能与目的: AirSim N 是一个用于评估无人机无线网络的开源模拟器
  2. 核心特点: [哪里优秀于 Related Work]
    • 它与以往的工具都不同,因为它首次同时支持三种类型的模拟: 空气动力学 (aerodynamic)、计算机视觉 (computer vision) 和 网络模拟 (network sim)
  3. 实现基础: 通过集成 AirSim(负责空气动力学和视觉)和 NS-3(负责网络模拟)这两个流行的开源项目来实现的
  4. 应用领域: 它可以被广泛用于无人机反馈控制、无人机视觉算法以及 5G/6G 蜂窝网络规划等项目的大规模评估

理论上跟我研究领域没啥关系, 但涉及到 “与ns-3的合作” 了, 准备看看咋跟其融合的. 说不定有借鉴意义!

Warning

确实有意义! 因为积累了:

  1. ZMQ
  2. ZMQ 作为 unreal-engine 和 ns-3 的 middleware

Introduction 重点内容:

  1. 背景:

    • 联网无人机应用(e.g. 无人机传输图像, 到地面站进行分析)正变得日益重要
    • 但构建完整的端到端真实系统来进行评估是极其困难的 (耗时、昂贵、不可复现)
    • 因此, 需要一个能同时模拟三个关键要素的模拟器: 空气动力学、计算机视觉传感, 和 pkt-level 网络
  2. 解决方案:

    • 作者提出了 AirSim N, 这是一个开源的协同模拟器, 旨在满足上述三个需求
  3. 实现方法:

    • AirSim N 集成了两个现有的流行项目
      • AirSim: 一个基于 Unreal Engine (虚幻引擎) 的插件, 提供逼真的空气动力学 + 传感器(图像)模拟
      • NS-3: 一个强大的网络模拟器,提供包级别网络模拟 (支持 Wi-Fi, 5G/6G)
    • 使用 ZMQ 消息系统作为中间件, 在 AirSim 和 NS-3 之间传递消息. 以实现时间和位置的同步
  4. 优势与应用:

    • AirSim N 的设计(多态性)使得从现有的 AirSim 应用迁移过来非常容易,代码改动很小
    • 它使研究人员能够对复杂的无人机网络(如 5G/6G 无人机)进行大规模、可复现的评估
积累: ZMQ - ZeroMessageQueue

ZeroMQ 不是一个传统的消息队列服务器(RabbitMQ 或 Kafka). 它的核心理念是 "Zero Broker" (零代理), 即: 它没有一个中心服务器

它将消息处理的智能(如路由、排队)构建在两端的 "socket"(套接字)中, 而不是依赖一个中心的代理服务器

ZMQ 的真正威力在于它封装了复杂的消息模式! 你只需定义套接字的类型,ZMQ 就会在后台处理连接、断开、重连和消息路由

最常用的模式包括:

  • Request-Reply: 用于连接客户端和服务端, 进行 RPC (remote procedure calling) 风格的通信
  • Publish-Subscribe: 用于数据分发. 一个发布者 (PUB) 将消息发送给所有订阅者 (SUB)
  • Push-Pull: 也称为管道 [pipeline]
    • 用于在多个节点之间分配任务: PUSH 端发送任务, PULL 端公平地接收任务. 这在 AirSim N 中被用于同步

alt text

  • ZMQ 相关项目: https://github.com/zeromq
  • 核心库(c++): https://github.com/zeromq/libzmq
  • python-zmq: https://github.com/zeromq/pyzmq
  • c++-zmq: https://github.com/zeromq/cppzmq

Design of AirSimN 重点内容:

alt text

(1) 核心架构: 三大组件

AirSim N 的架构由三个主要部分组成, 通过中间件连接:

  • AirSim (上层):
    • 负责物理和视觉模拟
    • 利用 Unreal 引擎创建 3D 虚拟环境, 并提供 API 来控制无人机(Drone Control)和激活传感器
  • NS-3 (下层):
    • 负责网络模拟
    • 它根据配置创建网络拓扑(e.g. GCS 作为服务器,无人机作为客户端), 模拟包括 Wi-Fi 和 5G/6G 在内的网络协议
  • 中间件: 充当 AirSim 和 NS-3 之间的接口或“胶水”
    • 它使用 ZMQ 来实现消息交换
    • 它采用不同的消息模式来处理特定任务:
      • Push-Pull: 用于同步和传递命令
      • Pub-Sub: 用于报告网络流量

(2) 同步机制: 分步同步 (Step-wise)

为了确保物理模拟和网络模拟保持一致, AirSim N 采用了一种简单的“分步同步”机制:

  • 核心理念: 两个模拟器交替运行 (run by turns),而不是并行运行
  • 工作流程:
    1. 一个模拟器(例如 AirSim)运行一个很短的时间片
    2. 它运行完毕后 暂停 (Pause),保存其当前状态(如无人机的位置)
    3. 它将控制权和状态信息传递给另一个模拟器(NS-3)
    4. NS-3 基于新状态运行一个时间片,然后也暂停,再把控制权交回给 AirSim
    5. 这个“运行-暂停-交换”的循环会一直持续,直到整个模拟结束
  • 目的: 确保两个模拟器在时间和位置上的状态是同步的

(3) 简化的配置:

为了方便使用, AirSim N 复用了 AirSim 的 settings.json 配置文件

研究人员可以直接在这个 JSON 文件中添加额外的网络拓扑和模拟设置,而无需深入修改 NS-3 的脚本代码