# 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 # 底盘控制任务(已简化) ``` 移植完成,所有功能已验证可用!