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

导航路径优化(一)——平滑

文章目录

  • 一、路径需求
  • 二、路径优化
    • 1. 平滑代价
      • 1.1 三点路径平滑
        • 1.1.1 直接法
        • 1.1.2 海塞矩阵法
      • 1.2 N点路径平滑
        • 1.2.1 直接法
        • 1.2.2 海塞矩阵法

一、路径需求

一般地,对局部规划器生成的路径需要进行优化,我们希望传给机器人用于导航的路径有如下的需求:

  • 路径尽可能光滑,无拐点、无曲率突变(平滑);
  • 路径点间距尽可能均匀(均匀);
  • 平滑后的路径尽可能贴近原路径(几何相似性);

二、路径优化

针对路径优化的需求,从三个方面考虑:平滑均匀几何相似性,这三个方面用代价体现后,总代价最小即为我们需要的最优路径。即最优路径 c o s t m i n = c o s t s + c o s t l + c o s t g cost_{min}=cost_s + cost_l + cost_g costmin=costs+costl+costg

1. 平滑代价

1.1 三点路径平滑

以三个路径点为例:
在这里插入图片描述
如上图所示:原路径上存在三个路径点: A ( x 1 , y 1 ) A(x_1, y_1) A(x1,y1) B ( x 2 , y 2 ) B(x_2,y_2) B(x2,y2) C ( x 3 , y 3 ) C(x_3,y_3) C(x3,y3),以此三个点做两个向量 B A → \overrightarrow {BA} BA B C → \overrightarrow {BC} BC ,两向量相加即可得到向量 v ⃗ \vec{v} v ,那么向量 v ⃗ \vec {v} v 的范数越小则可以说明路径点 A 、 B 、 C A、B、C ABC 越接近于直线,当向量 v ⃗ \vec {v} v 的范数为0则路径点 A 、 B 、 C A、B、C ABC 共线。
v ⃗ = B A → + B C → = ( x 1 − x 2 , y 1 − y 2 ) + ( x 3 − x 2 , y 3 − y 2 ) = ( x 1 + x 3 − 2 x 2 , y 1 + y 3 − 2 y 2 ) \vec {v}=\overrightarrow {BA}+\overrightarrow {BC}=(x_1-x_2,y_1-y_2)+(x_3-x_2,y_3-y_2)=(x_1+x_3-2x_2,y_1+y_3-2y_2) v =BA +BC =(x1x2,y1y2)+(x3x2,y3y2)=(x1+x32x2,y1+y32y2)

向量指向谁,谁作为被减数

1.1.1 直接法

c o s t s = ∣ ∣ v ⃗ ∣ ∣ 2 = ( x 1 + x 3 − 2 x 2 ) 2 + ( y 1 + y 3 − 2 y 2 ) 2 = [ x 1 + x 3 − 2 x 2 y 1 + y 3 − 2 y 2 ] [ x 1 + x 3 − 2 x 2 y 1 + y 3 − 2 y 2 ] \begin{aligned} cost_s=||\vec {v}||^2&=(x_1+x_3-2x_2)^2+(y_1+y_3-2y_2)^2 \\[2ex] &=\left[ \begin{matrix} x_1+x_3-2x_2 & y_1+y_3-2y_2 \end{matrix} \right] \left[ \begin{matrix} x_1+x_3-2x_2\\ y_1+y_3-2y_2 \end{matrix} \right] \end{aligned} costs=∣∣v 2=(x1+x32x2)2+(y1+y32y2)2=[x1+x32x2y1+y32y2][x1+x32x2y1+y32y2]

