Self-balance Control of Bicycle with Inertial Wheel Pendulum based on Linear ADRC
https://ieeexplore.ieee.org/document/10055063
1. 论文细节
1.1 摘要
摘要:本文研究了带惯性轮摆(IWP)的无人自行车在外部干扰和模型不完整情况下的自平衡控制问题。通过拉格朗日方法将无人自行车系统简化为倒立摆模型进行建模。为实现无人自行车在垂直方向上的稳定性并完成自平衡控制,提出了一种基于线性自抗扰控制(LADRC)的方法,并与PID控制器进行对比。为验证所提方法的性能,在具备真实物理特性仿真能力的ROS-Gazebo平台上进行实验,同时与比例-积分-微分(PID)控制器开展对比仿真。结果表明:基于LADRC控制器的无人自行车系统具有更优的自平衡性能,且对外部干扰和建模误差具有强鲁棒性。
关键词:线性自抗扰控制;自平衡控制;无人自行车;惯性轮摆;ROS
1.2 数学建模

假设自行车的质量为m1,质心为o,自行车旋转产生的转动惯量为I1,自行车与垂直方向的夹角为θ,坐标原点o1到质心o的距离为L1;设飞轮的质量为m2,飞轮的质心为o2,绕其质心的转动惯量为I2,飞轮的旋转角度为ϕ,原点o1到飞轮质心o2的距离为L2。然后,利用以下方程推导出系统的拉格朗日动力学方程:
dtd(∂q˙∂L)−∂q∂L=Q(1)
其中L为拉格朗日算子,q为广义坐标,Q为对应于该广义坐标的广义力。
L(q,q˙)=T−V.(2)
拉格朗日算子 L 由系统的总动能减去系统的总势能得到。本文选取 θ 和 ϕ 作为广义坐标,其对应的广义力分别为 0 和 τ。
系统的总动能由自行车动能与飞轮动能之和构成:
T=T1+T2(3)
即
T=21(m1L12+m2L22+I1+I2)θ˙2+I2θ˙ϕ˙+21I2ϕ˙2.(4)
系统的总势能可表示为:
V=(m1L1+m2L2)gcosθ(5)
那么拉格朗日算子为:
L=21(m1L12+m2L22+I1+I2)θ˙2+I2θ˙ϕ˙+21I2ϕ˙2−(m1L1+m2L2)gcosθ.(6)
代入式(1)中的拉格朗日方程,推导出以下两个方程:
⎩⎨⎧(m1L12+m2L22+I1+I2)θ¨+I2ϕ¨−(m1L1+m2L2)gsinθ=0I2(θ¨+ϕ¨)=τ(7)
上式是IWP系统的非线性数学模型表达式。为简化分析和计算,考虑在θ=0附近对系统进行线性化,表示为:
⎩⎨⎧(m1L12+m2L22+I1+I2)θ¨+I2ϕ¨−(m1L1+m2L2)gθ=0I2(θ¨+ϕ¨)=τ(8)
对式(8)进行参数化处理,得到以下两个方程:
θ¨=m1L12+m2L22+I1(m1L1+m2L2)gθ−m1L12+m2L22+I11τ(9)
ϕ¨=−m1L12+m2L22+I1(m1L1+m2L2)gθ+(m1L12+m2L22+I1)I2m1L12+m2L22+I1+I2τ(10)
选择x=[x1,x2,x3,x4]⊤=[θ,θ˙,ϕ,ϕ˙]⊤作为系统的状态变量,系统的状态空间方程如下所示:
⎣⎡θ˙θ¨ϕ˙ϕ¨⎦⎤=⎣⎡0m1L12+m2L22+I1(m1L1+m2L2)g0−m1L12+m2L22+I1(m1L1+m2L2)g100000000010⎦⎤⎣⎡θθ˙ϕϕ˙⎦⎤+⎣⎡0−m1L12+m2L22+I110(m1L12+m2L22+I1)I2m1L12+m2L22+I1+I2⎦⎤τ(11)
IWP系统的参数与ROS-Gazebo环境中自行车的参数一致。自行车整体包括前轮、后轮、车身和把手,具体参数如表I所示:
参数 | 数值 |
---|
自行车重心垂直高度(L1) | 0.7 m |
质量飞轮重心垂直高度(L2) | 0.9 m |
自行车总质量(m1) | 5.54 kg |
飞轮质量(m2) | 5.35 kg |
自行车转动惯量(I1) | 2.7146 kg·m² |
质量飞轮转动惯量(I2) | 0.03 kg·m² |
重力加速度(g) | 9.81 m/s² |
1.3 自平衡自行车系统的LADRC控制器设计
线性自抗扰控制(LADRC)基于自抗扰控制理论,包含PD控制和线性扩张状态观测器(LESO)。本文利用Python语言在ROS中实现LADRC控制算法,需对LESO进行离散化处理。
1.3.1 A. LESO的离散化
对于带质量飞轮的无人自行车系统,自平衡问题可简化为车身倾角控制问题,因此系统可表示为:
θ¨=f+b0u,
其中θ为车身倾角,f为包含系统内外扰动的总扰动。选取状态变量:
x1=θ,x2=θ˙,x3=f,
则x=[θθ˙f]⊤为带扰动的扩张状态,连续型扩张状态观测器可表示为:
{x˙=Ax+Bu+Ef˙y=Cx(12)
其中,
A=⎣⎡000100010⎦⎤,
B=⎣⎡0b00⎦⎤,
E=⎣⎡001⎦⎤,
C=[100]。
由于f˙未知但可估计,可将其忽略。对应的连续型LESO为:
{z˙=Az+Bu+R(y−y^)y^=Cz(13)
其中,z=[z1z2z3]⊤为观测器的状态向量,R为观测器误差反馈增益矩阵。整理观测器方程可得:
{z˙=[A−RC]z+Bu+Ryyc=z(14)
联立式(12)和式(14),经参数化后可得到:
x˙−z˙=(A−RC)(x−z)(15)
为使观测器能良好观测上述系统的状态,期望观测误差为0时,可将特征方程的极点配置在相同位置−ωo,ωo为观测器带宽。因此取观测器增益矩阵R=[3ωo3ωo2ωo3]⊤,使得λ(s)=∣sI−(A−RC)∣=(s+ωo)3。此时观测器增益矩阵与观测器带宽唯一相关,使得连续型LESO的设计变得简便。
最终设计的系统LESO为:
z˙=⎣⎡−3ωo−3ωo2−ωo3100010⎦⎤z+⎣⎡0b00⎦⎤u+⎣⎡3ωo3ωo2ωo3⎦⎤y.(16)
由式(16)可得:
⎩⎨⎧z1˙=−3ωoz1+z2+3ωoyz2˙=−3ωo2z1+z3+b0u+3ωo2yz3˙=−ωo3z1+ωo3y(17)
式中z1−3表示LESO的状态向量,分别对应输出量y、输出量微分y˙及总扰动f的估计值。
LESO采用前向欧拉法进行离散化,离散化后的LESO如下所示:
⎩⎨⎧z1(k+1)=z1(k)+h(z2(k)+3ωo(y(k)−z1(k))),z2(k+1)=z2(k)+h(z3(k)+b0u(k)+3ωo2(y(k)−z1(k))),z3(k+1)=z3(k)+h(ωo3(y(k)−z1(k)))(18)
其中,h为积分步长。
1.3.2 B. LADRC控制器设计
本文设计的无人自行车自平衡控制系统通过质量飞轮旋转产生的力矩克服自行车重力的倾倒效应。因此,可通过设计控制器使车体倾斜角始终保持在0∘来实现自行车平衡。
无人自行车自平衡LADRC控制器原理如下图所示(图2):

系统的输出y为自行车倾斜角,参考输入r为期望倾斜角,控制量u作为被控对象输入用于驱动质量飞轮旋转。由于线性扩张状态观测器(LESO)能对外部干扰和内部扰动进行估计补偿,线性状态误差反馈控制律可进一步简化为PD组合形式,以保留PID控制算法的优势。PD控制组合可表示为:
u0=kp(r−z1(k+1))−kdz2(k+1)(19)
式中:r为给定期望倾斜角值,z1(k+1)和z2(k+1)为离散化LESO的观测器状态,kp和kd分别为比例放大因子和微分放大因子。控制律表达式为:
u=b0u0−z3(k+1)(20)
当LESO理想工作时,系统总扰动f可被z3(k+1)完全估计,此时被控对象简化为二重积分型系统:
θ¨=f−z3(k+1)+u0=u0(21)
从而使闭环传递函数成为无零点的纯二阶系统:
G=s2+kds+kpkp(22)
其中kp和kd为待设计的控制器增益,其参数化选取关系为:
kp=ωc2,kd=2ωc(23)
ωc为控制器带宽,这使得PD控制器参数与控制器带宽形成唯一关联,从而简化控制器设计过程。
1.4 仿真与结果分析
本文采用ROS-Gazebo虚拟仿真平台验证无人自行车动力学性能及所提出控制方法的有效性。在Gazebo中进行系统仿真的首要步骤是建立无人自行车虚拟模型,如图3所示。
图3. Gazebo环境中的无人自行车模型
该无人自行车虚拟模型通过统一机器人描述文件格式(URDF)进行构建。主体结构包含四个连杆部件:前轮(wheel2)、后轮(wheel1)、车体框架(frame)及转向把手(steering),并配置有质量飞轮(balancer)用于实现无人自行车的自平衡控制。在此虚拟模型中,质量飞轮与车体无需实际接触,但二者之间存在特定的连接关系。本文无人自行车模型的URDF结构如下:

各连杆通过关节相互连接。该模型整体结构包含四个关节,各关节信息如下:
frame_wheel_joint:父关节为车架(frame),子关节为后轮(wheel1),控制后轮旋转以实现无人自行车模型的前进运动。关节类型为连续型(continuous),具有绕单轴无限旋转的特性。
frame_steering_joint:父关节为车架(frame),子关节为转向把手(steering),控制把手转向。关节类型为回转型(revolute),其特点为绕单轴旋转且运动范围受限。由于把手转向存在特定角度限制,该关节元素还包含"limit"(限位)与"dynamics"(动力学参数)属性。
steering_wheel_joint:父关节为转向把手(steering),子关节为前轮(wheel2),控制前轮旋转。关节类型为连续型(continuous),无附加约束。在自行车实际运动中,前轮绕其轴心作为被动关节旋转,不施加主动扭矩。
frame_balancer_joint:父关节为车架(frame),子关节为平衡飞轮(balancer),关节类型为连续型(continuous),用于控制质量飞轮的旋转。质量飞轮的旋转不受约束,可绕单轴连续转动。因此,在控制自行车虚拟模型时,前轮作为被动关节,仅需控制上述三个关节(后轮、转向把手及平衡飞轮)。这些关节属性与元素的设置能使自行车虚拟模型更贴近真实自行车特性。
此外,为实现对各关节的控制,需为每个关节配置相应的控制器类型与硬件接口类型。针对上述模型结构中的各关节,所需控制器类型与硬件接口类型的设置如表II所示。基于此配置,通过在ROS-Gazebo仿真环境中,基于上述配置分别对以下两种自平衡工况进行实验:(1)当系统参考输入变化(即期望倾角改变)时,自行车系统能否跟踪给定倾角;(2)当车把转角受到扰动时,自行车系统能否保持平衡。实验将LADRC算法与PID算法进行对比,经过多次实验比对结果,最终选定LADRC控制器参数为:ωo=2.85、ωc=1.0、b0=−0.13,PID控制器参数为kp=5.9、ki=0、kd=26.0(取消积分项对结果具有更好影响)。
本仿真实验中,自行车转向角上下限设置为±30∘,车把受力为正时向左转向、受力为负时向右转向,同时车把左转时转角为负、右转时转角为正。针对第一种自平衡工况,自行车初始车身倾角为0∘,按0∘→−5.7∘→−11.4∘→0∘→5.7∘顺序改变期望车身倾角。实验表明系统能跟踪给定倾角,自行车在特定倾角下仍能保持稳定,且当期望车身倾角为0∘时,系统将恢复直立状态。

两种控制器作用下的自行车车身倾角变化曲线如图5所示,其中图5(a)为PID控制器效果,图5(b)为LADRC控制器效果。

扩张状态观测器(ESO)的跟踪效果如图6所示,其中z1表示ESO输出,y为系统输出。结果表明ESO能够准确估计系统输出。

仿真结果表明,配备惯性飞轮(IWP)的自行车系统能够将车身姿态维持在特定角度,且当期望倾角为0∘时系统能逐渐恢复直立状态。与PID控制器相比,LADRC控制器具有更小的超调量,调节过程更为平缓且无明显波动。
针对第二种工况,众所周知转动车把会导致自行车失稳。因此将转向角变化视为扰动,基于车身自平衡控制分别进行两组实验来验证其鲁棒性。由于车把转角采用位置控制器,两组实验施加相同扰动:在仿真时间15秒时使车把左转至−30∘,30秒时右转至30∘,40秒时恢复至初始0∘状态。仿真结果如下所示。


图7和图8分别展示了在扰动作用下,采用PID控制器和LADRC控制器时自行车车身倾角与车把转角的变化曲线。
仿真结果表明:当对车把施加扰动时,自行车车身倾角确实会发生显著变化,从而影响自行车的稳定性,但自行车系统在扰动下仍能保持平衡。与PID控制器相比,LADRC控制器波动更小,在扰动作用下能更好地将车身倾角恢复到接近0∘,具有更好的鲁棒性。
1.5 结论
本文基于惯性轮摆原理设计了一种无人自行车自平衡系统。通过建立惯性轮摆的拉格朗日动力学模型,并将其视为自行车系统的简化数学模型,在存在未知扰动和建模误差的情况下,采用LADRC控制方法和PID控制器对无人自行车系统进行控制。在ROS-Gazebo物理仿真环境中实现了带质量飞轮的无人自行车虚拟模型,并在该虚拟模型上进行了仿真实验。仿真结果表明,LADRC控制算法具有更好的控制效果,能够有效抑制扰动。
2. ADRC自抗扰控制器的理论推导与公式整理
这是这个网页https://zhuanlan.zhihu.com/p/671469224 绘制的图,论文里的图没有绘制TD,并且SEF其实就是PD计算:

ADRC (Active Disturbance Rejection Control,自抗扰控制) 是一种先进的控制方法,它由三个主要部分组成:TD (跟踪微分器)、ESO (扩张状态观测器) 和 SEF (状态误差反馈控制律)。下面我将详细整理每个部分的公式和原理。
2.1. ADRC的基本思想
ADRC的核心思想是将复杂系统简化为最基本的控制问题,通过估计并补偿系统中的"总扰动",无需精确的数学模型即可实现高质量控制。
对于自行车平衡系统,简化后的动态模型为:
ddot(θ) = f + b₀·u
其中:
- θ 是自行车的倾斜角(输出)
- u 是控制输入(作用在飞轮上的力矩)
- b₀ 是输入增益系数(论文中为-0.13)
- f 代表系统中所有未知动态和干扰的总和
2.2. ADRC的三个核心组件
2.2.1 TD(跟踪微分器)
TD的作用是对给定的参考信号r进行平滑处理,产生过渡过程,并提供其微分信号。在线性ADRC中,典型的二阶TD公式为:
dot(v₁) = v₂
dot(v₂) = r₀²·(r - v₁) - 2·r₀·v₂
其中:
- v₁ 是对参考信号r的跟踪
- v₂ 是v₁的微分(即r的近似微分)
- r₀ 是跟踪微分器的带宽参数
离散化后:
v₁(k+1) = v₁(k) + h·v₂(k)
v₂(k+1) = v₂(k) + h·(r₀²·(r(k) - v₁(k)) - 2·r₀·v₂(k))
注意: 在论文中的自行车系统实现中,并没有显式使用TD组件,这是因为对于固定的目标值(平衡状态θ=0°)或简单变化的参考轨迹,可以直接使用原始参考信号,而不需要TD的平滑处理。
2.2.2 ESO(扩张状态观测器)
ESO是ADRC的核心部分,用于实时估计系统状态和总扰动。对于二阶系统,线性ESO(LESO)的连续形式为:
dot(z₁) = z₂ + β₁·(y - z₁)
dot(z₂) = z₃ + b₀·u + β₂·(y - z₁)
dot(z₃) = β₃·(y - z₁)
其中:
- z₁, z₂, z₃ 分别是对系统输出y、其导数、以及总扰动f的估计
- β₁, β₂, β₃ 是观测器增益
- y 是系统实际输出
- u 是控制输入
极点配置方法是一种控制系统设计技术,它通过合理选择控制器参数,将系统的闭环极点(特征方程的根)放置在期望位置,以获得预期的系统动态性能。
在控制理论中,系统的极点决定了系统的动态响应特性:
- 极点的实部决定了系统响应的衰减速度
- 极点的虚部决定了系统响应的振荡频率
在极点配置方法下,观测器增益设置为:
β₁ = 3·ω₀
β₂ = 3·ω₀²
β₃ = ω₀³
其中ω₀是观测器带宽,直接决定了ESO的响应速度。
离散化后的LESO公式(使用前向欧拉法):
z₁(k+1) = z₁(k) + h·(z₂(k) + 3·ω₀·(y(k) - z₁(k)))
z₂(k+1) = z₂(k) + h·(z₃(k) + b₀·u(k) + 3·ω₀²·(y(k) - z₁(k)))
z₃(k+1) = z₃(k) + h·(ω₀³·(y(k) - z₁(k)))
这里h是采样时间(积分步长)。这些方程直接对应于论文中的式(18)以及代码中的_update_leso
方法。
2.2.3 SEF(状态误差反馈控制律)
SEF基于ESO估计的状态,形成对系统的控制。对于二阶系统,线性SEF控制律包括两部分:
-
误差反馈部分(u₀):
u₀ = k_p·(r - z₁) - k_d·z₂
其中:
- r 是目标值(参考输入)
- z₁, z₂ 是ESO估计的系统状态
- k_p, k_d 是控制增益
-
扰动补偿部分:
u = (u₀ - z₃) / b₀
其中z₃是ESO估计的总扰动。
对于线性ADRC,控制增益通常设置为:
k_p = ω_c²
k_d = 2·ω_c
其中ω_c是控制器带宽,直接决定了控制器的响应速度。
这些公式对应于论文中的式(19)、(20)和(23)以及代码中的update
方法。
2.3. ADRC的参数整定
LADRC的关键参数只有三个:
- b₀:系统输入增益(通常基于系统物理特性估计)
- ω₀:观测器带宽(决定ESO的响应速度)
- ω_c:控制器带宽(决定控制器的响应速度)
一般原则是:
- ω₀ > ω_c(观测器应比控制器更快)
- 增大ω₀可提高观测精度,但也会增加噪声敏感性
- 增大ω_c可加快系统响应,但也可能导致控制信号过大或不稳定
在论文中,这些参数设置为:
- b₀ = -0.13
- ω₀ = 2.85
- ω_c = 1.0
2.4. ADRC的工作流程
ADRC的工作流程可以概括为:
- TD部分:对参考信号进行跟踪和微分(如果需要)
- ESO部分:实时估计系统状态和总扰动
- SEF部分:
- 基于状态估计,计算误差反馈控制:u₀ = k_p·(r - z₁) - k_d·z₂
- 加入扰动补偿:u = (u₀ - z₃)/b₀
- 执行:将控制信号u应用到系统
3. 代码
https://github.com/xxddccaa/adrc-python-iwp