机器人巡线算法优化方案

来源:互联网 发布:如何拷贝mac照片 编辑:程序博客网 时间:2024/05/19 14:18

引言

大赛机器人的运行环境是大赛的场地,比赛时场地的情况将非常复杂,因此,机器人必须知道自己当前的位置才能决定要执行怎样的动作,定位是大赛机器人各种性能发挥的基础,也是机器人全场路径自动规划的基础。目前,比较先进的机器人定位方法为陀螺导航,但是,此种方法对陀螺的精度、积分算法的精度及误差补偿算法都有着很高的要求,而且,高精度的陀螺价格也很高,如果机器人受到撞击(这种情况非常常见),计算结果将会出现较大的误差[1,2]。现在机器人大赛中的陀螺定位技术还很不成熟,本文提出的基于巡线技术的定位方案对大赛机器人来讲是一种比较可靠和有针对性的方案。

第一种:

巡线传感器LineMod

巡线传感器采用红外光巡线传感系统,包括一个传感器采集电路板和相关处理算法程序。巡线传感系统用于机器人巡线导航,可用于清洁机器人导航、比赛用机器人、工业AGV无人导引车等。红外光巡线传感系统采用红外光作为检测光源,避免了外界可见光对巡线传感的干扰和影响,可以在高亮或全黑暗的光照条件下工作。内部处理算法基于施密特滤波器及自适应阈值学习算法http://blog.csdn.net/superdont/article/details/6661994),对每个红外反射管分别进行阈值学习,可以弥补因为器件差异和反射条件差异造成的传感误差。本系统可以自学习地面黑白反光状态,对不同地面反光的变化具有较强的自适应能力,能自主调节到最灵敏稳定的巡线传感模式。

巡线传感器采用ATmega16A单片机,提供3种通信接口:IOI2CUART。用户可根据需要选择其中一种接口读取传感器模块的检测结果。用户可使用拨码开关或者I2CUART通信接口控制此巡线板进入采样学习模式。

   第二种:

 基于PID算法的巡线算法要求小车至少6路传感器才会起到效果!!!
PID算法巡线


 


模型:你控制一个人让他以PID控制的方式走110步后停下。  

1)P比例控制,就是让他走110步,他按照一定的步伐走到一百零几步(如108步)或100多步(如112步)就停了。  说明:  

P比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差(Steady-state error)。   

2)PI积分控制,就是他按照一定的步伐走到112步然后回头接着走,走到108步位置时,然后又回头向110步位置走。在110步位置处来回晃几次,最后停在110步的位置。  说明:  

在积分I控制中,控制器的输出与输入误差信号的积分成正比关系。对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的或简称有差系统(System with Steady-state Error)。为了消除稳态误差,在控制器中必须引入“积分项”。积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。因此,比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。  

 

3)PD微分控制,就是他按照一定的步伐走到一百零几步后,再慢慢地向110步的位置靠近,如果最后能精确停在110步的位置,就是无静差控制;如果停在110步附近(如109步或111步位置),就是有静差控制。  说明:  

在微分控制D中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。 

自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳,其原因是由于存在有较大惯性组件(环节)或有滞后(delay)组件,具有抑制误差的作用,其变化总是落后于误差的变化。解决的办法是使抑制误差作用的变化“超前”,即在误差接近零时,抑制误差的作用就应该是零。这就是说,在控制器中仅引入“比例P”项往往是不够的,比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势。这样,具有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象,比例P+微分D(PD)控制器能改善系统在调节过程中的动态特性

 

PID的流程简单到了不能再简单的程度,通过误差信号控制被控量,而控制器本身就是比例、积分、微分三个环节的加和。这里我们规定(在t时刻):1.输入量为rin(t);2.输出量为rout(t);

3.偏差量为err(t)=rin(t)-rout(t);pid的控制规律为

理解一下这个公式,主要从下面几个问题着手,为了便于理解,把控制环境具体一下:

1.规定这个流程是用来为直流电机调速的;2.输入量rin(t)为电机转速预定值;3.输出量rout(t)为电机转速实际值

2.那么以下几个问题需要弄清楚:

3.1.通过PID环节之后的U(t)是什么值呢?

4.2.控制执行器(直流电机)转动转速应该为电压值(也就是PWM占空比)。3.那么U(t)与PWM之间存在怎样的联系呢?

5.http://blog.21ic.com/user1/3407/archives/2006/33541.html(见附录1)这篇文章上给出了一种方法,即,每个电压对应一个转速,电压和转速之间呈现线性关系。但是我考虑这种方法的前提是把直流电机的特性理解为线性了,而实际情况下,直流电机的特性绝对不是线性的,或者说在局部上是趋于线性的,这就是为什么说PID调速有个范围的问题。具体看一下

6.http://articles.e-works.net.cn/component/article90249.htm(见附录2这篇文章就可以了解了。所以在正式进行调速设计之前,需要现有开环系统,测试电机和转速之间的特性曲线(或者查阅电机的资料说明),然后再进行闭环参数整定。这篇先写到这,下一篇说明连续系统的离散化问题。并根据离散化后的特点讲述位置型PID和增量型PID的用法和C语言实现过程。


二.PID算法的离散化

上一节中,我论述了PID算法的基本形式,并对其控制过程的实现有了一个简要的说明,通过上一节的总结,基本已经可以明白PID控制的过程。这一节中先继续上一节内容补充说明一下。

1.说明一下反馈控制的原理,通过上一节的框图不难看出,PID控制其实是对偏差的控制过程;

2.如果偏差为0,则比例环节不起作用,只有存在偏差时,比例环节才起作用。3.积分环节主要是用来消除静差,所谓静差,就是系统稳定后输出值和设定值之间的差值,积分环节实际上就是偏差累计的过程,把累计的误差加到原有系统上以抵消系统造成的静差。

4.而微分信号则反应了偏差信号的变化规律,或者说是变化趋势,根据偏差信号的变化趋势来进行超前调节,从而增加了系统的快速性。

好了,关于PID的基本说明就补充到这里,下面将对PID连续系统离散化,从而方便在处理器上实现。下面把连续状态的公式再贴一下:

 

假设采样间隔为T,则在第KT时刻:偏差err(K)=rin(K)-rout(K);

积分环节用加和的形式表示,即err(K)+err(K+1)+……;微分环节用斜率的形式表示,即[err(K)-err(K-1)]/T;从而形成如下PID离散表示形式:

 

u(K)可表示成为:

 

至于说KpKiKd三个参数的具体表达式,我想可以轻松的推出了,这里节省时间,不再详细表示了。

其实到这里为止,PID的基本离散表示形式已经出来了。目前的这种表述形式属于位置型PID,另外一种表述方式为增量式PID,由U上述表达式可以轻易得到:

 

那么:

 

这就是离散化PID的增量式表示方式,由公式可以看出,增量式的表达结果和最近三次的偏差有关,这样就大大提高了系统的稳定性。需要注意的是最终的输出结果应该为

u(K)+增量调节值;

PID的离散化过程基本思路就是这样,下面是将离散化的公式转换成为C语言,从而实现微控制器的控制作用。

PID算法调整规律(https://wenku.baidu.com/view/dcbcb11810a6f524ccbf8552.html)

以上就是个人查阅大量资料所了解到的加上个人的想法最终所得出的对于小车巡线算法的优化方案,没有具体到程序如何编写,希望大家延续思路,具体到实际操作中。

 


原创粉丝点击