美文网首页
两轮平衡小车心得(四)位置式PID

两轮平衡小车心得(四)位置式PID

作者: 圣_狒司机 | 来源:发表于2024-12-30 12:08 被阅读0次
  1. C的官方编译器gcc下载地址:https://github.com/skeeto/w64devkit/releases
    这个很难下载,可以用msys2提供的仿linux系统下的C,下载地址:https://www.msys2.org/,下载完成后在shell里输入以下语句:
pacman -Syu
pacman -Su
pacman -S --needed base-devel mingw-w64-x86_64-toolchain

然后在安装包里找到gcc的PATH,写入环境变量就可以了;

  1. 用C写个PID控制器;
#include <iostream>

float pid(float setpoint, float pv, float dt) {
    float kp=0.9,ki=0.1,kd=0.001,previous_error = 0,integral=0,derivative=0;
    float error = setpoint - pv;
    integral += error * dt;
    derivative = (error - previous_error) / dt;
    previous_error = error;
    float output = kp * error + ki * integral + kd * derivative;
    std::cout << "pv: " << pv << "\t"<< "Error: " << error << std::endl;
    return output;
}

int main() {
    float setpoint = 100, pv = 0,output=0;
    for (int i = 0; i < 10; i++) {
        std::cout << i << "\t";
        output = pid(setpoint, pv, 1);
        pv += output*1.23;
    }
    return 0;
}

输出:

0   pv: 0   Error: 100
1   pv: 123.123 Error: -23.123
2   pv: 94.6533 Error: 5.34673
3   pv: 101.236 Error: -1.23633
4   pv: 99.7141 Error: 0.285873
5   pv: 100.066 Error: -0.0661011
6   pv: 99.9847 Error: 0.0152817
7   pv: 100.004 Error: -0.00353241
8   pv: 99.9992 Error: 0.000816345
9   pv: 100 Error: -0.000190735

可以看到偏差迅速波动变小,直到输出控制量为0;

相关文章

  • 平衡小车制作——PID

    位置闭环控制 位置闭环控制就是根据编码器的脉冲累加测量电机的位置信息,得到控制偏差,然后通过对偏差的比例、微分、积...

  • 位置式PID

    昨天师兄给我讲了一下关于PID的知识,说起来PID在专业课也学过,但是并没有真正理解到位,再次温习,觉得有新的发现...

  • 位置式PID的实现

    PID结构体 位置式PID结构体比增量式PID结构体多了一个SumError成员,用于记录当前量与目标值的累积误差...

  • PID学习(二)位置式和增量式PID

    一、定义 位置式: 适用于不带积分元件的执行器,执行器的动作位置与其输入信号呈一一对应的关系。控制器根据第n次被控...

  • PID

    总所周知,PID算法是个很经典的东西。而做自平衡小车,飞行器PID是一个必须翻过的坎。因此本节我们来好好讲解一下P...

  • Arduino平衡车完整代码+详解

    代码中使用了两套PID参数进行控制,Kp,Ki,Kd是控制平衡速度的。也就是小车往前倾,加速;后倾,减速这个过程。...

  • Arduino平衡车——只角度环pid的代码

    但是仅靠一个PID控制会出现一个问题:因为小车的平衡角度Setpoint是手动设定的,所以会有一个微小的误差。当小...

  • 在ROS中通过Arduino实现对4WD轮式机器人的简单控制

    本文涉及的内容都是针对四轮小车的,如果你的是两轮或者其他形式的小车,请参考其他文章。当然如果你感兴趣的话,本文也有...

  • linux 端口号 资源名称 PID 互查

    根据端口号查询服务PID 根据PID查询资源位置 查看所有占用端口号的应用

  • ROS机器人底盘(21)-关于运动控制方向的补充

    1.概述 使用PIBOT提供的小车已经完成了程序和硬件的调试,如果需要移植到自己的小车,可能会遇到PID调速不正常...

网友评论

      本文标题:两轮平衡小车心得(四)位置式PID

      本文链接:https://www.haomeiwen.com/subject/mchaejtx.html