关于动态kp的一点想法

一般来说,PID各参数是需要整定的,但是我们也可以尝试由偏差来确定一个动态的kp

例如:让舵机的kp与erro形成函数关系,使kp不再是一个确定的值,而是会根据实际偏差来实时改变,体现在车子上就是,直道更稳定,弯道反应更快

typedef struct              //把结构体的关键字重命名成 pid_param_typedef                     
{
    float erro;             //偏差
    float erro_last;        //上一次偏差
    float feedback;         //理想反馈值
    float feedin;           //理想输入值
    float output;           //实际输出值
    float input;            //实际输入值
    float Kp;               //比例p
    float Kd;               //微分d
 
} pid_param_typedef;
 
pid_param_typedef Control_turn;     //定义一个叫做 Control_turn 的结构体变量  
 
void pid(void)
{
    /*建议加上偏差限幅*/
 
    Control_turn.erro = Control_turn.input - Control_turn.feedback;  //利用理想输出和实际输入作差获得偏差

    Control_turn.kp=(参数1)*ln(|Control_turn.erro|+1)+(参数2)
    
    Control_turn.output = Control_turn.Kp * Control_turn.erro +     //kp*erro
                          Control_turn.Kd * (Control_turn.erro - Control_turn.erro_last);//kp*(erro-lasterro)
    
    /*建议加上输出限幅*/
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值