Files
ParkingRobot/电机记录.txt
T

119 lines
4.0 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
我检查了这组日志。结论是:上层目标速度和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
CmdLFLCmdRRR = 0.30045m/s
标准差 = 0
```
启动阶段也不是突然给到0.3,而是大约1秒内平滑上升:
```text
0 → 0.03 → 0.06 → …… → 0.30045m/s
```
因此不是遥控器、`SendMotion`或者速度加减速逻辑产生的目标跳变。
舵轮PID修正也很小
`PidLFLPidRRR` 的范围大约是:
```text
0.29910.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.2290.377 |
| LFR | 0.2990 | 0.0340 | 0.2170.369 |
| LRL | 0.2996 | 0.0261 | 0.2360.387 |
| LRR | 0.3001 | 0.0304 | 0.2260.374 |
| RFL | 0.2992 | 0.0380 | 0.2110.387 |
| RFR | 0.3021 | 0.0480 | 0.2120.397 |
| RRL | 0.3013 | 0.0274 | 0.2310.383 |
| RRR | 0.2982 | 0.0321 | 0.2220.388 |
均值都接近0.3,说明:
- RPM解码和单位换算没有明显错误。
- 减速比10.5、轮径85mm至少在平均值上是匹配的。
- 正负号处理正确,没有运行中正负翻转。
但瞬时波动确实比较大,右前右电机 `RFR` 最明显。
舵角不是主要原因
直线阶段:
```text
四个目标舵角始终为 0°
实际舵角基本在 ±0.4°以内
```
没有出现舵角从正角度跳到负等价角,也没有发生接近180°的方向重选。因此这次轮速波动不是舵轮方向正负切换造成的。
CAN通信整体正常
8个驱动器基本都是:
```text
反馈频率 ≈ 20Hz
通常最大间隔 ≈ 63ms
```
只有 `LFR` 出现过一次约105ms的间隔,像是偶发少一帧,但不足以解释整个测试期间持续的轮速波动。
需要注意的问题
同一舵轮内部两个电机的实际速度差,瞬时可达到约:
```text
0.0750.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之间波动,重点检查驱动器速度环和编码器速度反馈;如果架空稳定、落地波动,则重点检查机械负载、轮胎和同一舵轮双电机同步。