Skip to content
sus66618Public

About

在线控制实验室:经典控制、现代控制、系统辨识与动力学仿真

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Controlab

面向控制工程学习与实验的交互式 Web 工作台。Controlab 将经典控制、现代控制、系统辨识和动力学仿真放在同一个浏览器应用中,让数学模型、响应曲线、性能指标和物理场景随参数修改同步更新。

无需安装、无需账号。当前所有模型计算均在浏览器本地完成,不上传用户输入的数据。

项目目标

控制理论教材中的公式、曲线和物理系统往往分散在不同章节。Controlab 尝试把它们连接起来:

  • 修改传递函数后,立即观察时域、频域和稳定性指标如何变化;
  • 添加控制器后,对比开环与闭环响应,而不是只得到一组参数;
  • 在状态空间中同时查看矩阵、特征值、能控能观性和状态轨迹;
  • 在倒立摆、电机、电路等场景中,把控制律重新放回物理对象;
  • 将理论计算做成可交互实验,而不是静态公式展板。

项目定位是教学、复习和方案探索工具,不替代 MATLAB、Simulink、专业辨识软件或安全关键工程验证。

功能模块

1. 系统分析与经典控制

  • 系数、传递函数表达式、零极点增益三种模型输入方式
  • 传递函数、零极点与多项式模型相互转换
  • 阶跃、斜坡、正弦和脉冲响应
  • Bode 图、根轨迹、Nyquist 图及关键指标
  • 根轨迹画布直接添加或删除零极点,复数点自动补全共轭点
  • 单位负反馈开关与控制前后响应对比
  • P、PI、PD、PID、超前和滞后校正器
  • 曲线悬停读数以及 SVG、2× PNG 导出

模型编辑、控制器和全部图表共享同一份分析结果,避免不同页面各算一套、互相打架。

2. 现代控制

  • 可变维度的状态空间模型与 ABCD 矩阵整块粘贴
  • 多输入系统的状态响应和输出响应
  • 特征值、能控性、能观性及轨迹分析
  • 手动状态反馈
  • SISO 极点配置
  • LQR 最优状态反馈
  • Luenberger 状态观测器
  • Kalman 增益与输出反馈仿真
  • 估计状态、真实状态和估计误差对比

3. 动力学与控制仿真

当前实验包括:

  • 弹簧—质量—阻尼系统
  • 直流电机
  • 串联/并联无源 RLC 电路
  • 反相多重反馈 MFB 二阶低通电路
  • 小车倒立摆

倒立摆实验使用非线性动力学,可切换 PID 与 LQR,调整参考输入和扰动,并通过鼠标施力观察系统恢复过程。物理参数会同步更新线性化模型、双输出传递函数和能控性结果。

通用仿真内核采用固定时间步与 RK4 积分;输入信号、历史状态、输出通道和物理模型相互分离,便于继续增加实验对象。

4. 系统辨识

  • CSV、XLSX 和内置示例数据
  • 单输入单输出及部分多输入多输出数据解析
  • ARX、FIR、正则化 ARX、ARMAX 和 OE 方法
  • 阶次与延迟搜索
  • 训练/验证数据划分和预处理
  • 一步预测、自由仿真、残差与拟合指标
  • 明确显示未收敛、激励不足和负拟合度,不美化失败结果

该模块属于项目的扩展学习部分,功能实现和测试已保留,但作者目前对其理论掌握程度弱于其他三个模块,不将其作为个人核心专业能力进行陈述。

开发方式说明

项目采用 AI 辅助的 vibecoding 工作流完成界面开发、部分数值实现、测试补充和文档整理。作者掌握并参与验证系统分析、经典控制、现代控制和动力学仿真的主要理论与数值模块;系统辨识部分的 AI 辅助比例较高,目前作为后续深入学习内容。

这一说明用于区分“仓库已经实现的功能”和“作者当前能够独立解释的知识边界”,不影响项目作为控制工程交互实验平台的正常展示。

技术架构

React 界面与参数编辑
          │
          ▼
统一模型状态与输入解析
          │
   ┌──────┼──────────┬──────────┐
   ▼      ▼          ▼          ▼
经典控制 现代控制  系统辨识   动力学仿真
   │      │          │          │
   └──────┴──────────┴──────────┘
          │
          ▼
曲线、公式、指标和物理场景

主要技术:

  • TypeScript、React 19、Next.js / vinext
  • 原生数值算法与浏览器 Worker
  • KaTeX 公式渲染
  • Cloudflare Workers 部署
  • Node.js 原生测试运行器

全部核心计算代码保存在前端工程中,不依赖 Python、MATLAB 或远程计算 API。

项目结构

.
├── app/                         # 页面入口、布局和全局样式
├── components/
│   ├── control-lab/             # 传递函数、经典控制和绘图界面
│   ├── modern-control/          # 状态空间与现代控制
│   ├── identification/          # 系统辨识工作台
│   └── simulations/             # 物理实验场景与交互组件
├── hooks/useControlModel.ts     # 统一模型状态
├── lib/
│   ├── control/                 # 传函、复数、多项式和反馈分析
│   ├── simulation/              # 仿真内核与物理对象
│   ├── modernControl.ts         # LQR、极点配置和观测器
│   ├── stateSpace.ts            # 状态空间分析
│   └── systemIdentification.ts  # 辨识算法
└── tests/                       # 数值、UI 契约、构建与生产启动测试

本地运行

需要 Node.js >=22.13.0。

npm install
npm run dev

生产构建:

npm run build

完整验证:

npm test
npm run lint

Cloudflare 部署

项目构建后会在 dist/server 中生成 Worker 入口与 Wrangler 配置:

npm run build
npx wrangler deploy --dry-run --config dist/server/wrangler.json
npx wrangler deploy --config dist/server/wrangler.json

当前公开实例部署在 Cloudflare Workers:

https://controlab.1070963000.workers.dev

测试与可信边界

当前自动化测试覆盖:

  • 传递函数、零极点、闭环模型和时域响应
  • 根轨迹、PID/校正器与状态空间计算
  • LQR、极点配置、观测器和 Kalman 增益
  • 倒立摆、直流电机、RLC、MFB 和弹簧质量系统
  • 系统辨识数据解析、算法、验证和失败状态
  • 页面模块契约、服务端渲染、生产构建和启动

自动化测试能验证数值实现和软件契约,但不能证明任意高阶、病态或强非线性系统均具有专业软件级数值鲁棒性。

当前边界

  • 传递函数工作台面向分子阶次不高于分母阶次的连续系统。
  • 根轨迹与稳定裕度使用数值采样,适合教学和常规模型探索。
  • 部分算法采用教学尺度的直接数值实现,没有替代成熟科学计算库。
  • 系统辨识模块功能较多,但作者当前不将其作为已完全掌握的核心模块。
  • 应用尚未提供账号、云端保存、多人协作或实验报告自动生成。

License

仓库暂未声明开源许可证。代码可供在线体验、阅读和交流;复制、修改或再发布前,请先联系仓库作者确认授权。

About

在线控制实验室:经典控制、现代控制、系统辨识与动力学仿真

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages