# AGV 路径跟踪项目文件结构

## 📁 目录结构

```
agv_path_tracking/
├── 📄 README.md                    # 项目主文档
├── 📄 CMakeLists.txt               # CMake 构建配置
├── 📄 build_can.sh/bat             # CAN 模块编译脚本
├── 📄 build.sh                     # 主程序编译脚本
│
├── 📂 src/                         # 源代码目录
│   ├── 📂 can/                    # CAN 通信模块
│   │   ├── CANController.h        # CAN 控制器头文件
│   │   ├── CANController.cpp      # CAN 控制器实现
│   │   ├── can_example.cpp        # CAN 基础示例
│   │   └── can_complete_example.cpp  # CAN 完整示例
│   │
│   ├── 📂 tests/                  # 测试代码
│   │   └── test_csv_load.cpp      # CSV 加载测试
│   │
│   ├── agv_model.cpp              # AGV 模型
│   ├── control_generator.cpp      # 控制生成器
│   ├── path_curve.cpp             # 路径曲线
│   ├── path_curve_custom.cpp      # 自定义路径曲线
│   └── path_tracker.cpp           # 路径跟踪器
│
├── 📂 include/                     # 头文件目录
│   └── 📂 can/                    # CAN 相关头文件
│       └── CANController.h        # CAN 控制器头文件
│
├── 📂 lib/                         # 库文件目录
│   ├── ControlCAN.h               # CAN 设备 API 头文件
│   ├── ControlCAN.dll             # CAN 驱动动态库
│   ├── ControlCAN.lib             # CAN 导入库
│   └── README.md                  # 库说明文档
│
├── 📂 docs/                        # 文档目录
│   ├── 📂 can/                    # CAN 相关文档
│   │   ├── CAN_README.md          # CAN 使用说明
│   │   └── CAN_API_Reference.cpp  # CAN API 快速参考
│   │
│   ├── 📂 guides/                 # 使用指南
│   │   ├── START_HERE.txt         # 快速开始
│   │   ├── QUICK_START.md         # 快速入门
│   │   ├── QUICKSTART.md          # 快速开始指南
│   │   ├── BUILD_INSTRUCTIONS.md  # 编译说明
│   │   ├── CUSTOM_PATH_README.md  # 自定义路径说明
│   │   ├── SMOOTH_PATH_GENERATOR_README.md  # 平滑路径生成器说明
│   │   └── TRACKING_TEST_GUIDE.md # 跟踪测试指南
│   │
│   ├── 📂 fixes/                  # 修复记录
│   │   ├── ALL_FIXES_SUMMARY.md   # 所有修复总结
│   │   ├── BUG_FIXES_SUMMARY.md   # Bug 修复总结
│   │   ├── CSV_LOAD_FIX.md        # CSV 加载修复
│   │   ├── FIX_SUMMARY.md         # 修复总结
│   │   ├── README_FIXES.md        # 修复说明
│   │   ├── TRACKING_ERROR_ANALYSIS.md  # 跟踪误差分析
│   │   ├── TRACKING_FIX_COMPLETE.md    # 跟踪修复完成
│   │   ├── TRAJECTORY_COMPLETE.md      # 轨迹完成
│   │   ├── TRAJECTORY_FIX.md           # 轨迹修复
│   │   └── FINAL_REPORT.md             # 最终报告
│   │
│   ├── 📂 custom_path/            # 自定义路径文档
│   │   ├── README.md              # 自定义路径说明
│   │   ├── CUSTOM_PATH_GUIDE.md   # 自定义路径指南
│   │   ├── QT_GUI_CUSTOM_PATH_GUIDE.md  # QT GUI 指南
│   │   ├── QUICKSTART_CUSTOM_PATH.md    # 快速开始
│   │   ├── SMOOTH_PATH_QUICKSTART.md    # 平滑路径快速开始
│   │   └── PROJECT_STRUCTURE.md   # 项目结构
│   │
│   └── 📂 protocol/               # 协议文档
│       └── CAN_Protocol.pdf       # CAN 协议规范
│
├── 📂 build/                       # 构建输出目录
│   ├── can_demo.exe               # CAN 完整示例程序
│   ├── can_simple.exe             # CAN 简单示例程序
│   ├── ControlCAN.dll             # CAN 驱动库（运行时）
│   └── ...                        # 其他构建文件
│
└── 📂 examples/                    # 示例目录（如果有）

```

