当前位置: 首页 > news >正文

路径平滑优化详解(二次规划): 数学建模与目标函数推导

在自动驾驶或移动机器人中,路径平滑(Path Smoothing) 是轨迹规划中非常重要的一环。
基于栅格地图生成的参考线往往存在噪声、不连续或几何突变等问题,而车辆执行层(如 MPC 或 Pure Pursuit)需要连续、光滑且可导的轨迹

一种常见做法是将路径平滑问题建模为 二次规划(Quadratic Programming, QP)
min⁡12xTPx+fTxs.t. l≤Ax≤u\min \frac{1}{2}x^T P x + f^T x \quad \text{s.t. } l \le A x \le u min21xTPx+fTxs.t. lAxu

在路径优化当中,不考虑速度、加速度优化,通常会考虑优化路径的光滑性、紧凑性以及相似性。根据以上三个优化项,构造以下目标函数,利用优化算法最小化以下目标:

min⁡x,yJ=wsmoothJ1+wlengthJ2+wreferJ3\min_{x,y} J = w_{smooth}J_1 + w_{length}J_2 + w_{refer}J_3 x,yminJ=wsmoothJ1+wlengthJ2+wreferJ3

其中:

  • J1J_1J1 :平滑代价(保证曲率变化平稳), 用于最小化加速度变化
  • J2J_2J2 :路径紧凑代价(避免过长或不均匀), 用于控制相邻点距离
  • J3J_3J3 :几何相似代价(保持在原参考线附近), 对应偏离参考线的惩罚
  • wsmoothw_{smooth}wsmooth, wlengthw_{length}wlength, wreferw_{refer}wrefer:对应权重

根据目标函数,使用 OSQP 优化器来求解该问题。


对于参考线离散点XrefX_{ref}Xref(xi,yi){(x_i, y_i)}(xi,yi),我们希望优化后的路径点 (xi′,yi′){(x_i', y_i')}(xi,yi)满足以下性质:

1️⃣ 平滑项:
J1=∑i[(xi+2′−2xi+1′+xi′)2+(yi+2′−2yi+1′+yi′)2]J_1 = \sum_i \left[(x_{i+2}' - 2x_{i+1}' + x_i')^2 + (y_{i+2}' - 2y_{i+1}' + y_i')^2\right] J1=i[(xi+22xi+1+xi)2+(yi+22yi+1+yi)2]
代表二阶差分(曲率变化)最小化,使曲线更平滑。曲线平滑计算由相邻3个点计算,所以当路径点有n个时,该项代价由n-2项组成。在构造平滑代价权重时需要注意,待优化变量数为2 * n,而平滑代价权重的行数为2 * n - 4

为什么是-4?
在计算平滑代价时,路径的首尾两个点是没有前驱后继点的,只能计算中间点,而每个点都包含两个待优化的变量位,所以共计4个。

对应的部分代码

Eigen::SparseMatrix<double> P_smooth(num_var - 4, num_var);  // num_var = 2 * n
for (int row = 0; row < num_var - 4; row += 2) {// 对应x轴部分的矩阵赋值P_smooth.insert(row, row) = 1.0;P_smooth.insert(row, row + 2) = -2.0;P_smooth.insert(row, row + 4) = 1.0;// 对应y轴部分的矩阵赋值P_smooth.insert(row + 1, row + 1) = 1.0;P_smooth.insert(row + 1, row + 3) = -2.0;P_smooth.insert(row + 1, row + 5) = 1.0;
}

2️⃣ 长度项:
J2=∑i[(xi+1′−xi′)2+(yi+1′−yi′)2]J_2 = \sum_i \left[(x_{i+1}' - x_i')^2 + (y_{i+1}' - y_i')^2\right] J2=i[(xi+1xi)2+(yi+1yi)2]
约束相邻点间距,保证路径紧凑,即路径尽量短。
部分代码如下所示:

// 一阶差分(长度项)
Eigen::SparseMatrix<double> P_length(num_var - 2, num_var);
for (int row = 0; row < num_var - 2; row += 2) {P_length.insert(row, row) = 1.0;P_length.insert(row, row + 2) = -1.0;P_length.insert(row + 1, row + 1) = 1.0;P_length.insert(row + 1, row + 3) = -1.0;
}

