2684| 4
|
[高级教程] 【N+】千里马Plus项目式课程 - 06 视觉巡线2 |
本帖最后由 Nplus实验室 于 2023-5-29 09:56 编辑 【N+】千里马Plus项目式课程 06 视觉巡线2 - N+桃李科教 上一篇:【N+】千里马Plus项目式课程 - 05 视觉巡线1 下一篇:【N+】千里马Plus项目式课程 - 07 视觉巡线3 教学目标 1.优化巡线程序; 2.学习PID算法在视觉巡线中使用; 3.完成PID算法优化巡线程序。 教学准备 千里马、地图、数据线 教学过程 导入 → 巡线程序优化 → PID算法 → 总结 1.导入 课程回顾: 上节课学习了视觉巡线,通过测试可知:巡线区间分的越细,巡线效果越好。 上节课千里马在视觉巡线过程中还是会摇摇晃晃的,这节课我们将继续优化巡线程序。 2.巡线程序优化 前面我们将区间划分为了3个部分,如果分为5个呢?黑线位置越靠两边,转弯速度越大;黑线位置越趋近于中间,越趋向于直行运动。 程序如下图所示: 刷入程序后,进行测试,这时,千里马巡线速度可以更快了,不管是转弯还是直行,速度变化都顺滑很多了。如果将屏幕区间分为7个,测试结果是不是更好一些?尝试写出7个区间的优化程序并进行测试。 完整参考程序如下: 3.PID算法 既然千里马巡线时的运动状态或巡线区间可以分为 2 档、3 档、5 档、7 档,那是不是还能继续细分呢?9 档?11 档?……直到无限细分。调速区间越细分,巡线效果越好。但是这样写程序会越来越长,有什么办法呢?这里就要引出 PID 调速算法了。 PID 算法,是控制理论中最常用、最经典的算法,在我们的生产和生活中应用的非常广泛。它并不是什么很神圣的东西,大家一定都见过 PID 的实际应用:比如四轴飞行器,再比如平衡小车,还有汽车的定速巡航、3D 打印机上的温度控制器、恒温热水器等。就是类似于这种:需要将某一个物理量“保持稳定”的场合(比如维持平衡,稳定温度、转速等),PID 都会派上大用场。 PID算法公式如下: 编程中更常用的公式如下: 可以看出公式是相当复杂的,但是我们不需要用那么复杂的公式,用简化后的公式即可。根据公式,可以看到 PID 分为 3 个部分:比例调节(P)、积分调节(I)、微分调节(D)。那么这三者之间是什么关系呢?每个部分的调节对巡线会产生什么样的影响呢?因为比较复杂,所有我们只分析P调速对巡线的影响。 3.1 算法分析 以视觉巡线为例,测量出来的实际值为黑线的起点坐标 X1,但是我们希望黑线的起点坐标能够在屏幕中央,也就是位于 x = 128 的位置。这时,误差 Error = X1 - offset = X1 - 128。那么接下来,我们就可以根据这个误差大小来调节转速的大小了,也就是我们上面分析的,黑线越是远离屏幕中心,误差越大,这时需要的转速也越大。根据 PID 公式,转速 V_turn 的计算公式为: V_turn = Vp_turn = Kp × Error = Kp × (X1 - 128) 我们知道,物体的运动一般可以由直线运动和转弯运动组成,所以速度也可以由直线运动速度 V_straught 与转弯速度 V_turn 组成。为了使千里马保持一定的运动速度,我们可以分别给左右轮加上或减去一个转弯速度 V_turn,这样千里马中心的速度就能够保持不变。 V_left = V_straught + V_turn V_right = V_straught - V_turn 根据这个公式,我们可以简单的理解为,P 控制器的作用是根据误差的大小产生一个转弯速度 V_turn,用于叠加在左右轮的速度上。 那么 Kp 的值取多少合适呢?这就需要我们根据实际巡线情况,手动进行调节与设置了。多尝试几次,应该就能设置出一个比较合适的 Kp 值了,Kp的值越大,两个轮子的速度差就会越大。 3.2 P调速算法程序编写 1.根据前面的分析,新建变量,并将变量初始化存进函数中。编写程序并调节 Kp 值。程序中的的“offset”变量就是屏幕中轴线的坐标。 2.定义巡线时电机的函数,同时设置两个参数,“V_left”、“V_rignt”表示左右轮子的速度。 3.定义巡线函数,因为在计算过程中,“V_left”与“V_rignt”的值可能会出现小数和负数,所以需要进行取整和绝对值,可以保证结果是正整数。 4.加上判断等语句,完整程序如下。修改摄像头增益,也就是亮度,范围是0-255,数值越大,亮度越大。 5.刷入程序后,将千里马放在地图上进行测试,根据测试结果修改变量“Kp”的值,调节范围是0-1;以及V_straight的值和摄像头增益、角度等等。 4.总结 1.PID算法的主要作用是什么? 5.课后作业 1.熟悉PID算法,根据公式编写程序。 千里马Plus购买链接:N+千里马Plus |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed