微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Quadcopter PID控制器的距离

如何解决Quadcopter PID控制器的距离

我正在尝试使用PID控制器在水平行驶时将四轴飞行器停在特定位置,但是当前它会根据最大速度而过冲/过冲。我尝试手动调整P,I和D增益,但效果有限。本质上,速度需要在飞行路径的最末端从maxSpeed变为0。

我运行了一个循环,每0.1秒执行一次。 输入到四轴飞行器的俯仰以m / s为单位,我在每次迭代中都会重新计算到目标的距离。

一些伪代码

kP = 0.25
kI = 0.50
kD = 90
timestep = 0.1
maxSpeed = 10

currentError = initialdistancetoLocation - currentdistancetoLocation
derivativeError = (currentError - prevIoUsError) / timestep
prevIoUsError = currentError
output = kP * currentError + kI * integralError + kD * derivativeError
integralError = integralError + currentError * timestep

if >= maxSpeed {
    output = maxSpeed
} else if output <= 0 {
    output = 0
}
return output

是否有一种方法可以将该PID控制器可靠地调整到该系统,以适用于不同的最大速度,并且/或者是否需要考虑其他因素?

解决方法

一些想法:

  • 如果在计算输出后也计算了 ,还请检入代码。当然,这可能会导致不确定的行为,因为在输出计算中,integrationError可以是任何东西,具体取决于编程语言。
  • 根据我的经验,您应该完全摆脱D部分,因为在数字环境中并且由于测量噪声的影响,它可能会造成不稳定的影响
  • 我强烈建议您查看this教程,该教程将指导您完成重要的方面(即使它专注于定点PI控制器)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。