This commit is contained in:
CaiXiang
2025-11-14 16:09:58 +08:00
commit af65c2425d
74 changed files with 14650 additions and 0 deletions

View File

@@ -0,0 +1,69 @@
# 编译说明
## 重要提示
在重新编译之前,请**先关闭正在运行的 `agv_qt_gui.exe` 程序**
检测到程序正在运行进程ID: 2996需要先关闭才能重新编译。
## 关闭程序的方法
### 方法1: 通过任务管理器
1.`Ctrl + Shift + Esc` 打开任务管理器
2. 找到 `agv_qt_gui.exe` 进程
3. 右键点击,选择"结束任务"
### 方法2: 通过命令行
**Windows命令提示符**不是Git Bash中运行
```cmd
taskkill /F /PID 2996
```
或者查找并关闭所有 agv_qt_gui 进程:
```cmd
taskkill /F /IM agv_qt_gui.exe
```
## 编译步骤
关闭程序后,执行以下命令重新编译:
```bash
cd build
cmake --build . --config Release
```
或者如果需要Debug版本
```bash
cmake --build . --config Debug
```
## 编译成功的标志
如果编译成功,应该看到:
```
agv_qt_gui.vcxproj -> C:\work\AGV\AGV运动规划\agv_path_tracking\build\Release\agv_qt_gui.exe
```
## 运行修复后的程序
编译成功后,运行:
```bash
# Release版本
./build/Release/agv_qt_gui.exe
# 或 Debug版本
./build/Debug/agv_qt_gui.exe
```
然后测试"Load from CSV"功能,特别是:
1. 尝试加载包含中文路径的CSV文件
2. 尝试加载各种格式的CSV文件
## 已修复的问题
✓ Windows路径编码问题主要原因
✓ 单点路径处理
✓ 异常处理改进
所有修改已应用到源代码,只需重新编译即可生效。

View File

@@ -0,0 +1,110 @@
# 自定义路径功能 - 快速导航
## 📍 文档位置
所有自定义路径功能的文档已整理到:
```
docs/custom_path/
```
## 🚀 快速开始
### 1. 查看文档目录
```bash
cd docs/custom_path
cat README.md
```
### 2. 推荐阅读顺序
**新手入门5分钟**
```
docs/custom_path/FINAL_SUMMARY.md # 功能总览 ⭐
docs/custom_path/QUICKSTART_CUSTOM_PATH.md # 快速上手
```
**QT界面集成10分钟**
```
docs/custom_path/apply_qt_modifications.md # 修改步骤 ⭐
docs/custom_path/qt_gui_custom_code_snippet.cpp # 代码示例
```
**深入学习30分钟**
```
docs/custom_path/CUSTOM_PATH_GUIDE.md # 完整教程
```
## 📦 核心功能
1. **CSV文件加载** - 从外部文件加载任意路径
2. **样条插值** - 从关键点生成平滑曲线
3. **路径保存** - 导出路径为CSV格式
4. **QT界面集成** - 图形化操作
## 🔧 安装
### 自动安装(推荐)
```bash
bash docs/custom_path/install_custom_path.sh
```
### 手动安装
参考文档:`docs/custom_path/CUSTOM_PATH_GUIDE.md`
## 📖 完整文档列表
访问 `docs/custom_path/README.md` 查看所有文档的详细说明。
## 📁 文件结构
```
agv_path_tracking/
├── src/
│ └── path_curve_custom.cpp # 核心实现
├── include/
│ └── path_curve.h # 需要添加方法声明
├── examples/
│ ├── custom_path.csv # 示例路径
│ └── warehouse_path.csv # 仓库路径
├── docs/
│ └── custom_path/ # 📚 所有文档在这里!
│ ├── README.md # 文档导航
│ ├── FINAL_SUMMARY.md # 功能总览 ⭐
│ ├── QUICKSTART_CUSTOM_PATH.md
│ ├── CUSTOM_PATH_GUIDE.md
│ ├── apply_qt_modifications.md ⭐
│ ├── QT_GUI_CUSTOM_PATH_GUIDE.md
│ ├── qt_gui_custom_code_snippet.cpp
│ ├── install_custom_path.sh
│ ├── path_curve.h.patch
│ └── CUSTOM_PATH_IMPLEMENTATION_SUMMARY.txt
└── CUSTOM_PATH_README.md # 本文件(快速导航)
```
## ✨ 快速示例
```cpp
// 1. 加载自定义路径
PathCurve path;
path.loadFromCSV("examples/custom_path.csv");
// 2. 使用路径
PathTracker tracker(agv);
tracker.setReferencePath(path);
tracker.generateControlSequence("pure_pursuit", 0.1, 20.0);
```
## 🎯 使用场景
| 场景 | 查看文档 |
|-----|---------|
| 快速试用 | `docs/custom_path/QUICKSTART_CUSTOM_PATH.md` |
| QT界面 | `docs/custom_path/apply_qt_modifications.md` |
| 深入学习 | `docs/custom_path/CUSTOM_PATH_GUIDE.md` |
| 安装配置 | `docs/custom_path/install_custom_path.sh` |
| 完整总览 | `docs/custom_path/FINAL_SUMMARY.md` ⭐ |
---
**开始使用**: `cd docs/custom_path && cat README.md`

