双引号PID大讲堂.doc_第1页
双引号PID大讲堂.doc_第2页
双引号PID大讲堂.doc_第3页
双引号PID大讲堂.doc_第4页
双引号PID大讲堂.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

双引号PID大讲堂(1)P(整理自论坛QQ群) 复制链接 双引号PID大讲堂(1)P(本文内容为论坛qq群成员 上海-“”对PID的讲解 ,同时感谢qq群成员梧州-我是谁?整理)我先说p吧。在说p之前我们先约定一些东西:(如图1)图1中的黑线是黑,黄的大方块是机器,红的椭圆是光感。我们约定在线的右边走。2012-7-15 19:28 上传下载附件 (13.04 KB) 2012-7-15 19:28 上传下载附件 (15.69 KB) 图1 图2 为了方便, 我们假设黑色40,白色60。按照传统的算法就是:去中间值也就是50;如果大于50就是白色向左,小于50就是黑色向右。这个大家都知道。 那50我们就可以认为光感在黑线和白线的交界处,也就是这个状态:(如图2)现在我们可以这样认为:越大于50就是越在黑线内,越小于50就越在白线内 ,和50差的越多就是偏差越大 ,所以要更快的会到黑线。因此转弯就要更加大,所以左右2个电机的差也就要越大。这个就是p的含义但是p没有完全结束,还有构建函数。 首先思考如果机器人正好看到的是50,那么也就是笔直向前。也就是左轮和右轮的差就是0。刚刚说了越是偏离中间数值,那么越是要扭回来,也就是左右两轮的差就要越大。根据这个我们可以构建这样的关系:和中间值的差越大,两个轮子的差越大。让一个轮子加上这个数值,让一个轮子减去这个数值,这正好符合我们这样的关系:差越大,一个轮子加的越大,另一个轮子减得越大,正好两个轮子的差越大,也正好符合我们的要求。但是光感的差变化很小:即使到完全白色(60)也只有10的差,那么一个轮子加10,另一个减10,两轮差20。这样的话机器还是几乎跑直线的。 如果差1那么几乎就没有效果了。因为我们要放大这样的变化要让差1也有教明显的变化,所以我们可以用让这个差乘以一个比较大的数,这样差就大了 在这个过程中,一般读取的时间越短越好。至于读取间隔这个还与其他的有关(i和d) 通过刚刚的分析我们可以设定一个速度比如v,现在我们计算差:读取光值,然后计算差,接着用这个差去乘以数(放大这个扭动)。一个轮子=初速度+刚刚计算的结果;另一个轮子=初速度-刚刚计算的结果,以此循环就可以 如果在白色往右走,黑色往左走(或者走着走着走到左边了),就是方向反了。把一个轮子=初速度+刚刚计算的结果;另一个轮子=初速度-刚刚计算的结果(+/-号互换就可以了) 系数这个要调整的。建议大家从小开始调。在做pid的时候,不用一步到位把pid都写好一起调。先把p写好调整好再慢慢加id。因为这样能理解每一部分是什么作用的 最后给大家一段伪码,这样大家可以根据这个写代码,感觉这个写就能写出p程序了。因为我不用nxt-g的,所以nxt-g的很多细节要靠你们自己处理了设定v=某个数值 设定比较值=某个数(黑白中间值) 循环开始: 读取光感 差=光感-比较值 左轮=v+差*某个系数 右轮=v-差*某个系数 可能最后2个算式的+/-号要交换 这里要提前测量也可以在运行pid之前直接机器测试:转一圈测最大值、最小值。然后算中间值,就可以了让光感经过黑线和白线。这个就是比较最小值、最大值的算法 首先把光感记录在2个变量里比如min和max。如果有数小于min替换,同样大于max替换理解算法就可以了 大讲堂, 论坛, 在线的, 双引号, 梧州D 讲解本帖最后由 “” 于 2012-8-2 23:32 编辑 双引号PID大讲堂D今天我们讲的是d微分 为什么我不说i而说d? 因为微分使用起来更加直接而i积分也会因为要分析很多问题不容易说所以先以d做讲解。 我们就用走线中遇到的问题来分析 我们回忆一下上节课约定的数值白:60黑:40中间值:50 2012-8-2 23:26 上传下载附件 (2.68 KB) 现在光感几乎在黑白之间但是有点偏向白色。现在我们假设是52 对于52的是数值我们一定会想到往左转 没有错但是对52的数值最佳的处理方式是不一样的 如果机器在从黑色到白的的情况下也就是说机器在向白色运动的时候需要更大的力向黑色靠拢 相反,在从白色到黑色的情况下机器应该稍微有点刹车以至于不能让机器最终的位置太小于50否则又会有很大的摆动向白色也就是说虽然光感都是52但是处理的方式是不一样 那么什么是微分呢? 简单的说在数学概念中就是本次结果和上次结果的差。 我们分析一下现在的情况 那么如果上次的光值是53现在52那么就是从53到52对比一下53比52大所以知道前面更加亮也就是说从白到黑这样的过程 相反如果上一次 的光值是51是从51到52是不是就是从黑到白了呢?因此我们就要记录上一次的光值 像这样在极短的时间内计算本次和上次的光值的差这个就是微分。 通过光值的对比能得到这个微分的数值除了这个方法外我们还有其他的方法得到 那就是p 中所说的误差。 我们回忆一下上节课说的误差 中间值是50 现在的数值是52那么误差就是2(52-50)现在数值是48那么误差就是-2(48-50) 除了我们对比光的数值以外还可以通过对比这个差值来判断看分析上次是53那么误差就是3本次52本次误差就是2那么现在就是光值的改变就是52-53=-1减少了1从误差来看:就是2-3=-1减少了1 如果上次是51那么误差是1本次52误差就是2那么现在光值的改变就是从52-51=1就是增加1从误差来看就是2-1=1 也可以这样直接通过误差来计算出微分 。 现在看看效果把微分的结果乘以一个系数看看结果会发生怎么样的变化呢? 上次是53那么误差就是3本次52本次误差就是2那么现在就是光值的改变就是52-53=-1减少了1从误差来看:就是2-3=-1减少了1比如这个系数是5那么结果就是-5如果加到两轮之间的速度差里面正好使2轮的速度差减少了这样的结果就是机器在摆动回来的过程中2轮速度差减少了也就是更接近一条直线摆动少了那么机器就不容易又进入黑线我们再来看看从51到52的过程 如果上次是51那么误差是1本次52误差就是2那么现在光值的改变就是从52-51=1就是增加1从误差来看就是2-1=1乘以系数5,就变成了5现在加到2轮的速度差之后,速度差更大了这样摆动更大了也就更加容易回到中间值的位置了 通过分析上面的情况可见微分能起到 当机器运动方向靠近中间值时2轮的力量差就是变小当机器运动方向远离中间值时2轮的力量差就是变大 好了我们现在看程序应该如何写 设定v(速度)=某个数值 设定比较值=某个数(黑白中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论