PID算法在乐高机器人编程中的应用

PID算法在乐高机器人编程中的应用

ID:47469003

大小:373.50 KB

页数:16页

时间:2020-01-11

PID算法在乐高机器人编程中的应用_第1页
PID算法在乐高机器人编程中的应用_第2页
PID算法在乐高机器人编程中的应用_第3页
PID算法在乐高机器人编程中的应用_第4页
PID算法在乐高机器人编程中的应用_第5页
资源描述:

《PID算法在乐高机器人编程中的应用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、.....译者前言PID技术一直是大家很感兴趣的话题。要用好PID控制,并不是一件容易的事,需要有相当的高等数学基础和控制技术基础,这对很多乐高机器人爱好者来说,是一个难题。 J.Sluka (原文作者)没有从专业的角度去解释PID,而是以非常浅显的方式写出了这篇“APIDControllerForLegoMindstormsRobots”(用于乐高机器人的PID控制器),向缺乏专业基础的人士,解释如何在乐高机器人里使用PID控制器。另,虽然原文用了一种非常简单的方法来说明PID控制器的用法,但是对于那些小学、初中没毕业的同学来说,还是有些过于复杂,所以,我并不建议乐

2、友门盲目跟风(感觉会用PID就高端一点)学习PID。在我看来,先有一定的数学基础后,再回头学习此篇更为适合!PS:在这篇文章里所有的代码都不是真正的程序代码,只是作者对编程的示意,或者说是用类似程序代码的方式对编程的内容进行解释。作者希望读者能自行选择程序语言,自己完成PID控制器的编程。PID控制器是一种常用的控制技术,常用于多种机械装置(如车辆、机器人、火箭)中。用数学方式来描述PID控制器是非常复杂的。本文描述了如何在使用NXT-G编程的LEGO机器人上创建PID控制器。文中将以实例来说明如何创建PID来完成机器人巡线任务。PID创建完成后,经过简单的修改就可以

3、应用到其他地方,如,让机器人跑直线,做两轮平衡机器人。其实学过微积分的人很容易理解PID的典型描述,本文是写给那些对PID几乎没有任何概念的读者,比如参加FLL比赛的3~8年级的孩子们。考虑到大家可能不了解微积分,因此我尽量不使用微积分,从非常低的起点开始建造整个概念。先来看看一个适于巡线的机器人是什么样的结构。看下图,这个机器人用两个马达驱动,分别与车轮A、C连接,前端装有垂直向下的光电传感器,红圈标出的部分就是光电传感器能“看到”的部分。带箭头的大长方形表示机器人的其余部分,箭头指示机器人的运动方向。巡线是机器人的基本技术,也是大家学习机器人时最先要做的。能够巡线

4、的自动装置具有机器人的全部特点:使用传感器收集周围环境的信息,并据此调整机器人的运动状态。巡线机器人可以使用1个光电传感器、2个光电传感器、一打光电传感器或者装上你所有的光电传感器。实际上,你使用的光电传感器越多,巡线的效果越好。只使用1个光电传感器也可以让机器人精确的巡线(即使线条是有弧度的),但是机器人移动过快时容易“飞线”(“飞线”——指机器人脱离线条,不能继续沿着线移动)。一般来说,使用的传感器越多,巡线的速度越快。现在我们来试验第一个方法(非PID方式)。巡线其实是让机器人沿着线的边缘走,因为如果沿着黑线本身走,当机器人偏离黑线,传感器“看到白色”时,我们不

5、知道机器人到底在线的哪一边,是在线的右边还是左边?如果沿着线的边缘走,当光电传感器“看到白色”学习参考.....,我们知道机器人在线边缘(线)的左边,当光电传感器“看到黑色”,我们知道机器人在线边缘的右边(在线上)。因为机器人跟随的是线条的左边,因此这种方式被称为“左手法则”。我们需要知道当光电传感器“看到白色”和“看到黑色”时返回的读数值。一个典型的非校准传感器(数值0~100)“看到白色”会返回50,“看到黑色”会返回40。我们可以在一条数据线段上标出光电传感器的读值,来帮助我们理解如何将光电传感器的读值变化转变为机器人的运动变化。以下是我们画出的从“白”到“黑”

6、的光电传感器读值。我们把这个数值线段平分为两部分:当光电传感器值小于45,让机器人左转;当光电传感器值大于45,让机器人右转。在这里,我们不考虑机器人的转向动作的精确性。在相对较直的线上,机器人的转向动作可以比较细小;在有很多弯的线上,机器人通常要有明显的转向动作。做动作细小的转向时,你可以把速度快的轮子的马力值设置为50%,速度慢的轮子的马力值设置为20%。有很多弯的现上做明显转向动作时,你可以在快的轮子上设置30%的马力值,在慢的轮子上使用缓停或停止。无论你在轮子上设置什么数值的马力值,在做左右不同转向时,这个设置应该是一样的,即在一侧的轮子上设置较大的马力值,在

7、另一侧轮子上设置较小的马力值(或设置为停止)。这种巡线方式能够完成巡线任务,但效果并不是很好。在比较直的线上完成巡线任务,在编程中设置动作细小的转弯方式,整体巡线效果看起来还算不错;但是如果线上有较大的弯度,你又采用明显的转向动作让机器人完成巡线,机器人就会来回摆动,横向穿过线条。机器人只“知道”两件事情:转左和转右。用这种方法巡线,通常机器人的速度不会很快,而且看起来很糟糕。即使线是直的,这种方法也不能使机器人走直线,甚至不能完全对准线的边缘。如何使巡线更有效率呢?让我们来调整一下。把光电传感器的读值线段分成三部分。当光电传感器值低于43时,我们让

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。