四足控制中的公式理解

  • 说明:本文章用于记录四足相关论文的公式理解,由于本人能力有限,公式的理解来自对论文内容的研读,网上的相关文章以及个人猜测的结合,不准确之处欢迎各位批评指正,本文也会不断更新。欢迎与我联系:2250017028@qq.com

《MIT Cheetah 3: Design and Control of a Robust, Dynamic Quadruped Robot》

1.支撑腿控制器

(1)基于集中质量模型(lumped model)的平衡控制器(Balance Controller)

i.将机器人看作单刚体模型的机器人运动方程:
[ I 3 … I 3 [ p 1 p c ] × … [ p 4 p c ] × ] ⏟ A F = [ m ( p ¨ c + g ) I G ω b ˙ ] ⏟ b \underbrace{\begin{bmatrix} I_3 &\dots & I_3 \\ [p_1 p_c]\times &\dots &[p_4 p_c]\times \end{bmatrix}}_{A} F=\underbrace{\begin{bmatrix} m(\ddot{p}_c+g )\\ I_G\dot{\omega _b} \end{bmatrix}}_b A [I3[p1pc]×I3[p4pc]×]F=b [m(p¨c+g)IGωb˙]

使用了基本的牛顿运动定律

  • 合力 = ma
  • 合力矩 = 惯量*角加速度

ii.使用PD控制律计算质心加速度和角加速度
[ p ¨ c , d ω ˙ b , d ] = [ K p , p ( p c , d − p c ) + K d , p ( p ˙ c , d − p ˙ c ) K p , ω log ⁡ ( R d R T ) + K d , ω ( ω b , d − ω ) ] \left[\begin{array}{c} \ddot{\boldsymbol{p}}_{c, d} \\ \dot{\boldsymbol{\omega}}_{b, d} \end{array}\right]=\left[\begin{array}{c} \boldsymbol{K}_{p, p}\left(\boldsymbol{p}_{c, d}-\boldsymbol{p}_{c}\right)+\boldsymbol{K}_{d, p}\left(\dot{\boldsymbol{p}}_{c, d}-\dot{\boldsymbol{p}}_{c}\right) \\ \boldsymbol{K}_{p, \omega} \log \left(\boldsymbol{R}_{d} \boldsymbol{R}^{T}\right)+\boldsymbol{K}_{d, \omega}\left(\boldsymbol{\omega}_{b, d}-\boldsymbol{\omega}\right) \end{array}\right] [p¨c,dω˙b,d]=[Kp,p(pc,dpc)+Kd,p(p˙c,dp˙c)Kp,ωlog(RdRT)+Kd,ω(ωb,dω)]
目标:得到最优的控制力F,使质心趋于理想的质心动力学状态
b d = [ m ( p ¨ c , d + g ) I G ω ˙ b , d ] \boldsymbol{b_d} = \begin{bmatrix} m(\ddot{\boldsymbol{p}}_{c,d}+\boldsymbol{g})\\ \boldsymbol{I_G}\dot{\boldsymbol{\omega}}_{b,d} \end{bmatrix} bd=[m(p¨c,d+g)IGω˙b,d]
由于机器人运动方程为线性的,可以将该优化问题转为QP问题
F ∗ = min ⁡ F ∈ R 12 ( A F − b d ) T S ( A F − b d ) + α ∣ ∣ F ∣ ∣ 2 + β ∣ ∣ F − F p r e v ∣ ∣ 2 s . t . C F ≤ d \boldsymbol{F^*}=\min_{F\in R^{12}} \quad (AF-b_d)^TS(AF-b_d)+\alpha ||F||^2+\beta || F-F_{prev}||^2\\ s.t. \quad CF\le d F=FR12min(AFbd)TS(AFbd)+αF2+βFFprev2s.t.CFd
意义:

  • ( A F − b d ) T S ( A F − b d ) (AF-b_d)^TS(AF-b_d) (AFbd)TS(AFbd) ----使质心状态符合期望,S矩阵表示控制中旋转和位移的优先级。
  • ∣ ∣ F ∣ ∣ 2 ||F||^2 F2 ----作用力最小化
  • ∣ ∣ F − F p r e v ∣ ∣ 2 ||F-F_{prev}||^2 FFprev2 ---- F p r e v F_{prev} Fprev表示迭代中上一次的作用力,目标是限制住两次迭代的解的差值。
  • α , β > 0 \alpha,\beta>0 αβ>0 ----规定了解的标准化,以及对解进行了一定的过滤作用。
  • C F ≤ d CF\le d CFd ----具体内容未知,目的是为了保证解在可行域内。

