机器人PID算法资料下载.pdf
- 文档编号:16121081
- 上传时间:2022-11-20
- 格式:PDF
- 页数:14
- 大小:465.69KB
机器人PID算法资料下载.pdf
《机器人PID算法资料下载.pdf》由会员分享,可在线阅读,更多相关《机器人PID算法资料下载.pdf(14页珍藏版)》请在冰豆网上搜索。
PID创建完成后,经过简单的修改就可以应用到其他地方,如,让机器人跑直线,做两轮平衡机器人。
其实学过微积分的人很容易理解PID的典型描述,本文是写给那些对PID几乎没有任何概念的读者,比如参加FLL比赛的38年级的孩子们。
考虑到大家可能不了解微积分,因此我尽量不使用微积分,从非常低的起点开始建造整个概念。
先来看看一个适于巡线的机器人是什么样的结构。
看下图,这个机器人用两个马达驱动,分别与车轮A、C连接,前端装有垂直向下的光电传感器,红圈标出的部分就是光电传感器能“看到”的部分。
带箭头的大长方形表示机器人的其余部分,箭头指示机器人的运动方向。
巡线是机器人的基本技术,也是大家学习机器人时最先要做的。
能够巡线的自动装置具有机器人的全部特点:
使用传感器收集周围环境的信息,并据此调整机器人的运动状态。
巡线机器人可以使用1个光电传感器、2个光电传感器、一打光电传感器或者装上你所有的光电传感器。
实际上,你使用的光电传感器越多,巡线的效果越好。
只使用1个光电传感器也可以让机器人精确的巡线(即使线条是有弧度的),但是机器人移动过快时容易“飞线”(“飞线”指机器人脱离线条,不能继续沿着线移动)。
一般来说,使用的传感器越多,巡线的速度越快。
现在我们来试验第一个方法(非PID方式)。
巡线其实是让机器人沿着线的边缘走,因为如果沿着黑线本身走,当机器人偏离黑线,传感器“看到白色”时,我们不知道机器人到底在线的哪一边,是在线的右边还是左边?
如果沿着线的边缘走,当光电传感器“看到白色”,我们知道机器人在线边缘(线)的左边,当光电传感器“看到黑色”,我们知道机器人在线边缘的右边(在线上)。
因为机器人跟随的是线条的左边,因此这种方式被称为“左手法则”。
我们需要知道当光电传感器“看到白色”和“看到黑色”时返回的读数值。
一个典型的非校准传感器(数值0100)“看到白色”会返回50,“看到黑色”会返回40。
我们可以在一条数据线段上标出光电传感器的读值,来帮助我们理解如何将光电传感器的读值变化转变为机器人的运动变化。
以下是我们画出的从“白”到“黑”的光电传感器读值。
我们把这个数值线段平分为两部分:
当光电传感器值小于45,让机器人左转;
当光电传感器值大于45,让机器人右转。
在这里,我们不考虑机器人的转向动作的精确性。
在相对较直的线上,机器人的转向动作可以比较细小;
在有很多弯的线上,机器人通常要有明显的转向动作。
做动作细小的转向时,你可以把速度快的轮子的马力值设置为50%,速度慢的轮子的马力值设置为20%。
有很多弯的现上做明显转向动作时,你可以在快的轮子上设置30%的马力值,在慢的轮子上使用缓停或停止。
无论你在轮子上设置什么数值的马力值,在做左右不同转向时,这个设置应该是一样的,即在一侧的轮子上设置较大的马力值,在另一侧轮子上设置较小的马力值(或设置为停止)。
这种巡线方式能够完成巡线任务,但效果并不是很好。
在比较直的线上完成巡线任务,在编程中设置动作细小的转弯方式,整体巡线效果看起来还算不错;
但是如果线上有较大的弯度,你又采用明显的转向动作让机器人完成巡线,机器人就会来回摆动,横向穿过线条。
机器人只“知道”两件事情:
转左和转右。
用这种方法巡线,通常机器人的速度不会很快,而且看起来很糟糕。
即使线是直的,这种方法也不能使机器人走直线,甚至不能完全对准线的边缘。
如何使巡线更有效率呢?
让我们来调整一下。
把光电传感器的读值线段分成三部分。
当光电传感器值低于43时,我们让机器人转左。
光电传感器值在44到47之间时,我们让机器人直行。
光电传感器值大于47时,我们让机器人转右。
这在NXT-G程序中,可以在判断模块中选择yes/no来实现。
你实际上只需做两次判断,而不是三次。
第二种巡线方式效果比第一种方式好的多。
至少机器人有时会直接向前走了。
与第一种巡线方式一样,你依然要根据线的曲直特点来决定使用哪种转向方式(细小或者明显的转向动作)。
机器人依旧会有相当数量的来回摆动。
精明的读者也许会想“如果使用3个光电传感器是不会比2个光电传感器要好些呢?
在增加更多的光电传感器会怎样?
”这就是PID的开始了。
“PID”“PID”中的中的“P”:
“P”:
比例控制是关键比例控制是关键如果我们把光电传感器读值的数据线段分成更多的段,会怎样呢?
我们要解决的第一件事情是,当光电传感器读值的数据线段的分段数超过3段时,要如何确定“turn(转向)”的取值。
在我们的第一种巡线方式啊中,机器人只做两件事情,转左或转右,“turn(转向)”的数值是一样的,只是方向不同。
在第二种巡线方式中,我们在左右两个转向的基础上加上了“直行”。
在光电传感器读值的数据线段分段超过3个时,我们需要更多“种类”的“turn(转向)”。
为了帮助理解“更多种类的turn(转向)”,我们重新画出光电传感器读值的数据线段,并把它转换为图形。
X轴(水平线)为光电传感器读值值,与上面的光电传感器读值的数据线段一样。
Y轴(垂直线)是“turn(转向)”轴。
左边的图形表示的是我们第一种巡线方式将光电传感器读值分成两段的情况,机器人只能做两件事(用蓝色的线表示),转左或转右,除了方向以外,转向值是一样的。
中间的图形是第二种巡线方式将光电传感器读值分成三段的情况,中间增加的一段是机器人直行的部分(turn=0),转向部分与前面的第一种巡线方式是一样的。
右侧的图形是一个比例控制的巡线机器人,在两个极限点之间的转向变化很平滑。
如果光电传感器读取的光值表明机器人离线很近,机器人就做小的转弯;
如果读取的光值表明机器人离线很远,机器人就做较大的转弯。
比例是一个重要的概念。
比例的意思就是在两个变量之间存在线性关系,简单的说,就是变量之间的关系呈现为一条直线(如右侧图形所示)。
直线的表达式为:
y=mx+by=mx+b这里,x,y是指直线上任意一点的坐标值(x,y),m是这条直线的斜率,b是直线在Y轴上的截距(当x=0时,直线通过Y轴上的点,该点在Y轴上的坐标值)。
直线斜率的定义为直线上任意两点y值的变化量除以x值的变化量。
我来把图形和表达式变得简单一些。
首先,我们将光电传感器读值线段(X轴)的中心点定为0,因为我们的光电传感器读值范围是40到50,我们把所有光电传感器读数都减掉45(这是40和50的平均值,(40+50)/2),得到的结果称为“errorerror(误差)”。
当光电传感器读数为47时,可得到errorerror=47-45=2。
这个errorerror(误差)表明了机器人的光电传感器离线的边缘有多远。
当光电传感器正好在线的边缘上,“errorerror(误差)”为0(因为此时光电传感器的读值为45,而我们要从光电传感器读值中减掉45)。
如果光电传感器全部处在白色的地方,“errorerror(误差)”为+5,如果光电传感器全部处在黑色的地方,“errorerror(误差)”为-5。
在上面的图形中,我已经用“eerrorrror(误差)”来表示X坐标轴。
因为这条直线正好在原点处通过Y轴,因此b的取值为0,这样表达式会变得简单一些:
y=mxy=mx或者使用我们的方法:
TurnTurn=m*=m*errorerror我们还没有对转向轴做出定义,所以现在我们确定转向的范围是从-1(最大左转)到+1(最大右转),0转向的意思就是直行。
上面图形中直线的斜率就可以用标为红色的两个点计算出来(其实直线上任意两点均可使用)。
斜率斜率=m=(y=m=(y值的变化量值的变化量)/(x)/(x值的变化量值的变化量)=
(1)=(1-(-1)/
(1)/(-55-5)=5)=-2/10=2/10=-0.0.22斜率是一个比例常量比例常量,用它乘以(x值)就可得到“(转向)”(y值)。
请一定记住这一点。
在各种PID文献中,斜率(也叫做比例常数、直线表达式中的m)被称作KK。
各式各样的KKs出现在PID文献中。
你可以把KK(或mm,或斜率,或比例常数)看做是一个换算系数,用KK把一个数字(光电传感器读值或我们例子中的errorerror(误差)转换成另外一个数字(如TurnTurn(转向)。
这就是KK的作用,非常简单也非常强大。
那么在我们的直线表达式中使用这些新的变量名字:
TurnTurn=KK*(*(errorerror)用语言表达就是:
将误差值errorerror乘以比例常数KK得到所需的转向值TurnTurn。
这个TurnTurn值就是P控制器的输出结果,因为它只涉及比例控制,被称为“比例控制部分”。
“error”“error”的取值范围是由光电传感器的设置、巡线测试纸的颜色等因素决定的。
你可能已经注意到了,在最后一个图形里,直线没有延伸到errorerror(误差)值-5到+5的范围以外。
在-5到+5的范围以外,我们就不能判断光电传感器到底离线有多远了。
当光电传感器完全看不到任何黑线时,它看到的所有“白色”都是一样的。
当光电传感器离线的边缘太远时,光电传感器读取到的光值变成恒定的数值,这就意味着光电传感器的读与errorerror(误差)不再是比例关系。
我们只能在光电传感器相当接近黑线时,判断光电传感器离线的边缘有多远距离,在非常小的数值范围内,光电传感器的读值与这个距离是成比例的,因此,我们的光电传感器值要设置在能给出比例关系的有限的范围内。
超出这个范围,就只能给出机器人调整的正确方向,但数量大小是错误的,光电传感器读值或是误差会小于实际情况,这样在修正误差时,就不会有很好的效果。
在PID文献中,把传感器能给出比例响应的范围称为“比例范围”。
在PID控制中,比例范围是另一个非常重要的概念。
在我们巡线机器人的应用中,光电传感器读值的比例范围是40到50,误差的比例范围是-5到+5,马达的比例范围是-100(全马力后退)到+100(全马力前进)。
以下是有关比例范围的两个重要内容:
(1)我们希望比例范围尽可能的宽。
光电传感器的比例范围是相当小的,就是说,光电传感器必须很接近线的边缘,才能获得比例信息。
比例范围的宽度主要取决于光电传感器距离巡线测试纸的高度有多少。
如果光电传感器非常靠近巡线测试纸,如1/16英寸(约0.16厘米),那么光电传感器在巡线测试纸上看到范围只是一个很小的圆圈。
光电传感器的一个很小的移动就会产生-5到+5范围的errorerror(误差),也就是比例范围。
你也许会说,光电传感器的视野狭窄,只能看到巡线
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机器人 PID 算法
![提示](https://static.bdocx.com/images/bang_tan.gif)