网站大量收购独家精品文档,联系QQ:2885784924

Arduino小车巡线程序的灰度阈值优化方案.docx

Arduino小车巡线程序的灰度阈值优化方案.docx

  1. 1、本文档共2页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

Arduino小车巡线程序的灰度阈值优化方案

●研究问题

前不久,笔者带领学生参加了深圳市学生创客节中的“Arduino开源机器人现场挑战赛”,在此挑战赛中,巡线(让机器人小车沿规定黑色赛道行走)是其中一项最基本的内容,要实现巡线,一般采用四灰度传感器形式(如图1):传感器2和3用于夹线巡迹,传感器1和4用于判断路口。但在实际竞赛中,经常会巡线脱轨,这是受场地光线或喷绘工艺等因素的影响,灰度传感器常将比赛图上暗的白色区域误判为黑色区域,或将亮的黑色区域误判为白色区域所致。因此,如何提高巡线的成功率成为急需解决的一大难题。

●改进策略

误判原因:程序中的灰度阈值通常都固定取为550,但当外部因素(场地光线或喷绘工艺等)影响比赛图上某个区域的灰度时,灰度阈值550不会随之变化,导致程序误判。

改进策略:在4灰度传感器的基础上增加一个灰度传感器5,专门用来读取黑线的灰度值(如图2),从而构造出一个取代550的动态灰度阈值:动态灰度阈值=M+0.2M=1.2M(其中M为传感器5实时读取的黑线灰度值,加上0.2M的目的是允许一定范围的误差)。

●具体做法

将传感器1、2、3、4、5分别接在模拟口A1、A2、A3、A4、A5接口上,下文统一用A1代表模拟口A1获取的传感器1的灰度值,A5代表模拟口A5获取的传感器5的灰度值,以此类推。在ArduinoScratch软件中,笔者用如上页图3所示的程序来读取“动态灰度阈值”,并将程序定义为“读取标准数”模块,其中“hd”就是前面所说的“动态灰度阈值”,程序含义是:当灰度传感器5在黑线上时,动态灰度阈值等于传感器5实时读取的灰度值的1.2倍,当灰度传感器5脱离黑线时,动态灰度阈值等于灰度传感器5离开黑线最后那一刻灰度值的1.2倍。

动态灰度阈值构造出来后,就可以将它嵌入到巡线程序中,取代灰度阈值550。原四灰度传感器夹线巡线程序如图4所示,修改后的程序如图5所示:调用“读取标准数”模块来读取动态灰度阈值,然后把动态灰度阈值代替图4中的灰度阈值550即可。

同理,修改后的左转程序如图6所示。其中“读取模拟口A1量”“读取模拟口A2量”等的意义与“读取灰色传感器(模拟)A1”“读取灰色传感器(模拟)A2”等相同。程序重复调用“读取标准数”模块来读取动态灰度阈值以判断黑线。

右转等程序在此不再一一赘述。

●实际成效

動态灰度阈值的构造,大大优化了Arduino小车的巡线程序,既解决了场地光线或喷绘工艺等因素影响而导致的比赛图上白色区域灰度值变低的问题,又解决了上述因素导致的黑色区域灰度值增高的问题,显著提高了巡线的准确性和成功率。笔者应用优化后的巡线程序在各种逆反射系数、分辨率、覆膜工艺不同的比赛图上进行多次测试,巡线成功率高达95%以上。

文档评论(0)

ZC强 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档