183
docs/guides/QUICKSTART.md Normal file
View File

@@ -0,0 +1,183 @@
# AGV 路径跟踪控制系统 - 快速入门指南
本指南将帮助您快速上手 AGV 路径跟踪控制系统。
## 1. 编译项目
### Windows 用户
使用 PowerShell
```powershell
.\build.ps1
```
或手动编译:
```powershell
mkdir build
cd build
cmake ..
cmake --build . --config Release
```
### Linux/MacOS 用户
```bash
chmod +x build.sh
./build.sh
```
或手动编译:
```bash
mkdir build
cd build
cmake ..
make
```
## 2. 运行程序
### 命令行演示程序
Windows:
```powershell
cd build\Release
.\agv_demo.exe
```
Linux/MacOS:
```bash
cd build
./agv_demo
```
### 控制台 GUI 程序
Windows:
```powershell
cd build\Release
.\agv_gui.exe
```
Linux/MacOS:
```bash
cd build
./agv_gui
```
### Qt 图形界面程序
Windows:
```powershell
cd build\Release
.\agv_qt_gui.exe
```
Linux/MacOS:
```bash
cd build
./agv_qt_gui
```
## 3. 使用示例
运行 `agv_demo` 后,您将看到交互式菜单:
1. **选择路径类型**
- 1: 直线路径
- 2: 圆弧路径
- 3: 贝塞尔曲线
- 4: S形曲线
2. **选择控制算法**
- 1: Pure Pursuit推荐用于平滑路径
- 2: Stanley推荐用于高精度跟踪
3. **查看结果**
- 程序会在控制台显示控制序列
- 可选择保存为CSV文件
## 4. 可视化结果
如果保存了CSV文件可以使用Python脚本可视化
```bash
python visualize.py
```
需要安装的依赖:
```bash
pip install pandas matplotlib numpy
```
## 5. 输出文件说明
生成的 CSV 文件包含:
- **control_sequence.csv**: 时间、速度、转向角(弧度和角度)
- **trajectory.csv**: AGV 的预测轨迹x, y, θ)
文件格式示例:
```csv
# AGV Control Sequence
# Time(s), Velocity(m/s), Steering(rad), Steering(deg)
0.000000, 1.000000, 0.732770, 41.984039
0.100000, 1.000000, 0.732933, 41.993384
```
## 6. 自定义使用
参考 `examples/demo.cpp` 中的代码,您可以:
```cpp
// 创建自定义路径
PathCurve my_path;
my_path.generateLine(PathPoint(0, 0), PathPoint(10, 5), 100);
// 调整 AGV 参数
AGVModel my_agv(
1.5, // 轴距 1.5m
3.0, // 最大速度 3.0 m/s
M_PI/3 // 最大转向角 60 度
);
// 生成控制序列
tracker.generateControlSequence("pure_pursuit", 0.05, 15.0);
```
## 常见问题
### Q: 编译时找不到 cmake
**A:** 请安装 CMakehttps://cmake.org/download/
### Q: Windows 下编译失败?
**A:** 确保安装了以下之一:
- Visual Studio推荐 2019 或更新版本)
- MinGW-w64
### Q: 如何修改路径参数?
**A:** 编辑 `examples/demo.cpp` 或参考完整 README 文档自定义路径
### Q: 控制序列太长或太短?
**A:** 调整 `generateControlSequence``horizon` 参数(时域长度)
### Q: Pure Pursuit 和 Stanley 算法有什么区别?
**A:**
- **Pure Pursuit**:适合平滑路径,计算简单,跟踪稳定
- **Stanley**:适合高精度跟踪,对横向误差更敏感
### Q: 如何调整可视化参数?
**A:** 编辑 `visualize.py` 文件中的绘图参数,如箭头间隔、线宽等
## 下一步
- 阅读完整的 [README.md](README.md) 了解详细 API 和算法原理
- 查看 `examples/` 目录下的示例代码学习使用方法
- 尝试不同的路径类型和控制算法组合
- 调整 AGV 参数观察对控制效果的影响
- 集成到您自己的项目中
## 技术支持
如有问题或建议,请在代码仓库中创建 issue。
祝使用愉快!