3️⃣ 参考项:
J3=∑i[(xi′−xi)2+(yi′−yi)2]J_3 = \sum_i \left[(x_i' - x_i)^2 + (y_i' - y_i)^2\right] J3=i[(xixi)2+(yiyi)2]
保持与原始参考线的几何一致性。
部分代码所示:

// 单位矩阵(参考项)
Eigen::SparseMatrix<double> P_ref(num_var, num_var);
for (int row = 0; row < num_var; ++row)P_ref.insert(row, row) = 1.0;

最终构造优化目标
min⁡x′12x′TPx′+fTx′\min_{x'} \frac{1}{2}x'^{T} P x' + f^{T}x' xmin21xTPx+fTx
这就是标准的 QP 目标形式。

针对目标函数,其对应的P矩阵为:
P=2(wsmoothPsmoothTPsmooth+wlengthPlengthTPlength+wrefPrefTPref)P = 2(w_{smooth} P_{smooth}^T P_{smooth} + w_{length} P_{length}^T P_{length} + w_{ref} P_{ref}^T P_{ref}) P=2(wsmoothPsmoothTPsmooth+wlengthPlengthTPlength+wrefPrefTPref)
保证P是对称正定矩阵,使得问题凸且可解。
f矩阵为:
f=−2∗wrefer∗Xref;f = -2 * w_{refer} * X_{ref}; f=2wreferXref;

构造线性约束
l≤x≤ul \le x \le u lxu

  • lll表示 lower_bound
  • uuu表示upper_bound

在路径优化当中,不考虑速度时,线性约束基本是将优化后的曲线框定在对应点的一个长方形内,长方形的大小由对应的上下边界决定。对应的线性约束(边界约束)为:
xi′∈[xi−buffer,xi+buffer]x_i' \in [x_i - buffer, x_i + buffer] xi[xibuffer,xi+buffer]
代表每个点可以在参考线附近 ±buffer 米范围内调整。


以上内容就构造好了一个二次优化问题的所需信息,然后将对应的矩阵输入到OSQP优化器当中,就可以得到优化后的路径解了

如果你项了解更多的代码详情,可以参考开源项目:

  • osqp-eigen 官方示例
  • Apollo Path Optimizer 源码分析
http://www.dtcms.com/a/478983.html

相关文章:

  • 昂瑞微:射频与模拟芯片领域的国产领军者
  • 互联网医院小程序源码实操:在线问诊功能快速实现
  • 数字电源和模拟电源隔离的原理
  • 搬瓦工wordpress建站软件开发公司哪家强
  • 常见的PHP框架安全防护函数详解!
  • 《Qt应用开发》笔记p4
  • 用 Matplotlib 实现数据可视化3 个案例实战
  • PS4资源汇总:PS4游戏18T+合集1700多个游戏+固件+主题+金手指+模拟器
  • 营销型网站设计价格app软件商店
  • 网站开发的工作环境wordpress没有链接
  • Spring Web MVC入门补充1
  • 反悔贪心 系列
  • 十二、OpenCV中的边缘检测
  • 个人网站 摄影展示wordpress神箭手
  • 天津网站建设icp备微建网站
  • 软考~系统规划与管理师考试——真题篇——章节——第20章 数字乡村发展规划——纯享题目版
  • 旅行商问题(TSP)(2)(heuristics.py)(TSP 的两种贪心启发式算法实现)
  • 网站设计需求方案wordpress转成中文版
  • 最佳经验网站网站有哪些布局
  • 爬虫的基本流程:从发送请求到数据清洗的完整链路
  • 大连手机自适应网站制作价格百度权重查询
  • 当地网站建设问卷调查建筑设计一般用什么软件
  • 淘宝商品详情 API 介绍
  • 【车机应用管理器 GUI:一款高效的 Android 车机应用与系统命令管理工具】
  • d41:MyBatisPlus入门,注解,配置,条件构造器,自定义SQL,IService
  • 沈阳网官方网站重庆男科医院哪家好
  • 无广技术贴!【PDF编辑器】Solid Converter PDF保姆级图文下载安装指南——实用推荐之PDF编辑软件
  • Fail2ban安装及配置教程:防止ECS暴力破解
  • 自做的网站如何发布松江建设新城有限公司网站
  • 住建城乡建设部网站网站建设空间主机的选择