X = [ x 1 y 1 x 2 y 2 x 3 y 3 ] T \begin{aligned} X=\left[ \begin{matrix} x_1 &y_1 & x_2&y_2&x_3&y_3 \end{matrix} \right]^T \end{aligned} X=[x1y1x2y2x3y3]T,则:
[ x 1 + x 3 − 2 x 2 y 1 + y 3 − 2 y 2 ] = [ x 1 y 1 x 2 y 2 x 3 y 3 ] [ 1 0 0 1 − 2 0 0 − 2 1 0 0 1 ] = X T A s \begin{aligned} \left[ \begin{matrix} x_1+x_3-2x_2 & y_1+y_3-2y_2 \end{matrix} \right]=\left[ \begin{matrix} x_1 &y_1 & x_2&y_2&x_3&y_3 \end{matrix} \right]\left[ \begin{array}{rr} 1 &0 \\ 0&1\\-2&0 \\ 0&-2 \\1&0 \\ 0 &1 \end{array} \right]=X^TA_s \end{aligned} [x1+x32x2y1+y32y2]=[x1y1x2y2x3y3] 102010010201 =XTAs

此时,

c o s t s = ∣ ∣ v ⃗ ∣ ∣ 2 = [ x 1 + x 3 − 2 x 2 y 1 + y 3 − 2 y 2 ] [ x 1 + x 3 − 2 x 2 y 1 + y 3 − 2 y 2 ] = X T A s ( X T A s ) T = X T A s A s T X = X T P s X \begin{aligned} cost_s=||\vec {v}||^2 &=\left[ \begin{matrix} x_1+x_3-2x_2 & y_1+y_3-2y_2 \end{matrix} \right] \left[ \begin{matrix} x_1+x_3-2x_2\\ y_1+y_3-2y_2 \end{matrix} \right]\\[2ex] &=X^TA_s(X^TA_s)^T\\[1.5ex] &=X^TA_sA_s^TX\\[1.5ex] &=X^TP_sX \end{aligned} costs=∣∣v 2=[x1+x32x2y1+y32y2][x1+x32x2y1+y32y2]=XTAs(XTAs)T=XTAsAsTX=XTPsX

1.1.2 海塞矩阵法