119
docs/guides/QUICK_START.md Normal file
View File

@@ -0,0 +1,119 @@
# 快速使用指南 - 完整路径追踪
## 问题
❌ trajectory路径只有一段无法完整追踪reference path
## 解决方案
**已修复并重新编译成功!**
## 立即测试
### 1. 运行程序
```bash
./build/Release/agv_qt_gui.exe
```
### 2. 检查Horizon参数
在GUI界面中找到
```
Horizon (s): [ 50.0 ] ← 默认值已改为50秒
范围: 1-100秒
```
### 3. 生成控制序列
- 选择任意路径类型(建议先测试 "Straight Line"
- 点击 "Generate Control"
- 观察可视化窗口中的trajectory绿色线
### 4. 验证结果
✓ trajectory应该完整覆盖reference path红色线
✓ 不应该在中途停止
✓ 应该接近路径终点0.5米范围内)
## 如果轨迹仍不完整
### 场景1: 路径很长(>50米
**解决**: 手动增加Horizon值
```
路径长度: 80米
速度: 1.0 m/s
推荐Horizon: 80 × 1.5 = 120秒
但GUI最大值是100秒所以设置为100秒
```
### 场景2: 速度很慢(<0.5 m/s
**解决**: 同样需要增加Horizon
```
路径长度: 20米
速度: 0.5 m/s
推荐Horizon: 20 / 0.5 × 1.5 = 60秒
```
### 场景3: 路径超长(>100米
**解决**: 需要修改代码中的最大值
`qt_gui_demo.cpp:294` 中将 100.0 改为更大的值比如200.0
## 计算Horizon公式
```
Horizon (秒) = 路径长度(米) / 期望速度(m/s) × 1.5
```
**示例**:
- 20米路径 @ 1.0 m/s → 30秒
- 50米路径 @ 1.0 m/s → 75秒
- 30米路径 @ 0.5 m/s → 90秒
## 修复对比
| 项目 | 修复前 | 修复后 |
|------|--------|--------|
| Horizon默认值 | 10秒 | **50秒** ✓ |
| Horizon最大值 | 30秒 | **100秒** ✓ |
| 终止阈值 | 0.1米 | **0.5米** ✓ |
| 默认可追踪距离 | 10米 | **50米** ✓ |
## 预设路径测试
| 路径类型 | 预估长度 | 推荐Horizon | 状态 |
|---------|---------|------------|------|
| Straight Line | ~14米 | 默认50秒即可 | ✓ |
| Circle Arc | ~15米 | 默认50秒即可 | ✓ |
| S-Curve | ~12米 | 默认50秒即可 | ✓ |
| Load from CSV | 视文件而定 | 可能需调整 | ✓ |
| Custom Spline | 视输入而定 | 可能需调整 | ✓ |
## 常见问题
### Q: 轨迹还是不完整?
A: 检查以下几点:
1. Horizon值是否足够大建议设为路径长度的1.5倍所需时间)
2. 在控制台查看是否有错误信息
3. 确认路径点是否正确加载
### Q: 如何查看路径长度?
A: 在控制台中会输出:
```
Path length: 14.1421 m
Path points: 100
```
### Q: Horizon设太大会有问题吗
A: 不会程序会在到达终点时自动停止distance < 0.5米)。Horizon只是最大时间限制
### Q: 为什么编译时有警告?
A: C4267警告size_t转int是良性的不影响功能可以忽略
## 技术支持
如有问题检查文档
- `TRAJECTORY_FIX.md` - 详细技术分析
- `TRAJECTORY_COMPLETE.md` - 完整修复报告
- `FIX_SUMMARY.md` - CSV加载修复
- `FINAL_REPORT.md` - 完整技术文档
---
**更新日期**: 2025-11-14
**版本**: v1.1
**状态**: 已修复已编译待测试

