中文乐高

 找回密码
 马上注册

QQ登录

只需一步,快速开始

查看: 52366|回复: 78

总结我做过的4种单光感巡线逻辑

    [复制链接]
发表于 2011-11-5 22:24:22 | 显示全部楼层 |阅读模式
巡线话题应该不会过时,之前看过晓舟的巡线专题教程http://bbs.cmnxt.com/thread-3074-1-1.html以及伯虎关于PID巡线的帖子,受益颇多,也自己做了一些,但由于艺术专业出身,PID还是云里雾里,学习中。
最近整理了一下,先分享4中单光感巡线逻辑,其中前两种晓舟在文章中已经提到。
上传的程序截图都是完全展开的,并且会做详细解释,所以文件就不上传了,希望能给新手们带来灵感。

(一)摇摆式
单光感巡线1.JPG
这种比较简单,一个判断分支,在黑白处以相反的方向校正就可以,多调试几遍,选择合适的电机功率,应该能顺利的过直角弯。
视频请参考晓舟巡线专题教程

(二)利用马达数据中心“控制”
111111.JPG 控制
范围-100﹍100
<0控制左电机, >0控制右电机
一般来说电机默认连接左B右C,<0是左电机快,>0时右电机快,数据越接近0电机功率差越小,反之越大,试验得知当绝对值大于50左右出现反转。
简单理解为数据绝对值越大,校正越快,这样看来,这就是傻瓜版的PID控制。用这种写法比第一种效率更高。
单光感巡线2.JPG
即时光值减去中间值,得到可正可负的结果,再乘以合适的系数就可以输入控制中心了。
具体数据谁做谁知道。。。
视频请参考巡线专题教程

(三)巡黑线中央
这种是(一)的延伸,摇摆式的校正比较慢,且没有直行的情况。
单光感巡线3圖示.jpg
如上图,当光感完全在黑线中间时光值最小,往两边则递增。
举例均以图上数据,
当光值在36——48时,表示光感在黑线中间,可直行。
当光值>48且<62时,可朝一个方向试探性的校正0.1秒,看光值的变化情况,如校正后光值<校正前光值则表示正确,反之则反向校正。
当光值>62时,表示小车基本无法找到回家的路,应为光值再无变化,无法比较,除非做大幅度的试探校正,这样就没意义了,还不如摇摆式。
单光感巡线3.jpg
A 光值<48,直行
B 试探校正0.1秒,注意,B停最好放在前面(亲自尝试便得其中奥妙)哈哈
C 对比校正前后的光值
D 正确,继续校正直到回到黑线中间
E 错误,反向校正直到回到黑线中间
F 注意:在这里光感等待可设置为<(比48小的数)亲自尝试得期诀窍。


(四)“摇摆的光感,追赶的车”
这种逻辑大概是(一)(二)的组合延伸。
以前看过相关视频,但逻辑却不得知,于是自己研究一下。
单光感巡线4圖示.jpg
如上图,以下举例用图上字母。
我们用一个马达在前方摆动光感时刻巡线,D为起始角度,重置角度传感器,这是角度为0,若以这个数给电机控制中心,则直行。
E——F为实际摆动位置,这时中间线G最接近前方的弧弯切线,于是小车要往G方向校正。(E+F)/2算出G的偏差角度。
由于弧弯的方向不一样,光感的摆动位置也会不一样,则算出的偏差角度G可正可负。
若小车在直线上,左右摇摆的角度会比较平均,则偏差角度G接近于0。
用这种逻辑,判断弧弯切线角度在先,小车校正在后,效果非常好。
单光感巡线4.JPG
A 光感位于白,向黑校正并记录角度
B 光感位于黑,向白校正并记录角度
C 循环2次得到数据E F
D {(E+F)/2}*系数
具体数据可自行调试。


第一次写这样的帖子,不对的地方大家要多多指出啊,谢谢


评分

参与人数 3乐币 +66 收起 理由
datelove + 5
吕勇哲 + 1
晓舟 + 60 相当棒!!可以说是巡线进阶版了

查看全部评分

如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
 楼主| 发表于 2011-11-7 14:38:58 | 显示全部楼层
YJG103 发表于 2011-11-7 13:33
好像可以这样理解,控制
范围-100﹍100
那么-100-50,为反转,-50-0为左电机正传,0-50,右电机慢慢加速至 ...

可以写个程序去好好研究一下这个,给它一个常量,讲电机正反和功率显示在屏上,这样多试几遍就可以看出其中变化
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2011-11-5 23:35:19 | 显示全部楼层
不错!
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2011-11-6 00:21:53 | 显示全部楼层
真好~~~学习了!{:soso_e179:}
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2011-11-6 01:10:11 | 显示全部楼层
太学习了,这帖子
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2011-11-6 07:48:52 | 显示全部楼层
学习一下
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2011-11-6 10:36:50 | 显示全部楼层
值得参考.
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2011-11-6 19:23:24 | 显示全部楼层
第二种第三种,真是很有想法呀,谢谢了
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2011-11-6 21:29:04 | 显示全部楼层
第4种,很巧妙啊
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2011-11-7 09:18:52 | 显示全部楼层
最近也在看PID,也有同感,第二种那个PID雏形,但是我记得好像之前做的实验,与楼主的结果不同,主要是大于小于0以后的马达,实际也就是那个控制数据中心的功能,我记得好像是小与是反转,至于数值,是控制反转的度数之类的,而功率不受此限制。大家可以实验试试,我空了也试验一下再。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2011-11-7 10:11:33 | 显示全部楼层
学习一下,上次我也尝试写一个程序进行巡线动作,发现有点小难度。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2011-11-7 10:43:56 | 显示全部楼层
很不错,喜欢
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2011-11-7 13:25:39 | 显示全部楼层
很仔细的在看这个帖子,“第二种中间:控制
范围-100﹍100
<0控制左电机, >0控制右电机
一般来说电机默认连接左B右C,<0是左电机快,>0时右电机快,数据越接近0电机功率差越小,反之越大,试验得知当绝对值大于50左右出现反转”,我的实验结果也是这样,为何绝对值50左右为界呢?我原以为就是0为界的,现在发现0只是控制哪个电机的界,而绝对值才是转向的界。不知道这个图标的底层语言说明了什么?有谁明白吗?
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2011-11-7 13:33:00 | 显示全部楼层
好像可以这样理解,控制
范围-100﹍100
那么-100-50,为反转,-50-0为左电机正传,0-50,右电机慢慢加速至移动模块设定的值,50-100,右电机反转越来越快。请高手指点一下,我试验情况就是这样,这个控制链接没有详细说明资料。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
 楼主| 发表于 2011-11-7 14:28:37 | 显示全部楼层
YJG103 发表于 2011-11-7 13:33
好像可以这样理解,控制
范围-100﹍100
那么-100-50,为反转,-50-0为左电机正传,0-50,右电机慢慢加速至 ...

兄弟 你在這個問題上糾結了很久了好像,我說的50也是一個大概的數字,不要再去在意它。
在这里程序只认B为左电机,C为右电机。除非你在电机数据中心改掉。
-100——0控制左,左快,也就是向右转,而转弯最快的就是两个电机反向转,所以可能在小于-50的时候右电机开始反转。
0——100正好反过来
这样说不知你是否明白
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|中文乐高 ( 桂ICP备11003955号-1 )

GMT+8, 2021-4-13 06:19 , Processed in 0.046807 second(s), 26 queries .

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