f = c o s t s = ∣ ∣ v ⃗ ∣ ∣ 2 = ( x 1 + x 3 − 2 x 2 ) 2 + ( y 1 + y 3 − 2 y 2 ) 2 \begin{aligned} f=cost_s=||\vec {v}||^2&=(x_1+x_3-2x_2)^2+(y_1+y_3-2y_2)^2 \\[2ex] \end{aligned} f=costs=∣∣v 2=(x1+x32x2)2+(y1+y32y2)2
一阶偏导数
∂ f ∂ x 1 = ∂ f ∂ x 3 = 2 ( x 1 + x 3 − 2 x 2 ) ∂ f ∂ x 2 = − 4 ( x 1 + x 3 − 2 x 2 ) ∂ f ∂ y 1 = ∂ f ∂ y 3 = 2 ( y 1 + y 3 − 2 y 2 ) ∂ f ∂ y 2 = − 4 ( y 1 + y 3 − 2 y 2 ) \begin{aligned} \frac{\partial f}{\partial x_1}=\frac{\partial f}{\partial x_3}&=2(x_1+x_3-2x_2) \\[2ex] \frac{\partial f}{\partial x_2}&=-4(x_1+x_3-2x_2)\\[2ex] \frac{\partial f}{\partial y_1}=\frac{\partial f}{\partial y_3}&=2(y_1+y_3-2y_2) \\[2ex] \frac{\partial f}{\partial y_2}&=-4(y_1+y_3-2y_2)\\[2ex] \end{aligned} x1f=x3fx2fy1f=y3fy2f=2(x1+x32x2)=4(x1+x32x2)=2(y1+y32y2)=4(y1+y32y2)
二阶偏导数
∂ 2 f ∂ x 1 2 = ∂ ( 2 ( x 1 + x 3 − 2 x 2 ) ) ∂ x 1 = 2 ∂ 2 f ∂ x 1 ∂ y 1 = ∂ ( 2 ( x 1 + x 3 − 2 x 2 ) ) ∂ y 1 = 0 ∂ 2 f ∂ x 1 ∂ x 2 = ∂ ( 2 ( x 1 + x 3 − 2 x 2 ) ) ∂ x 2 = − 4 ∂ 2 f ∂ x 1 ∂ y 2 = ∂ ( 2 ( x 1 + x 3 − 2 x 2 ) ) ∂ y 2 = 0 ∂ 2 f ∂ x 1 ∂ x 3 = ∂ ( 2 ( x 1 + x 3 − 2 x 2 ) ) ∂ x 3 = 2 ∂ 2 f ∂ x 1 ∂ y 3 = ∂ ( 2 ( x 1 + x 3 − 2 x 2 ) ) ∂ y 3 = 0 ⋮ ∂ 2 f ∂ y 3 ∂ x 1 = ∂ ( 2 ( y 1 + y 3 − 2 y 2 ) ) ∂ x 1 = 0 ∂ 2 f ∂ y 3 ∂ y 1 = ∂ ( 2 ( y 1 + y 3 − 2 y 2 ) ) ∂ y 1 = 2 ∂ 2 f ∂ y 3 ∂ x 2 = ∂ ( 2 ( y 1 + y 3 − 2 y 2 ) ) ∂ x 2 = 0 ∂ 2 f ∂ y 3 ∂ y 2 = ∂ ( 2 ( y 1 + y 3 − 2 y 2 ) ) ∂ y 2 = − 4 ∂ 2 f ∂ y 3 ∂ x 3 = ∂ ( 2 ( y 1 + y 3 − 2 y 2 ) ) ∂ x 3 = 0 ∂ 2 f ∂ y 3 2 = ∂ ( 2 ( y 1 + y 3 − 2 y 2 ) ) ∂ y 3 = 2 \begin{aligned} \frac{\partial^2 f}{\partial x_1^2}&=\frac{\partial (2(x_1+x_3-2x_2))}{\partial x_1}=2 \\[2ex] \frac{\partial^2 f}{\partial x_1\partial y_1}&=\frac{\partial (2(x_1+x_3-2x_2))}{\partial y_1}=0 \\[2ex] \frac{\partial^2 f}{\partial x_1\partial x_2}&=\frac{\partial (2(x_1+x_3-2x_2))}{\partial x_2}=-4 \\[2ex] \frac{\partial^2 f}{\partial x_1\partial y_2}&=\frac{\partial (2(x_1+x_3-2x_2))}{\partial y_2}=0 \\[2ex] \frac{\partial^2 f}{\partial x_1\partial x_3}&=\frac{\partial (2(x_1+x_3-2x_2))}{\partial x_3}=2 \\[2ex] \frac{\partial^2 f}{\partial x_1\partial y_3}&=\frac{\partial (2(x_1+x_3-2x_2))}{\partial y_3}=0 \\[2ex] & \vdots\\ \frac{\partial^2 f}{\partial y_3\partial x_1}&=\frac{\partial (2(y_1+y_3-2y_2) )}{\partial x_1}=0 \\[2ex] \frac{\partial^2 f}{\partial y_3\partial y_1}&=\frac{\partial (2(y_1+y_3-2y_2) )}{\partial y_1}=2 \\[2ex] \frac{\partial^2 f}{\partial y_3\partial x_2}&=\frac{\partial (2(y_1+y_3-2y_2) )}{\partial x_2}=0 \\[2ex] \frac{\partial^2 f}{\partial y_3\partial y_2}&=\frac{\partial (2(y_1+y_3-2y_2) )}{\partial y_2}=-4 \\[2ex] \frac{\partial^2 f}{\partial y_3\partial x_3}&=\frac{\partial (2(y_1+y_3-2y_2) )}{\partial x_3}=0 \\[2ex] \frac{\partial^2 f}{\partial y_3^2}&=\frac{\partial (2(y_1+y_3-2y_2) )}{\partial y_3}=2 \\[2ex] \end{aligned} x122fx1y12fx1x22fx1y22fx1x32fx1y32fy3x12fy3y12fy3x22fy3y22fy3x32fy322f=x1(2(x1+x32x2))=2=y1(2(x1+x32x2))=0=x2(2(x1+x32x2))=4=y2(2(x1+x32x2))=0=x3(2(x1+x32x2))=2=y3(2(x1+x32x2))=0=x1(2(y1+y32y2))=0=y1(2(y1+y32y2))=2=x2(2(y1+y32y2))=0=y2(2(y1+y32y2))=4=x3(2(y1+y32y2))=0=y3(2(y1+y32y2))=2
海塞矩阵
H = P s = [ ∂ 2 f ∂ x 1 2 ∂ 2 f ∂ x 1 ∂ y 1 … ∂ 2 f ∂ x 1 ∂ y 3 ∂ 2 f ∂ y 1 ∂ x 1 ∂ 2 f ∂ y 1 2 … ∂ 2 f ∂ y 1 ∂ y 3 ⋮ ⋮ ⋱ ⋮ ∂ 2 f ∂ y 3 ∂ x 1 ∂ 2 f ∂ y 3 ∂ x 2 … ∂ 2 f ∂ y 3 2 ] = [ 2 0 − 4 0 2 0 0 2 0 − 4 0 2 − 4 0 8 0 − 4 0 0 − 4 0 8 0 − 4 2 0 − 4 0 2 0 0 2 0 − 4 0 2 ] \begin{aligned} H=P_s= \left[ \begin{matrix} \frac{\partial^2 f}{\partial x_1^2} & \frac{\partial^2 f}{\partial x_1 \partial y_1} & \dots &\frac{\partial^2 f}{\partial x_1 \partial y_3} \\[3ex] \frac{\partial^2 f}{\partial y_1 \partial x_1} &\frac{\partial^2 f}{\partial y_1^2} & \dots &\frac{\partial^2 f}{\partial y_1 \partial y_3} \\[3ex] \vdots & \vdots & \ddots & \vdots\\[3ex] \frac{\partial^2 f}{\partial y_3 \partial x_1} &\frac{\partial^2 f}{\partial y_3 \partial x_2} & \dots &\frac{\partial^2 f}{\partial y_3^2}\\ \end{matrix} \right] =\left[ \begin{array}{rrrrrr} 2& 0 & -4 &0 &2 & 0 \\ 0& 2& 0 &-4 &0 & 2 \\ -4& 0 & 8 &0 &-4 & 0 \\ 0& -4 & 0 &8 &0 & -4 \\ 2& 0 & -4 &0 &2 & 0 \\ 0& 2 & 0 &-4 &0 & 2 \\ \end{array} \right] \end{aligned} H=Ps= x122fy1x12fy3x12fx1y12fy122fy3x22fx1y32fy1y32fy322f = 204020020402408040040804204020020402
I = [ 1 0 0 1 ] \begin{aligned} I=\left[ \begin{matrix} 1 &0\\0 & 1 \end{matrix} \right] \end{aligned} I=[1001],则:
P s = [ 2 I − 4 I 2 I 8 I − 4 I 2 I ] = 2 × [ I − 2 I I 4 I − 2 I I ] \begin{aligned} P_s= \left[ \begin{array}{rrr} 2I &-4I &2I \\ & 8I & -4I \\ & & 2I \end{array} \right] =2 \times \left[ \begin{array}{rrr} I &-2I &I \\ & 4I & -2I \\ & & I \end{array} \right] \end{aligned} Ps= 2I4I8I2I4I2I =2× I2I4II2II

