四轴飞行器PID调参建议
在动态控制中,我们通过调整PID三个参数来获得动力,同时消除振荡,找到对你当前的飞行场景来说更优的手感。
P(Propotional)是比例的简称。
“P”单元控制着控制系统的所有动力,以达到所需的输出。如果“P”单元没有足够的输出,无人机就没有足够的动力来反馈你的控制命令;如果“P”单元输出过大,无人机就会反应过度,发生振荡。它的特点和弹簧完全一致。
简单来说,它的作用就是测量无人机当前位置与目标位置的距离。这个距离越远,就需要更大的力给掰回去。
P越大,“弹簧”越硬,回复的速度越快,震动的频率也越高。
所以一般建议设置P值较大,增强无人机的反应能力
如果闭环控制中只有P,结果就是飞机会持续无休止地振荡,这个时候就要引入D来消除振荡。
D(Differential)是微分的简称。
D就是通过微分的方法来计算运动速度。用人话来说,就是D越大在物体运动时的阻力就越大。这个阻力和物体的运动方向相反。
你可以把它想象成把振动的物体丢到液体里的过程。
D越大,液体密度越大,“物体”在运动时的阻力就越大,就能更快静止下来。
稍微加一点D,P带来的振幅会变小,无人机会更快地停在目标位置。
但如果D值过大,这个阻力会抵消回复力,让控制变得非常迟钝,整个运动过程就会显得有些油腻。
根据需求调节,一般是航拍机追求画面比较稳定,所以普遍较高。
而穿越机,最求反应迅速,考虑跟多的就是P高一点,D小一点
I(Integral)是积分的简称。
“I”单元对外界干扰或存在的系统误差进行纠正,以确保最后的输出符合预期。
飞机会不停地检测位置是否存在偏差,如果存在的偏差越大、持续时间越长,就会产生一个越大的力来矫正。
一般情况下,我们可以把I值设的高一点,使得飞行器尽快从误差值恢复到目标值
但需要注意的是,I值过大,使得飞行器恢复力过大也会产生振荡。
最后提供一个小飞机的PID作为参考,每个飞行器电机与重量都不同,所以一般而言原厂的PID参数就足够日常飞行了
void PID_ParamInit(void)
{
pidRateX.kp = 2.0f;//内环,角速度环
pidRateY.kp = 2.0f;
pidRateZ.kp = 4.0f;
pidRateX.ki = 0.0f;
pidRateY.ki = 0.0f;
pidRateZ.ki = 0.0f;
pidRateX.kd = 0.08f;
pidRateY.kd = 0.08f;
pidRateZ.kd = 0.5f;
pidPitch.kp = 7.0f;//外环,角度环
pidRoll.kp = 7.0f;
pidYaw.kp = 7.0f;
}
相关文章
- Web APi之HttpClient注意事项以及建议(四)
- mysql启动时报错:Starting MySQL... ERROR! The server quit without updating PID file (/opt/mysql/data/mysql.pid) 的解决方法
- c语言中不建议使用的库函数
- LeetCode 6-10 题 详解 Java版 ( 万字 图文详解 LeetCode 算法题6-10 =====>>> <建议收藏>)
- 第十七届全国大学生智能车竞赛智能视觉组目标盘制作建议
- 写给第十七届,来自十六届的感想与建议
- 再论 golang 环境配置建议
- Failed to parse PID from file /run/nginx.pid: Invalid argument
- PID file /run/zabbix/zabbix_server.pid not readable (yet?) after start. 报错解决
- 《Java编码指南:编写安全可靠程序的75条建议》—— 指南14:确保SecureRandom正确地选择随机数种子
- 给程序员的三点建议
- PID入门视频课程分享: 单片机 > PID课程:一堂课帮你搞定PID算法 > pid算法
- 编写高质量代码 改善Python程序的91个建议 (读后 小记)
- 某些浏览器具有dns缓存功能,大家更改域名指向,建议清理下浏览器缓存
- Oracle——Oracle 数据库诊断、优化工具和建议
- ❤️IDEA实操技巧总结:如何Rename一个project或者module,彻底解决你遇到的所有不生效问题,建议五星收藏❤️❤️❤️❤️❤️
- 美国会委员会建议禁止中国国企收购美国资产
- jQuery CVE-2019-11358原型污染漏洞分析和修复建议