【顿悟】舵机PID(附美文)

闲着无聊,翻出以前下载下来还没看的资料。突然看到舵机的PID(资料见附件),又产生了疑问,我们舵机的设定值到底是什么?!     文献上的舵机采用增量式PID:`~XEZ`5S$A]CQ@3}H3%7Z04.jpg 
而我到现在的程序一直是这么写的:
arm_mult_f32(&mid_shift,&mid_shift,&mult_mid_shift,1);

    //P Control
    steer_tmp += mid_shift*126.0/11.0;
    steer_tmp += 4.0*left_right_flag*mult_mid_shift*21.0/121.0;

    //D Control
    if(fabs(pre_mid_shift - mid_shift) > 15.0 )   
      steer_tmp += 3.0*(mid_shift - pre_mid_shift)*126.0/11.0;//舵机给定偏差
    else
      steer_tmp += 0.0;//舵机给定偏差

    if(fabs(mid_shift) < 5.0 )     //弱化直道打角    
      steer_tmp /= 1.5;
    else
      {;}


注:steer_tmp即指文献中的delt U。
我所写的P(=4.0)实际是   I,D(=3.0)实际是文献中的  P。可是我所理解的不就是  P*当前偏差   D*偏差的差  
想不明白……想不明白……想不明白……想不明白……在论坛里搜帖子,继续想……继续想……继续想……
后来又看自己的程序:  temp_steerPWM = servo_mid + (s32)steer_tmp;突然明白了。原来我苦苦想不通的给定值 就是servo_mid。
想想也是,我们小车苦苦追寻的不就是赛道中线吗?理想一些,如果小车一直跑直道,不就是 delt始终是0,舵机始终居中;对于弯道,不正是因为赛道的中心点变了,小车才去跟随嘛。
不知道各位车友是否赞同我的观点。最后附上美文一篇,一起努力。

基于间接PID的智能车控制算法研究http://www.eeskill.com/resource/index/id/13971

 

永不止步步 发表于11-12 13:50 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67410个|学分:307917个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号