总结:

  • 直接法:预处理简单,后期处理复杂 A s A s T A_s{A_s}^T AsAsT 计算维数高,计算消耗大;
  • 海塞矩阵法:预处理繁琐,需求解二阶偏导数;

1.2 N点路径平滑

1.2.1 直接法

对于路径存在N个路径点:
c o s t s = ∑ i = 1 n − 2 ∣ ∣ v ⃗ i + 1 ∣ ∣ 2 = ∑ i = 1 n − 2 [ ( x i + x i + 2 − 2 x i + 1 ) 2 + ( y i + y i + 2 − 2 y i + 1 ) 2 ] = [ x 1 + x 3 − 2 x 2 y 1 + y 3 − 2 y 2 x 2 + x 4 − 2 x 3 … x n − 2 + x n − 2 x n − 1 y n − 2 + y n − 2 y n − 1 ] [ x 1 + x 3 − 2 x 2 y 1 + y 3 − 2 y 2 x 2 + x 4 − 2 x 3 ⋮ x n − 2 + x n − 2 x n − 1 y n − 2 + y n − 2 y n − 1 ] \begin{aligned} cost_s=\sum_{i=1}^{n-2}||\vec{v}_{i+1}||^2&=\sum_{i=1}^{n-2}[(x_i+x_{i+2}-2x_{i+1})^2+(y_i+y_{i+2}-2y_{i+1})^2] \\[2ex] &=\left[ \begin{matrix} x_1+x_3-2x_2 & y_1+y_3-2y_2 & x_2+x_4-2x_3 & \dots & x_{n-2}+x_n-2x_{n-1} & y_{n-2}+y_n-2y_{n-1} \end{matrix} \right] \left[ \begin{matrix} x_1+x_3-2x_2 \\ y_1+y_3-2y_2 \\ x_2+x_4-2x_3 \\ \vdots \\ x_{n-2}+x_n-2x_{n-1} \\ y_{n-2}+y_n-2y_{n-1} \end{matrix} \right] \end{aligned} costs=i=1n2∣∣v i+12=i=1n2[(xi+xi+22xi+1)2+(yi+yi+22yi+1)2]=[x1+x32x2y1+y32y2x2+x42x3xn2+xn2xn1yn2+yn2yn1] x1+x32x2y1+y32y2x2+x42x3xn2+xn2xn1yn2+yn2yn1

