关于PID这部分匿名代码里面有很多,此文件是最基础的即单级PID的实现,后面的关于速度和角速度环的串级PID及高度和高度速度环的串级PID都是以此为基础的,所以此文件内容务必搞懂。
/******************** (C) COPYRIGHT 2016 ANO Tech ***************************
* 作者 :匿名科创
* 文件名 :ANO_PID.c
* 描述 :PID函数
* 官网 :www.anotc.com
* 淘宝 :anotc.taobao.com
* 技术Q群 :190169595
*****************************************************************************/
#include "Ano_Pid.h"
#include "Ano_Math.h"
#include "Ano_Filter.h"
/*
不难看出匿名使用的并不是大家推崇的增量式PID,而是位置式PID
至于为什么我也不是很清楚
简单列下关于位置式PID和增量式PID的公式
//位置式PID(匿名使用)
ux = kp * ex + ki * ex_sum + kd * (ex - ex_prior);
//增量式PID
dux = kp(ex - ex_prior) + ki * ex + kd * (ex - 2 * ex_prior + ex_prior_prior);
ux = dux + ux;
*/
float PID_calculate(
float dT_s, //周期(单位:秒)
float in_ff, //前馈值
float exp