【移动机器人运动规划】03 —— 基于运动学、动力学约束的路径规划

news2024/10/7 4:34:27

文章目录

  • 前言
    • 相关代码整理:
    • 相关文章:
  • 介绍
    • 什么是kinodynamic?
    • 为什么需要kinodynamic?
    • 模型示例
      • unicycle model(独轮车模型)
      • differential model(两轮差速模型)
      • Simplified car model (简化车辆模型)
  • State Lattice Planning
    • Sample in control space
      • 示例1
      • 示例2
    • Sample in state space
      • 示例1
      • 示例2
    • 比较
    • Boundary Value Problem (BVP)
    • Optimal Boundary Value Problem (OBVP)
      • Pontryagin’s minimum principle
      • 应用
    • Trajectory library(轨迹库)
    • Heuristic design(启发式设计)
    • Planning in Frenet-serret Frame
  • Hybrid A*
    • 启发函数的设计
    • 其他技巧
  • Kinodynamic RRT*
    • 如何采样
    • 如何进行最优控制的连接
  • 参考文献

前言

本文部分内容参考了深蓝学院的移动机器人运动规划,依此做相关的笔记与整理。

相关代码整理:

  1. https://gitee.com/lxyclara/motion-plan-homework/
  2. https://github.com/KailinTong/Motion-Planning-for-Mobile-Robots/blob/master
  3. https://gitee.com/aries-wu/Motion-plan/blob/main/
  4. 链接: https://pan.baidu.com/s/1UtVHRxDq771LfSGK_21wgQ?pwd=rhtp 提取码: rhtp

相关文章:

  1. 自动驾驶路径规划——轨迹规划(详解插值法)

介绍

什么是kinodynamic?

K i n o d y n a m i c : K i n e m a t i c + D y n a m i c Kinodynamic : Kinematic + Dynamic Kinodynamic:Kinematic+Dynamic
在这里插入图片描述

运动学规划问题是综合机器人的运动,同时受到运动学约束(如避开障碍物)和动力学约束(如速度、加速度和力的模量边界)。动力学解是从时间到广义力或加速度的映射。

• Differentially constrained(微分约束)
• Up to force (acceleration),考虑到力(加速度)

为什么需要kinodynamic?

之前几节介绍的规划算法往往没有考虑到系统的微分约束,状态点之间的连接形成的路线不能直接被用作无人车、无人机的轨迹。

这里可能又会产生新的疑惑?传统的Pipeline通过先规划出一条路径,在通过后端轨迹优化的方式,同样也能得到适用于无人车的轨迹。但是,若在前端不考虑运动学/动力学的约束,完全交由后端的轨迹优化进行,那么后端的负担就会比较大。
在这里插入图片描述
规划通常需要以下几点:
• Coarse-to-fine process(流程从粗到细)
• Trajectory only optimizes locally (轨迹优化基于局部的状况)
• Infeasible path means nothing to nonholonomic system(在非完整系统中,一些不可行路径将会毫无意义)

基于kinodynamic的规划算法可以在path finding这一步就可以得到比较理想的轨迹,再在trajectory optimization部分优化时,任务相对轻松一些。

如下图右图无人机规划图所示,若采用单纯的前端不考虑运动学/动力学的规划+后端轨迹优化的方式,规划出的路径是紫色实线,很显然无人机依据这个路径得到最终的轨迹会是紫色虚线部分,相比右侧考虑了kinodynamic的规划,轨迹质量更差,需要无人机通过减速、转向等操作才能进行轨迹跟踪。

同样的,从左图的泊车规划示意图中可以看到轨迹是考虑了车辆的运动学/动力学模型的,车辆无法进行侧向移动(暂时不考虑全向麦轮),若按传统方式进行规划,则毫无意义。
在这里插入图片描述

模型示例

详细部分可以参考《PLANNING ALGORITHM》这本书

unicycle model(独轮车模型)

在这里插入图片描述
状态方程如下:

( x ˙ y ˙ θ ˙ ) = ( c o s θ s i n θ 0 ) ⋅ ν + ( 0 0 1 ) ⋅ ω \begin{pmatrix}\dot{x}\\\dot{y}\\\dot{\theta}\end{pmatrix}=\begin{pmatrix}cos\theta\\sin\theta\\0\end{pmatrix}\cdot\nu+\begin{pmatrix}0\\0\\1\end{pmatrix}\cdot\omega x˙y˙θ˙ = cosθsinθ0 ν+ 001 ω

独轮车模型对于速度 v v v、角速度 ω \omega ω有以下约束:
∣ v ∣ ≤ ν max ⁡ ∣ ω ∣ ≤ ω max ⁡ \begin{aligned}|v|&\leq\nu_{\max}\\|\omega|&\leq\omega_{\max}\end{aligned} vωνmaxωmax

differential model(两轮差速模型)

在这里插入图片描述
状态方程如下:

