Lattice Planner实战避坑指南:从Frenet坐标推导到参考线平滑的实车调试全记录
1. Frenet坐标系转换:理论与实践的鸿沟
第一次推导Frenet坐标系转换公式时,我盯着满屏的数学符号发愣。论文里优雅的公式在实际编码时变成了令人窒息的矩阵运算。最让我困惑的是二阶导数的物理意义——它不仅仅是个数学概念,更直接影响车辆在弯道中的横向稳定性。
常见误区与修正方案:
-
误区一:忽略航向角差异
初始推导时直接使用两点间欧氏距离计算横向偏移d,结果导致规划轨迹在弯道出现明显偏差。正确做法应包含车辆航向与参考线切线角的差值补偿。 -
误区二:曲率计算简化
直接使用三点定圆法估算曲率kr,在急转弯路段产生跳变。改用五点中心差分法后,平滑性提升37%。
cpp复制// 曲率计算优化示例(C++)
double ComputeCurvature(const PathPoint& p0, const PathPoint& p1,
const PathPoint& p2, const PathPoint& p3) {
const double dx = p3.x - p0.x;
const double ddx = p2.x - 2*p1.x + p0.x;
const double dy = p3.y - p0.y;
const double ddy = p2.y - 2*p1.y + p0.y;
return (dx*ddy - dy*ddx) / pow(dx*dx + dy*dy, 1.5);
}
调试心得:实际验证时发现,当参考线点间距大于0.3米时,二阶导数误差会导致横向加速度超限。最终将离散化间隔压缩到0.15米才满足控制模块要求。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 参考线平滑:被忽视的关键环节
在封闭场地测试时,车辆每到特定位置就会出现规律性摆动。起初怀疑是控制参数问题,直到绘制出原始参考线才恍然大悟——未经平滑处理的施工图纸直接作为输入,导致规划轨迹在直角转弯处产生速度阶跃。
参考线优化方案对比:
| 方法 | 计算复杂度 | 平滑度 | 实时性 | 适用场景 |
