如果需要学习本阶段课程,建议先学习本号内《基础硬件篇和基础编程篇》。

学习本篇请下载 LEGO Mindstorms 教育版软件

上一节课写完后,收到很多朋友的问题。统一的说法都是,之前也看过一些教程,也看过一些别人的程序,但都理解不了。

然后归结到没学过高数,或者没学过编程上。

其实不然,经过交流后,我发现,大家共同的问题,其实是“方向性”的。

理解方向出现偏差,自然会造成后续理解不了的最终结果啦!

PID巡线,也叫比例巡线。

我们其实在网上也能搜到一些跟PID巡线有关的教程或者程序。

但这些程序编写方法上,其实是有本质区别的。

核心,就在“比例”这两个字上。

所有巡线最终都基于电机的“动作”上,这个明确吗?

换言之,无论你怎么编写和处理数据,最终都要落地在动作的参数上,去完成你最终的目的。对不对?

我们会发现,关于“动作”,在之前的课程中,我就给大家分析过,有两种移动模块。

一种叫做“移动转向”

一种叫做“移动槽”

具体的区别请看我之前的课程去了解一下。

这边总结一下:

移动转向,最大的特点是,可以输入转向参数,来完成直行、转向要求。

移动槽,最大的特点是,可以分别控制两个电机的功率,从而完成各种直行、转向要求。

那你有么有发现?

转向参数本身就可以用“比例”直接控制。

两个电机之间的功率差,也可以用比例来控制。

你以前看到的比例巡线,到底是控制转向比例?还是控制电机功率差比例?

这是两种不同的PID控制法。

所以我们学东西不能学死,对吧,要动脑子啊!(话糙点,请别见怪。)

我知道要讲PID巡线,其实挺麻烦的。要解释很多东西,所以这注定不是一、两节课可以讲完的。而且我的理解也不一定全对,毕竟我不是正统理工科人。

但至少这个程序是我用的比较熟悉的,算是给大家的经验分享吧。

当然,无论你是用哪种方法实现PID巡线,其实归根结底,都是在控制电机速度差。

只是移动转向模块,自己本身可以通过脚本去控制一部分误差,所以用起来可能会更方便,但效果没有移动槽好。

我们继续回到PID的讲解。

为了方便大家理解,那么我们先讲看着简单些的。

用“移动转向”模块实现的PID巡线。

P,(proportion的首字母),意思就是比例。

这个比例指的是什么?

这个比例指的是,输入和输出量之间的比例关系。

输入,在我们现在的这个话题下,当然就是指颜色传感器提供的值。

输出,指的就是电机的转向值,注意不是功率值!

使用移动转向模块的巡线,我们控制的是移动转向模块的转向功能。控制速度有啥用?在这个模块下,很多时候,功率是一个常量,对不对?

颜色传感器提供的光线反射值和由“移动转向”模块提供的可输入的转向值,它们两者的取值范围是不同的。当然,就需要用一个特殊的比例系数去控制啦。

我们把它起名字叫Kp吧。

起这个名字是有道理的。K在数学公式中一般作为系数的代号,而用X、Y这种代表各种变量。比如:y=kx+b,k是常数且不等于0,b是常数,这里面k就叫做比例系数。我们初高中学的代数,函数都会遇到。

(虽然老丁读书的时候是文科生,初高中数学极差无比,但陈曦老师你会不会现在很欣慰?)

我们再设置一个参数,叫做E(起这个名字是因为,Execution value 执行值)

这个值顾名思义,我们最终会直接用作执行转向的数据。

先把这两个变量给创建出来。

我们在编程中,使用一个正确的名字,是非常好的习惯,这有利于整理自己、或者学生的思路。

这两个数据将会构成整个PID巡线的根本。也就是负责提供转向数据!

在任何PID控制原理的程序或者技术中。P是无可取代的地位。

原因很简单,你要炒一碗蛋炒饭,什么材料,火候,盐放多少,都可以理解为是参数吧。但最重要的是啥?

是要“炒”这个动作啊。

你光有一堆食材和炒菜技术,但不炒,有啥用?

就像你天天在上数学课,题目不做,有啥用?

看老丁的课,不动手研究,不点赞,有啥用?

P、I、D是有独立作用的三个部分,我们在比例控制技术(PID)的原理下,可以根据实际需求来搭配使用。

可以只使用比例控制(也就是P),也可以PI、PD,最后PID。

但无论怎么样,都要有P,对吧?

不然你后面整了一堆参数,有啥用?

总结下:

变量E是最终的计算值,用来控制转向。

变量Kp是比例系数,用来计算出E。调整Kp,就可以让E的值更加稳定。

明白了?

那么如何编写呢?很简单。

在PID巡线的场景中,跟我们单色感巡线一样。无非就是这三类情况。如图:

颜色传感器探测到的反射值,从左到右逐渐降低。

而动作的要求也是,左边右转,中间直行,右边左转。

我们假设一下理想化状态,中间直行的那个数据是50好了,左边是100,右边就是0。

(这个现实操作时需要自己测量一下实际情况)

那么当E的值是0的时候,我们需要直行。(即,上图的中间,反射值是50,那么如果要直行,则由E提供的转向值就是0)

这部分程序就可以用差值公式(减法),直接写出来。

这样一来,你的P就完成了。

今天先到这里吧,大家消化一下。

你可以先试试看直接运行这个程序,调整Kp的值,感受下是一个什么情况?

下次我们继续。可以拍照留言,跟我交流。

