面向控制工程学习与实验的交互式 Web 工作台。Controlab 将经典控制、现代控制、系统辨识和动力学仿真放在同一个浏览器应用中,让数学模型、响应曲线、性能指标和物理场景随参数修改同步更新。
无需安装、无需账号。当前所有模型计算均在浏览器本地完成,不上传用户输入的数据。
控制理论教材中的公式、曲线和物理系统往往分散在不同章节。Controlab 尝试把它们连接起来:
- 修改传递函数后,立即观察时域、频域和稳定性指标如何变化;
- 添加控制器后,对比开环与闭环响应,而不是只得到一组参数;
- 在状态空间中同时查看矩阵、特征值、能控能观性和状态轨迹;
- 在倒立摆、电机、电路等场景中,把控制律重新放回物理对象;
- 将理论计算做成可交互实验,而不是静态公式展板。
项目定位是教学、复习和方案探索工具,不替代 MATLAB、Simulink、专业辨识软件或安全关键工程验证。
- 系数、传递函数表达式、零极点增益三种模型输入方式
- 传递函数、零极点与多项式模型相互转换
- 阶跃、斜坡、正弦和脉冲响应
- Bode 图、根轨迹、Nyquist 图及关键指标
- 根轨迹画布直接添加或删除零极点,复数点自动补全共轭点
- 单位负反馈开关与控制前后响应对比
- P、PI、PD、PID、超前和滞后校正器
- 曲线悬停读数以及 SVG、2× PNG 导出
模型编辑、控制器和全部图表共享同一份分析结果,避免不同页面各算一套、互相打架。
- 可变维度的状态空间模型与 ABCD 矩阵整块粘贴
- 多输入系统的状态响应和输出响应
- 特征值、能控性、能观性及轨迹分析
- 手动状态反馈
- SISO 极点配置
- LQR 最优状态反馈
- Luenberger 状态观测器
- Kalman 增益与输出反馈仿真
- 估计状态、真实状态和估计误差对比
当前实验包括:
- 弹簧—质量—阻尼系统
- 直流电机
- 串联/并联无源 RLC 电路
- 反相多重反馈 MFB 二阶低通电路
- 小车倒立摆
倒立摆实验使用非线性动力学,可切换 PID 与 LQR,调整参考输入和扰动,并通过鼠标施力观察系统恢复过程。物理参数会同步更新线性化模型、双输出传递函数和能控性结果。
通用仿真内核采用固定时间步与 RK4 积分;输入信号、历史状态、输出通道和物理模型相互分离,便于继续增加实验对象。
- 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项目构建后会在 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 和弹簧质量系统
- 系统辨识数据解析、算法、验证和失败状态
- 页面模块契约、服务端渲染、生产构建和启动
自动化测试能验证数值实现和软件契约,但不能证明任意高阶、病态或强非线性系统均具有专业软件级数值鲁棒性。
- 传递函数工作台面向分子阶次不高于分母阶次的连续系统。
- 根轨迹与稳定裕度使用数值采样,适合教学和常规模型探索。
- 部分算法采用教学尺度的直接数值实现,没有替代成熟科学计算库。
- 系统辨识模块功能较多,但作者当前不将其作为已完全掌握的核心模块。
- 应用尚未提供账号、云端保存、多人协作或实验报告自动生成。
仓库暂未声明开源许可证。代码可供在线体验、阅读和交流;复制、修改或再发布前,请先联系仓库作者确认授权。