1. 旋转倒立摆系统与控制需求解析
旋转倒立摆作为控制理论研究的经典对象,其本质是一个具有非线性、强耦合特性的欠驱动系统。系统由可绕固定轴旋转的摆杆构成,摆杆质心位于旋转支点上方,这种结构特性使得系统在垂直倒立位置处于不稳定平衡状态。从动力学角度看,系统状态变量包括摆杆角度θ、角速度θ'、旋转臂角度φ和角速度φ',但实际工程中往往只能直接测量部分状态。
在实际建模过程中,我们需要考虑以下几个关键参数:
- 摆杆长度L(通常0.2-0.5m)
- 摆杆质量m(50-200g)
- 旋转臂转动惯量J
- 电机转矩常数Kt
- 系统摩擦系数b
注意:建模时不可忽略库伦摩擦和粘滞摩擦的影响,这在实际系统中会导致稳态误差。我在实验室实测中发现,当忽略摩擦项时,仿真结果与实物偏差可达15%以上。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 三种控制策略的对比实现
2.1 PID控制器设计与调参
传统PID控制器的传递函数为:
code复制G(s) = Kp + Ki/s + Kd*s
针对旋转倒立摆,我们采用串级PID结构:
- 内环控制旋转臂速度
- 外环控制摆杆角度
具体调参步骤:
- 先调外环P参数至系统出现等幅振荡
- 记录此时的临界增益Ku和振荡周期Tu
- 按照Ziegler-Nichols法则设置初始参数:
- Kp = 0.6*Ku
- Ki = 1.2*Ku/Tu
- Kd = 0.075KuTu
实测中发现的调参技巧:
- 微分项对噪声敏感,建议先加一阶低通滤波
- 积分抗饱和采用clamping方法实现
- 采样周期应小于Tu/10
2.2 模糊逻辑控制器实现
采用双输入单输出结构:
- 输入1:角度误差e(论域[-30°,30°])
- 输入2:误差变化率ec(论域[-15,15]°/s)
- 输出:控制电压u(论域[-10,10]V)
隶属度函数设计要点:
matlab复制% 角度误差隶属函数
a = newfis('rotpen');
a = addvar(a,'input','e',[-30 30]);
a = addmf(a,'input',1,'NB','zmf',[-30 -15]);
a = addmf(a,'input',1,'NS','trimf',[-20 -10 0]);
..
