Drake 运动学轨迹优化类(kinematic_trajectory_optimization)(二)
1. 背景
本文继续上文的话题,继续分析kinematic_trajectory_optimization
类的具体代码实现。
这部分的代码位于下面两个文件中:
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 ‾ ( t T ) = q ( t ) 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 (2) \begin{aligned} \overline{q}(\tau) &= \overline{q}(\frac{t}{T})=q(t)\\ \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{2} q(τ)q˙(t)q¨(t)=q(Tt)=q(t)=dtdq=dτdqdtdτ=Tq˙(τ)=dt2d2q=dtd(dtdq)=dτd(dτdq)dtdτ=T2q¨(τ)(2)
经过转化,我们可以得到如下形式的优化问题:
min T , q ‾ 0 : n