你需要准备什么
Python 3.10+、`pip`,以及一枚可用的 DeepSeek API key。
Automatically-adjust-PID-parameters 用来根据控制响应数据给出下一轮 PID 参数建议。第一次使用时,先跑本地分析,再跑仿真,最后再接在线模式。
Python 3.10+、`pip`,以及一枚可用的 DeepSeek API key。
看帮助、分析 CSV、跑仿真、导出 C 参数。
只有在线模式需要 MCU 持续发送 `DATA:` 并接收 `PID:`。
先本地分析,再仿真,再监看串口,最后在线调参。这样更容易判断问题到底出在数据、API key、串口还是设备本身。
串口联调、数据采集、离线分析和在线调参是连在一起的。STM32 参考代码已经把 UART 句柄、引脚和环名字提成了宏。
参数上下限、单次变化率、历史记录、人工确认和 ACK 确认都放在前面,适合真实设备联调。
git clone https://github.com/Zw-awa/Automatically-adjust-PID-parameters.git cd Automatically-adjust-PID-parameters python -m pip install --upgrade pip pip install -r requirements.txt
建议直接用这里的安装方式,不要自己换一套命令。
先复制示例配置,再改你自己的本地配置。
copy config.example.json config.json
DEEPSEEK_API_KEY。如果你写进 config.json 也可以。
COM3。如果你要接在线模式,记得改成自己电脑上的实际串口。
第一次使用时,最值得先跑的是本地分析,因为它不依赖串口和 MCU。
python scripts/offline_analyze.py --file data/raw/example_speed_data.csv
仿真模式会先生成软件响应,再继续走调参流程。
python main.py simulate --loop speed --iterations 1
如果 API key 还没配好,这一步可能会在最后的 LLM 调用时报 401。先看前面的分析输出是否正常。
在线模式前,先确认 MCU 已经持续发送正确的串口数据。
python main.py online --port COM3 --loop speed --interval 10
如果你要接 STM32,先从 examples/ 选择 F103 标准库或 G431 HAL 工程,原样跑通后再按 MCU 集成指南替换用户接口。
MCU -> PC DATA:speed:1.2345,100.0,95.3,4.7,85.2 PC -> MCU PID:req001:speed:0.800000,0.150000,0.030000 MCU -> PC ACK:req001:speed:0.800000,0.150000,0.030000 MCU -> PC NACK:req001:speed:OUT_OF_RANGE
两套示例都把核心、配置、平台端口和用户 I/O 分开,接真实小车时主要修改配置和三个用户接口函数。
通常是 API key 无效、没配置,或者程序没有读到 key。
通常先检查端口号、波特率,以及是否被其他软件占用。
通常先检查 MCU 是否持续发送 `DATA:`,再检查 `loop` 名称是否一致。