查看: 819|回复: 1

[视觉识别入门教程] HuskyLens AI视觉传感器x掌控板:入门教程06-循“轨”蹈矩的麦昆

[复制链接]
本教程是关于二哈识图(HuskyLens)AI视觉传感器掌控板的官方系列教程,HuskyLens AI视觉传感器,二哈识图(HuskyLens)是一款用一个按键即可完成AI训练的学习门槛较低的人工智能视觉传感器,内置6种功能:人脸识别、物体追踪、物体识别、巡线追踪、颜色识别、标签(二维码)识别。
另外DFRobot发布了micro:bit、Arduino开发板和HuskyLens AI视觉传感器入门教程




项目6:循“轨”蹈矩的麦昆



如今的机器人真是越来越厉害了,它们上天入地,几乎无所不能。你看它们有的在餐厅当送餐员,服务周到;有的在工厂车间当“快递小哥”,任劳任怨;有的在电网枢纽当安全检查员,尽职尽责...
202008107638..png 202008109096..png
202008104336..png 202008105504..png

如果大家仔细观察,会发现这些机器人工作的地面上有线条,它们就是循着线条行进的。巡线?它们是怎样做到的?让我们DIY一个萌萌哒的小车机器人来一探究竟吧!

功能介绍:
本项目利用HuskyLens的巡线功能,让麦昆plus按照地面上的线路轨道欢快地蹦跶。

材料清单:

202008104712..png 202008101404..png 202008108615..png
掌控板 ×1
Maqueen Plus ×1
HUSKYLENS ×1


知识园地:
如果我们要让小车机器人按照地面上的线条移动,就需要一些传感器来识别这些线条,根据传感器的不同,巡线方式也分几种,我们这个项目是使用视觉传感器——HUSKYLENS的巡线功能来实现巡线效果的。

一、什么是巡线
巡线(同循线”),就是通过传感器探测地面色调迥异的两种色彩从而获得引导线位置,修正机器人运动路径的一种技术。功能完整的巡线机器人是以移动机器人作为载体,以可见光摄像机、红外热成像仪、其它检测仪器作为载荷系统,以机器视觉—电磁场—GPS——GIS的多场信息融合作为机器人自主移动与自主巡检的导航系统,以嵌入式计算机作为控制系统的软硬件开发平台。所以巡线是一个相当复杂的过程,快速、精准的巡线是我们共同的追求。

两种常用巡线方式的对比

202008104616..png

HUSKYLENS传感器-巡线功能原理
HUSKYLENS的巡线功能是基于卡内基梅隆大学的开源项目pixy算法实现的。

202008104562..png

pixy的算法能对图片进行颜色识别,其基本思想是利用颜色空间来除去所有用户不感兴趣的背景,提取出前景(如线条)。

202008101089..png

这样HUSKYLENS在学习线条的颜色后,就会识别出拍摄视野范围内的该颜色线条。


HUSKYLENS传感器-巡线功能演示

学习物体:
本功能可以追踪指定颜色的线条,做路径预测。默认设置为只追踪一种颜色的线条。本项目以只追踪一种颜色的线条为例进行说明。

操作设置
1、向左或向右拨动“功能按键”,直至屏幕顶部显示“巡线”。
2、长按“功能按键”,进入巡线功能的二级菜单参数设置界面。
3、向左或向右拨动“功能按键”,选中“学习多个”,然后短按“功能按键”,查看“学习多个”的开关是否处于关闭状态。如果没关,就向左拨动“功能按键”关闭“学习多个”的开关,即:进度条颜色变白,进度条上的方块位于进度条的左边。再短按“功能按键”,确认该参数。
4、如果环境光线比较暗,可以打开补光灯。参照上述方法,将“LED开关”打开即可。

202008104197..png

5、向左拨动“功能按键”,选中“保存并返回“,短按”功能按键“,屏幕提示”是否保存参数?“,默认选择”确认“,此时短按”功能按键“,即可保存参数,并自动返回到巡线模式。

学习与追踪
1、学习线条:
HuskyLens屏幕上的“+”字对准目标线条,将橙黄色的方框对准背景色。建议HuskyLens的视野范围内只有需要学习的线条,并且没有交叉线。尽量将HuskyLens与目标线条保持平行,然后HuskyLens会自动检测线条,并出现白色的箭头。然后短按“学习按键”即可,白色箭头变成了蓝色箭头。

202008103189..png

2、巡线追踪:
HuskyLens检测到学习过的线条时(即:同一种颜色的线条),HuskyLens的屏幕上会显示蓝色的箭头,箭头的指向表示路径预测的方向。

202008106810..png

小提示:
1、学习线条时,尽量把HuskyLens的位置调节到与线条平行。
2、识别的线条可以是任何与背景有明显色差的单色线条,建议线条与背景色有足够的色差,以保证巡线的稳定。
3、HuskyLens可以根据线条的颜色不同,进行多个线条的学习与巡线,但是线条必须是与背景有明显色差的单色线条。大多数情况下,巡线用的线条,只有一种颜色。为了保证稳定性,建议只对一种颜色的线条进行巡线。
4、线条的颜色与环境光线有很大关系,建议巡线的时候,保持环境光线的稳定。


五、Maqueen Plus
麦昆plus是DFRobot面向教育用户推出的一款产品,拥有丰富的功能和扩展,具有以下特色功能:
l 兼容microbit和掌控两种主控板,一键切换
l 18650大容量锂电池供电,板载充电电路,续航时间长
l 板载编码器车速传感器,可实时获取当前车况、车速,例如可获取麦昆plus当前的车速,是停止还是前进、后退,左转还是右转,转弯大小
l 可切换为PID电机车速控制,切换为PID后,电机车速的误差将变的非常小
l 8路GPIO扩展接口,3路I2C接口,3路舵机专用接口,扩展口数量多
l 6路巡线传感器,支持巡线传感器一键校准,支持模拟量输出,可实现更复杂的巡线逻辑,适用于拓展训练及比赛场景
l 支持python编程
l 配置金属扩展顶板、可调角度支架,结构扩展能力强

202008109042..png

202008109857..png


HUSKYLENS巡线实现逻辑
如何让麦昆plus在白底黑线的巡线地图上循着黑线运动呢?其实我们只需要知道麦昆plus相对黑线是什么位置,分下面三种情况:
1、当麦昆plus在黑线的偏右位置时,控制麦昆plus向左转弯;
2、当麦昆plus与黑线相对居中时,控制麦昆plus直行;
3、当麦昆plus在黑线的偏左位置时,控制麦昆plus向右转弯。


202008102079..png

具体应该怎么实现呢?我们将HuskyLens在巡线过程中屏幕上显示的信息剥离出来,抽象成下图的几何数学模型。

202008107924..png


HuskyLens屏幕的分辨率是 320×240,屏幕左上角的O点为屏幕的坐标原点(0, 0),水平向右方向为 X 轴正方向,竖直向下方向为 Y 轴正方向,因此屏幕右下角的坐标为(320, 240)。上图中橙色虚线为屏幕的中轴线,这条线的横坐标值为160。上图屏幕中黑色的线,是HuskyLens摄像头“看到”的巡线地图线条,蓝色箭头为HuskyLens计算出来的线条方向,蓝色箭头的起点坐标为(x1, y1),终点坐标为(x2, y2)。
综上,所以我们只需要判断蓝色箭头的起点相对中轴线的位置就能实现巡线了。


项目实践:
我们将按照巡线逻辑实现项目,分若干步不断优化巡线效果,使麦昆plus能既快又稳地通过地图。首先我们会学习使用HuskyLens的巡线功能,读取线条的横坐标数据,编写简单(二区间一线)的调整运动状态程序满足巡线要求,然后根据调试效果改进我们的项目程序。
任务一:开始巡线
将HuskyLens的屏幕横轴分为两个区间(向左向右)和一条线(中轴线)实现巡线效果。
任务二:巡线优化1
在任务一的基础上,增加直线运动调节区间,加快巡线速度,改善任务一巡线结果中出现的问题。
任务三:巡线优化2
在任务二的基础上,增加更多运动调节区间,加快巡线速度,继续改善前次巡线结果中出现的问题。
巡线地图:
202008107479..png
任务一:开始巡线



1、 结构搭建及硬件连接
使用螺丝固定HuskyLens与麦昆plus,需要注意的是,为了巡线,我们需要将摄像头斜向下调节,这样能够看到离麦昆麦昆plus更近距离的黑线,巡线效果更佳。

202008107349..png

HuskyLens与麦昆plus通过I2C通信,连线图如下:
202008103003..png

2、 程序设计:
HuskyLens检测到黑线在屏幕的左边时,即蓝色箭头的起点横坐标值x1<160,控制麦昆plus左转;当黑线在屏幕的右边时,此时x1>160,控制麦昆plus右转;当黑线在屏幕的中间时,此时x1=160,控制麦昆plus直行。

