rzyzzxw 发表于 2023-2-2 23:23:36

四轮方向舵小车视觉巡线的尝试-1

本帖最后由 rzyzzxw 于 2023-2-7 19:56 编辑


【背景】
我想让四轮方向舵小车实现视觉巡线,经过这几天的不断探索,取得了一些收获,今天汇报一下前期的收获。
先上视频:
https://www.bilibili.com/video/BV1jx4y1E7pJ/?vd_source=72149e0bfdf8cadd8539f2d7819e5750

【器材】
方向小车    1
二哈识图    1
锂电         1
电工胶带

【学习资料】
二哈识图传感器,有一阵子没有用到了,先复习相关知识。Gravity: 二哈识图(HuskyLens)AI 视觉传感器 (dfrobot.com.cn)   20200420153959qgxlbp.pdf (dfrobot.com.cn)

巡线追踪本功能可以追踪指定颜色的线条,做路径预测。默认设置为只追踪一种颜色的线条。本节以只追踪一种颜色的线条为例进行说明。操作设置
[*]向左或向右拨动“功能按键”,直至屏幕顶部显示“巡线”。
[*]长按“功能按键”,进入巡线功能的二级菜单参数设置界面。
[*]向左或向右拨动“功能按键”,选中“学习多个”,然后短按“功能按键”,查看“学习多个”的开关是否处于关闭状态。如果没关,就向左拨动“功能按键”关闭“学习多个”的开关,即:进度条颜色变白,进度条上的方块位于进度条的左边。再短按“功能按键”,确认该参数。
[*]如果环境光线比较暗,可以打开补光灯。参照上述方法,将“LED开关”打开即可。

   5.向左拨动“功能按键”,选中“保存并返回“,短按”功能按键“,屏幕提示”是否保存参数?“,默认选择”确认“,此时短按”功能按键“,即可保存参数,并自动返回到巡线模式。https://img.dfrobot.com.cn/wiki/none/f7168266f29431437e406e0b922f9489.png学习与追踪
[*]学习线条:将HuskyLens屏幕上的“+”字对准目标线条。建议HuskyLens的视野范围内只有需要学习的线条,并且没有交叉线。尽量将HuskyLens与目标线条保持平行,然后HuskyLens会自动检测线条,并出现白色的箭头。然后短按“学习按键”即可,白色箭头变成了蓝色箭头。
https://img.dfrobot.com.cn/wiki/none/d2e6b2eab3b34bf89fe235c7487823fe.png

2.巡线追踪:当HuskyLens检测到学习过的线条时(即:同一种颜色的线条),HuskyLens的屏幕上会显示蓝色的箭头,箭头的指向表示路径预测的方向。
https://img.dfrobot.com.cn/wiki/none/b30868e6d2360d4e9c1d12c76bdb4528小提示:
[*]学习线条时,尽量把HuskyLens的位置调节到与线条平行。
[*]识别的线条可以是任何与背景有明显色差的单色线条,建议线条与背景色有足够的色差,以保证巡线的稳定。
[*]HuskyLens可以根据线条的颜色不同,进行多个线条的学习与巡线,但是线条必须是与背景有明显色差的单色线条。大多数情况下,巡线用的线条,只有一种颜色。为了保证稳定性,建议只对一种颜色的线条进行巡线。
[*]线条的颜色与环境光线有很大关系,建议巡线的时候,保持环境光线的稳定。


【结构搭建及硬件连接】小车帖子:方向舵小车--3D打印(测试)版
https://mc.dfrobot.com.cn/thread-315238-1-1.html?fromuid=727937
我用的是掌控板+掌控宝的组合,掌控宝的电池较小,供一个舵机和俩个TT电机还可以,二哈比较费电的,所以用一块锂电单独供电。
使用螺丝固定 HuskyLens 与小车,需要注意的是,为了巡线,我们需要将摄像头斜向下调节,这样能够看到离小车更近距离的黑线,巡线效果更佳。

