Files
AutoCalib-Workshop/agv_calib_brain/README.md
T

135 lines
7.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AGV 自动标定车间 - 总述
本项目是 AGV(自动导引车)自动化标定车间的软件系统,用于在车间环境中对 AGV 进行底盘参数标定、运控参数标定、传感器内参/外参标定,以及手眼标定。
## 项目概述
### 核心能力
| 标定类型 | 说明 | 状态 |
|---------|------|------|
| 外部真值接入 | 通过外部定位系统(如 OptiTrack、激光雷达定位)获取车辆位姿真值 | ✅ 已验证 |
| 底盘参数标定 | 标定轮距、轴距、转向角等底盘几何参数 | ✅ 已验证(模板) |
| 运控参数标定 | 标定横向/纵向控制器的 PID/MPC/LQR 参数 | ✅ 已验证(模板) |
| 传感器内参标定 | 相机(前视/下视)、IMU 的内参标定 | ✅ 已验证(模板) |
| 传感器外参标定 | 相机、雷达等传感器相对于车体坐标系的外参标定 | 🚧 待完善 |
| 手眼标定 | 机械臂与相机之间的变换关系标定 | 🚧 待开发 |
### 技术架构
```
┌─────────────────────────────────────────────────────────────────┐
│ 车间工控机(Ubuntu) │
│ ┌─────────────────┐ ┌──────────────┐ ┌─────────────────────┐ │
│ │ workshop_ │ │ 底盘标定服务 │ │ 传感器标定服务 │ │
│ │ orchestrator_v2 │ │ chassis_ │ │ sensor_calibration_ │ │
│ │ (总控) │ │ calibration │ │ service │ │
│ └────────┬────────┘ └──────────────┘ └─────────────────────┘ │
│ │ │
│ ┌────────▼────────┐ ┌──────────────┐ ┌─────────────────────┐ │
│ │ vehicle_agent_ │ │ 运控标定服务 │ │ 外部位姿服务 │ │
│ │ gateway │ │ control_ │ │ external_ │ │
│ │ (WiFi6/TCP网关) │ │ calibration │ │ localization_ │ │
│ └─────────────────┘ └──────────────┘ └─────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
│ WiFi6/TCP
┌─────────────────────────────────────────────────────────────────┐
│ 车端电脑(Windows/Linux
│ ┌─────────────────┐ ┌──────────────┐ ┌─────────────────────┐ │
│ │ 车端 Agent │ │ 底盘控制器 │ │ 传感器驱动 │ │
│ │ (TCP<->CAN/PLC) │ │ (CAN/PLC) │ │ (相机/雷达/IMU) │ │
│ └─────────────────┘ └──────────────┘ └─────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
```
## 目录结构
```
agv_calib_brain/
├── src/
│ ├── core/ # 核心标定逻辑
│ │ ├── workshop_orchestrator/ # 车间总控编排器
│ │ ├── chassis_calibration_service/ # 底盘标定服务
│ │ ├── control_calibration_service/ # 运控标定服务
│ │ ├── sensor_calibration_service/ # 传感器标定服务
│ │ ├── external_localization_service/ # 外部位姿服务
│ │ └── vehicle_profile_manager/ # 车辆画像管理
│ │
│ ├── communication/ # 通信层
│ │ ├── win_ubuntu_bridge/ # 车间<->车端通信桥
│ │ └── interfaces/ # ROS2 接口定义
│ │
│ ├── simulation/ # 仿真验证
│ │ ├── isaac_workshop_sim/ # Isaac Sim 标定车间
│ │ ├── vehicle_agent_sim/ # 仿真车端 Agent
│ │ ├── vehicle_sensor_agent_sim/ # 仿真传感器 Agent
│ │ └── tools/ # 仿真工具脚本
│ │
│ ├── deployment/ # 部署配置
│ │ └── profiles/ # 仿真/部署配置文件
│ │
│ ├── site_deployment/ # 真实现场部署
│ │ └── (真实车辆 SDK、PLC/CAN 适配)
│ │
│ └── apps/ # 操作员工具
├── run_isaac_real_sim_test.sh # 一键启动 Isaac 仿真测试
├── stop_isaac_real_sim_stack.sh # 停止仿真栈
├── SIMULATION_GUIDE.md # 仿真环境启动指南
└── README.md # 本文件
```
## 快速开始
### 1. 编译
```bash
cd /home/nvidia/study/AutoCalib-Workshop/agv_calib_brain
colcon build
source install/setup.bash
```
### 2. 一键启动完整仿真
```bash
# 启动 Isaac + 车端 Agent + 车间总控 + 执行验收
./run_isaac_real_sim_test.sh --headless
```
### 3. 查看详细指南
- **仿真启动指南**: [SIMULATION_GUIDE.md](./SIMULATION_GUIDE.md) - 如何单独启动各组件
- **源码目录说明**: [src/README.md](./src/README.md) - 源码组织结构
## 主要验证场景
| 场景 | 启动方式 | 验证内容 |
|------|---------|---------|
| 快速闭环验证 | `launch_sim_stack.py --component vehicle-agent` + `minimal_workshop_demo.launch.py` | 车间总控能创建 session、生成阶段计划、调用车端接口 |
| Isaac topic 检查 | `run_isaac_real_sim_test.sh --headless`(前半段) | Isaac 能发布传感器和真值 topic |
| 完整 Isaac 仿真闭环 | `run_isaac_real_sim_test.sh --headless` | 场景、agent、桥接、总控一起运行 |
| 传感器转发链路 | `--component vehicle-agent,sensor-ingest` | 车端能订阅 Isaac topic,车间端能拉取数据 |
## 四条核心通信链路
| 链路 | 方向 | 功能 | 组件 |
|------|------|------|------|
| 外部真值链路 | 外部系统 → 车端 | 位姿、速度、时间戳 | `external-pose-bridge` |
| 底盘链路 | 车间 → 车端 | 下发标定动作、读取遥测 | `vehicle-agent-gateway` |
| 运控链路 | 车间 → 车端 | 下发控制任务、读取误差 | `vehicle-agent-gateway` |
| 传感器链路 | 车端 → 车间 | 相机、雷达、IMU 数据 | `sensor-ingest` |
## 开发状态
-**已完成**: 车间总控编排器、四类标定服务框架、车辆画像管理、Isaac 仿真环境、WiFi6/TCP 通信链路、端到端验收脚本
- 🚧 **进行中**: 传感器外参标定采样链路、真实算法参数收敛
-**待开发**: 手眼标定、真实现场部署验证
## 关键设计原则
1. **主控只编排流程** - `workshop_orchestrator_v2` 负责阶段调度,具体标定由独立 ROS2 包实现
2. **仿真与现场分离** - Isaac 代码只在 `simulation/`,真实车辆代码只在 `site_deployment/`
3. **统一通信协议** - 车间与车端通过 WiFi6/TCP 通信,协议由 `communication/` 定义
4. **车辆画像驱动** - 车辆能力、传感器配置通过 `vehicle_profile` 描述,支持多车型