X = [ x 1 y 1 x 2 y 2 … x n y n ] T \begin{aligned} X=\left[ \begin{matrix} x_1 &y_1 & x_2&y_2&\dots&x_n&y_n \end{matrix} \right]^T \end{aligned} X=[x1y1x2y2xnyn]T,则:
[ x 1 + x 3 − 2 x 2 y 1 + y 3 − 2 y 2 x 2 + x 4 − 2 x 3 … x n − 2 + x n − 2 x n − 1 y n − 2 + y n − 2 y n − 1 ] = [ x 1 y 1 x 2 y 2 … x n y n ] [ 1 0 0 0 1 0 − 2 0 1 0 0 − 2 0 1 1 0 − 2 0 0 1 0 − 2 1 0 0 1 … ⋮ ] { 2 n } × { 2 n − 4 } = X T A s \begin{aligned} &\left[ \begin{matrix} x_1+x_3-2x_2 & y_1+y_3-2y_2 & x_2+x_4-2x_3 & \dots & x_{n-2}+x_n-2x_{n-1} & y_{n-2}+y_n-2y_{n-1} \end{matrix} \right] \\[3ex] &=\left[ \begin{matrix} x_1 &y_1 & x_2&y_2&\dots&x_n&y_n \end{matrix} \right]\left[ \begin{array}{rrrr} 1 &0 &0\\ 0&1&0\\-2&0 &1&0\\ 0&-2 &0&1\\1&0 &-2&0\\ 0&1&0&-2\\ &&1&0\\ &&0&1&\dots \\ &&&\vdots \end{array} \right]_{\{2n\}\times\{2n-4\} }\\[3ex] &=X^TA_s \end{aligned} [x1+x32x2y1+y32y2x2+x42x3xn2+xn2xn1yn2+yn2yn1]=[x1y1x2y2xnyn] 10201001020100102010010201 {2n}×{2n4}=XTAs

