优化差速转舵并增加纵向辨识测试
This commit is contained in:
+10
-1
@@ -21,13 +21,22 @@
|
||||
"MaxManualTheta": 45.0,
|
||||
"IsDiffSteer": true,
|
||||
"ManualThetaPow": 2.0,
|
||||
"DiffSteerKp": 0.003,
|
||||
"DiffSteerKp": 0.0042,
|
||||
"DiffSteerKi": 0.0,
|
||||
"DiffSteerKd": 0.0,
|
||||
"DiffSteerMaxI": 0.0,
|
||||
"DiffSteerThresh": 0.3,
|
||||
"DiffSteerDeadZone": 0.1,
|
||||
"DiffSteerSpeedAcc": 1.0,
|
||||
"DiffSteerRateFeedforwardGain": 0.0,
|
||||
"DiffSteerRateFeedforwardMaximumSpeed": 0.03,
|
||||
"EnableDiffSteerSettlingHysteresis": true,
|
||||
"DiffSteerStopErrorDegrees": 0.5,
|
||||
"DiffSteerRestartErrorDegrees": 0.8,
|
||||
"DiffSteerSettlingCycles": 3,
|
||||
"EnableDiffSteerInverseFeedforward": true,
|
||||
"DiffSteerPlantGain": 687.06,
|
||||
"DiffSteerInverseFeedforwardTimeConstantSeconds": 0.15,
|
||||
"Ghost_ActualSpeedLeftFront_GhostPIDUpdater_kp": 0.5,
|
||||
"Ghost_ActualSpeedLeftFront_GhostPIDUpdater_threshold": 200.0,
|
||||
"Ghost_ActualSpeedLeftRear_GhostPIDUpdater_kp": 0.5,
|
||||
|
||||
+1
-129
@@ -1,129 +1 @@
|
||||
对,当前日志足够做分层建模,但物理因果顺序要明确:
|
||||
|
||||
```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`。所以现有三组实验足够辨识转舵过程,但不能完整辨识车轮公共滚动速度对舵角的干扰。以后如果要研究车辆自转运行中的舵角漂移,还需补一次低速公共轮速实验。
|
||||
横纵向动力学分开
|
||||
Reference in New Issue
Block a user