Aerial Autonomy Stack
在仿真与真实无人机上开发、测试并部署多机感知自主系统。
按维度查看评分与理由
架构图清楚标示容器、ROS2 主题、UDP/TCP、MAVLink、传感器与双子网的数据流,因此数据流透明度充分。CI 权限在部分作业中按 contents/packages 收窄,但运行栈仍需要 Docker、网络、GPU、飞控和 sudo 安装操作,未展示系统性的最小权限模型。部分飞行动作可取消,并建议 QGroundControl 监督,但起飞、降落、参数修改和清理命令会直接生效,缺少一致的高风险操作确认门槛。README 明示 Land/Orbit 会覆盖 ArduPilot 参数、开发挂载和容器清理等外部效果,但恢复原参数、飞行状态或主机配置的回滚方案很薄弱。未提供密钥、日志隐私、摄像头数据或敏感遥测处理政策。依赖有 CI 安装检查,但使用 latest 镜像、可变外部依赖和按标签引用的 Actions,未见锁定、校验、SBOM 或漏洞扫描。项目、论文作者及第三方世界/组件多有归属说明,但 LICENSE 的“The Drone Mafia”、仓库账户和论文作者之间的维护主体关系并不完全明确。
README、环境检查脚本、CI 安装测试和两种飞控集成测试大体相互一致,也为 Ubuntu、NVIDIA 驱动、Docker 和容器工具包提供明确诊断。扣分在于许多能力仅由 README 陈述,CI 展示的集成范围仅覆盖单四旋翼、无摄像头/雷达的两条路径;大量外部镜像、硬件和网络依赖仍可能漂移。错误信息对环境变量和主机要求较具体,性能脚本也有重试与严重失败提示,但没有证据表明整个多容器飞行链路采用统一、可操作的错误分类与恢复指导。
材料明确覆盖开发、仿真、Jetson 实机部署、HITL、Gymnasium、PX4/ArduPilot、多机型和多传感器场景,并列出大量精确环境变量、枚举值及命令入口。Ubuntu 24.04、WSL、amd64/arm64、Jetson Orin 和具体硬件要求描述充分。能力边界有若干具体说明,例如风效应不适用于相关 VTOL 传感器、SetSpeed 的限制以及 ArduPilot 检查延迟;但对真实飞行安全包线、失联行为、支持规模上限和实验性模块成熟度仍缺少统一边界说明。
README 的安装、仿真、部署、HITL、RL、架构和目录结构组织清晰,示例广泛且可直接使用;安装步骤还给出预计耗时、平台要求和预检脚本。名称与参数整体一致,但没有正式的稳定 API/配置兼容性承诺。已记录若干限制,却缺少集中式已知问题或 FAQ。MIT 许可证文本完整。没有提供版本发布策略或 changelog,因此版本记录记为缺失;维护责任仅能从账户、版权名和论文作者间接推断,未给出明确支持渠道、负责人或更新政策。
输出面向实际操作,提供从构建、启动、飞行动作、日志分析到 Gymnasium 使用的完整命令,且集成 PX4、ArduPilot、ROS2、感知、仿真和 Jetson 部署形成明显的组合价值。硬件规格、首次构建时间及一次明确环境下的性能数据有助于评估成本收益。扣分在于性能结果每种场景仅一次重复,未给出硬件采购之外的总体维护成本、资源上限、实机风险成本或与替代方案的系统比较。
README 将许多能力指向具体脚本、源文件、配置、工作流和架构节点,CI 与环境检查脚本对安装及部分集成主张形成内部交叉印证,性能记录也注明提交、日期和硬件环境。扣分在于“flight-proven”“simplest/fastest”等主张缺少所给材料内的可核查依据,论文引用尚不能在本次材料中独立核验,性能数据是源码注释中的自述且仅单次运行;事实、营销性判断和推测没有始终明确分层。
- 这是仅基于所给文件的静态审查;未执行构建、仿真、HITL 或真实飞行,也未独立验证论文、CI 结果或性能数据。
- 实机命令能够起飞、降落并覆盖 ArduPilot 参数;在隔离仿真中验证任务、故障保护、失联行为和参数恢复流程后,才应连接真实飞行器。
- 不要直接依赖 latest 容器或可变依赖进行安全关键部署;应固定镜像摘要和依赖版本,并补充 SBOM、漏洞扫描及来源校验。
- 摄像头、LiDAR、遥测、飞行日志和网络桥接可能包含敏感或受监管数据,但所给材料没有数据保留、访问控制或隐私说明。
这个 Agent 能做什么,适合哪些场景?
Aerial Autonomy Stack(AAS)是一套经过实际飞行验证的开放式无人机自主开发框架,覆盖多机开发、快于实时的仿真和 Jetson 实机部署。它把 PX4 或 ArduPilot、ROS2 Jazzy、Gazebo Sim、YOLO、KISS-ICP LiDAR 里程计以及地面站组件组织进 Docker 容器。系统支持四旋翼、复合翼 VTOL 和倾转旋翼机,并可通过 ROS2 action、行为树任务或地面编队控制器执行飞行。仿真能够运行多个实例、调节实时倍率、生成相机与三维 LiDAR 数据,并通过 Gymnasium 环境逐步推进。部署边界主要是搭载 NVIDIA Jetson Orin 的机载计算机、Pixhawk 飞控和运行地面容器的电脑;它不是面向 ChatGPT、Codex 或模型 API 的对话式智能体。
端到端流程从 sim_run.sh 启动:simulation 容器运行 Gazebo 世界以及一个或多个 PX4/ArduPilot SITL 实例,将相机、LiDAR 和 MAVLink/UDP 数据送往 aircraft 容器。机载侧的 yolo_py 通过 GStreamer 获取视频并发布 YOLO 检测框,kiss_icp 处理 LiDAR 里程计;mission、offboard_control、autopilot_interface 和 drone_traffic_client 将任务或控制参考转换为 PX4 Offboard 或 ArduPilot Guided 操作。ground 容器中的 drone_traffic_controller 发布编队命令,ground_system 发布轨迹,Zenoh 在地面与各无人机的 ROS2 域之间桥接状态、轨迹和控制主题。用户可调用 Takeoff、Land、Orbit、Offboard action,以及 reposition、speed 和云台控制接口;日志可交给 flight_review、MAVExplorer 或 PlotJuggler 分析。aas-gym 还把仿真封装成可逐步推进和向量化运行的 Gymnasium 环境,而 deploy_run.sh 可在 Jetson Orin 上启动真实飞机的 aircraft 容器。
- 无人机算法团队需要在同一套 ROS2 接口下比较 PX4 与 ArduPilot,并验证四旋翼、VTOL 或倾转旋翼机的任务逻辑。
- 感知研发人员需要在多种三维 Gazebo 场景中联合测试 YOLO 相机检测和 KISS-ICP LiDAR 里程计。
- 多机研究人员需要运行同步编队、单机行为树任务或多个并行仿真实例。
- 强化学习研究人员需要通过
aas-gym手动步进、加速或向量化执行无人机仿真。 - 机载系统工程师需要先用多 Jetson HITL 检查计算负载与机间网络,再部署到 Jetson Orin、Pixhawk 和真实飞机。
- 飞行测试人员需要统一采集 ROS bag、PX4
.ulg或 ArduPilot.bin日志并使用配套分析工具排查问题。
这个 Agent 有哪些优点和局限?
- 同一框架原生覆盖 PX4 与 ArduPilot,并为二者提供统一的 ROS2 高层 action 接口。
- 同时覆盖 SITL、快于实时仿真、多实例仿真、Gymnasium 和多 Jetson HITL,而非只提供单机 Gazebo 模型。
- 相机、YOLO、三维 LiDAR、KISS-ICP、风效应和动态波浪等感知与环境组件已经纳入容器化流程。
- 同一 aircraft 镜像面向 amd64 仿真和 arm64/Jetson 部署,有助于缩小仿真与实机软件差异。
- 提供编队控制、行为树任务和直接 ROS2 action 三种自主飞行入口。
- 核心构建依赖 NVIDIA 驱动、CUDA、cuDNN 和 NVIDIA Container Toolkit,实机路径进一步依赖 JetPack、DeepStream 与 Jetson Orin。
- 首次仿真镜像构建约需 45 分钟,Jetson arm64 构建约需 50 分钟,首次实机运行还要约 3 分钟生成 TensorRT 缓存。
- 官方记录的开发环境集中在 Ubuntu 24.04;Windows 11 只能通过 WSL 使用,没有原生 Windows 路径。
- VTOL 和倾转旋翼机的模拟空速传感器不感知 Gazebo 风,因此风效应测试被明确建议只用于四旋翼。
- ArduPilot 当前列出的版本为 4.6.3,升级到 4.7.1 仍标记为待办,采用新版 ArduPilot 可能需要迁移工作。
- 所示实机验证硬件集中在 Holybro Jetson Baseboard、Pixhawk 6X、Orin NX 16GB、X650、IMX219 和 Livox Mid-360S;其他硬件组合的验证证据未给出。
如何安装或部署这个 Agent?
已记录的主机环境是 Ubuntu 24.04、NVIDIA 驱动、Docker 和 NVIDIA Container Toolkit;示例开发机使用 RTX 3060。安装与首次构建:
sudo apt update && sudo apt install -y git xterm xfonts-base wget unzip
git clone https://github.com/JacopoPan/aerial-autonomy-stack.git
cd aerial-autonomy-stack/tools_and_docs/
./tests/check_requirements.sh
./sim_build.sh首次构建在网络良好时约需 45 分钟。仓库也提供每周从 main 重建的 GHCR 镜像,可分别拉取 aircraft-image、ground-image 和 simulation-image。未记录任何 API 密钥或付费凭据要求。
如何使用这个 Agent?
启动一个 PX4/ArduPilot 可选、含一架四旋翼和一架 VTOL 的仿真:
cd aerial-autonomy-stack/tools_and_docs/
NUM_QUADS=1 NUM_VTOLS=1 WORLD=swiss_town RTF=3 PLOT=true ./sim_run.sh在 Ground 终端启动同步编队:
ros2 run drone_traffic_controller dtc_controller --ros-args -p use_sim_time:=true在飞机终端执行行为树任务:
ros2 run mission mission --conops yalla.yaml --ros-args -r __ns:=/Drone$DRONE_ID -p use_sim_time:=true也可向 /Drone${DRONE_ID}/takeoff_action、land_action、orbit_action 或 offboard_action 发送 ROS2 goal。Gymnasium 示例在安装 aas-gym 后运行:
python3 gym_run.py --mode step实机部署时,在 Jetson 上执行 ./deploy_build.sh,随后可运行:
DRONE_ID=1 CAMERA=true LIDAR=false AIR_SUBNET=10.223 HEADLESS=true ./deploy_run.sh飞机类型、飞控、传感器和 ROS bag 录制通过环境变量配置。
这个 Agent 与同类方案有什么区别?
框架将 PX4 Offboard 与 ArduPilot Guided 作为两条可选飞控路径:PX4 可使用 CTBR/VehicleRatesSetpoint 等低层参考,ArduPilot 示例使用速度或加速度设定值。两者共享 ROS2 高层 action,但具体控制器名称、参数行为和限制并不完全相同;例如文档指出 ArduPilot VTOL 的速度变更命令无效。通信层也存在 XRCE-DDS 与 MAVROS 两种飞控接口路径。
常见问题
运行需要云服务、模型 API 或密钥吗?
可以不使用 NVIDIA GPU 吗?
它能直接控制真实无人机吗?
能否只用于仿真或强化学习?
sim_run.sh 支持 SITL、多实例和实时倍率控制,aas-gym 提供 step、speedup 与 vectorenv-speedup 示例,不要求先部署真实飞机。