(2)MPC控制器(Model Predictive Control)

J = ∑ i = 0 k ( x i − x i r e f ) T Q i ( x i − x i r e f ) + u i T R i u i J=\sum_{i=0}^{k}(x_i-x_i^{ref})^TQ_i(x_i-x_i^{ref})+u_i^TR_iu_i J=i=0k(xixiref)TQi(xixiref)+uiTRiui
目标:不断更新 u i u_i ui输入到控制系统,使上述代价函数最小化。

  • 更新频率f:论文中给的是优化解以30Hz的频率输入到控制器
  • 求解过程:论文指出,需要将MPC问题转化为QP问题进行求解。
    MPC控制器的具体内容可以参考我的学习笔记:MPC学习笔记

2. 摆动腿控制器

(1)落足点计算

p s t e p , i = p h , i + T c ϕ 2 p ˙ c , d ⏟ R a i b e r t   H e u r i s t i c + z 0 ∣ ∣ g ∣ ∣ ( p ˙ c − p ˙ c , d ) ⏟ C a p t u r e   P o i n t p_{step,i}=p_{h,i}+\underbrace{\frac{T_{c_\phi}}{2}{\dot{p}}_{c,d}}_{Raibert \ Heuristic}+\underbrace{\sqrt{\frac{z_0}{||g||}}({\dot{p}}_c-{\dot{p}}_{c,d})}_{Capture \ Point} pstep,i=ph,i+Raibert Heuristic 2Tcϕp˙c,d+Capture Point gz0 (p˙cp˙c,d)
T c ϕ 2 p ˙ c , d \frac{T_{c_\phi}}{2}{\dot{p}}_{c,d} 2Tcϕp˙c,d ----根据《Legged robots that balance》中的描述,足端按照该公式确定的落足点,会使运动为对称运动,加速度为0

z 0 ∣ ∣ g ∣ ∣ ( p ˙ c − p ˙ c , d ) \sqrt{\frac{z_0}{||g||}}({\dot{p}}_c-{\dot{p}}_{c,d}) gz0 (p˙cp˙c,d) ----根据《Capture point: A step toward humanoid push recovery》中的描述,目标就是让落脚点趋近capture point,在该点腿部会获得平衡。

T c φ T_{c_\varphi} Tcφ ----理想状态下的stance态持续时间
z 0 z_0 z0 ----目标位置点的高度
p h , i p_{h,i} ph,i----腿i对应髋关节电机hip的位置

(2)摆动轨迹计算–PD控制器+前馈控制

i.前馈力矩的计算
τ f f , i = J i ⊤ Λ i ( B a i ,  ref  − J ˙ i q ˙ i ) + C i q ˙ i + G i \tau_{\mathrm{ff}, i}=\boldsymbol{J}_{i}^{\top} \boldsymbol{\Lambda}_{i}\left({ }^{\mathfrak{B}} \boldsymbol{a}_{i, \text { ref }}-\dot{\boldsymbol{J}}_{i} \dot{\boldsymbol{q}}_{i}\right)+\boldsymbol{C}_{i} \dot{\boldsymbol{q}}_{i}+\boldsymbol{G}_{i} τff,i=JiΛi(Bai, ref J˙iq˙i)+Ciq˙i+Gi
J i J_i Ji ----足部的雅可比矩阵
Λ i \Lambda _i Λi ----操作空间的惯性矩阵
B a i , r e f ^\mathfrak{B}a_{i,ref} Bai,ref ----参考加速度
q i q_i qi ----关节结构的向量
C i C_i Ci ----科里奥利矩阵
G i G_i Gi -----重力矩

