hello.

Anona · 模块化四旋翼自主

一套平台。
八大规划。

One plant. Many planners. Fair comparison.
统一被控对象,可插拔规划器,在同一套标准下公平对比 —— 一个基于 ROS 2 Humble 的四旋翼自主飞行仿真工作台。

8
规划器 · Path A–H
6/6
验收场景一次通过
500Hz
动力学积分频率
12+
过程化生成地图

Architecture · 架构

平台不变,规划可变。

自研动力学与级联 PID 构成唯一的被控对象。Path A–H 通过同一套接口接入 —— 换规划器,不换平台,对比才公平。

One plant. Many planners. Fair comparison.

被控对象

PLANT

里程计、IMU、电机转速,一个四旋翼的完整动力学模型。

drone_dynamics + drone_controller

世界

WORLD

种子化点云地图,同一片森林、迷宫与走廊,人人可复现。

drone_map + map_adapter

规划

PLANNING

Path A–H 八个后端,从经典算法到强化学习,同台竞技。

drone_planner + vendors + rl

运维

OPS

一键 launch、任务控制台、六项验收场景,开箱即用。

drone_bringup + Mission Console
运维 · OPS Mission Console 浏览器 · 验收 drone_bringup 一键 launch · 六项验收 /drone/goal 规划 · PLANNING · Path A–H Ahomemade Bego Cgcopter Dfuel Emighty Ffast Gvfh Hsac 经典 优化 优化 模式 优化 对照 经典 学习 /map/obstacles /planner/local_goal /planner/trajectory_cmd 世界 · WORLD drone_map 种子点云 map_adapter 桥接 · 元数据 被控对象 · PLANT drone_controller 级联 PID · 混控器 drone_dynamics 500Hz 积分 · 里程计 · IMU /drone/motor_rpm_cmd /drone/odom · 状态反馈

图 1 · 系统架构:数据从任务目标流向电机指令,状态经 /drone/odom 反馈回规划器。

One Contract · 话题契约

同一个契约,公平对比。

所有规划器读写同一组 topic,从目标到轨迹、再到电机指令,接口完全一致。公平,从接口开始。

/drone/goal任务目标 · PoseStamped
/map/obstacles障碍云 · PointCloud2
/planner/local_goal局部目标 · PoseStamped
/planner/trajectory_cmd轨迹指令 · p v a yaw
/drone/motor_rpm_cmd电机指令 · RPM
/drone/odom状态反馈 · Odometry

坐标系 map (ENU) → base_link。目标由 RViz 2D Goal Pose 下达;黄色为规划轨迹,蓝色为实飞轨迹。

Path A–H · 规划器

八条路径,一个平台。

经典、优化、学习三类方法同场竞技。强弱基线进入正式对比矩阵,其余归入模式与谱系对照。

A

Dyn-A*

homemade · weak

Dyn-A* + B 样条,占据栅格自动适配地图尺寸与膨胀半径。

经典 · 弱基线
B

EGO-Planner

ego · strong

基于梯度的 B 样条重绑定,本地感知裁剪同一张全局地图。

优化 · 强基线
C

GCOPTER

gcopter · strong

MINCO 走廊优化,直接发布契约轨迹,无需额外被控对象。

优化 · 强基线
D

FUEL-style

fuel_explore · mode

前沿探索任务模式:雾感知 + 前沿 FSM,EGO 负责轨迹执行。

模式 · 非独立规划器
E

MIGHTY

mighty · strong

HGP 引导 + Hermite-LBFGS,经桥接节点接入统一被控对象。

优化 · 强基线
F

Fast-Planner

fast_planner · optional

kino_replan 谱系基准,独立对照,不进入正式强弱矩阵。

对照 · 谱系基准
G

VFH+

vfh · weak

极坐标直方图反应式避障,可选 PPO 后端作为兼容别名。

经典 · 弱基线
H

DrQ-SAC

sac · strong

极坐标占据图像输入,学习策略滚动 Bézier 路径,VFH 兜底。

学习 · 强基线
阅读对比报告 ↗

强弱分类定义见 PLANNERS.md: canonical_comparison_ids = { homemade, ego, gcopter, mighty, vfh, sac }

Procedural Maps · 地图

世界,由种子生成。

没有 PCD 场景文件 —— 全部为过程化点云。同一颗种子,复现同一片森林、迷宫与走廊。

森林

official_forest · 26×20×3

圆柱与偏航环随机分布,起点置于云外,东西走廊贯穿。

迷宫

official_maze2d · 20×20

递归分割墙,路宽 1.2m,比上游更宽,适配膨胀半径。

立柱

official_posts · 20×20×4

12 根空心矩形柱,稀疏分布,留出可穿越的间隙。

窄廊

narrow_corridor · S-bend

S 形弯道,三扇 1.2–1.8m 交错门,侧翼散布干扰物。

难度预设 简单 · simple 中等 · medium 复杂 · complex 极限 · extreme

另有 Perlin 体素、3D 迷宫、密林与致密非对称变体;每张地图随 /map/metadata 发布难度与种子。

Demo · 演示

眼见为实。

单机在随机森林中回环飞行,多机编队同屏协同 —— 全部来自仓库的真实录制。

单机在随机森林中回环飞行
单机 · 森林回环 docs/media/forest.gif
多机编队演示
多机 · 编队 docs/media/swarm-or-formation.gif

Acceptance · 验收

六个一键场景,一次通过。从悬停到窄道穿越,同一套脚本,自动验收。

01
悬停 Hover
02
单目标 Single Goal
03
多航点 Multi-waypoint
04
静态避障 Static Avoidance
05
窄道穿越 Narrow Passage
06
稳定性 Stability Demo
python3 scripts/run_acceptance.py 正式报告 · report/acceptance_report.md
场景四:静态避障 RViz 截图
场景 04 · 静态避障
场景五:窄道穿越 RViz 截图
场景 05 · 窄道穿越

Mission Console · 快速开始

从终端,到驾驶舱。

浏览器控制台,地图与规划器即点即换,单机与多机编队一屏掌控。

  • ✓浏览器控制台 · http://127.0.0.1:8765/
  • ✓地图与规划器切换,Start / Stop 即点即用
  • ✓单机任务与多机编队(EGO-Swarm 内核)
  • ✓Ubuntu 22.04 + ROS 2 Humble,MIT 开源
任务控制台界面

Ubuntu 22.04 · ROS 2 Humble · colcon 构建。启动控制台:ros2 run drone_bringup dashboard

STEP 1

启动仿真栈

ros2 launch drone_bringup planner_sim.launch.py planner:=ego map:=official_forest

STEP 2

打开控制台

ros2 run drone_bringup dashboard → http://127.0.0.1:8765/

STEP 3

选规划器,点 Start

地图与规划器即点即换,实时里程计与路径同屏。

启动并打开控制台 控制台随栈本机运行(127.0.0.1:8765)— 在线访问此页时请先在本地启动

为飞行而生。

Anona · Modular Quadrotor Autonomy Workbench
本页面依据仓库公开文档生成 · 演示视频见 Bilibili