Skip to content

BALANCED_ROBOT ​

参考文献

倒立摆系统
LQR及观测器简介
平衡步兵
首都师范共轴麦轮
哈工程轮腿
上交轮腿
合工大轮腿仿真
达妙科技轮腿
中南打滑检测

1.倒立摆系统 ​

倒立摆是机器人学中一个非常重要的模型,火箭、导弹、独轮车、双足机器人、四足机器人、两轮自平衡机器人、轮腿机器人,基本都是倒立摆的变形。

本章提到的倒立摆系统为一阶倒立摆,不考虑阻尼,以下为本章用到的物理参数

参数符号参数含义参数单位
F施加在滑块上的作用力N
x滑块的位移m
xm、ym摆杆质心的位移m
l摆杆长度的一半m
M滑块的质量kg
m摆杆的质量kg
θ摆杆与竖直方向的夹角rad
I摆杆的转动惯量(I=112m(2l)2=13ml2)kg⋅m2

1.1拉格朗日动力学 ​

所谓动力学不过是通过一种方法求出力与运动之间的关系,对于拉格朗日动力学来说,若要求系统中的力或者力矩就可以使用以下动力学方程:

(1.1.1)拉格朗日方程ddt(∂T∂qα˙)−∂T∂qα=Qα

式中 T 为系统的总动能,qα 为广义坐标,qα˙ 为广义速度,Qα 为广义力 对于第 α 个关节在什么时候求力,什么时候求力矩,对应的拉格朗日方程又是什么呢?

  • 若操作机的执行元件控制某个转动变量 θ 时,则执行元件的总力矩 τθ 应为:
τθ=ddt(∂T∂θ˙)−∂T∂θ
  • 若操作机的执行元件控制某个移动变量 r 时,则施加在运动方向 r 上的力应为:
Fr=ddt(∂T∂r˙)−∂T∂r

若某个关节不存在外加作用力,即力学系统所受的主动力全是保守力时,式 (1.1.1) 的基本形式可改写为:

(1.1.2)保守系统的拉格朗日方程ddt(∂L∂qα˙)−∂L∂qα=0

式中:

(1.1.3)拉格朗日函数L=T−V

T 为系统的总动能,V 为系统的总势能

拉格朗日方程推导过程

保守系统的拉格朗日方程推导过程

1.2状态空间方程推导 ​

设坐标原点为转轴,可得摆杆质心位移:

(1.2.1)xm=x+lsin⁡θym=lcos⁡θ

则倒立摆摆杆质心速度:

(1.2.2)xm˙=x˙+lθ˙cos⁡θym˙=−lθ˙sin⁡θ

摆杆的平动动能可由式 (1.2.2) 计算,对于整个系统而言,系统总动能为滑块的平动动能加摆杆的转动动能与平动动能,应为:

(1.2.3)T=12Mx˙2+12Iθ˙2+12m(xm˙2+ym˙2)

即:

(1.2.4)T=12(M+m)x˙2+23ml2θ˙2+mlx˙θ˙cos⁡θ

系统总势能只受摆杆位置的影响,可得:

(1.2.5)V=mglcos⁡θ

由式 (1.1.3) ,则拉格朗日函数应为:

(1.2.6)L=12(M+m)x˙2+23ml2θ˙2+mlx˙θ˙cos⁡θ−mglcos⁡θ

针对移动变量 x 和转动变量 θ 可列写以下拉格朗日方程:

