欢迎来到得力文库 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
得力文库 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    对串级PID自动控制和单级PID自动控制的理解.doc

    • 资源ID:2767778       资源大小:44KB        全文页数:8页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    对串级PID自动控制和单级PID自动控制的理解.doc

    对串级PID和单级PID的理解(基于匿名微型六轴)来源:本站 | 作者:小古 | 发表时间:2015-04-01 | 点击量:14145/* (C) COPYRIGHT 2014 ANO Tech * 文件名 :ANO_FlyControl.cpp* 描述 :飞行控制*/include "ANO_FlyControl.h"ANO_FlyControl fc;/*先整定内环,后整定外环。参数整定找最佳,从小到大顺序查先是比例后积分,最后再把微分加曲线振荡很频繁,比例度盘要放大曲线漂浮绕大湾,比例度盘往小扳曲线偏离回复慢,积分时间往下降曲线波动周期长,积分时间再加长曲线振荡频率快,先把微分降下来动差大来波动慢。微分时间应加长理想曲线两个波,前高后低4比1*/*ROLL和PIT轴向按照以上公式计算PID输出,但YAW轴比较特殊,因为偏航角法线方向刚好和地球重力平行,这个方向的角度无法由加速度计直接测得,需要增加一个电子罗盘来替代加速度计。如果不使用罗盘的话,我们可以单纯的通过角速度积分来测得偏航角,缺点是由于积分环节中存在积分漂移,偏航角随着时间的推移会偏差越来越大。我们不使用罗盘就没有比例项,只仅使用微分环节来控制。*/ANO_FlyControl:ANO_FlyControl()yawRate = 120;/重置PID参数PID_Reset();/重置PID参数void ANO_FlyControl:ID_Reset(void)/因为YAW角度会漂移,所以参数和ROLL、PITCH不一样pidPIDROLL.set_pid(70, 15, 120, 2000000); /ROLL角度的内环控制系数,20000:积分上限 pidPIDPITCH.set_pid(70, 30, 120, 2000000);/PITCH角度的内环控制系数pidPIDYAW.set_pid(100, 50, 0, 2000000); /YAW角度的内环控制系数pidPIDLEVEL.set_pid(280, 0, 0, 0); /外环控制系数pidPIDMAG.set_pid(15, 0, 0, 0); /电子罗盘控制系数/* 【扫盲知识】 串级PID:采用的角度P和角速度PID的双闭环PID算法->角度的误差被作为期望输入到角速度控制器中 (角度的微分就是角速度) 对于本系统则采用了将角度控制与角速度控制级联的方式组成整个串级 PID 控制器。串级 PID 算法中,角速度内环占着极为重要的地位。在对四旋翼飞行的物理模型进行分析后,可以知道造成系统不稳定的物理表现之一就是不稳定的角速度。因此,若能够直接对系统的角速度进行较好的闭环控制,必然会改善系统的动态特性及其稳定性,通常也把角速度内环称为增稳环节。而角度外环的作用则体现在对四旋翼飞行器的姿态角的精确控制。 外环:输入为角度,输出为角速度内环:输入为角速度,输出为PWM增量使用串级pid,分为:角度环控制pid环,和角速度控制环稳定环。主调为角度环(外环),副调为角速度环(内环)。参数整定原则为先内后外,故在整定内环时将外环的PID均设为0所谓外环就是只是一个P在起作用,也就是比例在起作用;P也就是修正力度,越大越容易使飞机震荡。 震荡的特点是:频率小、幅度大*/*【横滚(Roll)和俯仰(Pitch)的控制算法】 横滚(Roll)和俯仰(Pitch)的控制算法是一样的,控制参数也比较接近。首先得到轴姿态的角度差(angle error),将这个值乘以角度系数p后限幅(限幅必须有,否则剧烈打舵时容易引发震荡)作为角速度控制器期望值(target_rate)。target_rate与陀螺仪得到的当前角速度作差,得到角速度误差(rate_error)乘以kp得到P。在I值小于限幅值(这个值大概在5%油门)或者rate_error与i值异号时将rate_error累加到I中。前后两次rate_error的差作为D项,值得注意的是加需要入20hz(也可以采用其它合适频率)滤波,以避免震荡。将P,I,D三者相加并限幅(50%油门)得到最终PID输出。*/串环PID调节详情参见:http:/blog.csdn.net/super_mic . 36723 /飞行器姿态外环控制void ANO_FlyControl:Attitude_Outter_Loop(void)int32_t errorAngle2;Vector3f Gyro_ADC;/计算角度误差值, 角度误差值=期望值-此刻姿态值 /constrain_int32作用:32位整型数限幅,使其控制输入的最大飞行倾角不大于25度(如果控制量比25度大,飞机早就坠毁了)/rc.CommandROLL:遥控数据 imu.angle.x :此刻姿态(角度)/1.得到轴姿态的角度差(errorAngle)/2.这个角度差值进行限幅(constrain_int32)(正负FLYANGLE_MAX)(限幅必须有,否则剧烈打舵时容易引发震荡)作为角速度控制器期望值(target_rate) errorAngleROLL = constrain_int32(rc.CommandROLL * 2) , -(int)FLYANGLE_MAX), +FLYANGLE_MAX) - imu.angle.x * 10; errorAnglePITCH = constrain_int32(rc.CommandPITCH * 2) , -(int)FLYANGLE_MAX), +FLYANGLE_MAX) - imu.angle.y * 10; /获取此时陀螺仪上的角速度,取角速度的四次平均值 Gyro_ADC = mpu6050.Get_Gyro() / 4;/* 得到外环PID输出(角速度的差值)(实质是相当于内环的P比例项)-> 3.target_rate与陀螺仪得到的当前角速度作差,得到角速度误差(RateError)乘以kp(外环控制系数 pidPIDLEVEL->(280, 0, 0, 0))得到给内环的P。*/ /横滚roll:外环控制。输入为角度,输出为角速度。RateErrorROLL 作为内环的输入。RateErrorROLL = pidPIDLEVEL.get_p(errorAngleROLL) - Gyro_ADC.x; /Gyro_ADC.x:陀螺仪X轴的值 /俯仰pitch:外环控制。输入为角度,输出为角速度。RateErrorPITCH 作为内环的输入。RateErrorPITCH = pidPIDLEVEL.get_p(errorAnglePITCH) - Gyro_ADC.y;/Gyro_ADC.y:陀螺仪Y轴的值/*偏航(Yaw)的控制算法和前两者略有不同,是将打舵量(遥控数据量rc.CommandYAW)和角度误差的和作为角速度内环的期望值,这样可以获得更好的动态响应。角速度内环和横滚与俯仰的控制方法一致,参数(积分限幅值会很小,默认只有万分之8)上有不同。*/航向yaw:外环控制。输入为角度,输出为角速度。 RateErrorYAW 作为内环的输入。RateErrorYAW = (int32_t)(yawRate) * rc.CommandYAW) / 32 - Gyro_ADC.z; /Gyro_ADC.z:陀螺仪Z轴的值/飞行器姿态内环控制: 输入为角速度,输出为PWM增量/内环的效果就是:减小 P比例控制带来的震荡void ANO_FlyControl:Attitude_Inner_Loop(void)int32_t PIDTerm3;/注意这里是i的值是0到2/PIDROLL、PIDPITCH、PIDYAW是枚举类型,也就是0、1、2,也就是下面的pid 、PIDTerm就是3组PIDfor(u8 i=0; i<3;i+)/现象:当油门低于检查值时积分清零,重新积分/猜测:这里应该是担心飞机没飞起来时就开始有积分,会导致起飞时不稳定if (rc.rawDataTHROTTLE) < RC_MINCHECK)pid.reset_I();/get_pid函数:return get_p(error) + get_i(error, dt) + get_d(error, dt);->这里实际就是一个完整的PID/PID_INNER_LOOP_TIME:2000us->0.2ms 积分微分时间,每隔0.2ms操作积分和微分,RateError是外环计算的结果(从外环算出) /得到内环PID输出,直接输出转为电机控制量 PIDTerm = pid.get_pid(RateError, PID_INNER_LOOP_TIME);/对YAW角继续处理,加入遥控控制 /在I值小于限幅值(这个值大概在5%油门)或者rate_error与i值异号时将rate_error累加到I中。PIDTermYAW = -constrain_int32(PIDTermYAW, -300 - abs(rc.CommandYAW), +300 + abs(rc.CommandYAW); /PID输出转为电机控制量motor.writeMotor(rc.CommandTHROTTLE, PIDTermROLL, PIDTermPITCH, PIDTermYAW);/*【调节串环PID大概过程(注意修正反向)】 1、估计大概的起飞油门。2、调整角速度内环参数。3、将角度外环加上,调整外环参数。4、横滚俯仰参数一般可取一致,将飞机解绑,抓在手中测试两个轴混合控制的效果(注意安全),有问题回到“烤四轴”继续调整,直至飞机在手中不会抽搐。5、大概设置偏航参数(不追求动态响应,起飞后头不偏即可),起飞后再观察横滚和俯仰轴向打舵的反应,如有问题回到“烤四轴”。6、横滚和俯仰ok以后,再调整偏航轴参数以达到好的动态效果。*/ /*【过程详解】1、要在飞机的起飞油门基础上进行PID参数的调整,否则“烤四轴”的时候调试稳定了,飞起来很可能又会晃荡。2、内环的参数最为关键!理想的内环参数能够很好地跟随打舵(角速度控制模式下的打舵)控制量。在平衡位置附近(正负30度左右),舵量突加,飞机快速响应;舵量回中,飞机立刻停止运动(几乎没有回弹和震荡)。2.1首先改变程序,将角度外环去掉,将打舵量作为内环的期望(角速度模式,在APM中叫ACRO模式,在大疆中叫手动模式)。2.2加上P,P太小,不能修正角速度误差表现为很“软”倾斜后难以修正,打舵响应也差。P太大,在平衡位置容易震荡,打舵回中或给干扰(用手突加干扰)时会震荡。合适的P能较好的对打舵进行响应,又不太会震荡,但是舵量回中后会回弹好几下才能停止(没有D)。2.3加上D,D的效果十分明显,加快打舵响应,最大的作用是能很好地抑制舵量回中后的震荡,可谓立竿见影。太大的D会在横滚俯仰混控时表现出来(尽管在“烤四轴”时的表现可能很好),具体表现是四轴抓在手里推油门会抽搐。如果这样,只能回到“烤四轴”降低D,同时P也只能跟着降低。D调整完后可以再次加大P值,以能够跟随打舵为判断标准。2.4加上I,会发现手感变得柔和了些。由于笔者“烤四轴”的装置中四轴的重心高于旋转轴,这决定了在四轴偏离水平位置后会有重力分量使得四轴会继续偏离平衡位置。I的作用就可以使得在一定角度范围内(30度左右)可以修正重力带来的影响。表现打舵使得飞机偏离平衡位置,舵量回中后飞机立刻停止转动,若没有I或太小,飞机会由于重力继续转动。3、角度外环只有一个参数P。将外环加上(在APM中叫Stabilize模式,在大疆中叫姿态模式)。打舵会对应到期望的角度。P的参数比较简单。太小,打舵不灵敏,太大,打舵回中易震荡。以合适的打舵反应速度为准。4、至此,烤四轴”效果应该会很好了,但是两个轴混控的效果如何还不一定,有可能会抽(两个轴的控制量叠加起来,特别是较大的D,会引起抽搐)。如果抽了,降低PD的值,I基本不用变。5、加上偏航的修正参数后(直接给双环参数,角度外环P和横滚差不多,内环P比横滚大些,I和横滚差不多,D可以先不加),拿在手上试过修正和打舵方向正确后可以试飞了(试飞很危险!选择在宽敞、无风的室内,1米的高度(高度太低会有地面效应干扰,太高不容易看清姿态且容易摔坏),避开人群的地方比较适合,如有意外情况,立刻关闭油门!5.1试飞时主要观察这么几个方面的情况,一般经过调整的参数在平衡位置不会大幅度震荡,需要观察:5.1.1在平衡位置有没有小幅度震荡(可能是由于机架震动太大导致姿态解算错误造成。也可能是角速度内环D的波动过大,前者可以加强减震措施,传感器下贴上3M胶,必要时在两层3M泡沫胶中夹上“减震板”,注意:铁磁性的减震板会干扰磁力计读数;后者可以尝试降低D项滤波的截止频率)。5.1.2观察打舵响应的速度和舵量回中后飞机的回复速度。5.1.3各个方向(记得测试右前,左后等方向)大舵量突加输入并回中时是否会引起震荡。如有,尝试减小内环PD也可能是由于“右前”等混控方向上的舵量太大造成。6、横滚和俯仰调好后就可以调整偏航的参数了。合适参数的判断标准和之前一样,打舵快速响应,舵量回中飞机立刻停止转动(参数D的作用)。至此,双环PID参数调节完毕!祝爽飞!*/

    注意事项

    本文(对串级PID自动控制和单级PID自动控制的理解.doc)为本站会员(小**)主动上传,得力文库 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知得力文库 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

    © 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

    黑龙江省互联网违法和不良信息举报
    举报电话:0468-3380021 邮箱:hgswwxb@163.com  

    收起
    展开