查看: 38|回复: 2

[视觉识别入门教程] 【HUSKYLENS二哈识图】micro:bit视觉识别入门教程——06循“轨...

[复制链接]
本帖最后由 _木子_ 于 2020-5-21 17:12 编辑

循“轨”蹈矩的麦昆

图片1.png 图片2.png
图片3.png

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

材料清单:
33.png

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

一、什么是巡线?
—————————————————————————————————————————————

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

二、两种常用巡线方式的对比
————————————————————————————————————————————————

图片4.png


三、HUSKYLENS 传感器 - 巡线功能原理
————————————————————————————————————————————————

HUSKYLENS 的巡线功能是基于卡内基梅隆大学的开源项目pixy 实现的。

图片5.png

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

图片6.png

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

四、HUSKYLENS 传感器 - 巡线功能演示
————————————————————————————————————————————————

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

操作设置
1、向左或向右拨动“功能按键”,直至屏幕顶部显示“巡线”。

2、长按“功能按键”,进入巡线功能的二级菜单参数设置界面。

3、向左或向右拨动“功能按键”,选中“学习多个”,然后短按“功能按键”,查看“学习多个” 的开关是否处于关闭状态。如果没关,就向左拨动“功能按键”关闭“学习多个”的开关,即:进度条颜色变白,进度条上的方块位于进度条的左边。再短按“功能按键”,确认该参数。

4、如果环境光线比较暗,可以打开补光灯。参照上述方法,将“LED 开关”打开即可。

图片7.png

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

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

图片8.png

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

图片9.png

100.png

五、Maqueen Plus
—————————————————————————————————————————————

麦昆 plus 是DFRobot 面向教育用户推出的一款产品,拥有丰富的功能和扩展,具有以下特色功能:

●兼容microbit 和掌控两种主控板,一键切换

●18650 大容量锂电池供电,板载充电电路,续航时间长

●板载编码器车速传感器,可实时获取当前车况、车速,例如可获取麦昆 plus 当前的车速,是停止还是前进、后退,左转还是右转,转弯大小

●可切换为PID 电机车速控制,切换为 PID 后,电机车速的误差将变的非常小

●8 路 GPIO 扩展接口,3 路I2C 接口,3 路舵机专用接口,扩展口数量多

●6 路巡线传感器,支持巡线传感器一键校准,支持模拟量输出,可实现更复杂的巡线逻辑,适用于拓展训练及比赛场景

●支持python 编程
配置金属扩展顶板、可调角度支架,结构扩展能力强

11.jpg
22.jpg

六、HUSKYLENS 巡线实现逻辑
—————————————————————————————————————————————

如何让麦昆plus 在白底黑线的巡线地图上循着黑线运动呢?其实我们只需要知道麦昆plus 相对黑线是什么位置,分下面三种情况:

1、当麦昆 plus 在黑线的偏右位置时,控制麦昆 plus 向左转弯;

2、当麦昆 plus 与黑线相对居中时,控制麦昆 plus 直行;

3、当麦昆 plus 在黑线的偏左位置时,控制麦昆 plus 向右转弯。

图片13.png

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

图片14.png

HuskyLens屏幕的分辨率是 320×240,屏幕左上角的O点为屏幕的坐标原点(0, 0),水平向右方向为 X 轴正方向,竖直向下方向为 Y 轴正方向,因此屏幕右下角的坐标为(320, 240)。上图中橙色虚线为屏幕的中轴线,这条线的横坐标值为160。上图屏幕中黑色的线,是HuskyLens 摄像头“看到”的巡线地图线条,蓝色箭头为 HuskyLens 计算出来的线条方向,蓝色箭头的起点坐标为(x1, y1),终点坐标为(x2, y2)。

综上,所以我们只需要判断蓝色箭头的起点相对中轴线的位置就能实现巡线了。

项目实践:
我们将按照巡线逻辑实现项目,分若干步不断优化巡线效果,使麦昆 plus 能既快又稳地通过地图。首先我们会学习使用 HuskyLens 的巡线功能,读取线条的横坐标数据,编写简单(二区间一线)的调整运动状态程序满足巡线要求,然后根据调试效果改进我们的项目程序。

任务一:开始巡线
将HuskyLens 的屏幕横轴分为两个区间(向左向右)和一条线(中轴线)实现巡线效果。

任务二:巡线优化 1
在任务一的基础上,增加直线运动调节区间,加快巡线速度,改善任务一巡线结果中出现的问题。

任务三:巡线优化 2
在任务二的基础上,增加更多运动调节区间,加快巡线速度,继续改善前次巡线结果中出现的问题。

巡线地图:
666.png

任务一:开始巡线
————————————————————————————————————————————————

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

图片16.png

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

图片17.png


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

图片18.png

3、程序示例
33.jpg
44.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 右转。

图片21.png


3、程序示例:

55.jpg
66.jpg

4、运行效果
通过调整,麦昆 plus 的巡线速度快了一些,在直线轨道上,速度变化也顺滑了一些,但在不同的转弯角度上仍然容易脱线。

任务三:巡线优化 2
——————————————————————————————————————————————

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

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

图片24.png

或者更进一步,直接分为 7 个运动调节区间呢?

图片25.png

3、程序示例
88.jpg
99.jpg

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

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

知识点回顾:
1、学习了巡线的主要实现思路
2、巡线过程中的算法优化

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

666.png

拓展知识:
麦昆巡线时的巡线区间可以分为2 个、3 个、5 个、7 个,那是不是还能继续细分呢? 9 个?11个?……直到无限个。按照本项目的实际效果,调速区间越细分,巡线效果越好, 但是这样写程序会越来越长,有什么办法呢?

PID 调速算法可以帮助我们解决这个问题,PID 全称比例、积分、微分控制,它是一种闭环控制系统,闭环控制是根据控制对象输出的反馈来进行校正的控制方式, 它能够根据测量出的实际值与计划值之间的误差Error,按一定的标准来进行纠正。

有兴趣的同学可以在网上搜索相关信息,继续优化我们的巡线效果。

DFrJ5KYVQaH  初级技匠

发表于 3 天前

关于二哈的文章,收藏学习
回复

使用道具 举报

_木子_  高级技师
 楼主|

发表于 3 天前

DFrJ5KYVQaH 发表于 2020-5-22 10:02
关于二哈的文章,收藏学习

一起学习
回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail