Skip to content

[Refactor/Epic] 控制层架构重构:消除高耦合与全局变量滥用 #6

Description

@Tensor-0

📌 现状背景 (Context)

当前 Application/Task 层存在明显的“集中式控制与高耦合”问题。Control_Task 承担了状态机、感知融合、LQR/VMC 计算和执行器映射等过多职责(上帝任务)。且各任务之间通过直接读写全局变量通信,缺乏显式的边界保护。

为了后续方便移植、离线仿真以及维护,需要进行自顶向下的架构解耦。

🎯 重构目标 (Objectives)

将当前混合的逻辑拆分为严格的 Input (感知快照) -> State Estimation (状态估计) -> Control (平衡与运动学计算) -> Actuation (执行器命令) 四层架构。

📝 分阶段执行清单 (Tasks)

Phase 1: 物理边界隔离 (最优先)

  • 引入数据快照机制:Control_Task 周期起点,统一读取 INS_Info、电机反馈和遥控器数据,生成 sensor_snapshot_t,后续控制算法仅依赖此快照。
  • 剥离非核心硬件操作: 将底盘控制循环中的电压检测 (USER_ADC_Voltage_Update)、蜂鸣器控制和调试串口发送 (USART_Vofa_Justfloat_Transmit) 移出,建立独立的 telemetry/monitor 任务。

Phase 2: 输出与通信解耦

  • 独立执行器命令结构:SendValue (包含 T_Calf, T_Thigh, Current 等) 从庞大的 Control_Info 结构体中抽离出来,定义为独立的 motor_command_t 包。
  • 重构 CAN 通信链路: CAN_Task 不再直接读取 Control_Info。改为通过双缓冲或队列接收 motor_command_t,将其变为纯粹的“总线发送任务”。

Phase 3: 业务逻辑拆分

  • 抽离电机状态机: 将电机的上电、失能、初始化刚度逻辑从 CAN_Task 中剥离,建立专属的 motor_manager_task
  • 参数与算法代码分离: 将 LQR 系数矩阵、PID 参数、机构常数等从 Control_Task.c 中抽离至独立的 control_params.c 或配置文件中。

🔗 相关参考

  • 诊断来源:AI Code Agent (GPT-5.5) 逆向工程分析报告

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions