YeeKal
planning

轨迹优化之

YeeKal
"#planning"

轨迹和控制:对单个关节的控制可能无法实现整体的最有优运动。

  • model based
    • Differential Dynamic Programming
    • Direct Collocation
    • Planning As Interface

legged robots legged locomotion

动力学

非线性系统的线性化

选择泰勒展开的参考点为 $x_{0}, u_{0}$ 对于函数 $f(x, u)$, 在点 $x_{0}, u_{0}$ 处 通过一阶泰勒展开获得它的线性化函数为 如果我们定义 $x=x_{0}+\delta x$ 和 $u=u_{0}+\delta u$, 则 $\dot{x}=\dot{x}{0}+\delta \dot{x}$,由此可以 获得 如果我们把 $\delta x=x-x\right|}$ 当做我们要研究的状态 $x, \delta u=u-u_{0}$ 为 控制量 $u$, 然后令 $A=\left.\frac{\partial f}{\partial x{x=x\right|}}$ 且 $B=\left.\frac{\partial f}{\partial u{u=u$, 则 }

二次型调节器

LQR: Linear Quadratic Regulator

如果所研究的系统是线性的,且性能指标为状态变量和控制变量的二次型函数,则最优控制问题称为线性二次型问题。 而LQR是指求解线性二次型问题常用的方法。

线性定常连续系统:

一般连续时间系统:

线性时变连续系统:

令$x$为误差,$w$为误差项系数,令$Q=w_x^Tw_x, R=w_u^Tw_u$为半正定矩阵,也是误差系数.

系统稳定时,$u(t)=-Kx(t), \dot{x}(t)=(A-B K) x(t)$,带入代价函数得到:

我们要找到这个积分的原函数, 为了找到 $K$, 假设存在一个常量矩阵 $P$, 使得 对式 $(8)$ 两边取微分 将状态方程代入 $(9):$ 这个式子要成立的话, 括号里的项必须为恒为零。

进一步化简: 为了约掉K,取 $K=R^{-1} B^{T} P$, 代入上式得:

上式为Riccati方程,解得P。最后根据反馈矩阵 $K=R^{-1}B^TP$得到K

  1. 选择参数矩阵Q,R
  2. 求解Riccati方程得到矩阵P
  3. 根据公式计算K

求解

离散化以后的整个问题变成 我们从 $S[N]=Q$ 开始反向求解 Riccati difference equation 然后每一个时刻的最优控制为

Differential Dynamic Programming

LQR是将状态调节到0,而轨迹跟踪是系统误差为0。

LQR是在 $\delta x \neq 0$, 期望通过控制量在一定时间以后使得$\delta x = 0$。另一个类似的问题是反过来,一开始 $\delta x =0$, 期望在一定时间以后使得 $\delta x $为某一常量。

lqr.png

则优化问题变为:

其中.$\delta x_{d}=x_{d}-x_{0}, Q_{f}$ 是远大于$Q$的正定矩阵. $A,B$在不同的位置需要局部线性化。

lqr 价值函数角度

  1. backward recursion

for $t=T$ to 1 :

ilqr

backward

因子图

  • Factor graphs and GTSAM: A hands-on introduction
  • Factor graphs for robot perception.

dynamics with contact

contact invariant optimization

shooting 和collocation方法能比较方便应用于无碰撞的控制过程。而对于有接触的有碰撞过程则不适用,比如机械臂和人形机器人的交互。碰撞没有梯度。

ref