LQR 控制器设计
参考 双轮足式机器人分析
连杆质心拟合

由于在分析和设计控制器的过程中,机器人的腿部连杆需要简化为一个直杆,所以就需要将原来的腿部连杆的转动惯量和质心拟合到虚拟的杆上,如图所示
这里使用机体坐标系,计算可以得到每个杆的坐标位置
Zl1=[l1bcosθ1l1bsinθ1]Zl2=[l1cosθ1+l2bcos(θ2+θ1−180°)l1sinθ1+l2bsin(θ2+θ1−180°)]
计算其组合体的质心位置
m1Zl1+m2Zl2=(m1+m2)Z1
之后将组合体的质心映射到虚拟杆上,这里直接使用垂足进行映射,是由于点到直线,垂线最短,从而质心映射拟合时产生的误差会最小,联立如下方程求解
(Z1x−ZlxZ1y−Zly)(Cx−AxCy−Ay)=−1Cx−ZlxCy−Zly=Cx−AxCy−Ay
求解即可得到 Zl 坐标,根据平行轴定理可以得到变换之后的质心处的转动惯量
Il=I1+m1(Zl−Zl1)T(Zl−Zl1)+I2+m2(Zl−Zl2)T(Zl−Zl2)
同时也可以计算出所需要的 Lw 和 Lb
Lw=(Zl−C)T(Zl−C)Lb=(Zl−A)T(Zl−A)
腿部连杆运动学正解

如图所示,首先基于机体坐标系 xb−yb 来计算各点的坐标,腿长 L 和腿部摆角角度 θ
Ab=[00]Bb=[l1cosθ1l1sinθ1]Cb=[l1cosθ1+l2cos(θ2+θ1−180°)l1sinθ1+l2sin(θ2+θ1−180°)]
利用旋转矩阵将坐标点 Cb 旋转到坐标系 x−y 上,最终计算出来的 C 如下
C=[cosφ−sinφsinφcosφ]Cb
计算腿长 L 和腿部摆动角度 θ 如下
L=Cx2+Cy2θ=arctan(−CyCx)
VMC

此处采用机体坐标系即 xb−yb ,根据上述所计算的 Cb 点计算腿长参数和腿部摆动角 θb ,如下
Lb=Cbx2+Cby2θb=arctanCbxCby
计算其对于 θ1 和 θ2 的雅各比矩阵
[Lbθb]=J[θ1θ2]
但是此处求解得到的雅各比矩阵 J 十分复杂,所以将极坐标转换为平行坐标来计算
[FxFy]=[cosθbsinθb−LbsinθbLbcosθb][FTb]
可以将 C 点坐标进行求解雅各比矩阵,得到
[C˙bxC˙by]=[l2sin(θ1+θ2)−l1sinθ1l1cosθ1−l2cos(θ1+θ2)l2sin(θ1+θ2)−l2cos(θ1+θ2)][θ˙1θ˙2]=J[θ˙1θ˙2]
由于速度雅可比矩阵是力矩雅各比矩阵的转置,则有
[T1T2]=JT[FxFy]=JT[cosθbsinθb−LbsinθbLbcosθb][FTb]
最终化简之后得到
[T1T2]=[l2sin(θ1+θ2−θb)−l1sin(θ1−θb)l2sin(θ1+θ2−θb)Lbl1cos(θ1−θb)−Lbl2cos(θ1+θ2−θb)−Lbl2cos(θ1+θ2−θb)][FTb]
反向 VMC 如下
[FTb]=[l1sin(θ2)cos(θ1+θ2−θb)Lbl1sin(θ2)sin(θ1+θ2−θb)−l1l2sin(θ2)l2cos(θ1+θ2−θb)−l1cos(θ1−θb)−Lbl1l2sin(θ2)l2sin(θ1+θ2−θb)−l1cos(θ1−θb)][T1T2]
腿部摆角补偿
由于串联轮腿的腿部质量并不是前后大致均匀分布的,所以需要加一个补偿,可以是 θ 的补偿,也可以是机体俯仰角 pitch 的补偿,但是如果机体质心位置位于转动关节的上的话,就需要使用 θ 补偿
θ 补偿实际就是通过为目标 θ 添加一个前馈,使整个机器人的重心位于轮子的正上方,否则机器人由于重力与地面的支持力不在同一直线上时,会出现一个倾覆力矩,从而影响机器人的平衡性,如图所示

首先分析在机器人坐标系中,可以得到机器人各个部分重心的位置
Zb=[cx−cy]Zl1=[l1bcosθ1l1bsinθ1]Zl2=[l1cosθ1+l2bcos(θ2+θ1−180°)l1sinθ1+l2bsin(θ2+θ1−180°)]Zw=[l1cosθ1+l2cos(θ2+θ1−180°)l1sinθ1+l2sin(θ2+θ1−180°)]
将上述重心坐标转移到轮子坐标系 xw−yw 中,得到
Zb=[cosφ−sinφsinφcosφ][cx−cy]+[Lsinθc−Lcosθc]Zl1=[cosφ−sinφsinφcosφ][l1bcosθ1l1bsinθ1]+[Lsinθc−Lcosθc]Zl2=[cosφ−sinφsinφcosφ][l1cosθ1+l2bcos(θ2+θ1−180°)l1sinθ1+l2bsin(θ2+θ1−180°)]+[Lsinθc−Lcosθc]Zw=0
假定此时的 θ 正好满足要求,此时根据重心公式可以得到
MZbx+m1Zl1x+m2Zl2x=0
求解可以得到 θ 的补偿角度
θc=−arcsinL(M+m1+m2)(m1l1b+m2l1)cos(φ−θ1)−m2l2bcos(θ1+θ2−φ)+M(cxcosφ−cysinφ)
在使用时可以直接添加到当前状态中,即状态空间方程变为
X=⎣⎢⎢⎢⎢⎢⎢⎢⎡θ−θcθ˙xx˙φφ˙⎦⎥⎥⎥⎥⎥⎥⎥⎤