麦克纳姆轮PID控制原理

目录

前言

一、什么是麦克纳姆轮

二、运动分析

三、pid控制算法

一、什么是pid?

二、什么是串级PID?

三、麦克娜姆轮的控制算法

四、总结




前言

目前很多大学生比赛里面经常都会出现麦克娜姆轮,并且麦克娜姆轮在工业上也应用挺广泛,例如物流搬小车。下面是我玩麦克娜姆轮的一些经验总结,分享给大家。


一、什么是麦克纳姆轮

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


二、运动分析

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


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

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

2、向前运动

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

V1=V1a; V2=V2a; V3=V3a; V4=V4a;

3、向右运动

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

V1=V1b; V2=-V2b; V3=V3b; V4=-V4b;

4、顺时针旋转

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

V1=V1c; V2=V2c; V3=-V3c; V4=-V4c;

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

V1=V1a+V1b+V1c; V2=V2a-V2b+V2c; V3=V3a+V3b-V3c; V4=V4a-V4b-V4c;

三、pid控制算法

一、什么是pid?

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

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

公式如下:

 参数介绍:

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

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

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

en:输入量。

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

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

调试方法:先调P,再调I,最后调D。最好结合波形图来调,下面推荐一个波形显示上位:非常好用的上位机软件(功能强大)——匿名四轴上位机_匿名上位机-CSDN博客

二、什么是串级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调试需要多实践,多琢磨,调试多了自然就会了。

### 麦 PID 控制原理及其实现 #### 1. 麦控制背景 麦(Mecanum Wheel)是一种特殊的车设计,能够使机器人实现全方位移动。其运动学特性可以通过瞬时旋转中心(ICR, Instantaneous Center of Rotation)来描述[^2]。为了精确控制机器人的速度和位置,通常会采用闭环控制系统。 #### 2. PID 控制基础 比例-积分-微分(PID)控制器是一种经典的反馈控制方法,在工业自动化领域广泛应用。它通过计算误差信号的比例、累积误差以及误差变化率来进行控制输出调整。具体而言: - **P (Proportional)**:表示当前误差值乘以一个增益系数 \( K_p \),用于快速响应目标值的变化。 - **I (Integral)**:通过对历史误差进行累加并乘以增益 \( K_i \),消除稳态误差。 - **D (Derivative)**:基于误差的变化速率乘以增益 \( K_d \),提高系统的动态性能并减少超调量。 PID 控制器的核心在于合理设置三个参数 \( K_p \), \( K_i \), 和 \( K_d \)[^3]。 #### 3. 麦 PID 实现流程 对于麦机器人来说,PID 控制主要用于调节电机的速度或角度,从而间接影响整个平台的位姿。以下是具体的实现方式: ##### (1)定义输入与输出 假设我们希望控制的是四个独立驱动的直流电机,则每个电机的目标转速由上层路径规划算法提供。实际测量得到的转速作为反馈数据参与闭环运算。 ##### (2)构建误差函数 设目标转速为 \( v_{\text{target}} \),实测转速为 \( v_{\text{measured}} \),则误差可表达为: \[ e(t) = v_{\text{target}} - v_{\text{measured}}(t). \] ##### (3)编写 PID 计算逻辑 下面是一个典型的离散时间 PID 控制器伪代码实现: ```python class PIDController: def __init__(self, kp, ki, kd): self.kp = kp # 比例增益 self.ki = ki # 积分增益 self.kd = kd # 微分增益 self.prev_error = 0 self.integral = 0 def update(self, error, dt): """更新控制律""" proportional_term = self.kp * error self.integral += error * dt integral_term = self.ki * self.integral derivative_term = self.kd * ((error - self.prev_error) / dt) output = proportional_term + integral_term + derivative_term self.prev_error = error return output ``` 上述代码中的 `dt` 表示采样周期的时间间隔;`output` 是最终作用于执行机构上的控制指令。 ##### (4)嵌入硬件环境 将此软件模块集成至单片机或其他实时操作系统中运行,并连接编码器读取真实速度信息完成闭环操作。 #### 4. 参数整定技巧 针对不同应用场景下的麦系统,需仔细调试各环节权重因子。常用的方法有手动试凑法、Ziegler-Nichols 法或者借助仿真工具自动优化获取最佳组合[^1]。 --- ###
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱写代码的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值