优化差速转舵并增加纵向辨识测试
This commit is contained in:
@@ -218,12 +218,15 @@ Vrear = (Vx, Vy - ωR)
|
||||
|
||||
输入是车体中心有符号平移速度模长、当前运动系中的虚拟前后GCP方向。前后GCP法线交点确定ICR;每个真实轮子使用其运动系位置计算切线舵角和半径速度比例。机械限位通过等效舵角/反向轮速解析,无法满足时返回失败原因。
|
||||
|
||||
`SendMotion` 对每个轮子的目标速度应用 `AccPerSecond/DeAccPerSecond` 斜坡;加速或减速的判据是目标速度绝对值相对当前发送速度绝对值增大或减小。`PredefinedDriveStop()` 直接清零发送速度,不经过该减速斜坡。
|
||||
|
||||
## 配置接口
|
||||
|
||||
- `PilotConfig` 是Clumsy运行配置模型;`[FieldMember]` 字段提供默认值和宿主显示/持久化元数据。
|
||||
- `PilotDefinition.Conf` 是C层动作实际读取的运行配置对象。
|
||||
- `MultiWheelC/Configuration/PilotConfig.ParkingControl.cs` 集中停车状态估计、Stanley、纵向PID、原地自转、舵轮准备、GCP与完成条件参数。
|
||||
- 动作中的 nullable 覆盖字段用于特定动作段或测试;为空时使用车辆配置。车辆级限速和通用控制参数不应在普通实验中随意覆盖。
|
||||
- 多舵轮底盘几何和 `MaxSpeed/AccPerSecond/DeAccPerSecond` 由 `MultiWheelChassisInitializer` 从宿主工作目录相对路径 `../chassis.json` 加载,并覆盖 `AbstractChassis` 的字段默认值;启动输出会打印最终加载值。当前实车参考副本 `参考文档/chassis参考.json` 为 `AccPerSecond=0.3m/s²`、`DeAccPerSecond=1.0m/s²`,但只有部署端实际命名和路径正确的 `chassis.json` 会影响运行。
|
||||
- `参考文档/*.json` 是样例/实车复制资料;当前源码未发现这些JSON被 `PilotDefinition.Conf` 自动读取的入口。
|
||||
|
||||
运行时配置文件格式、位置和覆盖优先级由外部Clumsy宿主决定,当前仓库内待确认。
|
||||
@@ -232,6 +235,8 @@ Vrear = (Vx, Vy - ωR)
|
||||
|
||||
- C层 `PilotDefinition` 和M层 `DiverCartDefinition` 使用 `[AsUpperIO]`/`[AsLowerIO]` 对齐夹臂命令、驱动使能、位置反馈和车号等字段。
|
||||
- M层 `WheelSpeedDiagnosticLogger` 每次记录生成 `_can.csv` 和 `_snapshot.csv`:前者按CAN回调时刻保存八电机速度/位置与四舵角事件,后者按最多50Hz保存目标/实际舵角、目标角速度、PID/前馈/合成差速、限幅前后电机命令、速度/位置/电流反馈及各事件的本机单调时间、序号和数据年龄。MATLAB辨识时可使用 `TargetTh` 作为参考、`TotalDiff` 或 `Sent*` 作为执行输入、`ActualTh` 作为输出;左右轮公共/差速通道由方向统一后的左右命令和反馈在分析侧组合。
|
||||
- C层纵向辨识复用 `TrackingExperimentRecorder` 保存目标 `CommandVx`、Detour位姿和轮组原始/滤波速度;M层诊断中的 `SentSpeed*` 才是经过底盘速度斜坡与最终限幅后的执行输入。正式辨识应一组C层CSV对应一组M层CSV,并以首个非零发送命令边沿对齐两套本机时间。
|
||||
- `DiffSteerThresh` 通过 `PIDController.ChangeParameters()` 设置差速转舵PID的对称输出上限:例如配置0.3时,PID反馈项限制在[-0.3,+0.3]m/s。`MotorRoutine.UpdateDiffSteerWheelSpeeds()` 先将该反馈项与独立限幅的角速度前馈相加,再按左轮减、右轮加叠加到基础轮速;合成差速不会再次受 `DiffSteerThresh` 限制。最终八个单轮命令还会在 `MCURoutine` 中分别受 `SendThresSpeed` 限制。因此当前前馈增益为0、基础轮速为0且 `SendThresSpeed` 不低于0.3m/s的静止模式切换实验中,配置 `DiffSteerThresh=0.3` 可视为实际转舵差速的±0.3m/s上限;车辆行驶或重新启用前馈时,不能把它误当作每个电机最终总速度的唯一上限。
|
||||
- `DiverCartDefinition.CommunicationInit()` 默认通过Windows `COM4`、`1,000,000 baud` 打开MCU桥;`MCUPort` 是可配置初始化参数。
|
||||
- MCU内部配置为逻辑端口0:CAN `500,000 bit/s`;逻辑端口1~3:串口 `9,600 bit/s`。`MCURoutine.BatteryPortIndex = 3` 指MCU桥逻辑端口,不等同于Windows `COM3`。
|
||||
- CAN命令/反馈范围集中在 `MCURoutine.cs`:驱动命令 `0x201~0x20A`,速度/位置反馈 `0x281~0x28A`,状态 `0x181~0x18A`,舵角 `0x18B~0x18E`,远程帧 `0x701~0x70A`。
|
||||
|
||||
Reference in New Issue
Block a user