HuskyLens 与小车通过I2C通信,二哈独立供电。小车的舵机和电机用掌控宝电池供电,左电机 接M1,右电机接M2,舵机接P0。


【软件】mind+
主控:

用户库:

传感器:

执行器:


【程序设计】
参考官方资料,有思路1和2。
思路1、当 HuskyLens 检 测 到 黑 线 在 屏 幕 的 左 边 时,我们将区间 设置为小车的直行区间,当起点坐标值 x1 在这个区间内时,控制小车直行;当x1<150 时,控制小车左转;当 x1>170 时,控制小车右转。

思路2、按照我们先前的优化思路,既然可以将屏幕分成 3 个运动调节区间,为什么不继续分为 5 个呢?黑线位置越趋近两边,转弯速度越大;黑线位置越趋近于中轴线,转弯速度越小。或者更进一步,直接分为 7 个运动调节区间呢。


官方参考程序:

上面程序中有一个小bug,第二个如果中的方框应该改成箭头。

可以想像出来,相比思路1,思路2写来的程序效果会更好一些,小车的巡线速度可以更快,不管是转弯还是直行,速度变化都顺滑很多了,脱线的次数也会减少。
可是上面的思路是我只是设想了一下,并没有去尝试,结合四轮方向舵小车的特点,在思路1和2的基础上,我提出并直接使用了思路3。

思路3、二哈用IIC与掌控板通信,请在二哈中设置协议为IIC。

方向舵四轮小车的转向是由舵机来控制的,直行、左转和右转都是通过舵机的角度调节来完成。按照我做的小车的舵机安装方式,80度为直行,小于80度右转,大于80度左转。方向舵机的角度应该随二哈识别中测试出的转向预测箭头的终点坐标x2偏离中线x=160的大小动态调整,偏离中线x=160越大,舵机的转向角度也应该越大。

所以优化了算法,用x2坐标的取值范围0-320映射舵机转向角度140-20(80+-60),这里用更大的转向角度是为减少四轮小车的转弯半径(相比万向轮的三轮小车,四轮方向舵小车转弯半径大多了,所以DF的纸质地图用不了)。为了减小转弯半径,我还去设法减小了小车前后轮的轮距。地上的寻线地图也是专门贴的,小于转弯半径的弯小车一定是会脱线的。




速度控制在两个TT电机驱动的后轮,直道时速度大些,弯道时速度小些,而且越弯速度越小,这样可减少脱线概率。所以相比上面官方例程,我用二哈识别寻线得到的箭头的终点的x坐标和中线x坐标160差的绝对值(范围0-160)的大小来确定电机速度,在四轮小车上测试后发现,比用起点坐标的X1更能准确预测方向,寻线更流畅。电机的转速用百分比来处理,100-前述绝对值的1/4。这样子来实现弯度越大(绝对值大)速度越小。

完整程序如下:



停车函数放在否则中时脱线时会停车,这里没有放进去是为了后面虚线段路线测试。

【小结】
四轮小车视觉寻线挺好玩的,可是转弯半径大不能实现直角转弯。

【附件】


这是番外4:

正剧:
志童道合 | 仰望--帅气的掌控“新能源”小车
https://mc.dfrobot.com.cn/thread-314836-1-1.html?fromuid=727937
(出处: DF创客社区 - 分享创造的喜悦)


