KINGSTON-115/llm-pid-tuner
基于 LLM 的极简 PID 自动调参系统 (CLI 版)
这是什么
LLM‑PID‑Tuner 是一个桌面工具,通过让大语言模型(LLM)建议新的 P、I、D 值,帮助您调节物理系统(加热板、电机、烤箱等)的 PID 控制器。它可以在三种模式下工作:
- 硬件模式 – 通过串口读取 Arduino/ESP32(或其他 MCU)的实时 CSV 数据,将数据发送给 LLM,接收新的 PID 设定点并写回开发板。
- 本地模拟器 – 运行 Python 热系统模型(
simulator.py),无需硬件即可查看调参循环。 - MATLAB/Simulink 模式 – 通过 MATLAB 引擎驱动 Simulink PID 模块,让 LLM 进行调参。
该程序为初学者提供了现成的 Windows
.exe,但源码也可以直接用 Python 运行。
适用人群
- 已经拥有 PID 控制设备,但难以找到合适增益的爱好者或工程师。
- 希望在投入硬件之前尝试 LLM 驱动的控制回路优化的任何人。
- 熟悉简单串行 CSV 协议或 Simulink 模型的用户。
它能做什么(以及不能做什么)
| 能力 | 详情 |
|---|---|
| 实时 PID 建议 | 读取传感器/执行器数据,评估性能(误差、超调、稳态),请求 LLM 提供新的 PID 设定点,应用安全限制,如果性能下降可以回滚。 |
| 可视化 | 桌面 UI(或 TUI)显示实时曲线、当前 PID 值,并允许您即时更改设定点(t 键)。 |
| 硬件集成 | 使用一个精简的 Arduino/ESP32 固件(firmware.cpp),通过串口流式传输 timestamp_ms,setpoint,input,pwm,error,p,i,d。 |
| 仿真 | simulator.py 模拟热系统,无需开发板即可测试整个回路。 |
| Simulink 支持 | 调用 MATLAB 引擎运行 Simulink 模型,读取输出信号并调整 PID 模块。 |
| 离线使用 | 通过将 LLM_API_BASE_URL 指向本地服务器,可与任何兼容 OpenAI 的本地模型(Ollama、LM Studio 等)配合使用。 |
| 不是魔法按钮控制器 | 它不保证完美控制、不取代安全电路,也不能单独产生基准级性能。 |
快速入门
- 从最新版本下载 Windows 可执行文件(
llm‑pid‑tuner.exe)。 - 连接运行所提供的
firmware.cpp的开发板(或任何遵循相同 CSV 串行格式的设备)。在config.json中将SERIAL_PORT设置为AUTO或实际的 COM 端口。 - 编辑
config.json– 至少填写 LLM 字段:
(通过更改 URL 并保持{ "LLM_API_KEY": "sk‑your‑key", "LLM_API_BASE_URL": "https://api.openai.com/v1", "LLM_MODEL_NAME": "gpt-4o", "LLM_PROVIDER": "openai" }openai作为提供者,您也可以使用本地模型。) - 运行 exe – 选择硬件模式,让它扫描串口,并观察 UI 绘制响应。
- 观察 – 工具会自动请求新的 PID 值、执行限制,并在新参数使系统恶化时回滚。当误差、超调、稳态标准连续几轮满足时,调参停止。
如果没有硬件,请运行模拟器代替: pip install -r requirements.txt && python simulator.py。
架构一览
+-------------------+ +-------------------+ +-------------------+
| Local simulator | API | LLM / AI tuner | API | Real hardware |
| (simulator.py) |<------>| (tuner.py) |<------>| (firmware.cpp) |
+-------------------+ +-------------------+ +-------------------+
- 模拟器:一个热系统 Python 模型,输出与固件相同的 CSV 流。
- 调参器:核心循环 – 读取数据 → 评估 → 调用 LLM → 应用安全措施 → 写入新 PID。
- 固件:实现 CSV 协议并运行 PID 控制器的极简 Arduino/ESP32 草图。
- 桌面启动器(
launcher.py)让您选择硬件或仿真,并在 GUI 和 TUI 之间切换。 - 辅助脚本:
doctor.py(环境检查)、system_id.py(阶跃响应辨识)、pid_safety.py(限制执行)、benchmark.py(开发测试)。
配置工具
config.json– 主配置文件;首次运行时自动生成。- 主要部分:
- 串口:
SERIAL_PORT、BAUD_RATE、HARDWARE_PROFILE(默认generic_serial_csv)。 - LLM:API 密钥、基础 URL、模型名称、提供者(
openai、anthropic、openai_claude、orcarouter等)。 - 调参行为:阈值,如
GOOD_ENOUGH_AVG_ERROR、GOOD_ENOUGH_OVERSHOOT、REQUIRED_STABLE_ROUNDS。 - Simulink:
.slx文件、PID 模块、输出信号、可选的 MATLAB 根目录路径。 - 可选:代理设置、CSV 导出路径、自定义提示词覆盖。
- 串口:
- 环境变量会覆盖 JSON 值,这对于 CI 或机密管理很方便。
扩展/定制
- 提示词调整 – 在会话开始时(调参前对话框)输入自然语言偏好,或编辑
llm/prompts.py更改 LLM 收到的系统提示词。 - 添加新的硬件配置文件 – 实现预期的 CSV 列或自定义解析器,并将配置文件名称列在
config.json中。 - 更换 LLM – 任何遵循 OpenAI
/v1/chat/completions模式的服务都可以使用;只需更改LLM_API_BASE_URL和LLM_PROVIDER。 - 贡献 – 仓库使用
dev分支存放最新功能,使用稳定的main分支发布版本。
安全须知
调参器只建议 PID 增益,不取代硬件安全电路。使用加热设备时,始终保持温度限制、看门狗定时器和物理紧急停止开关。
许可证
MIT – 您可以自由使用、修改和重新分发代码。
相关
- 项目
- 项目
- 项目
- 项目
- 项目