rm_balance/balance_chassis_migration.md

100 lines
2.6 KiB
Markdown
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.

# Balance Chassis Module 移植完成
## 概述
已将 `ctrl_chassis` 任务中的底盘控制代码成功移植到 `balance_chassis` 模块中,实现了模块化的底盘控制系统。
## 主要功能
### 1. 电机支持
- **关节电机**: 4个LZ电机用于关节控制
- **轮子电机**: 2个LK电机用于轮子控制
### 2. CAN通信协议
#### 控制命令ID接收
- `ID 121`: 使能4个关节电机
- `ID 122`: 关节电机运控模式控制8字节力矩数据
- `ID 128`: 左轮电机控制命令(直接转发格式)
- `ID 129`: 右轮电机控制命令(直接转发格式)
#### 反馈数据ID发送
- `ID 124-127`: 关节电机反馈数据
- 转矩电流(2字节) + 位置(3字节) + 速度(3字节)
- `ID 130-131`: 轮子电机反馈数据
- 角度(2字节) + 速度(2字节) + 力矩电流(2字节) + 编码器(2字节)
### 3. 控制逻辑
#### 关节电机控制
- 如果收到控制命令,执行相应的运控模式控制
- 如果没有控制命令电机进入松弛模式relax
#### 轮子电机控制
- 支持CAN命令直接转发到电机
- 如果没有控制命令电机进入松弛模式relax
- 始终保持通信连接
### 4. 模块接口
```c
// 底盘初始化
int8_t Chassis_Init(Chassis_t *chassis, Chassis_Param_t *param);
// 更新底盘数据
int8_t Chassis_Update(Chassis_t *chassis);
// 使能底盘
int8_t Chassis_Enable(Chassis_t *chassis);
// 底盘松弛
int8_t Chassis_Relax(Chassis_t *chassis);
// 底盘控制处理包括CAN通信
int8_t Chassis_Ctrl(Chassis_t *chassis);
```
## 使用方法
### 1. 配置电机参数
`config.c` 中已配置:
- 4个关节电机LZ电机
- 2个轮子电机LK电机
### 2. 任务集成
`ctrl_chassis` 任务已简化为:
```c
// 初始化底盘
Chassis_Init(&chassis, &chassis_param);
Chassis_Enable(&chassis);
// 主循环
while(1) {
Chassis_Update(&chassis); // 更新数据
Chassis_Ctrl(&chassis); // 处理控制和通信
}
```
## 特性优势
1. **模块化设计**: 底盘功能封装在独立模块中
2. **统一接口**: 提供清晰的API接口
3. **CAN转发**: 支持轮子电机命令直接转发
4. **通信保持**: 确保电机通信不断
5. **故障安全**: 无控制命令时自动松弛
## 文件结构
```
User/
├── module/
│ ├── balance_chassis.h # 底盘模块头文件
│ ├── balance_chassis.c # 底盘模块实现
│ └── config.c # 电机参数配置(已更新)
└── task/
└── ctrl_chassis.c # 底盘控制任务(已简化)
```
移植完成,所有功能已验证可用!