129 lines
2.4 KiB
Plaintext
129 lines
2.4 KiB
Plaintext
对,当前日志足够做分层建模,但物理因果顺序要明确:
|
|
|
|
```text
|
|
目标舵角 TargetTh
|
|
↓
|
|
舵角PID/前馈控制器
|
|
↓
|
|
左右电机实际下发命令 SentLeft / SentRight
|
|
↓
|
|
左右电机实际速度 ActualLeft / ActualRight
|
|
↓
|
|
左右轮差速产生舵轮转动
|
|
↓
|
|
实际舵角 ActualTh
|
|
```
|
|
|
|
你可以建立以下几层模型。
|
|
|
|
1. 单个电机响应模型
|
|
|
|
分别辨识:
|
|
|
|
```text
|
|
SentLeft → ActualLeft
|
|
SentRight → ActualRight
|
|
```
|
|
|
|
例如左前舵轮:
|
|
|
|
```matlab
|
|
G_LFL = ActualLFL / SentLFLMps;
|
|
G_LFR = ActualLFR / SentLFRMps;
|
|
```
|
|
|
|
这可以得到左右电机各自的延迟、时间常数和增益,判断两个电机是否同步。
|
|
|
|
2. 差速轮对模型
|
|
|
|
计算:
|
|
|
|
```matlab
|
|
uDiff = (SentRightMps - SentLeftMps) / 2;
|
|
vDiff = (ActualRight - ActualLeft) / 2;
|
|
```
|
|
|
|
辨识:
|
|
|
|
```text
|
|
uDiff → vDiff
|
|
```
|
|
|
|
它表示控制器给出的差速命令,到两个电机真正形成差速运动的过程。
|
|
|
|
3. 差速运动到舵角模型
|
|
|
|
辨识:
|
|
|
|
```text
|
|
vDiff → ActualTh
|
|
```
|
|
|
|
理论运动学关系是:
|
|
|
|
\[
|
|
\dot{\theta}=\frac{v_R-v_L}{d}
|
|
=\frac{2v_{\mathrm{diff}}}{d}
|
|
\]
|
|
|
|
所以这一层理论上主要是积分环节:
|
|
|
|
\[
|
|
\theta(s)=\frac{2}{d\,s}v_{\mathrm{diff}}(s)
|
|
\]
|
|
|
|
实际数据中还会包含摩擦、轮胎滑动、机械间隙和舵角反馈延迟。
|
|
|
|
4. 整体舵轮对象模型
|
|
|
|
直接辨识:
|
|
|
|
```text
|
|
uDiff → ActualTh
|
|
```
|
|
|
|
这一模型包含:
|
|
|
|
- 两个电机的响应延迟
|
|
- 左右电机不同步
|
|
- 差速转舵运动学
|
|
- 摩擦和机械滞后
|
|
- 舵角传感器延迟
|
|
|
|
这是后续设计舵角PID最有用的模型。
|
|
|
|
5. 完整闭环模型
|
|
|
|
还可以辨识:
|
|
|
|
```text
|
|
TargetTh → ActualTh
|
|
```
|
|
|
|
它包含当前PID参数,适合评价现有系统的上升时间、超调和稳定时间,但不适合单独用来重新设计PID对象。
|
|
|
|
因此建议在Simulink中建立:
|
|
|
|
```text
|
|
TargetTh
|
|
↓
|
|
Controller
|
|
↓
|
|
Motor Pair Dynamics
|
|
↓
|
|
Differential Steering Mechanics
|
|
↓
|
|
ActualTh
|
|
└────────反馈────────┘
|
|
```
|
|
|
|
第一版控制率设计优先使用:
|
|
|
|
```text
|
|
输入:uDiff
|
|
输出:ActualTh
|
|
```
|
|
|
|
单电机模型用于解释左右不同步和优化补偿。
|
|
|
|
需要注意:模式切换时主要激励的是差速通道,`uCommon≈0`。所以现有三组实验足够辨识转舵过程,但不能完整辨识车轮公共滚动速度对舵角的干扰。以后如果要研究车辆自转运行中的舵角漂移,还需补一次低速公共轮速实验。 |