关于PX4上PID调参

使用PX4 log view 工具

在这里插入图片描述

地址

setp response for roll rate

找到setp response for roll rate这个图片
从图片中可以看到,roll方向的角速度响应时间不够快;

在这里插入图片描述

PID参数调整

这个时候可以增加roll 方向上的P值;
当P值不断增大,直到飞机开始抖动的时候;
调大D值,D值的引入就是增大阻尼;
当响应稍微超调,可以加入I,消除稳态误差;

最后的效果

在这里插入图片描述
最后效果地址

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PX4是一个开源的飞控固件,其PID控制器部分的代码如下: ```c++ void PID::update(float desired, float measured, float dt) { // 计算误差 float error = desired - measured; // 积分误差 _integrator += _ki * error * dt; // 限制积分误差 _integrator = math::constrain(_integrator, -_integrator_saturation, _integrator_saturation); // 计算微分误差 _derivative = (_kd == 0) ? 0 : (_prev_error - error) / dt; // 计算输出 _output = _kp * error + _integrator + _kd * _derivative; // 限制输出 _output = math::constrain(_output, -_output_saturation, _output_saturation); // 更新上一次误差 _prev_error = error; } ``` 该代码实现的是一个标准的PID控制器,其中包含了三个部分,分别是比例控制、积分控制和微分控制。算法流程如下: 1. 计算误差:目标值与实际值之间的差距。 2. 积分误差:将误差累加起来,用于消除稳态误差。 3. 限制积分误差:对积分误差进行限制,防止积分饱和。 4. 计算微分误差:计算误差的变化率,用于抑制超调和减小调节时间。 5. 计算输出:将比例控制、积分控制和微分控制三个部分的输出相加,得到最终的控制输出。 6. 限制输出:对输出进行限制,防止输出过大或过小。 7. 更新上一次误差:将当前误差保存下来,供下一次计算使用。 这段代码的实现比较简单,但是需要注意的是,积分误差和微分误差的计算需要进行限制,否则会出现积分饱和和微分爆炸的问题。此外,PID控制器的参数需要根据具体的控制对象进行调整,以获得更好的控制效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值