rm_balance/balance_chassis_migration.md

2.6 KiB
Raw Blame History

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);    // 处理控制和通信
}

特性优势

  1. 模块化设计: 底盘功能封装在独立模块中
  2. 统一接口: 提供清晰的API接口
  3. CAN转发: 支持轮子电机命令直接转发
  4. 通信保持: 确保电机通信不断
  5. 故障安全: 无控制命令时自动松弛

文件结构

User/
├── module/
│   ├── balance_chassis.h    # 底盘模块头文件
│   ├── balance_chassis.c    # 底盘模块实现
│   └── config.c            # 电机参数配置(已更新)
└── task/
    └── ctrl_chassis.c      # 底盘控制任务(已简化)

移植完成,所有功能已验证可用!