3 控制系统
在本章中,我将介绍用于稳定和运动控制的控制器,状态观测器以及跳跃轨迹的计算。 基于线性化的3D轮式倒立摆模型,我设计了状态反馈控制律。为了过滤和融合所有可用的测量,我使用了无迹卡尔曼滤波器。最后,我通过求解非线性优化问题来描述跳跃状态轨迹的计算。
3.1 稳定与运动控制
最初,打算基于线性化的平面模型为机器人的左侧和右侧设计两个独立的LQ状态控制器。不幸的是,由于这种系统的非最小相位动力学,该方法在偏航运动中变得不稳定,因为未考虑两侧的耦合。通过引入一个外部比例偏航阻尼器,我设法在仿真中克服了这个问题。 当在实物机器人上应用时,该解决方案被证明是无效的,因为在仿真中起作用的阻尼器增益太大,从而导致真实机器人的抽搐和摔倒。另一方面,具有较小增益值的阻尼器无法稳定偏航动力学。因此,我必须使用包含偏航耦合器的模型来进行控制器设计。我自然选择了完整的机器人3D模型。然而,本文旨在为机器人的第一个原型设计一种控制系统。因此,我打算尽可能简化数学模型和控制系统。我决定使用机器人的倒立摆简化来实现轮子稳定和身体电机的PD控制,与[3]中类似。
3.1.1 非线性模型的平衡
在进行控制器设计之前,我需要找到机器人的配置-平衡-使机器人稳定。 由于导出的运动方程是非线性且复杂的,用解析的方法计算它的解将是一项乏味甚至不可能完成的任务。因此,我采用了数值优化。
我将平衡时的角加速度和速度设置为零,因此根据(2.27):
这与(2.31)中的降阶模型一起给出了平衡条件:
可以进一步简化为:
如果 g g g项是由输入 τ i n τ_{in} τin补偿的,或者如果向量 − g + τ i n -g + τ _{in} −g+τin是 G T G^T GT的零空间的元素,则满足条件。为了找到这样的平衡点,我制定了以下优化任务:
在条件(3.3)和闭环运动约束(2.15)的情况下,以指定的期望值 θ 1 θ_1 θ1来最小化输入力矩:
这个问题有多种解决方案。其中有一些会导致相交。为了避免这些配置,我限制了剩余角度的值,以使其位于可接受的范围内。我用Matlab中的约束非线性问题求解器找到了理想的解决方案,其结果如表3.1所示。
3.1.2 3D轮式倒立摆模型
大众熟知大多数的摆式系统模型,图3.1中所示的轮式摆也不例外。因此,我不必自己推导它,而使用文献[9]推导的那个模型。为了方便读者阅读,这里写出它的方程式。 状态空间模型如下:
其中 I 0 x y I_{0xy} I0xy在垂直方向上轮子的转动惯量, m p m_p mp, I p x I_{px} Ipx, I p y I_{py} Ipy, I p z I_{pz} Ipz是不带轮子的整个摆的质量和转动惯量,l是连杆的长度, w w w是轮子的距离, x x x是摆的前进距离, φ \varphi φ是俯仰角, ψ \psi ψ是偏航角,并且 u 0 L u_{0L} u0L, u 0 R u_{0R} u0R分别是左右轮子的力矩。参数 m 0 m_0 m0, r 0 r_0 r0, I 0 I_0 I0, b b b, g g g与平面机器人模型中的参数相同。
接下来,使用上一部分的平面模型和平衡姿态来计算摆的参数。得到的摆的质量是除轮子以外的所有机器人零件质量的总和:
连杆长度l作为平衡位置下轮子与身体之间的距离来计算:
我决定忽略连杆的转动惯量,因为它们的值比身体的值小两个数量级。因此,我设置摆的惯性与Gazebo仿真器中的身体参数相匹配。距离 w w w也是根据3D Gazebo模型选择的。
3.1.3 线性化和离散化
接下来,继续进行3D轮式倒立摆模型的线性化(3.6):
通过计算线性连续系统 A c A_c Ac, B c B_c Bc的状态空间矩阵:
从线性连续系统中,我使用零阶保持器获得了状态空间矩阵 A d A_d A