PID自动调参----simulink仿真-----如何高效调参

  1. 设计PID控制器
  2. 系统识别APP识别传递函数
  3. Simulink搭建仿真控制系统
  4. 使用Maltab自动调参工具PID Tuner调节PID参数

设计PID控制器

我们先看这张经典的PID控制器的图片,可以看e(t)与u(t)与c(t),会发现控制器是控制e(t),也就是反馈值的偏差来输出控制量(u(t))给执行机构的。也就是通过控制执行机构间接控制被控对象。所以,设计PID控制器的关键是找出反馈量也就是你想要控制的对象

这个控制对象与执行机构有一定的联系,比如说,你想设计PID控制器控制小车的速度,那么这个反馈量c(t),就要是速度,控制速度的执行机构自然就是电机了。检测速度自然就要用到编码器。

系统识别APP识别传递函数

我们已经设计出了PID控制器(速度PID控制器),那比较关键部分,也就是执行机构与控制对象的关系我们还不知道。又由于,个人专业知识不能够识别出这两者的关系。但我们有工具可以识别出来。
请出我们的第一个小助手:

maltab的system identification


通过它,我们只需要知道系统的输入输出就可以知道系统的特征,也就是用用黑箱方法得到的对一个系统规律的认识。

首先,我们需要又系统的输入输出数据,由于我手头上没有,便作罢(不过可以随便用一些数据玩一下)。下面假装我有电机的输入与输出的数据。采集数据的时候,一般使用开环控制的方式采集输入与输出数据。

输入数据

选择时间域信号

在Maltab工作区中导入数据即可,可以将变量拖动到区域中或者在区域中输入变量名

接着输入你的采样时间(以s为单位)和数据名称,按下import就可以把数据输入到app中,接下来可以进行系统识别了。

然后快速生成,就会自动生成一些数据,一部分是用来识别系统特征的,一部分是用来训练的,还有一些我也不清楚。
圈起来的①是生成模型的数据,②是训练的数据。在time plot可以查看曲线。

主要是看拟合率,拟合率超过80%较佳,也要防止过拟合,个人一般采取增大数据量的方法。图中拟合率100%,应该是过拟合了。

把输出的模型拖动到工作区中(To workspace),以便在simulink中调用。

Simulink搭建仿真控制系统

搭建仿真模型,模拟单片机控制电机速度,信号输入的频率我设置为1ms,离散PID控制模块的控制频率也是10ms,反馈的延迟是5ms,由于两者的频率不一致,采用RateTransition ZOH是采样率转换,加一个零阶保持器。
把系统辨别app辨识出的模型,从工作区中写入到simulink中。

运行仿真

使用Maltab自动调参工具PID Tuner调节PID参数

打开PID controller,可以选择PID控制,输出限制幅度,PI,P,PD控制等等,设置好了。

打开PID Tuner即可开始调节

界面如下,拖动两个按钮可以修改曲线参数,按下按钮两边得大于/小于号,可以拓宽,收缩调节范围。

点击show Parameter 显示曲线信息,有曲线的超调量,增益,达到设定值的时间,曲线是否稳定等。可以边拖动曲线,边看表格。

可以看到有两条曲线,一条是上次PID值下得曲线,一条是目前PID值下得曲线。

当反应时间调节过短,曲线变得逐渐不光滑

调节过量,曲线变得不稳定

找到比较合适的曲线,更新到simulink

可以看到,曲线比较合适,PID的值合适。

通过simulink可以给我们制作智能车或者其他调节PID时候一个大的方向,找到一个比较合适的区间,在这个区间进行实际中的调节。特别是对于新手,不怎么会调节PID的,一个比较好的方向。

值得注意的是,这些都是一些方法,合不合适,主要看模拟出来的系统是否好,也就是创建一个好的系统模型这个是比较重要的。

参考文章:
嵌入式小车
串级PID
系统辨识

PID自动调参simulink仿真相关推荐

  1. 微软自动调参工具—NNI—安装与使用教程(附错误解决)

    简介 NNI是微软的开源自动调参的工具.人工调参实在是太麻烦了,最近试了下水,感觉还不错,能在帮你调参的同时,把可视化的工作一起给做了,简单明了.然后感觉很多博客写的并不是很明白,所以打算自己补充一下 ...

  2. Auto ML自动调参

    Auto ML自动调参 本文介绍Auto ML自动调参的算法介绍及操作流程. 操作步骤 登录PAI控制台. 单击左侧导航栏的实验并选择某个实验. 本文以雾霾天气预测实验为例. 在实验画布区,单击左上角 ...

  3. sklearn快速入门教程:(四)模型自动调参

    上个教程中我们已经看到在sklearn中调用机器学习模型其实非常简单.但要获得较好的预测效果则需要选取合适的超参数.在实际的项目中其实也有不少参数是由工程师借助其经验手动调整的,但在许多场景下这种方式 ...

  4. 如何使用hyperopt对xgboost进行自动调参

    本教程重点在于传授如何使用Hyperopt对xgboost进行自动调参.但是这份代码也是我一直使用的代码模板之一,所以在其他数据集上套用该模板也是十分容易的. 同时因为xgboost,lightgbm ...

  5. 加载svr模型_机器学习XGBoost实战,网格搜索自动调参,对比随机森林,线性回归,SVR【完整代码(含注释)+数据集见原文链接】...

    建议:阅读2020.8.7的文章,完全了解GDBT和XGBT的原理. 机器学习- XGBoost,GDBT[过程:决策树,集成学习,随机森林,GDBT,XGBT,LightGBM] 本次实践内容: 数 ...

  6. 使用Hyperopt实现机器学习自动调参

    文章目录 机器学习自动调参 1. Hyperopt **Hyperopt搜索参数空间** 参数空间的设置 使用sample函数从参数空间内采样: 在参数空间内使用函数: **指定搜索的算法** 实例 ...

  7. pytorch使用Ray-tune对原有训练模型的代码改写,自动调参(一)

    借助Ray-tune可以对pytorch自动调参,下面就一步步地改写,从原始的训练代码慢慢变为可以自动调参的代码的教程• 保姆级: 文章目录 安装依赖 pytorch模型改写至自动调参 步骤1:原有代 ...

  8. 让AI自动调参,才是百度无人车的进化方式:适应环境全靠自己 | 论文

    车栗子 发自 凹非寺 量子位 出品 | 公众号 QbitAI  自动驾驶汽车,需要应对各式各样的路况,工作环境是每时每刻在变化的. 所以,训练好L4级的自动驾驶系统并不简单.需要依赖奖励函数 (R ...

  9. TensorFlow使用Keras Tuner自动调参

    TensorFlow使用Keras Tuner自动调参 数据集 归一化 图像分类模型 Hyperband 运行超参数搜索(自动调参) 获取最佳超参数 使用最佳超参数构建和训练模型 整体代码 代码地址: ...

最新文章

  1. swift 中showAlertTitle的使用
  2. ubuntu10.0.4使用再生龙还原后在启动时不能正常启动
  3. 号称史上最牛逼的几篇博客整理(python+java+js等)
  4. 编程之美-重建二叉树方法整理
  5. 互联网平台“直播+”赋能研究报告
  6. form表单序列化成json数据 将空值用空字符串代替(form表单中checkBox数据会用逗号隔开拼接成字符串)...
  7. web前端之html从入门到精通
  8. jstorm的acker实现
  9. NUll is null like
  10. 你真的了解JavaScript的Promise吗?
  11. php 7.0 特性,PHP 7.3比PHP 7.0快22% 即将进入特性冻结阶段
  12. KVM 介绍(7):使用 libvirt 做 QEMU/KVM 快照和 Nova 实例的快照 (Nova Instances Snapshot Libvirt)
  13. 网站建设流程都有哪些?
  14. set_set_switching_activity
  15. 用户管理和数据库安全(一)
  16. 查询表名所在数据库名
  17. TabHost的使用
  18. 学是计算机审计的心得感受,计算机审计心得体会
  19. PostgreSQL最后的救命稻草 — pg_resetwal
  20. JavaScript面向对象-封装

热门文章

  1. codevs 1079 回家
  2. Kotlin学习之ListView
  3. 思想汇报(一)——努力的意义
  4. 一个USB HUB连接多个摄像头同时工作问题处理
  5. web app Native app
  6. jquery flot详解
  7. 老婆,我把悍马给你挣下来,下辈子找我要钥匙!
  8. JavaScript返回1970年1月1日至今的毫秒数的方法getTime()
  9. extj.js学习笔记
  10. win7清理系统缓存,复制到一个文件,把文件后缀为.bat