Nplus实验室 发表于 2023-5-29 09:55:29

【N+】千里马Plus项目式课程 - 07 视觉巡线3

本帖最后由 Nplus实验室 于 2023-6-7 10:11 编辑

【N+】千里马Plus项目式课程07 视觉巡线3- N+桃李科教
上一篇:【N+】千里马Plus项目式课程 - 06 视觉巡线2
下一篇:【N+】千里马Plus项目式课程 - 08 视觉巡线4

教学目标
1.学习D算法;
2.学习I算法;

教学准备
千里马、地图、数据线、卡片

教学过程
导入 → D算法 → I算法→ 总结

1.导入
(1)课程回顾:
什么是PID算法?
PID 算法,是控制理论中最常用、最经典的算法。生活中常见的 PID 的实际应用:比如四轴飞行器,再比如平衡小车,还有汽车的定速巡航、3D 打印机上的温度控制器、恒温热水器等。就是类似于这种:
需要将某一个物理量“保持稳定”的场合(比如维持平衡,稳定温度、转速等)。 PID 分为 3 个部分:比例调节(P)、积分调节(I)、微分调节(D)。
本节课我们将继续PID算法在视觉巡线中的使用。

2.D算法
2.1 D:预测未来得误差
巡线程序增加了 P 比例调节之后,我们发现巡线效果好多了,速度的变化非常平滑,但是仍然会有晃动情况。这是因为惯性的影响,速度越大,黑线越靠近屏幕边缘时的V_turn 就越大,导致惯性的影响就越大。能不能想办法改善这个问题呢?
这个时候就是 D 微分调节要上场了。微分调节的作用如下图,它可以理解为一个弹簧阻力,当动能越大的时候,阻力或拉力也就越大,直到将惯性方向的速度变为 0,也就是下图中弹簧下面的方块,始终会被限制在一个小范围内运动,不会产生太大范围的抖动变化。有了 D 微分调节之后,我们就可以有效的抑制晃动。但是也要去适当的调节 D 微分调节的参数,不然限制的阻力太大, 千里马转弯速度 V_turn 被限制的太小也不行,这会导致转不过弯来。

可以说,D 的功能,就是根据之前的变化趋势,去防范于未来可能发生的失控问题。之前的变化趋势越大(惯性越大),接下来阻力的作用越明显。根据 PID 公式,D 调节也要计算一个 Vd_turn 的分量:
Vd_turn = Kd × derivative = Kd × (Error - lastError)
其中,Kd 是需要我们手动调节的参数,Error 为当前测量的误差,lastError 为上次测量的误差。总的 V_turn 计算公式为:
V_turn = Vp_turn + Vd_turn = Kp × Error + Kd × derivative
2.2 程序编写
编写 PD 调速程序,并调节 Kd 参数至合适的数值,程序如下:

刷入程序后,将千里马放在地图上进行测试,根据测试结果修改变量“Kd”的值,调节范围是0-10,以及速度等参数。

3.I算法
3.1 I:纠正过去的误差
单单 P 比例调节,可能会出现一个问题:调节力度不够,永远存在一个稳定的误差。因为实际情况中可能会存在各种各种的阻力或者影响输出的情况,在这种情况下,我们就需要引入 I 积分调节了。积分调节可以产生一个新的转速 Vi_turn。它的计算公式为:
Vi_turn = Ki × integral
积分调节的作用就是可以消除那个相对稳定的误差。它能将过去误差累计起来,只要存在误差,这个累计值 integral 就会越来越大,就会使调节力度越来愈大,逐渐就能抵消阻力产生的稳定误差的影响。总的 V_turn 的计算公式如下:
V_turn = Vp_turn + Vi_turn + Vd_turnV_turn = Kp × Error + Ki × integral + Kd × derivative
3.2程序编写
编写 PID 调速程序,并调节 Ki 参数至合适的数值。由于本示例中,几乎没有稳定误差的影响,所以 Ki 的值很小。程序如下:

程序刷入后,将千里马放在地图上进行测试,根据测试结果调节速度、Kp等参数。

4.总结
1.PID算法调节的是什么?
2.PID算法的作用是什么?

5.课后作业
1.熟悉PID算法和程序的编写?

千里马Plus购买链接:N+千里马Plus

本课PPT、视频及案例代码下载:
链接: https://pan.baidu.com/s/1LoBc_cqipJ9NEWqfPbOLpg
提取码: 8888

三春牛-创客 发表于 2023-6-28 08:58:16

不错,感谢分享

花生编程 发表于 2023-7-20 22:29:21

不错不错

花生编程 发表于 2023-7-20 22:30:21

赞赞赞赞赞
页: [1]
查看完整版本: 【N+】千里马Plus项目式课程 - 07 视觉巡线3