2023-12-03-Drake 运动学轨迹优化类(kinematic_trajectory_optimization)(一)

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˙minq˙(t)q˙maxq¨minq¨(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=0nqiBi,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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值