2447| 3
|
[高级教程] 【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_turn V_turn = Kp × Error + Ki × integral + Kd × derivative 3.2程序编写 编写 PID 调速程序,并调节 Ki 参数至合适的数值。由于本示例中,几乎没有稳定误差的影响,所以 Ki 的值很小。程序如下: 程序刷入后,将千里马放在地图上进行测试,根据测试结果调节速度、Kp等参数。 4.总结 1.PID算法调节的是什么? 2.PID算法的作用是什么? 5.课后作业 1.熟悉PID算法和程序的编写? 千里马Plus购买链接:N+千里马Plus |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed