Files
note_sync/工作/VCU控制逻辑(v0.2).md

235 lines
11 KiB
Markdown
Raw Permalink 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.
# VCU(车辆控制单元)控制逻辑文档
## 1. 概述
VCU(Vehicle Control Unit)是车辆的核心控制中心,作为整车控制的基石,设计原则为**功能简单、运行稳定**,负责协调车辆各子系统的工作。
### 1.1 系统架构
VCU通过CAN总线与以下子系统直接通信:
- **BMS(电池管理系统)**:电池状态采集
- **OBC(车载充电机)**:充电状态监测、充电指令控制
- **电机控制器**:速度控制、扭矩输出控制
- **灯光控制系统**:远近光灯、转向灯、刹车灯、自动驾驶指示灯控制
- **ORIN(上层自动驾驶计算平台)**:接收自动驾驶指令、上报车辆状态
- **遥控器**:接收手动驾驶指令、手自动模式切换
- **机械臂控制器**:机械臂关节控制、作业工具控制
```mermaid
graph TD
RC --> VCU
ARM --> VCU
BMS--> VCU
VCU[VCU 控制中心] --> BMS[BMS 电池管理系统]
VCU --> OBC[OBC 车载充电机]
OBC --> VCU
ORIN --> VCU
VCU --> MOTOR[电机控制器]
VCU --> LIGHT[灯光控制系统]
VCU --> ORIN[ORIN 自动驾驶平台]
VCU --> RC[遥控器]
VCU --> ARM[机械臂控制器]
```
## 2. 充电控制逻辑
VCU负责整车充电流程的管理,通过CAN总线与BMS和OBC通信,收集两者状态并上报上层系统。
### 2.1 充电状态机
```mermaid
stateDiagram-v2
[*] --> OBC: 待充电状态
OBC --> WAIT_FOR_CHARGE_CMD: 检测到OBC可充电
ORIN --> CHARGING: 上层发送充电指令
WAIT_FOR_CHARGE_CMD --> CHARGING: 收到上层充电指令
WAIT_FOR_CHARGE_CMD --> CHARGING: 5分钟超时自动充电
OBC --> AUTO_CHARGE: 电量<25%且长时间停留在充电区域\n无上层控制
AUTO_CHARGE --> CHARGING: 自动执行充电指令
CHARGING --> AUTO_STOP_CHARGE: 电量充满
AUTO_STOP_CHARGE --> OBC: 自动停止充电
```
### 2.2 充电控制规则
1. **充电触发条件**:
- 当VCU检测到无线OBC处于可充电状态时,进入等待充电指令状态
- 优先等待上层(ORIN)发送充电开始指令
- 若等待超时(5分钟),自动进入充电状态
2. **充电停止条件**:
- BMS上报电量充满后,VCU自动向OBC发送停止充电指令
- 收到上层停止充电指令时,立即停止充电
3. **自动充电策略**:
- 车辆长时间停留在可充电区域且无上层控制指令时
- 当电池电量低于25%时,自动执行充电指令
- 电量充满后自动执行停止充电指令
## 3. 驾驶控制逻辑
VCU支持两种驾驶模式:**自动驾驶模式**(上层ORIN控制)和**手动驾驶模式**(遥控器控制),遥控器控制优先级高于上层控制。
### 3.1 模式切换逻辑
```mermaid
stateDiagram-v2
[*] --> SBUS_WAIT: 遥控器未开机
SBUS_WAIT --> AUTO_MODE: 上层ORIN连接并使能\n进入自动驾驶模式
AUTO_MODE --> SBUS_CONNECTED: 遥控器开机
SBUS_CONNECTED --> MANUAL_MODE: 遥控器手动模式\n不响应上层任何指令
SBUS_CONNECTED --> AUTO_MODE: 遥控器自动模式\n上层可接管控制
```
### 3.2 控制优先级规则
1. **遥控器未开机时**:
- 等待上层ORIN连接并发送使能指令
- 进入自动驾驶模式,响应ORIN的控制指令
2. **遥控器开机后**:
- 优先读取遥控器的手自动模式状态
- **手动模式**:完全不响应上层ORIN的任何指令,所有控制以遥控器为准
- **自动模式**:上层ORIN可以接管车辆控制
3. **高优先级刹车最高优先级**:遥控器独立刹车摇杆优先级高于所有其他控制指令,无论当前处于自动驾驶模式还是手动模式,只要拉动刹车摇杆,立即响应刹车指令,不受模式限制。
### 3.3 指令接收处理
VCU通过CAN总线接收两类控制指令:
#### 3.3.1 上层ORIN指令
- 速度控制指令
- 使能控制指令
- 灯光控制指令(远近光灯)
- 驻车控制指令
#### 3.3.2 遥控器指令
- 速度控制指令(单摇杆)
- 方向控制(单摇杆)
- 使能控制指令
- 灯光控制指令
- 手自动切换指令
- 驻车控制指令
- 模式切换指令
- 机械臂各关节控制指令
- 作业工具(滚刷)控制指令
- 高优先级刹车控制指令
## 4. 电机控制逻辑
### 4.1 遥控器单摇杆控制
- 支持**原地转向**功能:摇杆左右方向控制转向,前后方向控制速度
- 左右摇杆量直接对应转向角度,前后摇杆量对应目标速度
### 4.2 加减速限制
为保证行驶平稳性,对电机输出进行如下限制:
1. **最大加速度限制**:加速度不超过预设最大值(可配置,默认0.5g)
2. **最大减速度限制**:减速度不超过预设最大值(可配置,默认0.3g)
3. **避免急停**:当遥控器速度指令突然变为0时,不直接切断动力输出,而是按照最大减速度平滑减速至停止
### 4.3 高优先级刹车控制
遥控器配备独立高优先级刹车摇杆,为最高优先级控制输入,逻辑如下:
1. **全模式生效**:无论车辆当前处于自动驾驶模式还是手动驾驶模式,刹车摇杆指令均生效,不受当前控制模式限制
2. **力度线性控制**:刹车摇杆拉动幅度对应刹车力度,幅度越大减速度越大,最大减速度不超过系统预设的最大减速度限值,实现缓慢刹车,避免急停
3. **临时状态上报**:拉动刹车摇杆期间,VCU临时向上层ORIN上报车辆处于**手动模式**,同时屏蔽上层ORIN的速度控制指令,仅响应刹车指令
4. **释放自动恢复**:刹车摇杆完全释放后,立即恢复原运行模式,向ORIN上报实际模式状态,恢复响应上层速度控制指令
5. **不干涉其他控制**:刹车控制仅干预速度控制相关指令,不影响灯光、驻车、机械臂等其他控制功能
## 5. 灯光控制逻辑
灯光控制暂时由VCU自主判断处理,无需上层系统干预。
### 5.1 控制列表
| 灯光类型 | 控制逻辑 |
| -------- | -------------------- |
| 自动驾驶指示灯 | 自动驾驶模式开启时点亮,手动模式时熄灭 |
| 转向灯(左/右) | 根据转向指令自动开启,转向回正后自动关闭 |
| 刹车灯 | 车辆处于减速状态或驻车状态时点亮 |
| 远近光灯 | 接收上层或遥控器指令控制,默认不开启 |
###
## 6. 通信协议规范
### 6.1 CAN通信矩阵(摘要)
待补充
## 7. 故障处理与安全机制
### 7.1 通信故障处理
- 与BMS通信丢失:立即禁止充电,上报故障
- 与OBC通信丢失:终止当前充电流程,上报故障
- 与ORIN通信丢失:自动驾驶模式下减速停车,切换到待机状态
- 与遥控器通信丢失:手动模式下减速停车,开启危险报警灯;机械臂手动模式下停止机械臂所有运动并锁定
### 7.2 安全保护机制
待补充
## 8. 配置参数(可调整)
| 参数名称 | 默认值 | 说明 |
| --------- | ----- | ------------------- |
| 充电指令等待超时 | 5分钟 | 检测到可充电后等待上层指令的最长时间 |
| 自动充电SOC阈值 | 25% | 低于该值时自动启动充电 |
| 最大加速度 | 1m/s² | 正向加速度上限 |
| 最大减速度 | 1m/s² | 反向加速度(减速)上限 |
| CAN通信超时阈值 | 500ms | 连续500ms未收到报文判定为通信丢失 |
## 9. 机械臂控制逻辑
VCU支持机械臂手动控制功能,通过遥控器切换操作模式,实现底盘控制与机械臂控制的复用,遵循**手动优先**的控制原则。
### 9.1 模式切换逻辑
机械臂控制与底盘控制通过遥控器E拨杆进行切换,完全兼容《履带车T10遥控器协议与操作说明》:
```mermaid
stateDiagram-v2
[*] --> CHASSIS_MODE: E拨杆最左侧\n底盘控制模式
CHASSIS_MODE --> ARM_MODE: E拨杆拨到最右侧\n切换到机械臂控制模式
ARM_MODE --> CHASSIS_MODE: E拨杆拨到最左侧\n切换到底盘控制模式
state CHASSIS_MODE {
[*] --> CHASSIS_MANUAL: 手动模式
[*] --> CHASSIS_AUTO: 自动模式
}
state ARM_MODE {
[*] --> ARM_MANUAL: 手动模式(默认)
ARM_MANUAL --> ARM_AUTO: A按键切换到自动模式\n上层可控制机械臂
ARM_AUTO --> ARM_MANUAL: A按键切换到手动模式\n不响应上层指令
}
```
### 9.2 控制优先级规则
1. **手动模式优先**:无论机械臂处于何种状态,只要遥控器切换到机械臂手动控制模式,立即停止响应上层ORIN的机械臂控制指令
2. **模式互斥**:E拨杆同一时间只能处于一种模式,底盘控制与机械臂控制不可同时操作
3. **自动模式使能**:机械臂自动模式下,上层ORIN可以发送机械臂控制指令,VCU转发给机械臂控制器
### 9.3 遥控器机械臂操作映射(E拨杆最右侧)
完全遵循《履带车T10遥控器协议与操作说明》定义的操作逻辑:
| 控制部件 | 功能 | 通道映射 |
|---------------|--------------------------|----------|
| 右摇杆X轴(x2) | 控制回转关节(joint1) | CH1 |
| 右摇杆Y轴(y2) | 控制动臂关节(joint4) | CH2 |
| 左摇杆Y轴(y1) | 控制横梁关节(joint3) | CH3 |
| 左摇杆X轴(x1) | 控制力臂关节(joint2) | CH4 |
| A按键 | 切换机械臂自动/手动控制模式 | CH7 |
| F拨杆 | 控制刷头上下移动(joint5) | CH6 |
| D轮盘 | 控制滚刷启停/转速 | CH10 |
### 9.4 机械臂控制处理流程
1. VCU实时接收遥控器CAN报文(ID范围:0x187~0x18A)
2. 解析E拨杆(CH5)数值判断当前操作模式
3. **机械臂模式下**:
- 解析各通道摇杆量,转换为对应关节的目标角度/速度
- 将控制指令通过CAN总线发送给机械臂控制器
- 手动模式下直接转发遥控器指令,自动模式下转发上层ORIN指令
4. **底盘模式下**:
- 忽略机械臂相关通道数据,保持机械臂当前状态
- 执行底盘控制逻辑
### 9.5 安全保护机制
1. **模式切换保护**:在机械臂运行过程中切换到底盘模式时,立即停止机械臂所有运动,保持当前位置
2. **通信丢失保护**:遥控器通信丢失时,立即停止机械臂所有运动,进入锁定状态
3. **急停保护**:收到急停指令时,立即切断机械臂动力输出
## 10. 通信协议补充
### 10.1 遥控器CAN通信扩展
| CAN ID | 发送方 | 接收方 | 报文内容 | 周期 |
|--------|--------|--------|----------|------|
| 0x187 | 遥控器 | VCU | 通道1-4数据(摇杆) | 10ms |
| 0x188 | 遥控器 | VCU | 通道5-8数据(拨杆、按键) | 10ms |
| 0x189 | 遥控器 | VCU | 通道9-10数据(轮盘) | 10ms |
| 0x18A | 遥控器 | VCU | 保留 | 10ms |
| 0x18B | 遥控器 | VCU | 校验帧 | 10ms |