让chatgpt写一段pid控制算法,看看效果如何。
通过调参也能实现收敛了。实际应用还是要看你具体的需求了。
话不多说上代码:
import matplotlib.pyplot as plt
import numpy as np
class PositionPID(object):
“”“位置式PID算法实现”“”
def __init__(self, target, cur_val, dt, max, min, p, i, d) -> None:
self.dt = dt # 循环时间间隔
self._max = max # 最大输出限制,规避过冲
self._min = min # 最小输出限制
self.k_p = p # 比例系数
self.k_i = i # 积分系数
self.k_d = d # 微分系数
self.target = target # 目标值
self.cur_val = cur_val # 算法当前PID位置值,第一次为设定的初始位置
self._pre_error = 0 # t-1 时刻误差值
self._integral = 0 # 误差积分值
def calculate(self):
"""
计算t时刻PID输出值cur_val
"""
error = self.target - self.cur_val # 计算当前误差
# 比例项
p_out = self.k_p * error
# 积分项
self._integral &#