ardupilot的libraries之PID
来源:互联网 发布:知乎怎么增加 编辑:程序博客网 时间:2024/06/01 21:58
在源码的libraries中,有两个关于PID的源文件文件夹,一个叫AC_PID,另一个是PID。AC_PID中又细分为AC_HELI_PID、AC_P和AC_PID, 这里我们只讨论AC_PID。PID文件夹中只有一个PID类,下面分别列出这两个类中的属性和方法,并大致描述其功能和实现细节,源码请自己下载阅读。
AC_PID
构造函数(略)
float get_pid(float error, float dt); //计算PID控制器的输出,其实是分别调用了下面的get_p、get_i、get_d函数
float get_pi(float error, float dt); //计算PI控制器输出
float get_p(float error) const; //计算p输出
float get_i(float error, float dt); //计算i输出,其中有积分限幅,由_imax决定
float get_d(float error, float dt); //计算d输出,首先判断上一次的微分值是否有效,避免上一次值不确定导致大的输出,并且有20HZ的低通滤波器
/// Reset the PID integrator
///
void reset_I(); //将积分值置0,上一次微分值置为NAN
/// Load gain properties
///
void load_gains();
/// Save gain properties
///
void save_gains();
/// Sets filter Alpha for D-term LPF
void set_d_lpf_alpha(int16_t cutoff_frequency, float time_step); //计算滤波器系数
PID
构造函数(略)
float get_pid(float error, float scaler = 1.0); //计算PID控制器的输出,与上面用到的方法类似,不同点1.如果两次计算的时间大于1秒,则重置积分值,避免大的波动;2有一个scaler可以对输出值进行整体的比例运算,而不用调整PID三个参数,默认为1.
// get_pid() constrained to +/- 4500
int16_t get_pid_4500(float error, float scaler = 1.0); //限制PID的输出在+/-4500之间
/// Reset the PID integrator
///
void reset_I();
/// Load gain properties
///
void load_gains();
/// Save gain properties
///
void save_gains();
可以看出,两个PID实现基本一致,在细节处理上不太一样,具体各自用在什么地方还不太清楚,这里只是做个笔记,随着学习加深会进一步完善。
- ardupilot的libraries之PID
- ArduPilot Programming Libraries
- Ardupilot编译和运行libraries下面的example例程代码
- ardupilot 的makefile路径
- ardupilot的project list
- ARDupilot
- pixhawk-console调试之ardupilot
- Ardupilot任务调度的理解
- Ardupilot任务调度的理解
- ardupilot在Linux上的启动过程
- 一篇关于ardupilot历史的文章
- 一个非常好的ardupilot源码解析博客
- ardupilot在Linux上的启动过程
- win7下 pixhawk (ardupilot) 的编译
- ardupilot的Bootloader编译下载过程
- Pixhawk之UAV控制理论、ardupilot源码框架介绍
- Pixhawk之UAV控制理论、ardupilot源码框架介绍
- Pixhawk开发环境搭建之ardupilot固件
- Android中Activity转场
- 解决虚拟机中无法访问USB串口设备问题
- 数据结构学习笔记(二)多项式加法与乘法
- 博通wifi驱动
- DELPHI使用IDHTTP显示网络图片
- ardupilot的libraries之PID
- KSImageNamed-Xcode-master 实用Xcode插件
- 1016 of greedy strategy
- 浅谈Android Fragment
- 每天一篇python:函数篇
- Community Detection (社区发现)算法
- jsp继续学习
- Less学习
- 南阳题目168-房间安排