找回密码
 马上注册

QQ登录

只需一步,快速开始

查看: 2005|回复: 9

基于自动学习的PID调参

  [复制链接]
发表于 2023-3-15 23:18:34 | 显示全部楼层 |阅读模式
本帖最后由 IT_Buddhist 于 2023-3-15 23:18 编辑

在前面我写了一篇PID算法通俗解读,我想读过的人一般都能够写出一个完整的PID算法了,可是当你好不容易把算法写出来了,在场地上一跑,可能会发现还不如你的比例巡线呢?问题出在哪里?对就是PID参数! 正确调整控制器参数可以提高巡线系统的稳定性和准确性。然而,传统的手动调参方法非常耗时且需要专业知识。基于机器学习的PID巡线调参方法则可以通过自动化优化控制器参数,提高系统性能并节省时间和人力成本。
下面我将讲述一下如何通过实现基于机器学习的PID调参。
1、收集数据
为了使用机器学习算法进行PID参数调整,需要首先收集巡线系统的输入和输出数据。这些数据将用于训练机器学习模型。对于巡线来说,通过测得的光感值来控制电机的Power,电机的Power会影响赛车的走向,赛车的走向又会影响光感值,因此在这里我的输入和输出都是光感值。前面的光感值为输入,后面的光感值为输出。为了得到一个通用的学习模型,我通过使用PID当前的PID算法对一个圆环进行巡线。当然这里只是为了获得训练学习模型的数据,因此PID参数可以随便设置,只要保证小车在巡线时不发生飞线即可,同时为了防止飞线,你也可以将圆环的黑线尽量画宽一点。
我使用的样本收集程如下(具体见附件PID_YangBen.ev3)。该巡线程序会将需要的数据输出到一个abc.rtf的文件。文件中包含的数据有:光感目标值(黑线边缘值),电机驱动值,PID参数值,每次PID计算的时间和光感值。
EV3程序.png

使用的巡线场地为一个圆环,圆环的尺寸如下:当然,如果你巡线的曲率比较小,可以使用大一点的圆,曲率比较大,可以使用小一点的圆。生成的样本数据和你的小车质量、圆环曲率、光感目标值(黑线边缘值),电机驱动值,PID参数值,等等因素有关,不同的条件会生成不同的样本数据。
圆环.png
2、建立模型
根据收集的数据,建立一个机器学习模型,以预测巡线系统的输出。这里可以使用许多不同的机器学习算法,例如神经网络、决策树或支持向量机。我是使用Python中的numpy模块进行数据训练。
在运行PID_YangBen.ev3巡线程序生成训练数据后,通过LEGO MINDSTORMS Education EV3 软件的内存浏览功能,导出程序的输出文件abc.rtf文件。再运行EV3 PID参数自动调试程序,会得到如下界面:
程序界面.png
通过“读取样本” 按钮,打开样本abc.rtf文件,最后会生成一个学习模型曲线图:黑色数据表示样本数据,红色数据表示预测数据,该图形表示预测数据和样本数据吻合度。
预测曲线.png
3、优化控制器参数
通过第二部建立的机器学习模型,就可以依据输入来预测输出。通过设定相同的初始条件,根据设定的PID参数列表,就可以模拟出不同的PID参数得到的巡线效果。
EV3PID.exe程序界面,点击“生成参数” 按钮,会依据表格中的PID参数范围和步长,在右边的列表中生成要仿真的PID参数列表,再点击“仿真”按钮,程序会依据预测模型右边列表中的PID参数进行一一仿真。
PID参数表.png
4、验证和迭代
在仿真完成后,系统会自动对仿真结果按照优劣程度进行排序,一般效果比较好的PID参数会排在前面,点击每行参数前面的多选框,可以看到仿真的结果曲线。一般来说,你可以选取3-4个波峰的曲线进行实际验证。
PID巡线曲线.png

通过结果曲线,你可以选择适合的参数进行实际验证,一般来说,3到4个波峰的参数就是比较好的参数。

关于PID自动学习程序 的实现程序详见:
链接:https://pan.baidu.com/s/1OfJtyTe3LwAMh02Z0wTOzg?pwd=euhg
提取码:euhg

如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2023-3-16 10:00:11 | 显示全部楼层
这个可以学习一下,感谢分享。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2023-3-16 11:13:24 | 显示全部楼层
感谢分享
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2023-3-16 14:34:03 | 显示全部楼层
由于PID算法PID抗饱和算法都是集成到内核中,因此必须将EV3的内核更新为指定的内核才能运行。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2023-3-16 16:07:46 | 显示全部楼层
学学学习
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2023-3-17 11:19:42 | 显示全部楼层
难得技术贴!边赞边学系列
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2023-3-26 18:53:39 | 显示全部楼层
牛逼,技术贴,支持!
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2023-3-28 13:12:18 | 显示全部楼层
下载后,经“金山毒霸”扫描,发现有病毒。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2023-3-28 21:03:58 | 显示全部楼层
冀·闲庭信步 发表于 2023-3-28 13:12
下载后,经“金山毒霸”扫描,发现有病毒。

有这回事,可以提供具体的信息么?里面的只有一个可执行程序,是用python写的,只是引用了一些模块,难道是这些模块有问题?   另一个二进制文件是ev3内核,如果报病毒应该是误报。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2023-4-8 08:37:32 | 显示全部楼层
冀·闲庭信步 发表于 2023-3-28 13:12
下载后,经“金山毒霸”扫描,发现有病毒。

没有签名,很多杀毒软件都会杀
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|中文乐高 ( 桂ICP备13001575号-7 )

GMT+8, 2024-2-22 09:09 , Processed in 0.088145 second(s), 21 queries .

Powered by Discuz! X3.5

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表