找回密码
 马上注册

QQ登录

只需一步,快速开始

查看: 4146|回复: 3

一个完整的比例巡线巡线Block

[复制链接]
发表于 2022-3-18 00:21:56 | 显示全部楼层 |阅读模式
很多人一看到比例巡线,就觉得很low,不过原理是简单,但是要写一个完整的比例巡线程序也不简单。
在理想情况下,光感从黑线的边缘向白色区域移动时,读取的光感值逐渐增加,向黑线区域移动时,读取的颜色值逐渐减小;当颜色逐渐增加时,白色一边的电机功率要比黑色一边电机的功率快才能避免情况恶化,反之亦然。将颜色的偏移值乘以一个比例系数得出两个电机的功率的差值,我们将这个巡线定义为比例寻线。
但是在实际巡线过程中,在光感是存在最大值和最小值,当大于最大值,必须将黑色一边的电机停止;当小于最小值时,必须将白色一边的电机停止,这样才能避免飞线。当刚好在黑线边缘时,两个电机的功率应该相等才对,并且此时电机的功率尽可能大一点。当光感值出现偏差时,则两个电机的功率都应该减小,并且一个减小的多一点,一个减小的少一点,这样小车才会向正确的地方偏移。从上面的分析可以得出,光感值应该存在三个参数,最大值,边缘值,最小值;电机的功率也应该存在三个参数,边缘值时电机功率,光感达到最大或者最小值时,快速电机的功率值,慢速电机停止前的最小功率。
BC电机对应的功率和光感的测量值的曲线如下图:
曲线.png
对应的C语言代码如下:
C代码.png
在传入的参数中pWrData[0]为光感的测量值,pWrData[1~3]分别对应光感的最大值,边缘值,最小值;pWrData[4~6]分别对应电机的功率最大值,快电机的最小功率值,慢电机的最小功率值,快电机和慢电机两个功率值不能相等,result[0~1]为返回的两个电机功率值。
在写出模块后的G语言示例程序如下:
G程序.png
依据惯例附上程序和内核
链接:https://pan.baidu.com/s/1kas53edBp44qB_wgrzqGDw?pwd=euhg
昨天发的贴子提供那个内核到现在为止已经被下载了将近100次,不过帖子回的人不多,也没人关注我,这可不是个好习惯,希望大家关注一下我。这样提供的内核有升级或者有bug,我也能及时通知到大家。
同时也对下载过内核的人表示抱歉,昨天那个内核比例巡线有个小bug,我在测试时出现飞线,我当时以为功率设置太大,今天我用excel模拟一下,发现真的有个小问题。新的内核已经更正。希望大家能够及时更新。

如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2022-3-18 10:23:35 | 显示全部楼层
学无止境,感谢大神分享
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2022-3-18 16:22:50 | 显示全部楼层
学习学习了
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2022-4-6 15:04:50 | 显示全部楼层
为您的分享点赞
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

手机版|中文乐高 ( 桂ICP备13001575号-7 )

GMT+8, 2024-11-25 19:59 , Processed in 0.089238 second(s), 23 queries .

Powered by Discuz! X3.5

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表