ii.轨迹跟随控制器
τ i = J i ⊤ [ K p ( B p i ,  ref  − B p i ) + K d ( B v i , r e f − B v i ) ] + τ f f , i \boldsymbol{\tau}_{i}=\boldsymbol{J}_{i}^{\top}\left[\boldsymbol{K}_{p}\left({ }^{\mathfrak{B}} \boldsymbol{p}_{i, \text { ref }}-{ }^{\mathfrak{B}} \boldsymbol{p}_{i}\right)+\boldsymbol{K}_{d}\left({ }^{\mathfrak{B}} \boldsymbol{v}_{i, \mathrm{ref}}-{^\mathfrak{B}} \boldsymbol{v}_{i}\right)\right]+\boldsymbol{\tau}_{\mathrm{ff}, i} τi=Ji[Kp(Bpi, ref Bpi)+Kd(Bvi,refBvi)]+τff,i

  • 控制频率f:4.5kHz

为了使PD控制器保持稳定,需要对增益 K p K_{p} Kp作如下处理
K p , j = ω d e s 2 Λ j j ( q ) K_{p,j}=\omega_{des}^2\Lambda_{jj}(q) Kp,j=ωdes2Λjj(q)

  • K p , j K_{p,j} Kp,j ---- K p K_p Kp中的第j个对角项。
  • ω d e s \omega_{des} ωdes ----目标自然频率
  • Λ j j \Lambda_{jj} Λjj ----第j个对角项在操作空间的惯性矩阵

3.虚拟预测支持多边形(Virtual Predictive Support Polygon)

i. 计算每条腿权重因子

(1)虚拟支持多边形:提供各种步态下的质心位置点
(2)定义每条腿对预测多边形的贡献度(分相位进行):指出哪条腿该抬起或触地,以及状态切换的时间
K c ϕ = 1 2 [ erf ⁡ ( ϕ σ c 0 2 ) + erf ⁡ ( 1 − ϕ σ c 1 2 ) ] K c ˉ ϕ = 1 2 [ 2 + erf ⁡ ( − ϕ σ c ˉ 0 2 ) + erf ⁡ ( ϕ − 1 σ c ˉ 1 2 ) ] Φ = s ϕ K c ϕ + s ˉ ϕ K c ˉ ϕ \begin{array}{r} K_{c_{\phi}}=\frac{1}{2}\left[\operatorname{erf}\left(\frac{\phi}{\sigma_{c_{0}} \sqrt{2}}\right)+\operatorname{erf}\left(\frac{1-\phi}{\sigma_{c_{1}} \sqrt{2}}\right)\right] \\\\ K_{\bar{c}_{\phi}}=\frac{1}{2}\left[2+\operatorname{erf}\left(\frac{-\phi}{\sigma_{\bar{c}_{0}} \sqrt{2}}\right)+\operatorname{erf}\left(\frac{\phi-1}{\sigma_{\bar{c}_{1}} \sqrt{2}}\right)\right] \\\\ \Phi=s_{\phi} K_{c_{\phi}}+\bar{s}_{\phi} K_{\bar{c}_{\phi}} \end{array} Kcϕ=21[erf(σc02 ϕ)+erf(σc12 1ϕ)]Kcˉϕ=21[2+erf(σcˉ02 ϕ)+erf(σcˉ12 ϕ1)]Φ=sϕKcϕ+sˉϕKcˉϕ
e r f ( x ) erf(x) erf(x) ---- 高斯误差函数
K c ϕ , K c ˉ ϕ K_{c_{\phi}},K_{\bar{c}_{\phi}} Kcϕ,Kcˉϕ ----支撑相和摆动相的权重因子
Φ \Phi Φ ----该腿总的权重因子
含义:支撑态下,某腿离中心越近,越可作为支撑点,摆动态下,某腿离中心越近,越不可用于平衡

ii.计算每条腿的虚拟点

[ ξ i − ξ i + ] = [ p i p i − p i p i + ] [ Φ i 1 − Φ i ] \left[\begin{array}{c} \boldsymbol{\xi}_{i}^{-} \\ \boldsymbol{\xi}_{i}^{+} \end{array}\right]=\left[\begin{array}{ll} \boldsymbol{p}_{i} & \boldsymbol{p}_{i^{-}} \\ \boldsymbol{p}_{i} & \boldsymbol{p}_{i^{+}} \end{array}\right]\left[\begin{array}{c} \Phi_{i} \\ 1-\Phi_{i} \end{array}\right] [ξiξi+]=[pipipipi+][Φi1Φi]

  • 上标为正表示逆时针,上标为负表示顺时针

iii.计算每条腿的预测多边形顶点