(1.2.7){ddt(∂T∂x˙)−∂T∂x=Fddt(∂L∂θ˙)−∂L∂θ=0

求解拉格朗日方程可得:

(1.2.8){(M+m)x¨+mlθ¨cos⁡θ−mlθ˙2sin⁡θ=F43ml2θ¨+mlx¨cos⁡θ−mglsin⁡θ=0

为了对系统进行线性分析和控制,需要对上述的非线性系统在在平衡点附近进行线性化。系统平衡点附近时,倒立摆的摆角 θ 很小,并且假设其角速度 θ˙ 也很小,则有:

{cos⁡θ=1sin⁡θ=θsin⁡(θ)θ˙=0

从而得到一阶倒立摆系统在平衡点附近的线性化模型为:

(1.2.9){(M+m)x¨+mlθ¨=F43ml2θ¨+mlx¨−mglθ=0

已知

状态变量X=[xθx˙θ˙]T输入量u=F

根据方程组 (1.2.9) 可得到倒立摆系统的状态空间方程如下:

(1.2.10)X˙=AX+Buy=CX+Du

式中:

(1.2.11)状态矩阵A=[001000010−3mg4M+m0003(M+m)g(4M+m)l00](1.2.12)输入矩阵B=[0044M+m−3(4M+m)l]T(1.2.13)输出矩阵C=[1000010000100001](1.2.14)前馈矩阵D=[0000]T

1.3LQR控制器 ​

对于 LQR 控制器的设计,选取合适的加权矩阵 Q、R 后,在 MATLAB 中调用 lqr 函数,即可得到系统 LQR 算法的反馈增益矩阵 K=lqr(A,B,Q,R) 并进行仿真。 权重矩阵 Q、R 的各个参数相互耦合,不同的权重矩阵会得到不同控制效果。一般情况下, Q、R 是根据经验主观决定,然后通过多次不同的试验获得。如果选取不当,则可能使求得反馈矩阵不能满足控制性能要求。选择权重矩阵 Q、R 时,应该基于下述三方面原则:

  1. Q 矩阵中对角线上的各元素值越大,其所对应的状态变量的响应速度越快,对系统的影响程度越大,而其他状态变量的响应速度就会变慢,对系统的影响也会削弱。
  2. R 矩阵不能太小,否则会导致控制量增大,而超出系统执行的能力。 R 阵也不要太大,否则导致控制量太小,而影响控制性能。
  3. 由于控制模型为线性化模型,所以 Q、R 的选取应该使系统各状态工作线性范围之内。

LQR 的 Q、R 矩阵随便给一般都能正常运行,如果仿真后发现运动状态与预想相差有点大,很大概率是状态方程与建模的问题,检查正负号,有没有漏乘变量,还有建立力学方程的时候有没有考虑正负号是否与模型的正负号相对应

本章更关注机器人稳摆速度,所以 Q 权阵与 R 权阵分别取 [1001001010] 与 1

matlab
clear;
clc;

%% 定义倒立摆物理性质
M = 2; % 滑块质量
m = 0.1; % 摆杆质量
l = 0.5; % 摆杆长度的一半
g = 9.81; % 重力加速度

%% 状态空间矩阵
A = [0 0 1 0;
        0 0 0 1;
        0 -3*m*g/(4*M+m) 0 0;
        0 3*(M+m)*g/((4*M+m)*l) 0 0];
B = [0;0;4/(4*M+m);-3/((4*M+m)*l)];

%% 求LQR增益矩阵
Q = diag([100 100 10 10]); % x q dx dq
R = 1; % fx
K = lqr(A,B,Q,R);
disp('K = ');
disp(K);

得到

K=[−10.0000−92.8749−12.5438−24.0854]

1.4牛顿力学法 ​

机器人的动力学和运动学模型是实现机器人控制策略的基础。想要完成对自平衡机器人控制系统的设计,需要根据自平衡机器人的运动特点和结构特点进行分析,建立准确可靠的数学模型。机器人动力学建模有两种具有代表性的方法:牛顿力学法和拉格朗日函数法。

  • 拉格朗日函数法依据 Hamilton 原理,利用标量代替矢量,对总动量和总势能进行分析,建立动力学模型。这种方法运用能量方式建模,不需要对内向力进行分析。
  • 牛顿力学法运用牛顿定律和动量矩定理对各部分刚体的受力情况进行隔离分析,然后建立相邻刚体间的内力项,最终得到系统的动力学模型。牛顿力学建模法可以表达出系统完整的受力关系,有明确的物理意义,该方法建立的模型易于被控对象控制策略的设计。

本章将采用牛顿力学法重新推导前文倒立摆系统的状态空间方程

分析滑块在水平方向上受力平衡,可得:

(1.4.1)Mx¨+N=F

分析摆杆在水平方向上受力平衡,可得:

(1.4.2)N=md2dt2(x+lsin⁡θ)

即:

(1.4.3)N=mx¨+mlθ¨cos⁡θ−mlθ˙2sin⁡θ

(1.4.2)、(1.4.3) 方程中的 N 为滑块与摆杆水平方向间的相互作用力,联立 (1.4.2)、(1.4.3) 两个方程消除 N ,得到一阶倒立摆的第一个动力学模型方程:

(1.4.4)(M+m)x¨+mlθ¨cos⁡θ−mlθ˙2sin⁡θ=F

分析摆杆在竖直方向上受力平衡,可得:

(1.4.5)P−mg=md2dt2(lcos⁡θ)

即:

(1.4.6)P=mg−mlθ¨sin⁡θ−mlθ˙2cos⁡θ

分析摆杆绕其质心的力矩平衡,可得:

(1.4.7)Iθ¨=(Psin⁡θ−Ncos⁡θ)l

(1.4.3)、(1.4.6)、(1.4.7) 方程中的 N、P 为滑块与摆杆间水平、竖直方向间的相互作用力,联立 (1.4.3)、(1.4.6)、(1.4.7) 三个方程消除 N、P ,得到一阶倒立摆第二个动力学模型方程:

(1.4.8)43ml2θ¨+mlx¨cos⁡θ−mglsin⁡θ=0

倒立摆稳摆时的摆角 θ 很小,为使状态方程线性化,假设 θ 与 θ˙ 趋近于 0 ,则有:

{cos⁡θ=1sin⁡θ=θsin⁡θθ˙=0

可得局部线性化动态模型:

(1.4.9){(M+m)x¨+mlθ¨=F43ml2θ¨+mlx¨−mglθ=0

式 (1.4.9) 与 (1.2.9) 相同,由此可见,由拉格朗日函数法和牛顿力学法建立的状态空间方程是一样的

2.两轮自平衡机器人系统 ​

两轮自平衡机器人系统是一阶倒立摆系统的一种变形,即将滑块改为驱动轮 ,摆杆改为小板凳本体,作用在滑块上的驱动力 F 改为驱动轮的输出力矩 C ,以下为本章用到的物理参数

参数符号参数含义参数单位
TL、TR左右驱动轮的输出转矩N⋅M
xp、yp本体质心的位移m
xrL、xrR左右驱动轮的位移m
x两驱动轮轴中心的位移m
ψ本体的俯仰角 Pitchrad
ϕ本体的偏航角 Yawrad
θrL、θrR左右驱动轮的转角rad
Mp本体的质量kg
Mr左右驱动轮的质量kg
R左右驱动轮的半径m
D左右驱动轮之间的距离m
L本体重心与驱动轮轮轴之间的距离m
Jr左右驱动轮的转动惯量(Jr=12MrR2)kg⋅m2
Jψ本体绕 y 轴的转动惯量(Jψ=112Mp(2L)2=13MpL2)kg⋅m2
Jϕ本体绕 z 轴的转动惯量(Jϕ=112MpD2)kg⋅m2

由于机器人的控制是非线性的,难以精确地去建立其数学模型,所以为了建立可行性较高的系统模型,我们进行如下假设:

  • 两轮自平衡机器人各部件均为刚体;
  • 忽略两轮自平衡机器人受到的外界干扰力;
  • 忽略两轮自平衡机器人本体和两驱动轮转轴之间的摩擦力;
  • 两驱动轮与地面没有相对滑动

2.1拉格朗日函数法 ​

两轮自平衡机器人位移和速度与左右驱动轮转角和角速度的转化关系如下:

(2.1.1)xrL=RθrL(2.1.2)x˙rL=Rθ˙rL(2.1.3)x¨rL=Rθ¨rL

右轮同理,得:

(2.1.4)x=xrL+xrR2=R2(θrL+θrR)(2.1.5)x˙=x˙rL+x˙rR2=R2(θ˙rL+θ˙rR)(2.1.6)x¨=x¨rL+x¨rR2=R2(θ¨rL+θ¨rR)

两轮自平衡机器人偏航角和偏航角速度与左右驱动轮转角和角速度的转化关系如下:

(2.1.7)ϕ=xrR−xrLD=RD(θrR−θrL)(2.1.8)ϕ˙=x˙rR−x˙rLD=RD(θ˙rR−θ˙rL)(2.1.9)ϕ¨=x¨rR−x¨rLD=RD(θ¨rR−θ¨rL)

此外,结构本体质心位移和速度与两轮轴中心的位移和速度的关系满足:

(2.1.10)xp=x+Lsin⁡ψ(2.1.11)x˙p=x˙+ψ˙Lcos⁡ψ(2.1.12)yp=Lcos⁡ψ(2.1.13)y˙p=−ψ˙Lsin⁡ψ

左右驱动轮的平均动能:

(2.1.14)T1=12Mrx˙rL2+12Mrx˙rR2=12Mr(x˙rL2+x˙rR2)

左右驱动轮绕 y 轴的转动动能:

(2.1.15)T2=12Jrθ˙rL2+12Jrθ˙rR2=12Jr(θ˙rL2+θ˙rR2)

本体质心的平动动能:

(2.1.16)T3=12Mp(x˙p2+y˙p2)=12Mp[(x˙+ψ˙Lcos⁡ψ)2+(−ψ˙Lsin⁡ψ)2]

本体绕 z 轴转动的动能:

(2.1.17)T4=12Jψψ˙2

本体绕 y 轴转动的动能:

(2.1.18)T5=12Jϕϕ˙2

系统总动能:

T=T1+T2+T3+T4+T5=12Mr(x˙rL2+x˙rR2)+12Jr(θ˙rL2+θ˙rR2)(2.1.19)+12Mp[(x˙+ψ˙Lcos⁡ψ)2+(−ψ˙Lsin⁡ψ)2]+12Jψψ˙2+12Jϕϕ˙2

将式 (2.1.1) ~ (2.1.9) 代入式 (2.1.19) 化简得:

(2.1.20)T=12MrR2θ˙rL2+12MrR2θ˙rR2+12Jrθ˙rL2+12Jrθ˙rR2+12Jψψ˙2+12Jϕ(Rθ˙rR−Rθ˙rLD)2+12Mp[(12R(θ˙rL+θ˙rR)+ψ˙Lcos⁡ψ)2+(−ψ˙Lsin⁡ψ)2]

欲使系统具有确定运动,则需保证确定系统位置的独立参数的个数等于系统的自由度数。两轮自平衡机器人在平面运动时具有三个自由度。所以选取左驱动轮转角 θrL 、右驱动轮转角 θrR 和本体倾角 ψ 这三个相互独立的变量作为系统的运动状态变量来描述系统,将可以唯一确定系统的位置。

选用左右驱动轮的转角 θrL、θrR 与本体的俯仰角 ψ 作为系统的三个广义坐标,即:

{q1=θrLq2=θrRq3=ψ

在此坐标系下,相应的广义力 Q1、Q2、Q3 分别为:电机对左驱动轮的作用转矩 TL ,电机对右驱动轮的作用转矩 TR,本体重力与电机对本体的作用转矩 MpgLsin⁡ψ−TL−TR,即:

{Q1=TLQ2=TRQ3=MpgLsin⁡ψ−TL−TR

由式 (1.1.1) 可得拉格朗日方程表达式为:

(2.1.21){ddt(∂T∂θ˙rL)−∂T∂θrL=TLddt(∂T∂θ˙rR)−∂T∂θrR=TRddt(∂T∂ψ˙)−∂T∂ψ=MpgLsin⁡ψ−TL−TR

该动力学模型具有复杂的非线性、多变性和强耦合性。为了进一步深入研究两轮自平衡机器人的特性,本章基于以下假设对两轮自平衡机器人的非线性动力学模型进行线性化:

  • 当本体倾角 ψ 在平衡点附件小范围变化时,假设:
{cos⁡ψ=1sin⁡ψ=ψψ˙sin⁡ψ=0
  • 本体绕垂直方向轴的转动惯量 Jϕ 与 ψ 有关。当俯仰角 ψ 在两轮自平衡机器人平衡点附近小范围内变化时,为了简化计算,假设 Jϕ 为常值;
  • 假设两驱动轮尺寸一致,车轮始终保持与地面接触,忽略内部能量损耗

基于以上假设,取:

状态变量X=[xx˙ψψ˙ϕϕ˙]T输入量u=[TLTR]T

解得该两轮自平衡机器人的动力学模型为:

(2.1.22)θ¨rL(14MpR2+MrR2+Jr+JϕR2D2)+θ¨rR(14MpR2−JϕR2D2)+12MpLRψ¨=TL(2.1.23)θ¨rR(14MpR2+MrR2+Jr+JϕR2D2)+θ¨rL(14MpR2−JϕR2D2)+12MpLRψ¨=TR(2.1.24)(MpL2+Jψ)ψ¨+12MpLR(θ¨rL+θ¨rR)=MpgLsin⁡ψ−TL−TR

式 (2.1.22)、(2.1.23) 相加,联立式 (2.1.6) 消去 θ¨rL、θ¨rR ,得:

(2.1.25)x¨(MpR2+2MrR2+2Jr)+MpLR2ψ¨=R(TL+TR)(2.1.26)(MpL2+Jψ)ψ¨+MpLx¨=MpgLsin⁡ψ−TL−TR

式 (2.1.25)、(2.1.26) 联立,分别消去 ψ¨、x¨ ,得:

(2.1.27)x¨=−MpL2gJψMp+(Jψ+MpL2)(2Mr+2Jr/R2)ψ+Jψ+MpL2+MpLR[JψMp+(Jψ+MpL2)(2Mr+2Jr/R2)]R(TL+TR)(2.1.28)ψ¨=MpLg(Mp+2Mr+2Jr/R2)JψMp+(Jψ+MpL2)(2Mr+2Jr/R2)ψ−MpL/R+Mp+2Mr+2Jr/R2JψMp+(Jψ+MpL2)(2Mr+2Jr/R2)(TL+TR)

式 (2.1.22)、(2.1.23) 相减,联立式 (2.1.9) 消去 θ¨rL、θ¨rR ,得:

(2.1.29)ϕ¨=−DD2(MrR+Jr/R)+2JϕR(TL−TR)

联立约束式 (2.1.1) ~ (2.1.12) 与方程式 (2.1.21) ,从而得到两轮自平衡机器人在平衡点附近的状态方程 X˙=AX+Bu 为:

(2.1.30)[x˙x¨ψ˙ψ¨ϕ˙ϕ¨]=[01000000A2300000010000A43000000001000000][xx˙ψψ˙ϕϕ˙]+[00B21B2200B41B4200B61B62][TLTR]

其中:

A23=−MpL2gJψMp+(Jψ+MpL2)(2Mr+2Jr/R2)A43=MpLg(Mp+2Mr+2Jr/R2)JψMp+(Jψ+MpL2)(2Mr+2Jr/R2)B21=B22=Jψ+MpL2+MpLR[JψMp+(Jψ+MpL2)(2Mr+2Jr/R2)]RB41=B42=−MpL/R+Mp+2Mr+2Jr/R2JψMp+(Jψ+MpL2)(2Mr+2Jr/R2)B61=−B62=−DD2(MrR+Jr/R)+2JϕR

MATLAB脚本为:

matlab
clear;
clc;
%% 定义小车倒立摆物理性质
R = 0.07625; %车轮的半径
D = 0.31; %左轮、右轮两个轮子间的距离
l = 0.05; %摆杆质心到转轴距离
m = 0.741 * 2; %车轮的质量, 共轴麦轮为两个轮的质量
M = 4.886; %摆杆质量
I = (1/2)*m*R^2; %车轮的转动惯量
Jy = (1/3)*M*l^2; %机器人机体对 y 轴的运动时产生的转动惯量(俯仰方向)
Jz = (1/12)*M*D^2; %机器人机体对 z 轴的运动时产生的转动惯量(偏航方向)
g = 9.8; %重力加速度

%% 状态空间矩阵
Q_eq = Jy*M + (Jy+M*l^2) * (2*m+(2*I)/R^2);
% A为系统矩阵
A_23=-(M^2*l^2*g)/Q_eq;
A_43=M*l*g*(M+2*m+(2*I/R^2))/Q_eq;
A = [0 1 0 0 0 0;
        0 0 A_23 0 0 0;
        0 0 0 1 0 0;
        0 0 A_43 0 0 0;
        0 0 0 0 0 1;
        0 0 0 0 0 0;];
% B为输入矩阵
B_21=(Jy+M*l^2+M*l*R)/Q_eq/R;
B_22 = B_21;
B_41=-((M*l/R)+M+2*m+(2*I/R^2))/Q_eq;
B_42 = B_41;
B_61 = -D/(D^2*(M*R+I/R)+2*Jz*R);
B_62 = -B_61;
B = [0 0;
        B_21 B_22;
        0 0;
        B_41 B_42;
        0 0;
        B_61 B_62];
% C为输出矩阵
C = eye(6);
D = 0;
%% 求LQR增益矩阵
Q = diag([0.001 4 8 0.8 4 0.8]);
R = diag([1 1]);
K = lqr(A, B,Q,R);
disp('K = ');
disp(K);

建模如下图

2.2牛顿力学法 ​

为了便于两轮自平衡机器人系统牛顿力学法的分析,现在原基础上定义以下物理参数

参数符号参数含义参数单位
NfL、NfR左右驱动轮受到地面的摩擦力N
NL、NR左右驱动轮受到车体作用力的水平分力N
PL、PR左右驱动轮受到车体作用力的竖直分力N

车轮的运动可分解为平动和转动,则由牛顿第二定律可得:

(2.2.1)Mrx¨rL=NfL−NL

由刚体定轴转动定律可得:

(2.2.2)Jrθ¨rL=TL−NfLR

联立式 (2.2.1)、(2.2.2)、(2.1.3) 消去 NfL ,得:

(2.2.3)x¨rL=TL−NLRJrR+MrR

对左轮也同理:

(2.2.4)x¨rR=TR−NRRJrR+MrR

式 (2.2.3)、(2.2.4) 相加联立式 (2.1.6) 消去 x¨rL、x¨rR ,得:

(2.2.5)(Mr+JrR2)x¨=TL+TR2R−NL+NR2

对车体,水平方向上有:

(2.2.6)Mpd2dt2(x+Lsin⁡ψ)=NL+NR

即:

(2.2.7)NL+NR=Mpx¨+MpLψ¨cos⁡ψ−MpLψ˙2sin⁡ψ

竖直方向上有:

(2.2.8)Mpd2dt2(Lcos⁡ψ)=PL+PR−Mpg

即:

(2.2.9)PL+PR=Mpg−MpLψ¨sin⁡ψ−MpLψ˙2cos⁡ψ

对车体,由刚体定轴转动定律可得:

(2.2.10)Jψψ¨=(PL+PR)Lsin⁡ψ−(NL+NR)Lcos⁡ψ−(TL+TR)

联立式 (2.2.5)、(2.2.7) ,得:

(2.2.11)(Mp+2Mr+2JrR2)x¨=TL+TRR−MpLψ¨cos⁡ψ+MpLψ˙2sin⁡ψ

联立式 (2.2.7)、(2.2.9)、(2.2.10) ,得:

(2.2.12)ψ¨=MpgLsin⁡ψJr+MpL2−MpLcos⁡ψJr+MpL2x¨−TL+TRJr+MpL2

当本体倾角 ψ 在平衡点附件小范围变化时,假设:

{cos⁡ψ=1sin⁡ψ=ψψ˙sin⁡ψ=0

代入式 (2.2.11)、(2.2.12) ,得:

(2.2.13)x¨=TL+TR(Mp+2Mr+2JrR2)R−MpLMp+2Mr+2JrR2ψ¨(2.2.14)ψ¨=MpgLJr+MpL2ψ−MpLJr+MpL2x¨−TL+TRJr+MpL2

联立式 (2.2.13)、(2.2.14) ,分别消去 ψ¨、x¨ ,得:

(2.2.15)x¨=−MpL2gJψMp+(Jψ+MpL2)(2Mr+2Jr/R2)ψ+Jψ+MpL2+MpLR[JψMp+(Jψ+MpL2)(2Mr+2Jr/R2)]R(TL+TR)(2.2.16)ψ¨=MpLg(Mp+2Mr+2Jr/R2)JψMp+(Jψ+MpL2)(2Mr+2Jr/R2)ψ−MpL/R+Mp+2Mr+2Jr/R2JψMp+(Jψ+MpL2)(2Mr+2Jr/R2)(TL+TR)

转向运动是由于左右两车轮从水平方向上施加给车体的反作用力的大小 NL、NR 不相等引起的,则由刚体定轴转动定律可得

(2.2.17)Jϕϕ¨=D2(NR−NL)

式 (2.2.3)、(2.2.4) 相减联立式 (2.1.9) 消去 x¨rL、x¨rR ,得:

(2.2.18)−(MrR+JrR)Dϕ¨=(TL−TR)−R(NL−NR)

式 (2.2.17)、(2.2.18) 联立,得:

(2.2.19)ϕ¨=−DD2(MrR+Jr/R)+2JϕR(TL−TR)

3.轮腿式平衡机器人系统(哈工程模型) ​

3.1平衡与纵向运动控制 ​

3.1.1模型定义 ​

参数符号参数含义参数单位
θ摆杆与竖直方向夹角rad
φ机体与水平夹角rad
α摆杆与机体相对角度(α=φ+θ)rad
x驱动轮位移m
T驱动轮输出力矩N⋅m
Tp髋关节输出力矩N⋅m
N驱动轮对摆杆力的水平分量N
P驱动轮对摆杆力的竖直分量N
Nf地面对驱动轮摩擦力N
NM摆杆对机体力水平方向分量N
PM摆杆对机体力竖直方向分量N
F摆杆推力N
R驱动轮半径m
L摆杆重心到驱动轮轴距离m
LM摆杆重心到机体转轴距离m
l机体重心到其转轴距离m
mw驱动轮转子质量kg
mp摆杆质量kg
M机体质量kg
Iw驱动轮转子转动惯量(Iw=12mwR2)kg⋅m2
Ip摆杆绕质心转动惯量(Ip=112mpL2)kg⋅m2
IM机体绕质心转动惯量(IM=112Ml2)kg⋅m2

3.1.2经典力学分析 ​

车轮的运动可分解为平动和转动,则由牛顿第二定律可得:

(4.1.1)mwx¨=Nf−N

由刚体定轴转动定律可得:

(4.1.2)Iwx¨R=T−NfR

联立式 (4.1.1)、(4.1.2) 消去 Nf ,得:

(4.1.3)x¨=T−NRIwR+mwR

对摆杆,水平方向上有:

(4.1.4)N−NM=mpd2dt2(x+Lsin⁡θ)

竖直方向上有:

(4.1.5)P−PM−mpg=mpd2dt2(Lcos⁡θ)

由刚体定轴转动定律可得:

(4.1.6)Ipθ¨=(PL+PMLM)sin⁡θ−(NL+NMLM)cos⁡θ−T+Tp

对机体,水平方向上有:

(4.1.7)NM=Md2dt2(x+(L+LM)sin⁡θ−lsin⁡φ)

竖直方向上有:

(4.1.8)PM−Mg=Md2dt2((L+LM)cos⁡θ+lcos⁡φ)

由刚体定轴转动定律可得:

(4.1.9)Imφ¨=Tp+NMlcos⁡φ+PMlsin⁡φ

3.1.3状态空间方程及LQR控制器 ​

定义:

状态向量X=[θθ˙xx˙φφ˙]T控制向量u=[TTp]T系统非线性模型X˙=f(X,u)

利用MATLAB符号运算工具,根据式 (4.1.4)、(4.1.5)、(4.1.7)、(4.1.8) 消去中间变量 P、N、PM、NM,并利用函数solve对式 (4.1.3)、(4.1.6)、(4.1.9) 进行求解以得到系统非线性模型符号表达式。根据式状态向量 X 与控制向量 u ,求非线性模型平衡点处雅可比矩阵对其线性化,即:

matlab
function K = get_k_length(leg_length)
    %theta : 摆杆与竖直方向夹角            R   :驱动轮半径
    %x     : 驱动轮位移                   L   : 摆杆重心到驱动轮轴距离
    %phi   : 机体与水平夹角               LM  : 摆杆重心到其转轴距离
    %T     :驱动轮输出力矩               l   : 机体重心到其转轴距离
    %Tp    : 髋关节输出力矩               mw  : 驱动轮转子质量
    %N     :驱动轮对摆杆力的水平分量      mp  : 摆杆质量
    %P     :驱动轮对摆杆力的竖直分量      M   : 机体质量
    %Nm    :摆杆对机体力水平方向分量      Iw  : 驱动轮转子转动惯量
    %Pm    :摆杆对机体力竖直方向分量      Ip  : 摆杆绕质心转动惯量
    %Nf    : 地面对驱动轮摩擦力           Im  : 机体绕质心转动惯量

    syms x(t) T R Iw mw M L LM theta(t) l phi(t) mp g Tp Ip IM
    syms f1 f2 f3 d_theta d_x d_phi theta0 x0 phi0 
    %% 定义数值变量
    R1=0.0603;              %驱动轮半径
    L1=leg_length/2;        %摆杆重心到驱动轮轴距离
    LM1=leg_length/2;       %摆杆重心到其转轴距离
    l1=0.011;               %机体质心距离转轴距离
    mw1=0.6;                %驱动轮质量
    mp1=0.045;              %杆质量
    M1=1.44;                %机体质量
    Iw1=0.5*mw1*R1^2;       %驱动轮转动惯量
    Ip1=mp1*((L1+LM1)^2+0.048^2)/12.0; %摆杆转动惯量,视为长方体
    IM1=M1*(0.135^2+0.066^2)/12.0;     %机体绕质心转动惯量,视为长方体
    %% 定义运动方程
    NM = M*diff(x + (L + LM )*sin(theta)-l*sin(phi),t,2);
    N = NM + mp*diff(x + L*sin(theta),t,2);
    PM = M*g + M*diff((L+LM)*cos(theta)+l*cos(phi),t,2);
    P = PM +mp*g+mp*diff(L*cos(theta),t,2);
    eqn1 = diff(x,t,2) == (T-N*R)/(Iw/R + mw*R);
    eqn2 = Ip*diff(theta,t,2) == (P*L + PM*LM)*sin(theta)-(N*L+NM*LM)*cos(theta)-T+Tp;
    eqn3 = IM*diff(phi,t,2) == Tp +NM*l*cos(phi)+PM*l*sin(phi);
    % 通过替换变量简化运动方程,主要是将方程中对时间t求导的符号变量替换为其他辅助变量
    eqn10 = subs(eqn1,[diff(theta,t,2),diff(x,t,2),diff(phi,t,2),diff(theta,t),diff(x,t),diff(phi,t),theta,x,phi],[f1,f2,f3,d_theta,d_x,d_phi,theta0,x0,phi0]);
    eqn20 = subs(eqn2,[diff(theta,t,2),diff(x,t,2),diff(phi,t,2),diff(theta,t),diff(x,t),diff(phi,t),theta,x,phi],[f1,f2,f3,d_theta,d_x,d_phi,theta0,x0,phi0]);
    eqn30 = subs(eqn3,[diff(theta,t,2),diff(x,t,2),diff(phi,t,2),diff(theta,t),diff(x,t),diff(phi,t),theta,x,phi],[f1,f2,f3,d_theta,d_x,d_phi,theta0,x0,phi0]);
    %% 求状态空间矩阵
    % 求解由eqn10、eqn20和eqn30方程组成的三元一次代数方程组,并将解赋值给符号变量f1、f2和f3
    [f1,f2,f3] = solve(eqn10,eqn20,eqn30,f1,f2,f3);
    % 求解状态方程,并在系统的平衡点处线性化系统
    A=subs(jacobian([d_theta,f1,d_x,f2,d_phi,f3],[theta0,d_theta,x0,d_x,phi0,d_phi]),[theta0,d_theta,d_x,phi0,d_phi,T,Tp],[0,0,0,0,0,0,0]);
    % 将符号变量替换为数值变量,求解状态方程数值解
    AA=subs(A,[R,L,LM,l,mw,mp,M,Iw,Ip,IM,g],[R1,L1,LM1,l1,mw1,mp1,M1,Iw1,Ip1,IM1,9.8]);
    AA=double(AA);
    % 求解状态方程,并在系统的平衡点处线性化系统
    B=subs(jacobian([d_theta,f1,d_x,f2,d_phi,f3],[T,Tp]),[theta0,d_theta,d_x,phi0,d_phi,T,Tp],[0,0,0,0,0,0,0]);
    % 将符号变量替换为数值变量,求解状态方程数值解
    BB=subs(B,[R,L,LM,l,mw,mp,M,Iw,Ip,IM,g],[R1,L1,LM1,l1,mw1,mp1,M1,Iw1,Ip1,IM1,9.8]);
    BB=double(BB);
    %% 求LQR增益矩阵
    Q=diag([1 0.07 10 5 300 0.6]);
    R=[20 0;0,1]; %T Tp
    K=lqr(AA,BB,Q,R);
end
(4.1.10)X˙=[010000A21000A250000100A41000A450000001A61000A650]X+[00B21B2200B41B4200B61B62]u

由于表达式较为复杂所占篇幅较大,此处用符号代替。

3.2五连杆运动学解算与VMC ​

3.2.1正运动学解算 ​

五连杆机构参数定义如图所示,其中 A、E 由电机驱动,其角度 ϕ1、ϕ4 可通过电机编码器测得。控制任务中主要关注五连杆机构末端 C 点的位置,通常可用直角坐标 (xC,yC) 或极坐标 (L0,ϕ0) 表示。

定义 A 点为坐标原点,通过五连杆左右两部分列写 C 点坐标,可得到以下等式:

(4.2.1){xB+l2cos⁡ϕ2=xD+l3cos⁡ϕ3yB+l2sin⁡ϕ2=yD+l3sin⁡ϕ3

对其移项,并在等式两边进行平方,有:

(4.2.2){(xB−xD)2+2(xB−xD)l2cos⁡ϕ2+(l2cos⁡ϕ2)2=(l3cos⁡ϕ3)2(yB−yD)2+2(yB−yD)l2sin⁡ϕ2+(l2sin⁡ϕ2)2=(l3sin⁡ϕ3)2

两式相加可得:

(4.2.3)2(yB−yD)l2sin⁡ϕ2+2(xB−xD)l2cos⁡ϕ2=l32−l22−(xD−xB)2−(yD−yB)2

将原式变形为:

(4.2.4)1+cos⁡ϕ22(2A0cos⁡ϕ21+cos⁡ϕ2+2B0sin⁡ϕ21+cos⁡ϕ2−2C01+cos⁡ϕ2)=0

已知:

{tan⁡θ2=sin⁡θ1+cos⁡θcosθ=cos2⁡θ2−sin2⁡θ2=2cos2⁡θ2−1sin2⁡θ2+cos2⁡θ2=1

使用二倍角公式对原式进行展开并化简得到一个关于 tan⁡ϕ22 的一元二次方程:

(4.2.5)−(A0+C0)tan2⁡ϕ22+2B0tan⁡ϕ22+(A0−C0)=0

其解为:

(4.2.6)ϕ2=2arctan⁡(B0+A02+B02−C02A0+C0)

其中:

A0=2l2(xD−xB)B0=2l2(yD−yB)C0=l22+lBD2−l32lBD=(xD−xB)2+(yD−yB)2

得到角度 ϕ2 后即可解算出 C 点的直角坐标:

(4.2.7){xC=l1cos⁡ϕ1+l2cos⁡ϕ2yC=l1sin⁡ϕ1+l2sin⁡ϕ2

极坐标为:

(4.2.8){L0=(xC−l5/2)2+yC2ϕ0=arctan⁡yCxC−l5/2

3.2.2VMC雅可比矩阵 ​

VMC(virtualmodelcontrol) 是一种直觉控制方式,其关键是在每个需要控制的自由度上构造恰当的虚拟构件以产生合适的虚拟力。虚拟力不是实际执行机构的作用力或力矩,而是通过执行机构的作用经过机构转换而成。对于一些控制问题,我们可能需要将工作空间 (TaskSpace) 的力或力矩映射成关节空间 (JointSpace) 的关节力矩。在该五连杆问题中,我们需要获得五连杆机构末端沿腿的推力 F 与沿中心轴的力矩 Tp (分别对应极坐标 L0,ϕ0 )与 A、E 点 两驱动电机力矩 T1、T2 的映射关系。

定义:

xx=[L0ϕ0],qq=[ϕ1ϕ4]

对正运动学模型 xx=f(qq) 求全微分得:

(4.2.9){δL0=∂f1∂ϕ1δϕ1+∂f1∂ϕ4δϕ4δϕ0=∂f2∂ϕ1δϕ1+∂f2∂ϕ4δϕ4

即:

(4.2.10)xx˙=[∂f1∂ϕ1∂f1∂ϕ4∂f2∂ϕ1∂f2∂ϕ4]qq˙

雅可比矩阵 JJ 可以看成关节速度向末端速度的线性映射。注意:JJ 是关于 qq 的函数,因此,机器人在不同位形下,得到的雅可比矩阵也是不一样的。如果机械臂的关节数为 n,那么雅可比矩阵 JJ 为 n 列,即雅可比矩阵的列数等于关节数。雅可比矩阵的第 i 列表示第 i 个关节速度对末端速度的影响。定义雅可比矩阵 JJ 为:

JJ=[∂f1∂ϕ1∂f1∂ϕ4∂f2∂ϕ1∂f2∂ϕ4]

有:

(4.2.11)xx˙=JJqq˙

即通过雅可比矩阵 JJ 将关节速度 qq˙ 映射为五连杆姿态变化率 xx˙ 。

定义:

TT=[T1T2],FF=[FTp]

根据虚功原理,有:

(4.2.12)TTTqq˙+(−FF)Txx˙=0

将式 (4.1.11) 代入式 (4.1.12) ,有:

(4.2.13)TT=JJTFF

综上通过正运动学模型雅可比矩阵即可解算出关节电机输出力矩。 但对上文推导出的正运动学模型直接求取雅可比矩阵 JJ 并不是好办法,因为模型表达式中包含大量平方与三角函数及其嵌套运算,直接调用符号运算工具的求雅可比矩阵函数会得到极其复杂的结果,无法转移到嵌入式平台进行计算,故需要通过其他方法来计算。 根据式 (4.2.11) 可知,雅可比矩阵 JJ 实际描述的是两坐标微分的线性映射关系,因此我们可以通过计算速度映射关系来得到雅可比矩阵。 对式 (4.2.7) 求导可得:

(4.2.14){x˙C=−l1ϕ˙1sin⁡ϕ1−l2ϕ˙2sin⁡ϕ2y˙C=l1ϕ˙1cos⁡ϕ1+l2ϕ˙2cos⁡ϕ2

其中 ϕ1˙ 可由电机编码器测得,对式 (4.2.1) 求导可计算 ϕ2˙ :

(4.2.15){x˙B−l2ϕ˙2sin⁡ϕ2=x˙D−l3ϕ˙3sin⁡ϕ3y˙B+l2ϕ˙2cos⁡ϕ2=y˙D+l3ϕ˙3cos⁡ϕ3

消去 ϕ3˙ 求得 ϕ2˙ :

(4.2.16)ϕ˙2=(x˙D−x˙B)cos⁡ϕ3+(y˙D−y˙B)sin⁡ϕ3l2sin⁡(ϕ3−ϕ2)

其中:

{x˙B=−l2ϕ˙1sin⁡ϕ1y˙B=l2ϕ˙1cos⁡ϕ1x˙D=−l4ϕ˙4sin⁡ϕ4y˙D=l4ϕ˙4cos⁡ϕ4

将 ϕ2˙ 代入 (4.2.14) 可得:

(4.2.17){x˙C=−l1ϕ˙1sin⁡ϕ1−l2((x˙D−x˙B)cos⁡ϕ3+(y˙D−y˙B)sin⁡ϕ3l2sin⁡(ϕ3−ϕ2))sin⁡ϕ2y˙C=l1ϕ˙1cos⁡ϕ1+l2((x˙D−x˙B)cos⁡ϕ3+(y˙D−y˙B)sin⁡ϕ3l2sin⁡(ϕ3−ϕ2))cos⁡ϕ2

利用 MATLAB 进行符号运算,得:

3.3观测器设计 ​

使用卡尔曼滤波融合IMU加速度计与电机编码器,对机体姿态进行估计,以应对踩小弹丸一类的打滑场景

轮腿倒立摆机器人运动速度估计

具体代码实现请看

达妙科技开源轮腿

3.4打滑检测 ​

参数符号参数含义参数单位
θL、θR摆杆与竖直方向夹角rad
lL、lR左右连杆等效腿长m
ωL、ωR轮毂的转速rad/s
R轮半径m
W机体宽度m
V0上层机体平移速度m/s
VL、VR轮胎与地面接触点的绝对速度(滑动速度)m/s
VLr1、VRr1地面接触点相对于轮毂轴心的速度m/s
VLr2、VRr2轮毂轴心相对于机体的速度m/s
VLω、VRω上层机体旋转产生的附加速度m/s

在比赛场上非常有必要分析平衡机器人的打滑状态并做出调整,否则很容易翻车倒地,下面对经典力学防打滑的分析,检测平衡两轮毂与地面接触点的速度差值,当这个差值超过某个阈值时判定为打滑,下面求该速度差值:

右连杆地面接触点速度:

(4.4.1)VR→=V0→+V→Rr1+V→R,xr2+V→R,yr2+V→R,zr2+V→Rωx+V→Rωy+V→Rωz

地面接触点相对于右轮毂轴心的速度:

(4.4.2)V→Rr1=ωR→×R→=−ωRRex→

轮毂轴心相对于机体的位移差为:

(4.4.3)ΔxL=(−lRsin⁡θR)ex→+(−lRcos⁡θR)ez→

因此右轮轴心相对于机体的速度向量为:

(4.4.4){V→R,xr2=ddt(−lRsin⁡θR)ex→=−(l˙Rsin⁡θR+lRcos⁡θRθ˙R)ex→V→R,yr2=0V→R,zr2=ddt(−lRcos⁡θR)ez→=−(l˙Rcos⁡θR−lRsin⁡θRθ˙R)ez→

右侧地面接触点因机体横滚、俯仰、偏航而产生的附加速度向量为:

(4.4.5){V→Rωx=ωx→×(12W→+lR→+R→)=ωx(lRcos⁡θR+R)ey→−12ωxWez→V→Rωy=ωy→×(12W→+lR→+R→)=−ωy(lRcos⁡θR+R)ex→+ωylRsin⁡θRez→V→Rωz=ωz→×(12W→+lR→+R→)=12ωzWex→−ωzlRsin⁡θRey→

同理 左连杆地面接触点速度:

(4.4.6)VL→=V0→+V→Lr1+V→L,xr2+V→L,yr2+V→L,zr2+V→Lωx+V→Lωy+V→Lωz

地面接触点相对于左轮毂轴心的速度:

(4.4.7)V→Lr1=ωL→×R→=−ωLRex→

左轮轴心相对于机体的速度向量为:

(4.4.8){V→L,xr2=ddt(−lLsin⁡θL)ex→=−(l˙Lsin⁡θL+lLcos⁡θLθ˙L)ex→V→L,yr2=0V→L,zr2=ddt(−lLcos⁡θL)ez→=−(l˙Lcos⁡θL−lLsin⁡θLθ˙L)ez→

左侧地面接触点因机体横滚、俯仰、偏航而产生的附加速度向量为:

(4.4.9){V→Lωx=ωx→×(−12W→+lL→+R→)=ωx(lLcos⁡θL+R)ey→+12ωxWez→V→Lωy=ωy→×(−12W→+lL→+R→)=−ωy(lLcos⁡θL+R)ex→+ωylLsin⁡θLez→V→Lωz=ωz→×(−12W→+lL→+R→)=−12ωzWex→−ωzlLsin⁡θLey→

速度差值为:

(4.4.10)VL→−VR→=(V→Lr1−V→Rr1)+(V→L,xr2−V→R,xr2)+(V→L,zr2−V→R,zr2)+(V→Lωx−V→Rωx)+(V→Lωy−V→Rωy)+(V→Lωz−V→Rωz)

当速度差值的大小 |VL→−VR→|≥VTH 时,判定为机器人打滑,再做后续处理。式 (4.4.10) 中所有值均为已知量,故可以通过 LinkScope 查看 |VL→−VR→| 波形判断速度阈值 VTH ,一般取 VTH∈[0.05,0.15]m/s 。

4.说明 ​

  • 本文所有的公式推导与建模都基于右手系,本文 x 轴为机体前进正方向, z 轴竖直向上
  • 本文的姿态角均以右手系各轴的逆时针方向为正方向, Yaw 对应 z 轴,Pitch 对应 y 轴,Roll 对应 x 轴,以 Yaw 为例,绕 z 轴逆时针旋转, Yaw 值增加,且角速度为正值