续集一:
志童道合 | 给仰望小车做个方向盘式的遥控器
https://mc.dfrobot.com.cn/thread-315004-1-1.html?fromuid=727937
(出处: DF创客社区 - 分享创造的喜悦)
续集二:
志童道合 | 升级仰望小车的动力系统
https://mc.dfrobot.com.cn/thread-315012-1-1.html?fromuid=727937
(出处: DF创客社区 - 分享创造的喜悦)
续集3:
志童道合 | 升级了遥控器,仰望实现无级变速
https://mc.dfrobot.com.cn/thread-315039-1-1.html?fromuid=727937
(出处: DF创客社区 - 分享创造的喜悦)
续集4:
志童道合 | 遥控再升级,增加刹车功能,仰望终极形态将...
https://mc.dfrobot.com.cn/thread-315051-1-1.html?fromuid=727937
(出处: DF创客社区 - 分享创造的喜悦)
续集5:
志童道合 | 用L298N直流电机驱动模块DF-MD V1.3 改造仰望小车2号
https://mc.dfrobot.com.cn/thread-315074-1-1.html?fromuid=727937
(出处: DF创客社区 - 分享创造的喜悦)
续集6:
L298N直流电机驱动模块DF-MD V1.3+百灵鸽,仰望2号跑起来
https://mc.dfrobot.com.cn/thread-315084-1-1.html?fromuid=727937
(出处: DF创客社区 - 分享创造的喜悦)
续集7:
L298N直流电机驱动模块DF-MD V1.3+掌控宝的仰望2号组合
https://mc.dfrobot.com.cn/thread-315093-1-1.html?fromuid=727937
(出处: DF创客社区 - 分享创造的喜悦)
续集8:
用掌控板+DF掌控micro:bit两用扩展板+TT电机+舵机...
https://mc.dfrobot.com.cn/thread-315100-1-1.html?fromuid=727937
(出处: DF创客社区 - 分享创造的喜悦)
续集9:
L298N_红色直流电机驱动模块+掌控板的应用:仰望3动力升级
https://mc.dfrobot.com.cn/thread-315101-1-1.html?fromuid=727937
(出处: DF创客社区 - 分享创造的喜悦)
续集10:
发现秘密:L298N_红色直流电机驱动模块扩展库+掌控板在仰....
https://mc.dfrobot.com.cn/thread-315103-1-1.html?fromuid=727937
(出处: DF创客社区 - 分享创造的喜悦
续集11:
秘法再用:L298N直流电机驱动模块DF-MD V1.3 mind+扩展库在仰.....
https://mc.dfrobot.com.cn/thread-315107-1-1.html?fromuid=727937
(出处: DF创客社区 - 分享创造的喜悦)
续集12:
L298N_红色直流电机驱动模块+掌控板在mPython中的编程应用:...
https://mc.dfrobot.com.cn/thread-315112-1-1.html?fromuid=727937
(出处: DF创客社区 - 分享创造的喜悦)
续集13:
仰望小车2-盘古斧版:向小伙伴们致敬
https://mc.dfrobot.com.cn/thread-315125-1-1.html?fromuid=727937
(出处: DF创客社区 - 分享创造的喜悦)

番外1:
方向舵小车--3D打印(测试)版
https://mc.dfrobot.com.cn/thread-315238-1-1.html?fromuid=727937
(出处: DF创客社区 - 分享创造的喜悦)
番外2:麦小昆改装记:加装方向舵机https://mc.dfrobot.com.cn/thread-315244-1-1.html?fromuid=727937(出处: DF创客社区 - 分享创造的喜悦)番外3:行空、掌控和麦轮十八法
https://mc.dfrobot.com.cn/thread-315270-1-1.html?fromuid=727937
(出处: DF创客社区 - 分享创造的喜悦)









三春牛-创客 发表于 2023-2-3 08:21:45

厉害厉害

三春牛-创客 发表于 2023-2-3 08:22:49

好赞啊!

花生编程 发表于 2023-2-3 08:28:37

厉害厉害

花生编程 发表于 2023-2-3 08:29:41

二哈巡线,赞!

独钓寒江雪 发表于 2023-2-6 12:59:12

赞赞赞{:6_215:}

Kevin2023 发表于 2023-11-25 13:01:37

老师您好,这个巡线过程中能识别交叉路口吗?左T,右T,上T,还有十字路口。

rzyzzxw 发表于 2023-11-25 21:43:14

Kevin2023 发表于 2023-11-25 13:01
老师您好,这个巡线过程中能识别交叉路口吗?左T,右T,上T,还有十字路口。 ...

不能
页: [1]
查看完整版本: 四轮方向舵小车视觉巡线的尝试-1