ξ i = Φ i p i + Φ i ξ i − + Φ i + ξ i + Φ i + Φ i − + Φ i + \boldsymbol{\xi}_{i}=\frac{\Phi_{i} \boldsymbol{p}_{i}+\Phi_{i} \boldsymbol{\xi}_{i}^{-}+\Phi_{i+} \boldsymbol{\xi}_{i}^{+}}{\Phi_{i}+\Phi_{i^{-}}+\Phi_{i^{+}}} ξi=Φi+Φi+Φi+Φipi+Φiξi+Φi+ξi+

iv.计算期望质心位置

p ^ C o M , d = 1 N ∑ i = 1 N ξ i \hat{\boldsymbol{p}}_{C o M, d}=\frac{1}{N} \sum_{i=1}^{N} \boldsymbol{\xi}_{i} p^CoM,d=N1i=1Nξi

4.倾斜地形下的姿态调整

含义:表示一个平面,即四足机器人当前位于的平面
z ( x , y ) = a 0 + a 1 x + a 2 y z(x, y)=a_{0}+a_{1} x+a_{2} y z(x,y)=a0+a1x+a2y
含义:根据当前机器人的状态去得到一个平面,即a={ a 0 , a 1 , a 2 a_0,a_1,a_2 a0,a1,a2}
a = ( W T W ) † W T p z W = [ 1 p x p y ] 4 × 3 \begin{aligned} \boldsymbol{a} &=\left(\boldsymbol{W}^{T} \boldsymbol{W}\right)^{\dagger} \boldsymbol{W}^{T} \boldsymbol{p}^{z} \\ \boldsymbol{W} &=\left[\begin{array}{lll} \mathbf{1} & \boldsymbol{p}^{x} & \boldsymbol{p}^{y} \end{array}\right]_{4 \times 3} \end{aligned} aW=(WTW)WTpz=[1pxpy]4×3

  • p x , p y , p z \boldsymbol{p^x},\boldsymbol{p^y},\boldsymbol{p^z} px,py,pz ----包括了机器人每条腿的状态,比如 p x = ( p 1 x , p 2 x , p 3 x , p 4 x ) \boldsymbol{p^x} = (p_1^x,p_2^x,p_3^x,p_4^x) px=(p1x,p2x,p3x,p4x)

5.状态估计

使用的是卡尔曼滤波拓展卡尔曼滤波,这里不作赘述。


《Highly Dynamic Quadruped Locomotion via Whole-Body Impulse Control and Model Predictive Control》

1.混合控制器

目标:将位置控制拆分成两个简单的控制器来进行控制

(1)MPC控制器

m p ¨ = ∑ i = 1 n c f i − c g , d d t ( I ω ) = ∑ i = 1 n c r i × f i \begin{array}{l} m \ddot{\mathbf{p}}=\sum_{i=1}^{n_{c}} \mathbf{f}_{i}-\mathbf{c}_{g}, \\\\ \frac{d}{d t}(\boldsymbol{I} \boldsymbol{\omega})=\sum_{i=1}^{n_{c}} \mathbf{r}_{i} \times \mathbf{f}_{i} \end{array} mp¨=i=1ncficg,dtd(Iω)=i=1ncri×fi

  • 与上面平衡控制器类似,对象都是集中质量模型,不过这里是用MPC来寻找优化的控制力。

(2)WBIC控制器(Whole-Body Impulse Control)

A ( q ¨ f q ¨ j ) + b + g = ( 0 6 τ ) + J c ⊤ f r \boldsymbol{A}\left(\begin{array}{c} \ddot{\mathbf{q}}_{f} \\ \ddot{\mathbf{q}}_{j} \end{array}\right)+\mathbf{b}+\mathbf{g}=\left(\begin{array}{c} \mathbf{0}_{6} \\ \boldsymbol{\tau} \end{array}\right)+\boldsymbol{J}_{c}^{\top} \mathbf{f}_{r} A(q¨fq¨j)+b+g=(06τ)+Jcfr
A A A ----质量(惯性)矩阵
b b b ----科里奥利力
g g g ----重力
τ \tau τ ----关节扭矩
f r f_r fr ----增广的作用力
J c J_c Jc ----触地点的雅可比矩阵

迭代公式的理解

参考手推WBC公式

持续更新…

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

煜个头头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值