2.6 KiB
2.6 KiB
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. 模块接口
// 底盘初始化
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 任务已简化为:
// 初始化底盘
Chassis_Init(&chassis, &chassis_param);
Chassis_Enable(&chassis);
// 主循环
while(1) {
Chassis_Update(&chassis); // 更新数据
Chassis_Ctrl(&chassis); // 处理控制和通信
}
特性优势
- 模块化设计: 底盘功能封装在独立模块中
- 统一接口: 提供清晰的API接口
- CAN转发: 支持轮子电机命令直接转发
- 通信保持: 确保电机通信不断
- 故障安全: 无控制命令时自动松弛
文件结构
User/
├── module/
│ ├── balance_chassis.h # 底盘模块头文件
│ ├── balance_chassis.c # 底盘模块实现
│ └── config.c # 电机参数配置(已更新)
└── task/
└── ctrl_chassis.c # 底盘控制任务(已简化)
移植完成,所有功能已验证可用!