本文档描述 AIRDC 当前代码库中的实际运行结构,重点回答三个问题:
- 入口在哪里。
- 采集流程由哪些核心模块组成。
- 开发者通常应该到哪个目录扩展功能。
AIRDC 是一个“配置驱动、状态机协调、模块化扩展”的机器人数据采集框架。默认入口 airdc 读取配置后,会组装 Demonstrator、Sampler、Visualizer、Manager 和 FSM,并由 manager 在主循环中驱动整个采集流程。
| 路径 | 角色 |
|---|---|
airdc/ |
核心运行时框架,包含入口、FSM、manager、通用 demonstrator/sampler/visualizer 抽象与实现。 |
airbot_ie/ |
AIRBOT 相关的集成层,提供默认配置、机器人适配、示教器和 sampler 组合。 |
scripts/ |
运维、检查、性能分析和工具脚本。 |
tests/ |
单元测试、契约测试、硬件相关实验脚本。 |
docs/ |
用户文档、架构文档、runbook、规划文档。 |
install/ |
环境安装、更新、外部依赖同步脚本。 |
当前主流程可以概括为:
airdc CLI
-> main_argparse(...)(DataCollectionArgs)
-> DataCollectionArgs / Hydra 配置实例化
-> main_loop()
-> 创建 1..N 个 DemonstrateFSM
-> 注入 managers
-> managers.update() 驱动 FSM 动作
-> DemonstrateInterface 协调 demonstrator / sampler / visualizer
-> sampler.save() 将 episode 落盘
airdc/main.py- 定义
main()、main_desktop()与main_loop()。 - 调用
main_argparse(PACKAGE_NAME)(DataCollectionArgs)将 CLI 参数和配置文件组装为运行时对象。
- 定义
airdc/config.pyDataCollectionArgs是顶层参数模型。- 除了数据集、演示模块配置外,还定义了
fsm、managers、update_rate、batch_size等主循环参数。
airdc/state_machine/fsm.pyDemonstrateFSM将状态机配置与DemonstrateInterface绑定。- 每个动作最终都映射到 interface 上的同名方法,如
configure、activate、sample、update、save、remove、finish。
airdc/demonstrate/interface.py- 负责真正的采集动作编排。
configure()会配置 sampler 和 visualizer,并把 demonstrator 信息与系统信息传给 sampler。capture()负责抓取观测并驱动可视化。update()会继续采样并把数据提交给 sampler。save()、remove()、finish()管理 episode 生命周期。
airdc/managers/- manager 不直接处理硬件数据,而是负责“触发什么动作”。
SelfManager会在 FSM 进入不同状态时自动触发configure、activate、update、save、finish。- 其他 manager 如
keyboard、tk、joy、vrcontrol、auto_atom负责把键盘、GUI、手柄或自动化策略转换为 FSM action。
airdc/common/demonstrators/- 负责和机器人、相机、仿真环境等数据源交互,产生时序观测。
airdc/common/samplers/- 负责缓存、编码、格式转换与持久化。
- 当前重要实现包括:
- FlatBuffers MCAP sampler
- ROS structured MCAP sampler
- LeRobot dataset sampler
- video-only sampler
airdc/common/visualizers/- 当前包含 OpenCV、Tk、Matplotlib、Web(FastAPI) 等可视化实现。
airbot_ie/configs/- 保存默认配置组合,是当前最重要的“产品化入口”。
config.yaml是真机采集默认入口。aao_config.yaml对接auto-atomic-operation仿真/自动采集。
airbot_ie/robots/- 保存 AIRBOT 机器人与其他设备的适配逻辑。
airbot_ie/samplers/mcap_sampler.py- 在通用 MCAP sampler 基础上增加上传能力等 AIRBOT 侧扩展。
当前默认配置入口为 airbot_ie/configs/config.yaml:
defaults:
- basis
- managers: keyboard
- demonstrators: setup
- samplers: mcap
- override hydra/job_logging: custom这意味着 AIRDC 当前采用“基础配置 + manager + demonstrator + sampler”分层组合的方式装配系统。开发者大多数时候不需要改主程序,只需要:
- 新增一个模块实现。
- 为该模块写一个 Hydra 配置。
- 在顶层配置里替换对应 defaults。
- 默认入口:
airbot_ie/configs/config.yaml - 典型组合:AIRBOT demonstrator + keyboard manager + MCAP sampler + OpenCV visualizer
- 默认入口:
airbot_ie/configs/aao_config.yaml - 典型组合:
auto_atommanager +auto-atomic-operation环境 + ROS structured MCAP sampler
- 当
batch_size > 0时,main_loop()会复制配置并创建多个 FSM。 - 数据目录会自动变为
<directory>_0、<directory>_1等后缀,避免不同实例互相覆盖。 - 除第一个 FSM 外,后续 FSM 默认关闭 visualizer,减少重复显示开销。
- 真机能力强依赖 AIRBOT SDK、相机驱动和 Linux 运行环境。
auto_atom模式依赖外部auto-atomic-operation工程。- 仓库当前已有用户文档较多,但此前缺少单独的架构/ADR/规划层,因此维护时需要特别注意“当前状态”和“未来规划”的分离。