单片机学习小组
直播中

李勇

7年用户 1319经验值
私信 关注

如何去实现麦克纳姆轮的PID控制调试呢

什么是麦克纳姆轮?
麦克纳姆轮是怎样进行运动的?
如何去实现麦克纳姆轮的PID控制调试呢?

回帖(1)

李缬呓

2022-2-22 09:33:01
一、什么是麦克纳姆轮


麦克纳姆轮是一种可以全向移动的全向轮,又叫麦轮,由轮毂和围绕轮毂的辊子组成,麦轮辊子轴线和轮毂轴线夹角成45度。在轮毂的轮缘上斜向分布着许多小轮子,即辊子,故轮子可以横向滑移。辊子是一种没有动力的小滚子,小滚子的母线很特殊,当轮子绕着固定的轮心轴转动时,各个小滚子的包络线为圆柱面,所以该轮子能够连续的向前滚动。由四个这种轮加以组合,可以使机构实现全方位移动的功能。麦克纳姆轮根据镜像关系分为A轮和B轮。


二、运动原理


1、四个轮子的正确组合如下图 。(顺便给四个轮子编个号)





麦克娜姆轮的运动可以看做三个基本运动的叠加。下面我们做个假设。单个轮子的合速度为V,左右平移速度记作Va,前进后退记作Vb,旋转记作Vc。(取向上为正方向)



下面红色箭头代表车轮的正反转(取向上为正方向)

2、向前运动

1、2、3、4轮都正转。小车前进,反之则正转





3、向右运动

1、3轮正转,2、4轮反转小车向右运动,反之则向左运动。





4、顺时针旋转

1、2轮正转,3、4轮反转小车顺时针原地旋转,反之则逆时针原地旋转。





根据上面的叠加可得下面公式:



三、pid控制


一、什么是pid?


PID,就是“比例、积分、微分”,是一种常见的控制算法。在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称PID控制。它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。



下面我们只介绍增量式PID(还有位置式pid)

公式如下:



参数介绍:

Kp:比例系数,反应调节速度。Kp越大,系统响应速度越快,Kp越小,响应速度越慢。Kp过大会产生震荡,使系统不稳定。

Ki:积分控制,消除系统余差。只有偏差不存在时,积分才会停止。

Kd:微分控制,减小系统震荡。

en:输入量。

en-i:上一次的输入量。

en-2:上上次的输入量。



调试方法:先调P,再调I,最后调D。最好结合波形图来调,下面推荐一个波形显示上位:

二、什么是串级PID?


顾名思义就是两个PID串起来。一个pid的输出作为另一个PID的输入。

串级pid调试方法:先调内环,再调外环。先调P再调I,最后再调D.

三、麦克娜姆轮的控制思想


一、我们采用串级pid,位置作为外环,速度作为内环。通过外环PID算出四个轮子需要达到的速度,然后将速度作为内环的输入,使小车达到所需的速度。

下面是电磁循迹麦克娜姆轮部分控制代码

外环:

int direction_PD(int left_inductance,int right_inductance)
{
    int new_direction,PWM_out;


    //归一化
    left_inductance=100*(left_inductance-left_min)/(left_max-left_min);
    right_inductance=100*(right_inductance-right_min)/(right_max-right_min);

    //位置函数,差比和算法
    new_direction=100*(left_inductance-right_inductance)/(left_inductance+right_inductance);
    //PD算法
    PWM_out=kp_direction*new_direction+kd_direction*(new_direction-old_direction);
    old_direction=new_direction;
    return PWM_out;
}

内环:

int speed1_PI(int encoder,int Target_Speed)
{
    static int iError,lastError,PrevError,PWM;
    iError=Target_Speed-encoder;
    PWM+=kp_speed*(iError-lastError)+ki_speed*iError+kd_speed*(iError-2*lastError+PrevError);
    PrevError=lastError;
    lastError=iError;
    return PWM;
}



总结


以上就我自己的学习总结,个人对pid调试的建议,PID调试需要多实践,多琢磨,调试多了自然就会了。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分