ev3pid巡线_【 EV3基础应用 】课题六:PID巡线的P,到底是什么?相关推荐

  1. python量化实战 顾比倒数线_外汇高手分享:顾比倒数线的画法与经典战法

    K线才是判断涨跌动能以及趋势拐点的基本指标,顾比倒数线则是通过找出K线在运行过程中产生的重要位置,来作为市场趋势反转的分界线.顾比倒数线被顾比先生作为一个主要的交易管理工具,简单地说,就是利用三个重要 ...

  2. keyshot手机渲染教程_渲染基础教程,六个步骤教你KeyShot工作流程

    渲染基础教程,六个步骤教你KeyShot工作流程 想要产品效果好,渲染步骤是必须的,而且你需要注意好材质和贴图,尤其是在KeyShot渲染设置当中,你一定要设置正确.不少小伙伴对于KeyShot渲染神 ...

  3. ide 波浪线_零基础学习Python_小波浪

    Python学习笔记 公众号搜索--树莓派OpenCV学舍 Python的小波浪_书写规范 在Python的IDE中经常会出现一些波浪线,还带不同颜色的.虽然看着别扭,但对于初学者的我来说也算一种善意 ...

  4. 电脑主板跳线_电脑基础进阶必学知识,详解电脑主板跳线!

    在DIY装机时新手总会有不同的问题,虽然目前网上流传着各种版本的教学文章或者视频,但是细致的小技巧讲解还是有限,不少网友在装机的时候虽然大致明白各个硬件的组合,但是在跳线的环节可以难住了不少的人,也挡 ...

  5. wps如何设置试卷密封线_在WPS中怎么制作出密封线?在WPS中制作出密封线的方法...

    WPS是我们日常使用的办公软件之一,有些小伙伴很不了解其中是怎么制作密封线的?接下来我们一起往下看看在WPS中制作出密封线的方法吧. 方法步骤 1.密封线是先打上"密封线"三个字, ...

  6. python 坐标连线_从具有和角度的坐标绘制线 - python

    我基本上想从给定角度的坐标(x,y)绘制一条线(计算切线值). 用这样的简单代码行pl.plot([x1, x2], [y1, y2], 'k-', lw=1)可以在两点之间绘制一条线,但是为此我需要 ...

  7. ansys如何删除线_绘画新手不懂如何用ps提取线稿?教你用PS提取自己喜欢的线稿!...

    绘画新手不懂如何用ps提取线稿?初学者如何自学绘画?自学板画难吗?怎样才能学习好绘画?想必这些都是绘画初学者们经常在想的问题吧,就是不知道如何才能学习好绘画,然后绘画出自己想要画的东西 那么今天灵猫课 ...

  8. python不同时间周期k线_请问期货不同时间级别的k线呈现相反形态怎么判断买卖点?...

    题主的意思我用三角形态说说看. 日线级别上三角形态收敛,5分钟级别上K线是三角形态突破.这时候你就该怎么判断买卖点? 其实这个问题,就是个大小周期共振的问题. 我们一般以大周期的形态作为买卖方向的确定 ...

  9. java智能排线_网友晒别墅的智能家居排线 铺满整面墙 堪比数据中心

    今天,有网友在小红书晒出了一座别墅的智能家居排线,只见蓝色管路足有四.五十根,密密麻麻的铺满了几乎整面墙. 很多网友第一次见到这种场面,纷纷评论: 我以为是墙/地暖-- 这特么疯了吧...在家开网吧? ...

  10. python量化实战 顾比倒数线_最精确的动态顾比倒数线(最后修正)

    顾比倒数线"的画法: 以上证指数解释当前如何画出顾比倒数线.首先,我们找到上证指数下跌趋势线的最低点(标注为1的那条蜡烛线),这是第一只"重要的蜡烛线".然后沿着这条蜡烛 ...

最新文章

  1. 关于JavaScript的闭包(closure)
  2. (0059)iOS开发之添加自定义字体库并设置文本字体
  3. Android应用程序框架
  4. 8张图带你轻松温习Java知识
  5. MySQL参数文件位置
  6. javascript 创建对象方式
  7. 歌词 —— 那些花儿
  8. v-if与v-show
  9. ADAS/AD控制器模块开发03 - 系统架构设计及通用需求定义
  10. 内外兼修的移动办公伴侣:联想YOGA S730评测体验
  11. siege 测试post_使用Siege进行Web App性能测试:计划,测试,学习
  12. BT之家种子连接提取
  13. [Oracle- MySQL] Oracle通过dblink连接MySQL
  14. kodi 缓存文件夹_如何将Kodi图稿与视频存储在同一文件夹中
  15. 服务器内网与外网的四大区别?
  16. 【毕业设计】基于单片机的墨水屏阅读器(单词卡) - 物联网 嵌入式
  17. CRS-4544 ORA-09925
  18. 清明时节——《荒原的呼唤》选载之三
  19. Unity2D游戏开发之保卫萝卜
  20. 数字图像处理-空间域处理-灰度变换-基本灰度变换函数(反转变换、对数变换、伽马变换和分段线性变换)

热门文章

  1. 【环境问题】基础Web环境搭建问题记录5—Establishing SSL connection without server's identity verification is not recom
  2. 英文写作笔记--转自知乎
  3. pc端以及移动端页面响应布局,同比例缩放
  4. 88820-71-7,3-Chloropropydimethylvinylsilane,Vinyl(3-chloropropyl)dimethylsilane,3-氯丙基二甲基乙烯基硅烷的物理特性
  5. 5.3运维企业部分--nginx反向代理
  6. 电子元器件销售如何从小白到精英
  7. 安全职业生涯进阶:92 个简单步骤 破解 安全行业
  8. 2020年度总结——心系彼岸,一苇以航
  9. [培训-无线通信基础-4]:宽带和方向性无线信道(多普勒扩展)
  10. 利用python抢火车票