( x ˙ y ˙ θ ˙ ) = ( r 2 ( ω l + ω r ) c o s θ r 2 ( ω l + ω r ) s i n θ r L ( ω r − ω l ) ) \begin{pmatrix}\dot{x}\\\dot{y}\\\dot{\theta}\end{pmatrix}=\begin{pmatrix}\dfrac{r}{2}(\omega_l+\omega_r)cos\theta\\\dfrac{r}{2}(\omega_l+\omega_r)sin\theta\\\dfrac{r}{L}(\omega_r-\omega_l)\end{pmatrix} x˙y˙θ˙ = 2r(ωl+ωr)cosθ2r(ωl+ωr)sinθLr(ωrωl) v = r 2 ( ω l + ω r ) c o s θ v=\frac r2(\omega_l+\omega_r)cos\theta v=2r(ωl+ωr)cosθ ω = r L ( ω r − ω l ) \begin{aligned}\omega=\frac{r}{L}(\omega_r-\omega_l)\end{aligned} ω=Lr(ωrωl)

其左右轮角速度有以下限制:
∣ ω l ∣ ≤ ω l , m a x ∣ ω r ∣ ≤ ω r , m a x \begin{aligned}|\omega_l|&\leq\omega_{l,max}\\|\omega_r|&\leq\omega_{r,max}\end{aligned} ωlωrωl,maxωr,max

Simplified car model (简化车辆模型)

在这里插入图片描述

状态方程如下:

( x ˙ y ˙ θ ˙ ) = ( v c o s θ v s i n θ r L t a n ϕ ) \begin{pmatrix}\dot{x}\\\dot{y}\\\dot{\theta}\end{pmatrix}=\begin{pmatrix}v cos\theta\\v sin\theta\\\frac{r}{L}tan\phi\end{pmatrix} x˙y˙θ˙ = vcosθvsinθLrtanϕ

模型约束
Simple car model在这里插入图片描述
Reeds & Shepp’s car$12
Dubin’s car$1

State Lattice Planning

相比较之前的搜索算法,我们需要图中的连接是可行的、符合车辆动力学约束的。

同时,对于图的建立,包括正向连接和反向连接。正向的方法将机器人的控制空间进行离散化;反向的方向则是对周围的状态空间进行离散化。
在这里插入图片描述

具体到小车/机器人的控制,可以进行以下描述:

对于一个机器人模型 s ˙ = f ( s , u ) \dot s = f(s,u) s˙=f(s,u),假设我已知机器人的初始位置 s 0 s_0 s0,我们可以用以下两种方式对机器人接下来可行的运动进行描述:

  1. 选择控制量 u u u,确定经历的时间 T T T,可以用数值积分的方式正向仿真出机器人接下来的位置。其具有以下的特点
  • 正向仿真
  • 确定的 u , T u,T u,T
  • 比较容易实现
  • 缺乏任务的引导,没有目的性
  • 规划效率比较率比较低
    在这里插入图片描述
  1. 选定一个状态量 s f s_f sf,确定出从 s 0 s_0 s0 s f s_f sf之间的轨迹。
  • 后向的计算
  • 需要计算 u , T u,T u,T
  • 良好的任务引导性
  • 比较难以去实现
  • 规划效率比较高
    在这里插入图片描述

Sample in control space

示例1

以无人机的模型为例,模型状态变量为 s s s,控制输入量为 u u u

State:   s = ( x y z x ˙ y ˙ z ˙ ) Input:  u = ( x ¨ y ¨ z ¨ ) \textbf{State: s}=\begin{pmatrix}x\\y\\z\\\dot{x}\\\dot{y}\\\dot{z}\end{pmatrix}\quad\text{Input: }u=\begin{pmatrix}\ddot{x}\\\ddot{y}\\\ddot{z}\end{pmatrix} State: s= xyzx˙y˙z˙ Input: u= x¨y¨z¨

系统的状态方程为: s ˙ = A ⋅ s + B ⋅ u \dot s = A\cdot s + B\cdot u s˙=As+Bu , A = [ 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] B = [ 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 ] A=\begin{bmatrix}0&0&0&1&0&0\\0&0&0&0&1&0\\0&0&0&0&0&1\\0&0&0&0&0&0\\0&0&0&0&0&0\\0&0&0&0&0&0\end{bmatrix}\quad B=\begin{bmatrix}0&0&0\\0&0&0\\0&0&0\\1&0&0\\0&1&0\\0&0&1\end{bmatrix} A= 000000000000000000100000010000001000 B= 000100000010000001

高维推广之后,可以得到如下矩阵: A = [ 0 I 3 0 ⋯ 0 0 0 I 3 ⋯ 0 ⋮ ⋱ ⋱ ⋱ ⋮ 0 ⋯ ⋯ 0 I 3 0 ⋯ ⋯ 0 0 ] B = [ 0 0 ⋮ 0 I 3 ] A=\begin{bmatrix}0&I_3&0&\cdots&0\\0&0&I_3&\cdots&0\\\vdots&\ddots&\ddots&\ddots&\vdots\\0&\cdots&\cdots&0&I_3\\0&\cdots&\cdots&0&0\end{bmatrix}\quad B=\begin{bmatrix}0\\0\\\vdots\\0\\I_3\end{bmatrix} A= 0000I300I30000I30 B= 000I3

矩阵A是幂零矩阵。

下图是一个基于加速度和jerk的九个平面运动单元从初始点到目标点的移动状态。

在这里插入图片描述
上述模型在线性时不变系统中可以如下表述:
在这里插入图片描述
所以,当A为幂零矩阵时,状态转移矩阵将可以变得更简洁,后面的高阶项会为0。

If matrix A ∈ R n × n is nilpotent,i.e. A n = 0 , e A t has a closed-form expression in the form of an ( n − 1 ) degree matrix polynomial in t . \begin{array}{l}\text{If matrix A}\in R^{n\times n}\text{is nilpotent,i.e.}A^n=0,\quad e^{At}\text{has a closed-form}\\\text{expression in the form of an}(n-1)\text{degree matrix polynomial in t}.\end{array} If matrix ARn×nis nilpotent,i.e.An=0,eAthas a closed-formexpression in the form of an(n1)degree matrix polynomial in t.

在这里插入图片描述
PS:在搜索时,只有在有必要的时刻才会进行建图;只有当真正发现节点时,才会建立相应的节点和边;这种带有目的性/启发性的方式,
可以减少计算量。

示例2

以简化后的车辆模型为例: State: s = ( x y θ ) Input:  u = ( v ∅ ) System equation: ( x ˙ y ˙ θ ˙ ) = ( v ⋅ c o s θ v ⋅ s i n θ r L ⋅ t a n ϕ ) \begin{aligned}\text{State: s}=\begin{pmatrix}x\\y\\\theta\end{pmatrix}\quad\text{Input: }u=\begin{pmatrix}v\\\emptyset\end{pmatrix}\\\text{System equation:}\begin{pmatrix}\dot{x}\\\dot{y}\\\dot{\theta}\end{pmatrix}=\begin{pmatrix}v\cdot cos\theta\\v\cdot sin\theta\\\frac rL\cdot tan\phi\end{pmatrix}\end{aligned} State: s= xyθ Input: u=(v)System equation: x˙y˙θ˙ = vcosθvsinθLrtanϕ

在这里插入图片描述
主要有以下步骤:

  1. 对于每一个从搜索树中可以找到的状态 s s s
  2. 选取一定的控制量 u u u
  3. 对其在一定的时间段内进行数值积分
  4. 若得到的边遇到了障碍物,则排除;若没有则不排除

参考论文:Search-based Motion Planning for Quadrotors using Linear Quadratic Minimum Time Control,Sikang Liu, Nikolay Atanasov, Kartik Mohta, and Vijay Kumar

Sample in state space

示例1

基于Reeds-Shepp Car Model完成,状态空间离散化,根据给定的状态计算控制参数。
在这里插入图片描述

参考论文:Generating Near Minimal Spanning Control Sets for Constrained Motion Planning in Discrete State Spaces,Mihail Pivtoraiko and Alonzo Kelly

示例2

建立两层的lattice graph,第一层根据车辆的初始状态以及第一层离散化后的状态进行计算得到轨迹,第二次再次离散化状态空间,再次计算。
在这里插入图片描述

参考论文:Optimal Rough Terrain Trajectory Generation for Wheeled Mobile Robots, Thomas M. Howard Alonzo Kelly

比较

控制空间采样的方式难以得到有效的轨迹,同时自由度有限;状态空间采样的方式计算难度大。
在这里插入图片描述

参考论文:State Space Sampling of Feasible Motions for High-Performance Mobile Robot Navigation in Complex Environments, Thomas M. Howard, Colin J. Green, and Alonzo Kelly

Boundary Value Problem (BVP)

BVP是状态空间采样的基础,通常没有通用的解决方案,一般需要复杂的数值优化方法去解决。

首先介绍一下常用的五次多项式插值方法,这部分还可以参考 自动驾驶路径规划——轨迹规划(详解插值法)这篇博文。

首先可以依据起始点、终点状态设置轨迹
在这里插入图片描述

之后,利用待定系数法构造多项式,依据边界条件(位置、速度、加速),建立方程组进行求解。

在这里插入图片描述

Optimal Boundary Value Problem (OBVP)

论文:A Computationally Efficient Motion Primitive for Quadrocopter Trajectory Generation, Mark W. Mueller, Markus Hehn, and Raffaello D’Andrea Dynamic Programming and Optimal Control, D. P. Bertsekas
相关博客:庞特里亚金最小值原理解最优控制问题

通过BVP的方式,能求得轨迹的解,但通常不是最优的,因此需要用到OBVP。
在这里插入图片描述

首先构建目标函数,对jerk的平方的积分求取最小值:
J Σ = ∑ k = 1 3 J k , J k = 1 T ∫ 0 T j k ( t ) 2 d t . \begin{aligned}J_{\Sigma}&=\sum_{k=1}^{3}J_{k},J_{k}=\frac{1}{T}\int_{0}^{T}j_{k}(t)^2dt.\end{aligned} JΣ=k=13Jk,Jk=T10Tjk(t)2dt.系统的状态变量是: s k = ( p k , v k , a k ) s_k = (p_k,v_k,a_k) sk=(pk,vk,ak),系统的输入是 u k = j k u_k = j_k uk=jk
系统模型为: s ˙ = f s ( s k , u k ) = ( v k , a k , j k ) \dot s = f_s(s_k,u_k)=(v_k,a_k,j_k) s˙=fs(sk,uk)=(vk,ak,jk), k k k代表了维度。

之后通过Pontryagin’s minimum principle(庞特里亚金最小值原理)进行求解。

对于Pontryagin’s minimum principle,首先简要介绍一下costate协态 λ \lambda λ λ = ( λ 1 , λ 2 , λ 3 ) \lambda = (\lambda_1,\lambda_2,\lambda_3) λ=(λ1,λ2,λ3),可以简单理解为有多少状态量就有多少costate。定义Hamiltonian(汉密尔顿)函数: H ( s , u , λ ) = 1 T j 2 + λ T f s ( s , u ) = 1 T j 2 + λ 1 v + λ 2 a + λ 3 j \begin{aligned} H\left(s,u,\lambda\right)& \begin{aligned}=\frac1Tj^2+\lambda^Tf_s(s,u)\end{aligned} \\ &=\frac1Tj^2+\lambda_1v+\lambda_2a+\lambda_3j \end{aligned} H(s,u,λ)=T1j2+λTfs(s,u)=T1j2+λ1v+λ2a+λ3j

Pontryagin’s minimum principle

通常来说,最有问题的目标函数是由终末状态的惩罚项(final state)和从0到T时刻都能量损耗(transition cost)。
在这里插入图片描述

接下来,写出系统的汉密尔顿函数。它由状态量 s s s, 控制量 u u u,以及协态costate λ \lambda λ组成, H ( s , u , λ ) = g ( s , u ) + λ T f ( s , u ) λ = ( λ 1 , λ 2 , λ 3 ) \begin{aligned}H(s,u,\lambda)&=g(s,u)+\lambda^Tf(s,u)\\\lambda&=(\lambda_1,\lambda_2,\lambda_3)\end{aligned} H(s,u,λ)λ=g(s,u)+λTf(s,u)=(λ1,λ2,λ3)最后求解出最优的状态函数 s ∗ s^* s,表示轨迹,以及最优的控制量 u ∗ u^* u
在这里插入图片描述
λ ( t ) \lambda(t) λ(t)是如下方程的解: λ ˙ ( t ) = − ∇ s H ( s ∗ ( t ) , u ∗ ( t ) , λ ( t ) ) \dot{\lambda}(t)=-\nabla_sH(s^*(t),u^*(t),\lambda(t)) λ˙(t)=sH(s(t),u(t),λ(t)),具有如下边界条件: λ ( T ) = − ∇ h ( s ∗ ( T ) ) \lambda(T)=-\nabla h(s^*(T)) λ(T)=h(s(T)),h被定义成终末状态的函数。这个公式代表终末状态时间 T T T的时候,协态与终末状态中最优的自由量的梯度的和等于0(我们要求上面的问题中的终末状态的p,v,a均达到指定状态,那么这个公式就没了,因为终末状态没有任何自由度)。 最后最优的控制是具有最优状态的汉密尔顿函数的最小值: u ∗ ( t ) = arg ⁡ min ⁡ u ( t ) H ( s ∗ ( t ) , u ( t ) , λ ( t ) ) \begin{aligned}u^*(t)=\arg\min_{u(t)}H(s^*(t),u(t),\lambda(t))\end{aligned} u(t)=argu(t)minH(s(t),u(t),λ(t))

应用

为了方便,设定 k = 1 k=1 k=1,则系统模型可以如下表述: s ˙ = f s ( s , u ) = ( v , a , j ) \dot s = f_s(s,u)=(v,a,j) s˙=fs(s,u)=(v,a,j)其汉密尔顿函数为: H ( s , u , λ ) = 1 T j 2 + λ T f s ( s , u ) = 1 T j 2 + λ 1 v + λ 2 a + λ 3 j \begin{aligned} H\left(s,u,\lambda\right)& \begin{aligned}=\frac1Tj^2+\lambda^Tf_s(s,u)\end{aligned} \\ &=\frac1Tj^2+\lambda_1v+\lambda_2a+\lambda_3j \end{aligned} H(s,u,λ)=T1j2+λTfs(s,u)=T1j2+λ1v+λ2a+λ3j s s s的每个分量 ( p , v , a ) (p,v,a) (p,v,a)进行求得可得: λ ˙ = − ∇ s H ( s ∗ , u ∗ , λ ) = ( 0 , − λ 1 , − λ 2 ) \dot{\lambda}=-\nabla_sH\left(s^*,u^*,\lambda\right)=\left(0,-\lambda_1,-\lambda_2\right) λ˙=sH(s,u,λ)=(0,λ1,λ2) λ 1 \lambda_1 λ1的导数是 λ 2 \lambda_2 λ2 λ 2 \lambda_2 λ2的导数是 λ 3 \lambda_3 λ3,易得常微分方程组的解为: λ ( t ) = [ α − α t + β 0.5 α t 2 − β t + γ ] \lambda(t)=\begin{bmatrix}\alpha\\-\alpha t+\beta\\0.5\alpha t^2-\beta t+\gamma\end{bmatrix} λ(t)= ααt+β0.5αt2βt+γ 配凑系数后可得 λ ( t ) = 1 T [ − 2 α 2 α t + 2 β − α t 2 − 2 β t − 2 γ ] \lambda(t)=\frac1T\begin{bmatrix}-2\alpha\\2\alpha t+2\beta\\-\alpha t^2-2\beta t-2\gamma\end{bmatrix} λ(t)=T1 2α2αt+2βαt22βt2γ 接下来求解 u u u的最优解,由 u ∗ ( t ) = j ∗ ( t ) = arg ⁡ min ⁡ j ( t ) H ( s ∗ ( t ) , j ( t ) , λ ( t ) ) u^*(t)=j^*(t)=\arg\min_{j(t)}H(s^*(t),j(t),\lambda(t)) u(t)=j(t)=argminj(t)H(s(t),j(t),λ(t))可知 u u u的最优解与 s ∗ ( t ) s^*(t) s(t)有关。
s ∗ ( t ) = ( p ∗ , v ∗ , a ∗ ) s^*(t)=(p^*,v^*,a^*) s(t)=(p,v,a)
∴汉密尔顿函数可以改写为: H ( s , u , λ ) = 1 T j 2 + λ T f s ( s , u ) = 1 T j 2 + λ 1 v ∗ + λ 2 a ∗ + λ 3 j \begin{aligned} H(s,u,\lambda)& =\frac1Tj^2+\lambda^Tf_s(s,u) \\ &=\frac1Tj^2+\lambda_1v^*+\lambda_2a^*+\lambda_3j \end{aligned} H(s,u,λ)=T1j2+λTfs(s,u)=T1j2+λ1v+λ2a+λ3j此时可得, H H H目前只剩下 j j j一个变量,只需对其求得,便可求得控制量 u u u: u ∗ ( t ) = j ∗ ( t ) = arg ⁡ min ⁡ j ( t ) H ( s ∗ ( t ) , j ( t ) , λ ( t ) ) = 1 2 α t 2 + β t + γ \begin{aligned} u^{*}(t)& =j^*(t)=\arg\min_{j(t)}H\left(s^*(t),j(t),\lambda(t)\right) \\ &=\frac12\alpha t^2+\beta t+\gamma \end{aligned} u(t)=j(t)=argj(t)minH(s(t),j(t),λ(t))=21αt2+βt+γ现在有了最优的控制表达式,进行一次积分获得 a a a,在积分获得 v v v,在积分获得 p p p,于是 s ∗ ( t ) = [ α 120 t 5 + β 24 t 4 + γ 6 t 3 + a 0 2 t 2 + v 0 t + p 0 α 24 t 4 + β 6 t 3 + γ 2 t 2 + a 0 t + v 0 α 6 t 3 + β 2 t 2 + γ t + a 0 ] Initial state: s ( 0 ) = ( p 0 , v 0 , a 0 ) \begin{aligned}\mathrm{s}^*(t)=\left[\begin{aligned}\frac{\alpha}{120}t^5+\frac{\beta}{24}t^4+\frac{\gamma}{6}t^3+\frac{a_0}{2}t^2+v_0t+p_0\\\frac{\alpha}{24}t^4+\frac{\beta}{6}t^3+\frac{\gamma}{2}t^2+a_0t+v_0\\\frac{\alpha}{6}t^3+\frac{\beta}{2}t^2+\gamma t+a_0\end{aligned}\right]\\\text{Initial state:}\quad s(0)=(p_0,v_0,a_0)\end{aligned} s(t)= 120αt5+24βt4+6γt3+2a0t2+v0t+p024αt4+6βt3+2γt2+a0t+v06αt3+2βt2+γt+a0 Initial state:s(0)=(p0,v0,a0)现在, s ∗ ( t ) s^*(t) s(t)中的 α 、 β 、 γ \alpha、\beta、\gamma αβγ还未确定,可以用末尾时刻的边界条件进行确定。令 t = T t=T t=T,同时代入末尾状态 s f s_f sf时的 p , v , a p,v,a p,v,a的值,可得 [ 1 120 T 5 1 24 T 4 1 6 T 3 1 24 T 4 1 6 T 3 1 2 T 2 1 6 T 3 1 2 T 2 T ] [ α β γ ] = [ Δ p Δ v Δ a ] [ Δ p Δ v Δ a ] = [ p f − p 0 − v 0 T − 1 2 a 0 T 2 v f − v 0 − a 0 T a f − a 0 ] \begin{gathered} \begin{bmatrix}\dfrac{1}{120}T^5&\dfrac{1}{24}T^4&\dfrac{1}{6}T^3\\\dfrac{1}{24}T^4&\dfrac{1}{6}T^3&\dfrac{1}{2}T^2\\\dfrac{1}{6}T^3&\dfrac{1}{2}T^2&T\end{bmatrix}\begin{bmatrix}\alpha\\\beta\\\gamma\end{bmatrix}=\begin{bmatrix}\Delta p\\\Delta v\\\Delta a\end{bmatrix} \\ \begin{bmatrix}\Delta p\\\Delta v\\\Delta a\end{bmatrix}=\begin{bmatrix}p_f-p_0-\boldsymbol{v}_0T-\frac12\boldsymbol{a}_0T^2\\\boldsymbol{v}_f-\boldsymbol{v}_0-\boldsymbol{a}_0T\\\boldsymbol{a}_f-\boldsymbol{a}_0\end{bmatrix} \end{gathered} 1201T5241T461T3241T461T321T261T321T2T αβγ = ΔpΔvΔa ΔpΔvΔa = pfp0v0T21a0T2vfv0a0Tafa0

解方程组得:
[ α β γ ] = 1 T 5 [ 720 − 360 T 60 T 2 − 360 T 168 T 2 − 24 T 3 60 T 2 − 24 T 3 3 T 4 ] [ Δ p Δ v Δ a ] \begin{bmatrix}\alpha\\\beta\\\gamma\end{bmatrix}=\frac1{T^5}\begin{bmatrix}720&-360T&60T^2\\-360T&168T^2&-24T^3\\60T^2&-24T^3&3T^4\end{bmatrix}\begin{bmatrix}\Delta p\\\Delta v\\\Delta a\end{bmatrix} αβγ =T51 720360T60T2360T168T224T360T224T33T4 ΔpΔvΔa

将结果回代目标函数可得:
J = γ 2 + β γ T + 1 3 β 2 T 2 + 1 3 α γ T 2 + 1 4 α β T 3 + 1 20 α 2 T 4 \begin{aligned}J&=\gamma^2+\beta\gamma T+\frac13\beta^2T^2+\frac13\alpha\gamma T^2+\frac14\alpha\beta T^3+\frac1{20}\alpha^2T^4\end{aligned} J=γ2+βγT+31β2T2+31αγT2+41αβT3+201α2T4可见,因为 α 、 β 、 γ \alpha、\beta、\gamma αβγ都与 T T T相关,显然可得目标函数 J J J只与 T T T相关。对 J J J求导,就可以求得最优解。

