Files
RCS-3000/README.md
CaiXiang 7b6c956b6a initial
2025-11-27 15:20:21 +08:00

250 lines
6.1 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自动导引车路径跟踪与控制系统提供路径规划、轨迹跟踪、Curtis 电机控制和 Qt 可视化界面。
## 项目概述
本项目实现了一套完整的 AGV 控制系统,包括:
- **路径规划**:支持圆形、直线和自定义路径
- **轨迹跟踪**Pure Pursuit 和 Stanley 算法
- **硬件控制**Curtis 电机控制器 CAN 通信
- **可视化**Qt6 图形界面和控制台界面
## 主要功能
### 1. 路径生成
- **预定义路径**:圆形路径、直线路径
- **自定义路径**:通过 CSV 文件导入任意路径点
- **平滑路径**:使用三次样条插值生成平滑轨迹
### 2. 路径跟踪算法
- **Pure Pursuit**:前视距离控制,适合平滑路径
- **Stanley**:横向误差与航向误差结合,适合精确跟踪
### 3. Curtis 电机控制
- **CAN 通信**:支持 USB-CAN 设备USBCAN-2A/2C、CANalyst-II
- **速度控制**:前进/后退速度控制
- **转向控制**:左转/右转控制
- **安全保护**:紧急停止和安全限制
### 4. 可视化界面
- **Qt6 GUI**:实时路径和轨迹可视化
- **参数调节**:动态调整控制参数
- **数据分析**:跟踪误差和控制输出显示
## 项目结构
```
agv-control-slam/
├── include/ # 头文件
│ ├── agv_model.h # AGV 运动模型
│ ├── path_curve.h # 路径曲线
│ ├── path_tracker.h # 路径跟踪器
│ ├── control_generator.h # 控制生成器
│ └── can/ # CAN 控制相关
│ ├── CANController.h
│ └── CurtisMotorController.h
├── src/ # 源文件
│ └── control/ # 控制算法实现
│ ├── agv_model.cpp
│ ├── path_curve.cpp
│ ├── path_curve_custom.cpp
│ ├── path_tracker.cpp
│ ├── control_generator.cpp
│ └── can/ # CAN 通信实现
├── examples/ # 示例程序
│ ├── demo.cpp # 基本演示
│ ├── gui_demo.cpp # 控制台 GUI
│ ├── qt_gui_demo.cpp # Qt 图形界面
│ ├── curtis_demo.cpp # Curtis 键盘控制
│ ├── curtis_path_tracking_demo.cpp # Curtis 路径跟踪
│ ├── generate_data.cpp # 数据生成工具
│ └── generate_smooth_path.cpp # 平滑路径生成
├── lib/ # 第三方库
│ └── ControlCAN.lib/dll # USB-CAN 接口库
├── scripts/ # 工具脚本
├── build.sh # Linux/MSYS2 构建脚本
└── deploy_windows.sh # Windows 部署脚本
```
## 快速开始
### 环境要求
- **编译器**GCC 7.0+ 或 MSVC 2017+ 或 MinGW-w64
- **CMake**3.10 或更高版本
- **Qt6**6.0 或更高版本(用于 GUI
- **Python 3**:用于可视化工具(可选)
### Windows 编译(推荐)
使用 MSYS2/MinGW-w64 环境:
```bash
# 1. 安装依赖
pacman -S mingw-w64-x86_64-cmake mingw-w64-x86_64-gcc mingw-w64-x86_64-qt6
# 2. 构建项目
./build.sh
# 3. 运行示例
cd build
./agv_demo.exe # 基本演示
./agv_gui.exe # 控制台 GUI
./agv_qt_gui.exe # Qt 图形界面
```
### 部署可执行程序
```bash
# 打包 Qt 应用及其依赖
./deploy_windows.sh
# 可执行文件将在 release_package/ 目录中
cd release_package
./agv_qt_gui.exe
```
### Linux 编译
```bash
# 1. 安装依赖
sudo apt-get install cmake g++ qt6-base-dev
# 2. 构建项目
mkdir build && cd build
cmake ..
make
# 3. 运行示例
./agv_demo
./agv_qt_gui
```
## 使用示例
### 1. 基本路径跟踪
```cpp
#include "path_tracker.h"
// 创建 AGV 模型
AGVModel model(2.0, 1.0); // 轴距 2.0m, 最大转向角 1.0 rad
// 创建路径跟踪器
PathTracker tracker(model);
// 生成圆形路径
PathCurve path = PathCurve::generateCircularPath(5.0, 100);
tracker.setReferencePath(path);
// 设置初始状态
AGVModel::State initial_state(0, -5, M_PI/2, 0);
tracker.setInitialState(initial_state);
// 生成控制序列
tracker.generateControlSequence("pure_pursuit", 0.1, 10.0, 1.0);
// 导出结果
tracker.exportToCSV("output.csv");
```
### 2. 自定义路径跟踪
```cpp
// 从 CSV 文件加载路径
PathCurve custom_path = PathCurve::loadFromCSV("custom_path.csv");
tracker.setReferencePath(custom_path);
// 使用 Stanley 算法
tracker.generateControlSequence("stanley", 0.1, 10.0, 1.0);
```
### 3. Curtis 电机控制
```cpp
#include "can/CurtisMotorController.h"
// 初始化控制器
CurtisMotorController controller;
controller.initialize(0, 0, 0, 500000); // CAN0, 500kbps
// 控制车辆
controller.forward(30); // 前进,速度 30%
controller.turnLeft(50); // 左转,转向 50%
controller.brake(); // 刹车
controller.emergencyStop(); // 紧急停止
```
## 核心算法
### Pure Pursuit 算法
- **前视距离**:根据速度动态调整
- **转向计算**:基于前视点的几何关系
- **适用场景**:平滑路径跟踪
### Stanley 算法
- **横向误差**:垂直于路径的偏差
- **航向误差**:车辆朝向与路径切线的偏差
- **适用场景**:精确路径跟踪和低速场景
## 可视化工具
### Qt GUI 界面
- 实时路径和轨迹显示
- 参数动态调整
- CSV 文件导入/导出
- 动画播放控制
### Python 可视化
```bash
python visualize.py output.csv
```
## CAN 通信配置
### 硬件支持
- USBCAN-2A/2C
- CANalyst-II
- MiniPCIe-CAN
### 库文件配置
`ControlCAN.dll``ControlCAN.lib` 放置在 `lib/` 目录。详见 `lib/README.md`
## 开发文档
详细的开发文档和 API 参考,请查看 `docs/` 目录:
- API 参考手册
- 开发指南
- 算法说明
## 更新日志
### 2025-11-27
- 项目文档重新整理
- 清理过时文档
- 更新项目结构说明
### 2025-11-27早期
- Qt6 升级完成
- 部署脚本优化
- 构建系统改进
## 许可证
本项目采用 MIT 许可证。
## 贡献
欢迎提交 Issue 和 Pull Request。
## 作者
AGV 控制系统开发团队
---
**最后更新**: 2025-11-27
**项目状态**: 活跃开发中