202008108156..png

3、 程序示例
图片1.jpg

4、 运行效果
麦昆plus能完成基本的巡线任务,但同时也暴露如下几个问题:
1、麦昆plus在前进中明显左右晃动,速度变化不连贯,不能稳定直行运动;
2、速度不能设置太快,速度太快在转弯处很容易脱线;
3、不同的转弯角度,需要的转弯速度也不一样,当巡线地图中有好几种转弯角度时很容易脱线。
*如果转弯过程中麦昆plus脱离轨道,就需要通过修改左右侧电机的速度,不断调试。


任务二:巡线优化1

1、 结构搭建及硬件连接
同任务一。

2、 程序设计:
任务一中麦昆plus在前进中左右晃动,不能稳定直行运动,这是为什么呢?因为麦昆plus直行的横轴区间只是一条线,而运动过程中带有惯性,所以x=160处直行是很难实现的。
优化思路是将直行的运动区间扩大,如下图所示,我们将区间[150,170]设置为麦昆plus直行区间,当起点坐标值x1在这个区间内时,控制麦昆plus直行;当x1<150时,控制麦昆plus左转;当x1>170时,控制麦昆plus右转。
202008105984..png
3、程序示例:
图片24.jpg
4、运行效果:
通过调整,麦昆plus的巡线速度快了一些,在直线轨道上,速度变化也顺滑了一些,但在不同的转弯角度上仍然容易脱线。


任务巡线优化2

1、结构搭建及硬件连接
同任务一。

2、程序设计:
前面任务中之所以出现转弯脱线的问题,是因为同一种转弯速度并不能适应所有的转弯角度,一旦设置的转弯速度过快或过慢,都会导致脱线。按照我们先前的优化思路,既然可以将屏幕分成3个运动调节区间,为什么不继续分为5个呢?黑线位置越趋近两边,转弯速度越大;黑线位置越趋近于中轴线,转弯速度越小。

202008101009..png

或者更进一步,直接分为 7 个运动调节区间呢?
202008106908..png
3、程序示例:
图片32.jpg


3、 运行效果:
麦昆plus的巡线速度可以更快了,不管是转弯还是直行,速度变化都顺滑很多了,脱线的次数也减少了。

项目小结:
项目回顾:
本项目中我们通过不断优化巡线算法,使巡线的效果越来越快速平稳,在实际生产中,机器人需要在更复杂的环境中巡线,这就可能需要视觉巡线与普通巡线双管齐下,选择线路的最优解。
知识点回顾:
1、 学习了巡线的主要实现思路
2、 巡线过程中的算法优化


项目拓展:
在完成了轨道不交叉巡线后,可能需要处理如下图所示的轨道交叉巡线,可不可以用前面的标签识别让麦昆plus在交叉点选择正确的路径呢?
202008101730..png

拓展知识:
麦昆巡线时的巡线区间可以分为2个、3个、5个、7个,那是不是还能继续细分呢?9个11个……直到无限个。按照本项目的实际效果,调速区间越细分,巡线效果越好,但是这样写程序会越来越长,有什么办法呢?
PID调速算法可以帮助我们解决这个问题,PID全称比例、积分、微分控制,它是一种闭环控制系统,闭环控制是根据控制对象输出的反馈来进行校正的控制方式,它能够根据测量出的实际值与计划值之间的误差Error,按一定的标准来进行纠正。
有兴趣的同学可以在网上搜索相关信息,继续优化我们的巡线效果。


二哈识图AI视觉传感器其他相关教程:


micro:bit:

掌控板:
HuskyLens AI视觉传感器x掌控板:入门教程01—音乐魔镜
HuskyLens AI视觉传感器x掌控板:入门教程02—色彩钢琴
HuskyLens AI视觉传感器x掌控板:入门教程03—智能的追光灯HuskyLens AI视觉传感器x掌控板:入门教程04—自助超市收银机
HuskyLens AI视觉传感器x掌控板:入门教程05—流浪猫狗喂食机
HuskyLens AI视觉传感器x掌控板:入门教程06-循“轨”蹈矩的麦昆



铁熊  初级技神

发表于 2020-8-10 17:38:35

这个教程好像跟我之前写的很类似 https://mc.dfrobot.com.cn/thread-300508-1-1.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2021 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail