Drake 运动学轨迹优化类(kinematic_trajectory_optimization)(一)
背景
本文主要讨论运动学轨迹优化类(KinematicTrajectoryOptimization
),该类用于解决运动学轨迹优化问题。这次先讨论理论,后续再讨论具体的实现。
这部分的代码位于下面两个文件中:
planning\trajectory_optimization\kinematic_trajectory_optimization.h
planning\trajectory_optimization\kinematic_trajectory_optimization.cc
问题定义
该运动学轨迹优化类用于解决如下问题:
min T , q ( ⋅ ) J ( T , q ( ⋅ ) ) subject to q ( t 0 ) = q 0 , q ( t f ) = q f q ˙ ( t 0 ) = q ˙ 0 , q ˙ ( t f ) = q ˙ f q ¨ ( t 0 ) = q ¨ 0 , q ¨ ( t f ) = q ¨ f q ˙ m i n ≤ q ˙ ( t ) ≤ q ˙ m a x q ¨ m i n ≤ q ¨ ( t ) ≤ q ¨ m a x obstacle avoidance kinematics, dynamics constrains (1) \begin{aligned} & \underset{T,q(\cdot)}{\text{min}} & & J(T,q(\cdot)) \\ & \text{subject to} & & q(t_0) = q_0, \space q(t_f) = q_f \\ & & & \dot{q}(t_0) = \dot{q}_0, \space \dot{q}(t_f) = \dot{q}_f \\ & & & \ddot{q}(t_0) = \ddot{q}_0, \space \ddot{q}(t_f) = \ddot{q}_f \\ & & & \dot{q}_{min} \leq \dot{q}(t) \leq \dot{q}_{max} \\ & & & \ddot{q}_{min} \leq \ddot{q}(t) \leq \ddot{q}_{max} \\ & & & \text{obstacle avoidance} \\ & & & \text{kinematics, dynamics constrains} \end{aligned} \tag{1} T,q(⋅)minsubject toJ(T,q(⋅))q(t0)=q0, q(tf)=qfq˙(t0)=q˙0, q˙(tf)=q˙fq¨(t0)=q¨0, q¨(tf)=q¨fq˙min≤q˙(t)≤q˙maxq¨min≤q¨(t)≤q¨maxobstacle avoidancekinematics, dynamics constrains(1)
上述问题中, q ( ⋅ ) q(\cdot) q(⋅)是一个关于时间的四次阶连续可导的函数, q ( t ) q(t) q(t)表示在时间 t t t时刻的机器人的关节角度(广义坐标)。 T T T是一个标量,表示整个轨迹的时间长度。我们的优化目标就是找到一个 T T T和一个关于时间的函数 q ( ⋅ ) q(\cdot) q(⋅),在满足约束的情况下,使得 J ( T , q ( ⋅ ) ) J(T,q(\cdot)) J(T,q(⋅))最小,其中 J ( T , q ( ⋅ ) ) J(T,q(\cdot)) J(T,q(⋅))是一个关于 T T T和 q ( ⋅ ) q(\cdot) q(⋅)的标量函数,表示整个轨迹的代价。
1. 问题的转化
由于在实际应用中,计算机通常不太方便对一个连续函数进行优化,因此我们通过使用一个四次B样条曲线来近似表示 q ( ⋅ ) q(\cdot) q(⋅),即:
q ( t ) = ∑ i = 0 n q i B i , p ( t ) (2) q(t) = \sum_{i=0}^{n}q_iB_{i,p}(t) \tag{2} q(t)=i=0∑nqiBi,p(t)(2)
由于 T T T也是一个需要优化的变量,为了简化优化问题,我们可以将优化曲线的参数 t t t归一化到 [ 0 , 1 ] [0,1] [0,1]区间,即 τ ∈ [ 0 , 1 ] , τ = t T \tau \in [0,1], \space \tau = \frac{t}{T} τ∈[0,1], τ=Tt,曲线和总时间就可以被当作两个彼此独立的变量来处理。如下:
q ‾ ( τ ) = q ‾ ( t T ) = q ( t ) (3) \overline{q}(\tau) = \overline{q}(\frac{t}{T})=q(t) \tag{3} q(τ)=q(Tt)=q(t)(3)
求导可得:
q ˙ ( t ) = d q d t = d q d τ d τ d t = q ‾ ˙ ( τ ) T q ¨ ( t ) = d 2 q d t 2 = d d t ( d q d t ) = d d τ ( d q d τ ) d τ d t = q ‾ ¨ ( τ ) T 2 (4) \begin{aligned} \dot{q}(t) &= \frac{dq}{dt} = \frac{dq}{d\tau}\frac{d\tau}{dt} = \frac{\dot{\overline{q}}(\tau)}{T} \\ \ddot{q}(t) &= \frac{d^2q}{dt^2} = \frac{d}{dt}(\frac{dq}{dt}) = \frac{d}{d\tau}(\frac{dq}{d\tau})\frac{d\tau}{dt} = \frac{\ddot{\overline{q}}(\tau)}{T^2} \end{aligned} \tag{4} q˙(t)q¨(t)=dtdq=dτdqdtdτ=Tq˙(τ)=dt2d2q=dtd(dtdq)=dτd(dτdq)dtdτ=T2q