## 📋 主要模块说明

### 1. CAN 通信模块 (`src/can/`)
- **CANController.h/cpp** - CAN 控制器封装类，提供易用的 CAN 设备操作接口
- **can_example.cpp** - 基础 CAN 通信示例
- **can_complete_example.cpp** - 完整的 CAN 通信示例，包含 AGV 控制场景

### 2. 路径跟踪模块 (`src/`)
- **agv_model.cpp** - AGV 运动学模型
- **path_curve.cpp** - 路径曲线定义和处理
- **path_tracker.cpp** - 路径跟踪算法实现
- **control_generator.cpp** - 控制量生成器

### 3. 文档模块 (`docs/`)
- **can/** - CAN 通信相关文档和 API 参考
- **guides/** - 各种使用指南和快速开始文档
- **fixes/** - Bug 修复记录和分析报告
- **custom_path/** - 自定义路径功能文档
- **protocol/** - 通信协议规范

### 4. 库文件 (`lib/`)
- **ControlCAN.h/dll/lib** - USBCAN 设备驱动库

## 🚀 快速开始

### 编译项目

#### 编译 CAN 模块
```bash
# Linux/MSYS2
./build_can.sh

# Windows
build_can.bat
```

#### 编译主程序
```bash
./build.sh
```

### 运行示例

#### CAN 通信示例
```bash
cd build
./can_demo.exe
```

## 📖 文档导航

### 新手入门
1. **START_HERE.txt** - 从这里开始 (`docs/guides/START_HERE.txt`)
2. **QUICK_START.md** - 快速入门指南 (`docs/guides/QUICK_START.md`)
3. **BUILD_INSTRUCTIONS.md** - 编译说明 (`docs/guides/BUILD_INSTRUCTIONS.md`)

### CAN 通信
1. **CAN_README.md** - CAN 使用说明 (`docs/can/CAN_README.md`)
2. **CAN_API_Reference.cpp** - API 快速参考 (`docs/can/CAN_API_Reference.cpp`)

### 自定义路径
1. **CUSTOM_PATH_README.md** - 自定义路径说明 (`docs/guides/CUSTOM_PATH_README.md`)
2. **custom_path/README.md** - 详细文档 (`docs/custom_path/README.md`)

### 修复记录
1. **ALL_FIXES_SUMMARY.md** - 所有修复总结 (`docs/fixes/ALL_FIXES_SUMMARY.md`)
2. **FINAL_REPORT.md** - 最终报告 (`docs/fixes/FINAL_REPORT.md`)

## 🔧 开发指南

### 添加新的 CAN 功能
1. 在 `src/can/` 目录下创建源文件
2. 如需要头文件，同时在 `include/can/` 创建
3. 更新 `build_can.sh/bat` 编译脚本
4. 在 `docs/can/` 添加相关文档

### 添加新的文档
- 使用指南 → `docs/guides/`
- 修复记录 → `docs/fixes/`
- 模块文档 → `docs/模块名/`

## 📝 文件命名规范

### 源代码文件
- C++ 源文件：小写字母 + 下划线，如 `path_tracker.cpp`
- C++ 头文件：小写字母 + 下划线，如 `path_tracker.h`
- 类名：驼峰命名，如 `CANController`

### 文档文件
- Markdown 文档：大写字母 + 下划线，如 `QUICK_START.md`
- 说明文件：`README.md`

## ⚙️ 构建系统

- **CMakeLists.txt** - CMake 构建配置
- **build.sh** - Linux/MSYS2 构建脚本
- **build_can.sh/bat** - CAN 模块构建脚本

## 📦 依赖库

- ControlCAN - USBCAN 设备驱动库（位于 `lib/`）
- 标准 C++11 或更高版本

## 🎯 下一步

1. 阅读 `docs/guides/START_HERE.txt` 快速开始
2. 查看 `docs/can/CAN_README.md` 了解 CAN 通信
3. 运行示例程序了解项目功能
4. 查看 `docs/fixes/` 了解已修复的问题

---

**注意**：本文档描述了重新组织后的项目结构。所有文档和代码文件都已按模块分类整理。
