PID参数设定

2023-05-16

在电机的控制领域,不同的电机有不同的驱动方式,其中应用最广泛的就是PID(proportion integration differentiation)控制。P、I和D分别指比例控制,积分控制和微分控制。其算法简单可靠性高,广泛应用于工业过程控制,至今有90%左右的控制回路具有PID结构。在双轮移动机器人,大多数的电机的速度控制和反馈系统如下:
在这里插入图片描述
在上图模型中,根据指定速度和实际速度构成控制偏差,将偏差按照比例、积分和微分通过线性组合构成控制量,对被控的电机进行控制。其控制规律为:
在这里插入图片描述
判断一个控制系统是否优越,有三个指标:快、准、稳。”快”就是要求马达转速能快速达到指定的转速,”稳”是要求转速能够稳定波动小,”准”就是要求要求达到的转速与输出的转速之间的误差偏小。
如当前电机转速为20r/s,现在想达到100 r/s,误差则为80 r/s。假设仅仅采用比例控制的情况下。取0.5,,当t=1的时候(表示第一次对系统控制),那么u=0.580=40 r/s,则转速升到了60 r/s。以此类推,则t=3的时候便可以达到最终速度。但是单单比例控制是不够的的,如果车轮出现摩擦。假设实际得到的转速由于摩擦力存在总比指定的少10r/s,那么经过几次调节到达90 r/s的时候就没法变动了,因为转速为80 r/s的时候误差为20 r/s,而205=10 r/s,这样会导致直接转不动了。由于这种情况的存在,所以引入积分控制。
积分控制与误差的积分成正比,所以比例加积分的控制算法为:
在这里插入图片描述
t=1时候的误差error是80r/s,第二次的误差是40r/s,至此,误差的积分(离散情况下积分其实就是做累加),=80+40=120 r/s。 这个时候的控制量,除了比例的那一部分,还有一部分就是一个系数乘以这个积分项。由于这个积分项会将前面若干次的误差进行累计,所以可以很好的消除稳态误差(假设在仅有比例项的情况下,系统卡在稳态误差了,即只能停留在80 r/s。由于加入了积分项的存在,会让输入增大,从而使得马达的转速可以大于80 r/s,渐渐到达目标的100 r/s)这就是积分项的作用。
假设马达快要达到100 r/s的时候,想要马达能够缓慢的达到100 r/s,而不是突然超过100 r/s,这就是要求能够减少波动。控制,在离散情况下,就是error的差值,就是t时刻和t-1时刻error的差,即
在这里插入图片描述
其中kd是一个系数项,对于、、参数则需要根据不同的电机马达进行相应的调整。

下面是通过IMU数据对移动机器人的方向进行调整的demo,供大家参考学习。

double goController::Imu_PID_set(double current_imu_data, double aim_imu_data){
    double error = 0;
    double p_error = 0;
    static double i_error = 0;
    double d_error = 0;
    
    error = - current_imu_data + aim_imu_data;
    p_error = error;
    i_error = p_error + i_error;
    d_error = error - y_error * 2 + yy_error;

    ros::param::get("~KP", KP);
    ros::param::get("~KI", KI);
    ros::param::get("~KD", KD);

    double pub_yaw = KP * p_error + KI * i_error + KD * d_error;
    
    yy_error = y_error;
    y_error = error;
    //ROS_INFO("pub_yaw :%f",pub_yaw);
    return pub_yaw;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PID参数设定 的相关文章

随机推荐

  • MissionPlanner使用说明(持续更新)

    MissionPlanner有些功能需要自己摸索 xff0c 我把一些比较难找的功能使用方法列举如下 xff1a 原文链接 xff1a http www nufeichuiyun com p 61 67
  • 怒飞垂云视频教程 一、建立编译环境

    本文讲述如何建立APM飞控固件的编译环境 原文链接 xff1a http www nufeichuiyun com p 61 237
  • Android Automotive(七) VehicleService

    Android Automotive xff08 七 xff09 VehicleService VehicleService 是Android Automotive在硬件抽象层的一个核心native服务 处理和车辆相关功能 xff0c 为系
  • ardupilot之添加mavlink消息

    本文是这篇文章的复现 xff1a http www sohu com a 213599378 175233 一 mavlink分析 Mavlink 的全称是Micro Air Vehicle link xff0c pixhawk把它作为与地
  • Linux中断机制:硬件处理,初始化和中断处理

    来源 CSDN phenix lord的专栏 硬件处理 最近解决一个关于Linux中断的问题 xff0c 把相关机制整理了一遍 xff0c 记录在此 不同的外部设备 不同的体系结构 不同的OS其中断实现机制都有差别 xff0c 本文对应的O
  • 跟我一起复制一款基于ESP-Drone无人机控制板

    1 ESP Drone 无人机项目简介 ESP 无人机是基于ESPRESIF ESP32 ESP32 S2 Wi Fi芯片的开源解决方案 xff0c 可通过Wi Fi连接到手机应用程序或游戏控制台 ESP无人机具有简单的硬件 清晰和可扩展的
  • linux安装llvm

    先装cmake xff0c 可以用sudo apt get install cmake或者去官网下载源码编译安装 下载llvm git clone https github com llvm llvm project git 3 Build
  • Makefile中的MAKECMDGOALS

    make 在执行时会设置一个特殊变量 xff1a 34 MAKECMDGOALS 34 xff0c 该变量记录了命令行参数指定的终极目标列表 xff0c 没有通过参数指定终极目标时此变量为空 该变量仅限于用在特殊场合 比如判断 xff0c
  • Docker切换存放目录踩坑

    因为 var 目录下的磁盘空间不足 xff0c 故把docker的存放目录切换到 data 下面 xff0c 具体步骤 xff1a 1 编辑docker配置文件 etc docker daemon json xff0c 修改data roo
  • 关于Modelsim SE-64 2020.4取消优化后不显示波形问题

    Modelsim取消优化后报错 Error suppressible vsim 12110 All optimizations are disabled because the novopt option is in effect This
  • 关于串口调试助手XCOM点击发送后卡住问题

    未成功安装CH340驱动 USB串口驱动 安装前先重启电脑 xff0c 再点击安装 串口选择错误 打开设备管理器 xff0c 查看USB连接的端口 xff08 COM xff09 号 xff0c 选择正确的端口 xff08 COM xff0
  • Makefile中Linux转Windows执行知识点

    makefile 是一个自动化编译工具 xff0c 可以简化编译过程 xff0c 自动化处理依赖关系和编译顺序 xff0c 提高了代码的可维护性 makefile 通常由一些规则和命令组成 xff0c 规则由目标 依赖和命令构成 xff0c
  • darknet2ncnn编译中 libopencv 库文件找不到

    问题描述 没有直接从 github 上下载 darknet2ncnn 包 xff0c 用的是他人提供的包 xff0c 包已经编译好 解压已经有 convert verify 文件 执行该文件 xff0c 问题描述如下 xff1a root
  • linux usb设备如何和u盘对应

    已知 usb 的 pid vid 如何对加载的u盘进行管理 思路 xff0c 找到 U盘的厂商信息中的pid和 vid 对应关系 xff0c 然后控制 U盘的加载 但是 U盘信息中没有pid 和 vid root 64 li PC sys
  • CV面试题(持续更新!!!)

    CV面试题 1 反卷积 反卷积又叫做转置卷积 xff0c 在计算机中计算的时候 xff0c 转置卷积先将卷积核转为稀疏矩阵C的形式 xff0c 然后计算的时候正向传播的时候左乘这个稀疏矩阵C的转置 xff0c 反向传播的时候左乘这个稀疏矩阵
  • 程序运行时数据保存位置

    程序运行时 xff0c 内存中有六个地方可以保存数据 1 寄存器 这是最快的保存区域 xff0c 寄存器位于处理器内部 然而寄存器的数量很有限 xff0c 所以寄存器是根据需要由编译器的分配的 我们对此没有直接的控制权限 也不可能在我们的程
  • ESP-Drone无人机控制板设计的第一个任务---绘制ESP32-S2-WROVER模块及周边电路

    第1步 xff0c 查看官方ESP Drone无人机ESP32 S2 WROVER模块的参考设计原理图 第二步 xff0c 用KiCAD绘制ESP32 S2 WROVER模块及周边电路 1 如图2 1所示 xff0c 从KiCAD的原理图符
  • ROS学习——读取摄像头数据image

    在ROS工作空间的src文件夹下创建read camera功能包 xff0c 并在包内创建include launch src cfg四个文件夹 在cfg文件夹中创建param yaml文件 xff0c 并写入以下内容 xff1a imag
  • ROS学习——控制小车转向

    给定一个旋转的角度 xff0c 让小车进行顺时针或逆时针旋转 span class token macro property span class token directive keyword include span span clas
  • PID参数设定

    在电机的控制领域 xff0c 不同的电机有不同的驱动方式 xff0c 其中应用最广泛的就是PID proportion integration differentiation 控制 P I和D分别指比例控制 xff0c 积分控制和微分控制