此时,同 1.1.1 直接法
c o s t s = X T A s ( X T A s ) T = X T A s A s T X = X T P s X \begin{aligned} cost_s =X^TA_s(X^TA_s)^T =X^TA_sA_s^TX =X^TP_sX \end{aligned} costs=XTAs(XTAs)T=XTAsAsTX=XTPsX

I = [ 1 0 0 1 ] O = [ 0 0 0 0 ] \begin{aligned} I=\left[ \begin{matrix} 1 &0\\0 & 1 \end{matrix} \right] \end{aligned} \quad \begin{aligned} O=\left[ \begin{matrix} 0 &0\\0 & 0 \end{matrix} \right] \end{aligned} I=[1001]O=[0000],则:
A s = [ I − 2 I I I − 2 I I … ⋮ ] A_s= \begin{aligned} \left[ \begin{array}{rrrr} I \\ -2I & I \\ I & -2I \\ & I & \dots \\ & \vdots \end{array} \right] \end{aligned} As= I2III2II

n = 3 n=3 n=3 时,
P s = A s A s T = [ I − 2 I I 4 I − 2 I I ] P_s=A_sA_s^T= \begin{aligned} \left[ \begin{array}{rrrr} I & -2I & I \\ & 4I &-2I\\ && I \end{array} \right] \end{aligned} Ps=AsAsT= I2I4II2II
n ⩾ 4 n\geqslant4 n4 时,
P s = A s A s T = [ I − 2 I I O O … O 5 I − 4 I I O … O 6 I − 4 I I … O ⋮ ⋮ ⋮ 6 I − 4 I I 5 I − 2 I I ] P_s=A_sA_s^T= \begin{aligned} \left[ \begin{array}{rrrrrrr} I & -2I & I & O&O& \dots &O\\ & 5I&-4I &I&O&\dots & O\\ && 6I&-4I & I &\dots&O\\ && & & \vdots &\vdots&\vdots\\ &&&& 6I&-4I & I\\ &&&&& 5I&-2I\\ &&&&&&I\\ \end{array} \right] \end{aligned} Ps=AsAsT= I2I5II4I6IOI4IOOI6I4I5IOOOI2II

1.2.2 海塞矩阵法

同 1.1.2 海塞矩阵法

相关文章:

  • PX4 | 无人机关闭磁力计罗盘飞行(yaw estimate error报错解决方法)
  • Vue事件总线
  • windows命令行面板升级Git版本
  • 面试总结一
  • 【HarmonyOS 5】 社交行业详解以及 开发案例
  • Tailwind CSS 实战:基于 Kooboo 构建 AI 对话框页面(七):消息框交互功能添加
  • 第二章支线八 ·CSS终式:Tailwind与原子风暴
  • 一个基于Java的简单抢单功能实现示例,模拟多线程环境下的并发抢单场景
  • c#基础010(程序结构)
  • JavaSec-XSS
  • Mysql 身份认证绕过漏洞 CVE-2012-2122
  • OpenResty 安装指南
  • DNS攻击类型有哪些?如何应对DNS攻击威胁?
  • 12.MySQL视图特性
  • 高敏感应用如何保护自身不被逆向?iOS 安全加固策略与工具组合实战(含 Ipa Guard 等)
  • 无法下载CUDA,下载界面链接打开异常
  • Linux网络——socket网络通信udp
  • 13.4 AI颠覆语言学习:预录制视频+GPT-4评估如何实现60%成本降低与40%留存飙升
  • JSON Web Token (JWT) 详解:由来、原理与应用实践
  • CloudCompare——计算点云表面曲率
  • 南通企业网站怎么建设/查域名网站
  • 上传的网站打不开/宁波网络推广软件
  • 惠州的企业网站建设/最好用的搜索引擎
  • 专门做asmr的网站/2345网址导航用户中心
  • 如何让网站不被收录/好口碑的关键词优化
  • 网站支付链接怎么做的/网络营销实施方案