119 lines
4.0 KiB
Plaintext
119 lines
4.0 KiB
Plaintext
我检查了这组日志。结论是:上层目标速度和M层计算基本正常,CAN通信也比较稳定;真正明显的波动发生在驱动器返回的实际电机速度,尤其是右前轮组。
|
||
|
||
数据文件:
|
||
|
||
- [CAN原始反馈](</D:/Users/Desktop/入职培训/停车机器人/MyParking/logs/wheel-speed/20260730_112709_961_Car1_can.csv>)
|
||
- [周期快照](</D:/Users/Desktop/入职培训/停车机器人/MyParking/logs/wheel-speed/20260730_112709_961_Car1_snapshot.csv>)
|
||
|
||
主要结果:
|
||
|
||
| 项目 | 结果 |
|
||
|---|---:|
|
||
| 测试总时长 | 27.5s |
|
||
| 有效运动时间 | 约23.1s |
|
||
| 稳态目标速度 | 0.30045m/s |
|
||
| CAN反馈频率 | 每个电机约20Hz |
|
||
| CAN记录帧数 | 4413帧 |
|
||
| 记录器丢帧 | 未发现 |
|
||
| 整车平均实际速度 | 0.29988m/s |
|
||
| 整车平均速度标准差 | 0.01538m/s,约5.1% |
|
||
|
||
软件下发没有跳变
|
||
|
||
8个原始目标速度在稳态完全一致:
|
||
|
||
```text
|
||
CmdLFL~CmdRRR = 0.30045m/s
|
||
标准差 = 0
|
||
```
|
||
|
||
启动阶段也不是突然给到0.3,而是大约1秒内平滑上升:
|
||
|
||
```text
|
||
0 → 0.03 → 0.06 → …… → 0.30045m/s
|
||
```
|
||
|
||
因此不是遥控器、`SendMotion`或者速度加减速逻辑产生的目标跳变。
|
||
|
||
舵轮PID修正也很小
|
||
|
||
`PidLFL~PidRRR` 的范围大约是:
|
||
|
||
```text
|
||
0.2991~0.3018m/s
|
||
```
|
||
|
||
修正量只有约 `±0.001m/s`。所以不是 [MotorRoutine.cs](</D:/Users/Desktop/入职培训/停车机器人/MyParking/MedullaAdapter/MotorRoutine.cs:168>) 中的舵角差速PID把轮速改成了0.2~0.4。
|
||
|
||
实际CAN反馈波动明显
|
||
|
||
稳态阶段8个电机反馈范围如下:
|
||
|
||
| 电机 | 均值 m/s | 标准差 | 最小~最大 m/s |
|
||
|---|---:|---:|---:|
|
||
| LFL | 0.3010 | 0.0332 | 0.229~0.377 |
|
||
| LFR | 0.2990 | 0.0340 | 0.217~0.369 |
|
||
| LRL | 0.2996 | 0.0261 | 0.236~0.387 |
|
||
| LRR | 0.3001 | 0.0304 | 0.226~0.374 |
|
||
| RFL | 0.2992 | 0.0380 | 0.211~0.387 |
|
||
| RFR | 0.3021 | 0.0480 | 0.212~0.397 |
|
||
| RRL | 0.3013 | 0.0274 | 0.231~0.383 |
|
||
| RRR | 0.2982 | 0.0321 | 0.222~0.388 |
|
||
|
||
均值都接近0.3,说明:
|
||
|
||
- RPM解码和单位换算没有明显错误。
|
||
- 减速比10.5、轮径85mm至少在平均值上是匹配的。
|
||
- 正负号处理正确,没有运行中正负翻转。
|
||
|
||
但瞬时波动确实比较大,右前右电机 `RFR` 最明显。
|
||
|
||
舵角不是主要原因
|
||
|
||
直线阶段:
|
||
|
||
```text
|
||
四个目标舵角始终为 0°
|
||
实际舵角基本在 ±0.4°以内
|
||
```
|
||
|
||
没有出现舵角从正角度跳到负等价角,也没有发生接近180°的方向重选。因此这次轮速波动不是舵轮方向正负切换造成的。
|
||
|
||
CAN通信整体正常
|
||
|
||
8个驱动器基本都是:
|
||
|
||
```text
|
||
反馈频率 ≈ 20Hz
|
||
通常最大间隔 ≈ 63ms
|
||
```
|
||
|
||
只有 `LFR` 出现过一次约105ms的间隔,像是偶发少一帧,但不足以解释整个测试期间持续的轮速波动。
|
||
|
||
需要注意的问题
|
||
|
||
同一舵轮内部两个电机的实际速度差,瞬时可达到约:
|
||
|
||
```text
|
||
0.075~0.10m/s
|
||
```
|
||
|
||
但软件下发给两个电机的差值只有约 `0.001m/s`。这说明较大的左右电机速度差不是M层主动要求的。
|
||
|
||
可能来源依次是:
|
||
|
||
1. 驱动器自身速度闭环参数或速度反馈滤波不足。
|
||
2. 编码器瞬时速度估计噪声。
|
||
3. 同一舵轮两个驱动电机负载不均。
|
||
4. 机械间隙、轮胎形变或地面摩擦变化。
|
||
5. 驱动器内部电流限幅或母线电压波动。
|
||
|
||
另外,`snapshot.csv` 实际只有约12.8Hz,而不是期望的50Hz。原始CAN仍有20Hz,所以本次诊断结论有效;但说明 `MCURoutine.Operation()` 中的同步串口、IO和多次CAN调用占用了较长时间。以后做快速轨迹控制时需要单独处理这个周期问题。
|
||
|
||
下一步最有价值的测试是:
|
||
|
||
- 把驱动轮架空,同样下发0.3m/s并记录一次。
|
||
- 落地空载,再记录一次。
|
||
- 分别测试0.1、0.2、0.3m/s,每档保持10秒。
|
||
|
||
如果架空后仍然在0.2~0.4之间波动,重点检查驱动器速度环和编码器速度反馈;如果架空稳定、落地波动,则重点检查机械负载、轮胎和同一舵轮双电机同步。 |