View File

@@ -0,0 +1,328 @@
# 平滑路径生成器使用说明
## 📁 文件位置
- **源代码**: `examples/generate_smooth_path.cpp`
- **可执行文件**: `build/Debug/generate_smooth_path.exe``build/Release/generate_smooth_path.exe`
## 🚀 快速开始
### 1. 编译程序
```bash
# 进入 build 目录
cd build
# 编译 Debug 版本
cmake --build . --target generate_smooth_path --config Debug
# 或编译 Release 版本
cmake --build . --target generate_smooth_path --config Release
```
### 2. 运行程序
```bash
# 运行 Debug 版本
./build/Debug/generate_smooth_path.exe
# 或运行 Release 版本
./build/Release/generate_smooth_path.exe
```
运行后会自动生成 6 个 CSV 文件在当前目录:
-`smooth_path.csv` - 默认平滑路径5个关键点
-`smooth_path_arc.csv` - 圆弧路径
-`smooth_path_scurve.csv` - S型曲线
-`smooth_path_complex.csv` - 复杂路径10个关键点
-`smooth_path_loop.csv` - 环形路径
-`smooth_path_figure8.csv` - 8字形路径
## 📚 类方法说明
`SmoothPathGenerator` 类提供以下静态方法:
### 1. `generateCircleArc()` - 生成圆弧路径
```cpp
SmoothPathGenerator::generateCircleArc(
"output.csv", // 输出文件名
5.0, 0.0, // 圆心坐标 (center_x, center_y)
5.0, // 半径
M_PI, M_PI/2, // 起始角度和终止角度(弧度)
150 // 路径点数量
);
```
### 2. `generateSCurve()` - 生成S型曲线
```cpp
SmoothPathGenerator::generateSCurve(
"scurve.csv", // 输出文件名
0.0, 0.0, // 起点 (start_x, start_y)
10.0, 0.0, // 终点 (end_x, end_y)
2.5, // 控制点偏移量
200 // 路径点数量
);
```
### 3. `generateSpline()` - 生成样条曲线
```cpp
std::vector<PathPoint> key_points = {
PathPoint(0.0, 0.0),
PathPoint(3.0, 1.0),
PathPoint(6.0, 3.0),
PathPoint(9.0, 3.5),
PathPoint(12.0, 3.0)
};
SmoothPathGenerator::generateSpline(
"spline.csv", // 输出文件名
key_points, // 关键点数组
200, // 生成的总路径点数
0.5 // 张力参数 (0-1, 越大越紧)
);
```
### 4. `generateComplexPath()` - 生成复杂路径
```cpp
// 自动生成一个包含10个关键点的复杂路径
SmoothPathGenerator::generateComplexPath("complex.csv", 300);
```
### 5. `generateLoop()` - 生成环形路径
```cpp
SmoothPathGenerator::generateLoop(
"loop.csv", // 输出文件名
5.0, // 半径
300 // 路径点数量
);
```
### 6. `generateFigure8()` - 生成8字形路径
```cpp
SmoothPathGenerator::generateFigure8(
"figure8.csv", // 输出文件名
4.0, // 8字大小
400 // 路径点数量
);
```
## 🎯 自定义使用示例
### 示例1创建自己的平滑路径
```cpp
#include "path_curve.h"
#include <vector>
int main() {
// 定义你的关键点
std::vector<PathPoint> my_points = {
PathPoint(0.0, 0.0), // 起点
PathPoint(2.0, 3.0), // 第一个转折点
PathPoint(5.0, 4.0), // 第二个转折点
PathPoint(8.0, 2.0), // 第三个转折点
PathPoint(10.0, 0.0) // 终点
};
// 生成样条曲线
PathCurve path;
path.generateSpline(my_points, 250, 0.4); // 250个点张力0.4
// 保存为CSV
path.saveToCSV("my_custom_path.csv");
return 0;
}
```
### 示例2在代码中调用生成器
```cpp
#include "examples/generate_smooth_path.cpp" // 或者定义成头文件
int main() {
// 快速生成一个S型路径
SmoothPathGenerator::generateSCurve(
"warehouse_path.csv",
0.0, 0.0, // 从原点开始
20.0, 5.0, // 到达(20, 5)
5.0, // 较大的弯曲
300 // 高精度
);
return 0;
}
```
### 示例3批量生成多条路径
```cpp
int main() {
// 生成多条不同参数的路径
for (int i = 1; i <= 5; i++) {
std::string filename = "path_" + std::to_string(i) + ".csv";
double radius = i * 2.0;
SmoothPathGenerator::generateLoop(filename, radius, 200);
}
return 0;
}
```
## 🖥️ 在Qt GUI中使用
1. 运行 Qt GUI 程序:
```bash
./build/Debug/agv_qt_gui.exe
```
2. 在界面中选择 **"Path Type"** → **"Load from CSV"**
3. 在文件对话框中选择生成的任意 CSV 文件
4. 点击 **"Generate Control"** 查看效果
## 📊 CSV 文件格式
生成的 CSV 文件格式如下:
```csv
# Custom Path Data
# x(m), y(m), theta(rad), kappa(1/m)
0.000000, 0.000000, 0.310064, 0.000000
0.015153, 0.004855, 0.299013, 1.369770
0.030624, 0.009440, 0.278105, 1.221140
...
```
- **x, y**: 路径点坐标(米)
- **theta**: 切线方向角(弧度)
- **kappa**: 曲率1/米)
## 🔧 常见问题
### Q1: 如何调整路径的平滑度?
修改 `tension` 参数0-1
- `0.0`: 非常平滑,接近直线
- `0.5`: 适中平滑(推荐)
- `1.0`: 紧贴关键点,更多曲折
### Q2: 如何增加路径精度?
增加 `num_points` 参数:
- 简单路径: 100-200 点
- 复杂路径: 300-500 点
- 高精度需求: 500+ 点
### Q3: 生成的路径在哪里?
路径文件生成在程序运行的当前目录。如果从 `build/Debug/` 运行,文件会在 `build/Debug/` 目录下。
建议运行时切换到项目根目录:
```bash
cd C:/work/AGV/AGV运动规划/agv_path_tracking
./build/Debug/generate_smooth_path.exe
```
### Q4: 如何只生成 smooth_path.csv
修改 `main()` 函数,只保留需要的生成代码,或者创建自己的简化版本。
## 📝 完整调用示例
```cpp
#include "path_curve.h"
#include <iostream>
#include <vector>
int main() {
// 方法1: 使用 PathCurve 类直接生成
PathCurve path1;
std::vector<PathPoint> points = {
PathPoint(0, 0),
PathPoint(5, 2),
PathPoint(10, 0)
};
path1.generateSpline(points, 200, 0.5);
path1.saveToCSV("method1.csv");
// 方法2: 使用 SmoothPathGenerator 封装类
SmoothPathGenerator::generateSCurve(
"method2.csv",
0, 0, 10, 0, 3.0, 200
);
std::cout << "Paths generated!" << std::endl;
return 0;
}
```
## 🎓 进阶用法
### 自定义路径生成器
你可以继承或扩展 `SmoothPathGenerator` 类来添加更多路径类型:
```cpp
class MyPathGenerator : public SmoothPathGenerator {
public:
// 添加自定义路径类型
static bool generateZigZag(const std::string& filename,
int segments = 5,
double width = 2.0) {
std::vector<PathPoint> points;
for (int i = 0; i <= segments; i++) {
double x = i * 2.0;
double y = (i % 2) * width;
points.push_back(PathPoint(x, y));
}
PathCurve path;
path.generateSpline(points, segments * 50, 0.3);
return path.saveToCSV(filename);
}
};
```
## 📖 相关文档
- [PathCurve 类文档](include/path_curve.h)
- [Qt GUI 使用说明](QUICKSTART.md)
- [AGV 控制系统文档](README.md)
## ✅ 验证生成结果
使用 Python 可视化(如果安装了 matplotlib
```python
import pandas as pd
import matplotlib.pyplot as plt
# 读取CSV文件
df = pd.read_csv('smooth_path.csv', comment='#')
# 绘制路径
plt.figure(figsize=(10, 8))
plt.plot(df['x(m)'], df['y(m)'], 'b-', linewidth=2, label='Path')
plt.plot(df['x(m)'], df['y(m)'], 'ro', markersize=3)
plt.xlabel('X (m)')
plt.ylabel('Y (m)')
plt.title('Generated Smooth Path')
plt.grid(True)
plt.axis('equal')
plt.legend()
plt.show()
```
---
**作者**: AGV Path Tracking System
**最后更新**: 2025-11-13

View File

@@ -0,0 +1,226 @@
# 快速测试指南 - 路径跟踪改进
## 🎯 验证修复效果
修复已完成并编译成功!现在测试新的跟踪性能。
## 快速开始
### 1. 运行程序
```bash
./build/Release/agv_qt_gui.exe
```
### 2. 关键检查点
#### ✓ 检查点1: 初始状态对齐
**测试**: 选择任意路径 → Generate Control
**观察**: 绿色trajectory的起点应与红色reference path的起点**完美重合**
**修复前**: 起点偏离有明显gap
**修复后**: 起点完美对齐 ✓
#### ✓ 检查点2: 速度参数生效
**测试**:
1. 设置 Max Velocity = 2.0 m/s
2. 选择 Circle Arc → Generate Control
3. 查看动画速度
**修复前**: 动画慢实际1.0 m/s
**修复后**: 动画快实际2.0 m/s
#### ✓ 检查点3: 跟踪精度
**测试**: 选择 S-Curve → Generate Control
**观察**: trajectory应紧密跟随path特别是弯道部分
**修复前**: 偏差0.5-2.0米,明显偏离
**修复后**: 偏差<0.2米紧密贴合
#### ✓ 检查点4: CSV路径
**测试**:
1. Load from CSV 选择 smooth_path.csv
2. Max Velocity = 1.0 m/s
3. Generate Control
**修复前**:
- 起点朝向错误偏17.8度
- 持续偏离路径
- 看起来在"追赶"路径
**修复后**:
- 起点完美对齐
- 全程紧密跟踪
- 平滑流畅
## 推荐测试序列
### 序列1: 基础验证5分钟
```
1. Straight Line + Pure Pursuit → 检查起点对齐
2. Circle Arc + Pure Pursuit → 检查圆弧跟踪
3. S-Curve + Stanley → 检查弯道响应
```
### 序列2: 速度测试5分钟
```
1. Circle Arc, Velocity=0.5 m/s → 低速精确
2. Circle Arc, Velocity=1.0 m/s → 标准速度
3. Circle Arc, Velocity=2.0 m/s → 高速平滑
```
### 序列3: 算法对比5分钟
```
同一路径如S-Curve:
1. Pure Pursuit → 观察跟踪效果
2. Stanley → 观察跟踪效果
比较哪个更好
```
### 序列4: 真实场景5分钟
```
1. Load CSV → smooth_path.csv
2. Velocity = 1.0 m/s
3. Pure Pursuit
4. Generate → 观察完整跟踪
```
## 参数建议
### 基础设置(推荐新手)
```
Wheelbase: 1.0 m
Max Velocity: 1.0 m/s
Max Steering: 45 deg
Time Step: 0.1 s
Horizon: 50 s
Algorithm: Pure Pursuit
```
### 高性能设置(追求速度)
```
Max Velocity: 2.0 m/s
Horizon: 50 s
Algorithm: Pure Pursuit
```
### 高精度设置(追求精度)
```
Max Velocity: 0.5 m/s
Time Step: 0.05 s
Horizon: 80 s
Algorithm: Stanley
```
## 预期结果
### 视觉效果
**好的跟踪**修复后:
```
- trajectory与path几乎重叠
- 起点完美对齐
- 弯道平滑通过
- 无明显偏离
```
**差的跟踪**修复前:
```
- trajectory在path外侧
- 起点有gap
- 弯道切弯或偏离
- 持续偏差
```
### 数值指标
查看统计信息Statistics面板:
- Max Velocity: 应与设置一致
- Control Steps: horizon/dt
- Path Points: 路径点数量
## 常见问题
### Q: 看不出明显改善?
A: 检查这些
1. **确认重新编译**exe时间戳应该是最新的
2. **尝试CSV路径**最能体现初始状态修复
3. **对比算法**Pure Pursuit vs Stanley
4. **调整速度**试试2.0 m/s
### Q: 仍有小偏差?
A: 这是正常的
- 控制算法不是零误差
- 典型误差0.1-0.3米是正常的
- 重点是**没有累积偏差**
### Q: 高速时切弯?
A: 这是Pure Pursuit的特性
- 前视距离大 切弯
- 解决降低速度或换Stanley
### Q: 动画不流畅?
A: 调整Time Step
- 减小dt 更流畅如0.05s
- 增大dt 更快如0.2s
## 关键改进验证
### ✓ 改进1: 初始对齐
**如何验证**:
- 放大起点区域
- trajectory应从path起点开始无偏移
### ✓ 改进2: 速度生效
**如何验证**:
- 设置Max Velocity = 2.0
- 动画应明显比1.0时快
### ✓ 改进3: 自适应前视
**如何验证**:
- 低速(0.5): 转弯更紧不切弯
- 高速(2.0): 转弯平滑提前预判
### ✓ 改进4: Stanley响应
**如何验证**:
- 选择Stanley算法
- 横向偏差修正应很快
## 性能基准
**良好跟踪的标准**:
- 起点对齐误差 < 0.1米
- 平均横向误差 < 0.2米
- 最大横向误差 < 0.5米
- 无明显累积偏差
- 视觉上紧密贴合
**如果达不到**:
1. 确认已重新编译
2. 降低速度至1.0 m/s
3. 增加Horizon至80秒
4. 尝试不同算法
## 报告问题
如果修复后仍有问题请提供
1. 使用的路径类型
2. 参数设置速度算法等
3. 观察到的偏差范围
4. 截图或描述
## 成功指标
修复成功的标志
- 起点完美对齐
- trajectory紧贴path
- 速度设置生效
- 无明显偏离
- 平滑流畅
---
**开始测试吧!** 🚀
建议从"Straight Line"开始逐步测试更复杂的路径