另外:
若在末尾状态时,不完全指定 p , v , a p,v,a p,v,a时,仍然能利用pontryagin’s minimum princple进行计算。利用边界条件 λ ( t ) = − ∇ h ( s ∗ ( t ) ) \lambda(t)=-\nabla h(s^*(t)) λ(t)=h(s(t)),
对于末尾条件确定的情况, h ( s ( T ) ) = { 0 , i f s = s ( T ) ∞ , o t h e r w i s e h(s(T))=\begin{cases}0,&\quad if\quad s=s(T)\\\infty,&\quad otherwise&\end{cases} h(s(T))={0,,ifs=s(T)otherwise并不可微。

对于末尾条件不完全确定的情况,则对未给定的量利用边界条件求偏导进行计算。 g i v e n s i ( T ) ,   i ∈ I given\quad s_i(T),\mathrm{~}i\in I givensi(T), iI λ j ( T ) = ∂ h ( s ∗ ( T ) ) ∂ s j ,   f o r   j ≠ i \lambda_j(T)=\frac{\partial h(s^*(T))}{\partial s_j},~for~j\neq i λj(T)=sjh(s(T)), for j=i

论文的附录也给出了相应的情况
在这里插入图片描述
其他相关论文:Optimal Rough Terrain Trajectory Generation for Wheeled Mobile Robots, Thomas M. Howard Alonzo Kelly

Trajectory library(轨迹库)

利用轨迹库,使用cost函数进行评价、打分,作局部路径规划
在这里插入图片描述
相关论文:Maximum Likelihood Path Planning for Fast Aerial Maneuvers and Collision Avoidance Ji Zhang, Chen Hu, Rushat Gupta Chadha, and Sanjiv Singh

Heuristic design(启发式设计)

通过启发函数加速搜索。(结合考虑动力学不考虑障碍物的估计方法与考虑障碍物不考虑动力学的估计方法。)
在这里插入图片描述

论文:Planning Long Dynamically Feasible Maneuvers for Autonomous Vehicles, Maxim Likhachev, Dave Ferguson
论文:Path Planning for Autonomous Vehicles in Unknown Semi-structured Environments, Dmitri Dolgov, Sebastian Thrun, Michael Montemerlo, James Diebel

Planning in Frenet-serret Frame

在这里插入图片描述
在这里插入图片描述
PS1:横纵向解耦
PS2:构造横纵方向上的五次多项式,确定起始条件和终止条件(车道线跟踪时的终止条件要注意)

论文:Optimal Trajectory Generation for Dynamic Street Scenarios in a Frenet Frame, Moritz Werling, Julius Ziegler, Sören Kammel, and Sebastian Thrun
论文:Optimal trajectories for time-critical street scenarios using discretized terminal manifolds, Moritz Werling, Sören Kammel, Julius Ziegler and Lutz Gröll

Hybrid A*

论文:Practical Search Techniques in Path Planning for Autonomous Driving, Dmitri Dolgov, Sebastian Thrun Path Planning for
论文:Path Planning for Autonomous Vehicles in Unknown Semi-structured Environments, Dmitri Dolgov, Sebastian Thrun

稠密的lattice graph构建会花费大量的时间、占据大量计算资源,需要对其进行剪枝(prune)。hybrid Astar 采用了lattice和栅格地图结合的方式进行剪枝,保证每一个栅格内只有状态点。
在这里插入图片描述
hybrid Astar 和Astar的伪代码有以下几点不同:

  1. 启发函数不同。
  2. 扩展节点的方式不同。hybrid Astar通过对state的推算进行扩展。
  3. 要记录节点的状态state
  4. 要对节点的state进行更新
    在这里插入图片描述

启发函数的设计

non-holonomic-without-obstacles + holonomic-with-obstacles
结合考虑动力学不考虑障碍物的估计方法与考虑障碍物不考虑动力学的估计方法。
在这里插入图片描述

其他技巧

Analytic Expansions: One shot heuristic Add a state-driven bias towards the searching process

每个N个节点,对扩展的节点直接计算到终点的曲线,若符合动力学约束且无障碍,则直接结束规划。对于N的设计,可以与终点的距离成反比。
在这里插入图片描述
另:
Robust and Efficient Quadrotor Trajectory Generation for Fast Autonomous Flight, Boyu Zhou, Fei Gao
https://github.com/HKUST-Aerial-Robotics/Fast-Planner

Kinodynamic RRT*

RRT*具体细节回顾上一讲【移动机器人运动规划】02 —— 基于采样的规划算法

如何采样

不仅仅要对位置( x , y , z x,y,z x,y,z)进行采样,需要对整个状态空间进行采样,包括( p , v p,v p,v)等状态变量。
在这里插入图片描述

如何进行最优控制的连接

在这里插入图片描述在这里插入图片描述

目标函数是(时间+控制量 u 2 u^2 u2), R R R是权重。
在这里插入图片描述

用controllability Gramian的方式去求解lyapunov equation,求解出最优控制为 u ∗ ( t ) u^*(t) u(t)

在这里插入图片描述在这里插入图片描述

c [ τ ] c[\tau] c[τ]为关于时间和控制量 u u u的代价函数
在这里插入图片描述在这里插入图片描述

chooseparent 查找的范围不仅仅是以欧式距离作为指标,而是以最优控制的cost最为指标
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

高维kdtree查询
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

参考文献

[1] Search-based Motion Planning for Quadrotors using Linear Quadratic Minimum Time Control,Sikang Liu, Nikolay Atanasov, Kartik Mohta, and Vijay Kumar
[2] Generating Near Minimal Spanning Control Sets for Constrained Motion Planning in Discrete State Spaces,Mihail Pivtoraiko and Alonzo Kelly
[3] Optimal Rough Terrain Trajectory Generation for Wheeled Mobile Robots, Thomas M. Howard Alonzo Kelly
[4] State Space Sampling of Feasible Motions for High-Performance Mobile Robot Navigation in Complex Environments, Thomas M. Howard, Colin J. Green, and Alonzo Kelly
[5] A Computationally Efficient Motion Primitive for Quadrocopter Trajectory Generation, Mark W. Mueller, Markus Hehn, and Raffaello D’Andrea Dynamic Programming and Optimal Control, D. P. Bertsekas
[6] 庞特里亚金最小值原理解最优控制问题
[7] Maximum Likelihood Path Planning for Fast Aerial Maneuvers and Collision Avoidance Ji Zhang, Chen Hu, Rushat Gupta Chadha, and Sanjiv Singh
[8] Planning Long Dynamically Feasible Maneuvers for Autonomous Vehicles, Maxim Likhachev, Dave Ferguson
[9] Path Planning for Autonomous Vehicles in Unknown Semi-structured Environments, Dmitri Dolgov, Sebastian Thrun, Michael Montemerlo, James Diebel
[10] Optimal trajectories for time-critical street scenarios using discretized terminal manifolds, Moritz Werling, Sören Kammel, Julius Ziegler and Lutz Gröll
[11] Optimal Trajectory Generation for Dynamic Street Scenarios in a Frenet Frame, Moritz Werling, Julius Ziegler, Sören Kammel, and Sebastian Thrun
[12] Practical Search Techniques in Path Planning for Autonomous Driving, Dmitri Dolgov, Sebastian Thrun Path Planning for
[13] F. Lewis, V. Syrmos. Optimal Control. John Wiley & Sons

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/851531.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLO相关原理(文件结构、视频检测等)

超参数进化(hyperparameter evolution) 超参数进化是一种使用了genetic algorithm(GA)遗传算法进行超参数优化的一种方法。 YOLOv5的文件结构 images文件夹内的文件和labels中的文件存在一一对应关系 激活函数:非线性处理单元 activation f…

WWW 23 | Facebook Marketplace的意图理解:用双塔模型处理结构化的产品目录

©PaperWeekly 原创 作者 | 何允中 单位 | Meta 研究方向 | Information Retrieval 摘要 本文介绍了 Facebook Marketplace 团队提出的 HierCat 构架,以解决电商搜索中的意图理解难题。HierCat 利用线上产品交互挖掘弱监督数据,并通过基于 Transfor…

sqlserver 数据库显示 正在还原

问题描述之前不太会搞差异备份的恢复,然后恢复发生了失败之后这个数据库一直处于(正在还原……状态 并且出现数据库无法访问的情况 尝试解决1执行查询Restore Database 数据库名称 with Recovery然后不太能行 2执行查询Restore Database 数据库名称 with NoRecovery…

10个最流行的免费3D模型下载网站

作为一名独立游戏开发者,自己创建图形、配乐、动画和更多东西是相当具有挑战性的。 创建资产所需的成本和时间有时是许多游戏开发商无法承受的。 这就是他们选择在互联网上搜索免费内容的原因。 现在,在浩瀚的内容海洋中获得如此免费的东西有点困难。 本…

uniapp 微信小程序 使用高德地图 定制气泡

前言 我们常说的uniapp或者原生微信小程序框架使用高德地图,并不是ui就是高德地图,而是api用的高德地图,ui仍然是框架内置的地图,也就是说,地图和api是分开,微信小程序的内置地图自然是腾讯地图。 高德地…

SpringBoot第34讲:SpringBoot集成ShardingJDBC - 基于JPA的DB隔离多租户方案

SpringBoot第34讲:SpringBoot集成ShardingJDBC - 基于JPA的DB隔离多租户方案 本文是SpringBoot第34讲,主要介绍ShardingJDBC的分片算法和分片策略,并在此基础上通过SpringBoot集成ShardingJDBC的几种策略(标准分片策略&#xff0c…

DevOps最佳实践和工具在本地环境中的概述

引言 最近,我进行了一次网上搜索,以寻找DevOps的概述,尽管有大量的DevOps工具和实践,但我无法找到一个综合的概述。因此,我开始了对DevOps生态系统和最佳实践的梳理,以创建一个整体视图,方便后续研究实践 C…

Fabric系列 - 知识点整理

知识点 源码编译 主机编译 容器编译 手动部署(docker-compose) 单peer 多peer 中途加peer 多主机多peer 链码 语法, 接口 (go版) 命令行调用 ca server 在DApp中使用SDK调用 (js版) 部署的几个阶段 部署1排序和1节点, 1组织1通道 光部署能Dapp 带ca server (每个组织一个)…

SQL SERVER 2019 数据库还原测试库的方法

1、备份正式库数据 2、在其它电脑上还原备份的数据库 不需要覆盖其它数据库,直接还原出数据库 还原时修改文件名和数据库名称: 修改文件名称 还原成功

【数学建模】--时间序列分析

时间序列分析概念与时间序列分解模型 定义:时间序列也称动态序列,是指将某种现象的指标数值按照时间顺序排列而成的数值序列。时间序列分析大致可分成三大部分,分别是描述过去,分线规律和预测未来,本讲将主要介绍时间序…

心理咨询预约管理系统javaweb医院挂号jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 心理咨询预约管理系统javaweb MVC模式,普…

PCIe VSC、VSEC、DVSEC

🔥点击查看精选 PCIe 系列文章🔥 🔥点击进入【芯片设计验证】社区,查看更多精彩内容🔥 📢 声明: 🥭 作者主页:【MangoPapa的CSDN主页】。⚠️ 本文首发于CSDN&#xff0…

[LeetCode - Python] 11.乘最多水的容器(Medium);26. 删除有序数组中的重复项(Easy)

1.题目: 11.乘最多水的容器(Medium) 1.代码 1.普通双指针对撞 贪心算法 class Solution:def maxArea(self, height: List[int]) -> int:# 对撞双指针# 对比记录最大面积,并移动短板,重新计算;left,…

人工智能(AIGC)在多领域的应用

文章目录 内容创作领域艺术创作领域媒体与广告领域教育与培训领域科研与创新领域总结 人工智能(AI)的快速发展正在为各行各业带来深刻的变革,其中人工智能生成内容(AIGC)技术的应用尤为引人瞩目。AIGC利用深度学习等技…

编码技巧——Sentinel的blockHandler与fallback

本文介绍Sentinel的blockHandler与fallback的区别,背景是:发生限流时,配置的sentinel的blockhandler没有生效而fallback生效了;排查原因,从而给出Sentinel配置异常降级和限流降级的代码写法; 在查看源码前…

“尚硅谷”Mysql数据库DDL补充

数据类型 原则:所选择的类型越简单越好,能保存数值的类型越小越好,节省空间。 数值型 整型 特点 1、如果不设置无符号还是有符号,默认是有符号,如果(ˇ?ˇ) 想设置无符号我,需要添加unsigned关键字。 2…

Netty框架自带类DefaultEventExecutorGroup的作用,用来做业务的并发

一、DefaultEventExecutorGroup的用途 DefaultEventExecutorGroup 是 Netty 框架中的一个类,用于管理和调度事件处理器(EventExecutor)的组。在 Netty 中,事件处理是通过多线程来完成的,EventExecutor 是处理事件的基…

【Fegin技术专题】「原生态」打开Fegin之RPC技术的开端,你会使用原生态的Fegin吗?(中)

你可以使用 Jersey 和 CXF 这些来写一个 Rest 或 SOAP 服务的java客服端。 你也可以直接使用 Apache HttpClient 来实现。但是 Feign 的目的是尽量的减少资源和代码来实现和 HTTP API 的连接。 *通过自定义的编码解码器以及错误处理,你可以编写任何基于文本的 HTT…

day22-513.找树左下角的值

513.找树左下角的值 力扣题目链接(opens new window) 给定一个二叉树,在树的最后一行找到最左边的值。 示例 1: 示例 2: 思路 迭代 迭代的思路最简单,只需层序记录每一层的第一个结点即可,代码如下: class Solution { publi…

HR专家:未来零代码开发将成求职热门,你准备好了吗?

一名五十五岁的农民,毫无程式设计经验,靠著自己自学零码开发,竟为他的家乡建起了六个数位资讯系统,其中一个更是带动了乡村“厕所革命”。阿里云说,“也许10-15年以前,公司的招聘会要求员工能够使用 WORD, …