563舵机控制算法.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
563舵机控制算法

5.6.3 舵机控制算法 在小车行驶途中,由于在直道和过弯时,摄像头所采集到的图像的有效行数是会变化的,在过弯时,采集到的图像行数会减少,同时黑线的偏差值也会相应的变化,这样便可利用有效行的大小来分段给定舵机的Kp值,再结合偏差细化Kp值。经过测试和调试得出以下分段控制: 按照有效行进行分段确定比例系数: Effect_row≤12; Kp=7; 12Effect_row≤18; Kp=6; 18Effect_row≤25; Kp=6; Effect_row25左边丢线数B_LZ20||右边丢线数B_LR20; Kp=6; Effect_row25B_LZ≤20B_LR≤20; KP=5; 经过实际调试测量控制后,小车的转向控制是非常准确。 5.6.2 电机控制算法 小车行驶途中,在不同的路况时,摄像头所采集到的图像的有效行数和偏差值是会变化的。在过弯时,采集到的图像行数会减少,偏差会增大,这样便可利用有效行和偏差的大小来控制速度。 控制的主要思想:将一幅图像划分成三段,计算每一段图像中两条黑线的累积偏差。对于直道来说累积偏差较小,有效行较多,对于弯道来说累积偏差较大,有效行较少。若前面两段的累积偏差大,后一段的累积偏差小,即可判定是直道入弯,此时电机减速;若前面两段的累积偏差较小,后一段的累积偏差较大,即可判定是开始由弯道进入直道,此时电机加速。在直道和弯道中主要通过弯道计数器和直道计数器来完成对电机的控制。若正在处理的一行如上一行的偏差大于一个设定的值(通过测试得到),弯道计数器加一,否则直道计数器加一,通过一幅图像的中弯道计数器与直道计数器的值的相应大小即可判定是直道还是弯道,并设定相应的速度。 这种算法的优点是对于小S弯,计算的累积偏差不大,即可判定为直道,此时可以以最优的路径冲过小S弯。 5.5.4 转角控制 根据赛道的偏差来控制舵机的转角,采用如下: void duoji(void){ if(duandianflag==0){ if(error0) duty=DUOJICENTER+error*kp; else duty=DUOJICENTER+error*kp; error1=error; }else if(duandianflag==1){ duty= DUOJICENTER+ZHUANMAX; }else if(duandianflag==2) duty= DUOJICENTER-ZHUANMAX; if(dutyDUOJICENTER+ZHUANMAX) duty=DUOJICENTER+ZHUANMAX; if(dutyDUOJICENTER-ZHUANMAX) duty=DUOJICENTER-ZHUANMAX; PWMDTY01=duty; } //////////////////////////////////////////////////////////////////// 斜率控制 判断赛道类型,给出速度基准 5.3 舵机控制 从采集回来的图像中提取控制量来控制舵机的转向,实现智能车的自动循迹。本系统采用虚拟黑线的偏移量e_steer和虚拟黑线的某段斜率K_buf对舵机进行控制,可称为PD控制器。 其控制形式如下式所表示: e_steer=(POINT/2-(int)mid_image[1])*KD2_2; K_buf=((int)(mid_image[1])-(int)(mid_image[hang_en]))*(KS2-2)/hang_en; 式中的POINT为摄像头采集的列数,mid_imag数组时根据两条黑线虚拟出来的中间线,KD2_2和KS2_2是结合小车行驶的情况整定的参数。 由于车模是个随动系统,我们的小车的前瞻是70cm,而真正用到的只用我们指定的17行。在摄像头70cm前瞻内覆盖的黑线超过17行,特别是前方的弯特别急的时候,在摄像头前瞻视角范围内覆盖的黑线会特别少。根据这个特点,可设置一个有效前瞻量hang_en作为对前方的弯的平缓程度的反应。 这样,从一场的黑线位置数据中,系统提取了有效行hang_en、e_steer、K_buf 3个量来对舵机进行控制。在实际情况中,K_buf可以很灵活,因为前方黑线的斜率可以取不同段得到,可以根据实际要求得

文档评论(0)

1234554321 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档