2092浏览
查看: 2092|回复: 4

[高级教程] 【N+】千里马Plus项目式课程 - 05 视觉巡线1

[复制链接]
本帖最后由 Nplus实验室 于 2023-5-24 11:09 编辑

【N+】千里马Plus项目式课程
05 视觉巡线1
- N+桃李科教

上一篇:【N+】千里马Plus项目式课程 - 04 红灯停绿灯行
下一篇:
【N+】千里马Plus项目式课程 - 06 视觉巡线2

教学目标
1.利用摄像头的颜色识别进行巡线;
2.实现视觉巡线功能。
教学准备
千里马、地图、数据线、卡片

教学过程
导入 巡线分析 项目程序 程序优化 总结

1.导入
(1)课程回顾:
摄像头的颜色识别与底部颜色传感器有什么不同与相同之处?
  摄像头是根据颜色深浅来判断数据的,受环境光线影响较大;但是它可以获取色块的大小。颜色传感器可以获取色块的RGB数值和HSV数值,但是不能获取色块大小。

千里马循迹传感器的巡线的原理是什么?根据是什么?
  一般根据线宽、巡线传感器的间距、巡线传感器的数量等,会有好几种巡线模式。如下图所示,我们可以很容易就可以根据巡线传感器在白线和黑线上的位置来判断千里马什么时候需要直行、什么时候需要左转、什么时候需要右转。
【N+】千里马Plus项目式课程 - 05 视觉巡线1图1

前面我们使用了千里马底部的循迹传感器进行了巡线,现在学习了视觉传感器,能不能使用千里马的视觉传感器进行巡线呢?
当然可以,可以使用颜色识别进行视觉巡线。

2.巡线分析
千里马视觉巡线的逻辑又是怎么样的呢?
摄像头巡线,利用的视觉功能,通过获取色块的中心位置,然后再根据中心坐标的偏移,来左右转弯,从而实现视觉巡线功能。这跟巡线传感器的逻辑非常类似,我们只需要知道千里马相对黑线是什么位置就行了:
当千里马在黑线的偏左位置时,控制千里马向右转弯;
当千里马在黑线的偏右位置时,控制千里马向左转弯;
当千里马与黑线相对居中时,控制千里马直行。

我们先来看一下,千里马巡线时,屏幕上显示的信息。需要注意的是,为了巡线,我们需要将摄像头斜向下调节,这样能够看到离千里马更近距离的黑线,巡线效果更佳。
为了方便说明问题,我们将千里马屏幕上的信息剥离出来,抽象成下图的几何数学模型。
【N+】千里马Plus项目式课程 - 05 视觉巡线1图2

千里马屏幕的分辨率是 256×192,屏幕左上角的顶点为屏幕的坐标原点(0, 0),水平向右方向为 X 轴正方向,竖直向下方向为 Y 轴正方向,因此屏幕右下角的坐标为(256, 192)。上图中红色虚线为屏幕的中轴线,这条线的横坐标 x = 128。上图中黑色的线,为千里马摄像头“看到”的巡线地图,白色箭头为摄像头计算出来的线条方向。白色箭头的起点坐标为(x1, y1),终点坐标为(x2, y2)。

经过这样的数学抽象之后,其实巡线逻辑就很简单了。当千里马检测到黑线在屏幕的左边时,也就是白色箭头的坐标 x1 < 128时,控制千里马左转;当黑线在屏幕的右边时,此时 x1 > 128 时,控制千里马右转;当黑线在屏幕的中间时,此时 x1 = 128 时,控制千里马直行。
【N+】千里马Plus项目式课程 - 05 视觉巡线1图3

3.项目程序
目标:使用千里马的摄像头完成视觉巡线。

3.1程序语句
判断数据的中心坐标,需要使用新的语句,如下表所示。
【N+】千里马Plus项目式课程 - 05 视觉巡线1图4
获取数据的X坐标、Y坐标、宽度、高度,X、Y坐标是方框中心的坐标,宽度、高度就是方框的实际宽和高。

3.2获取中心坐标
1.X、Y坐标是方框中心的坐标,宽度、高度就是方框的实际宽和高。
【N+】千里马Plus项目式课程 - 05 视觉巡线1图5

2.当获取X、Y坐标信息时,并进行打印。
【N+】千里马Plus项目式课程 - 05 视觉巡线1图6

3.刷入程序后,按B清楚已有的学下数据,按A键重新学习,可以使用卡片来学习,距离要远一些,学习成功后,识别到ID0数据时,控制台将会打印X坐标和Y坐标;移动卡片,观察控制台数据。
【N+】千里马Plus项目式课程 - 05 视觉巡线1图7

3.3程序流程图
根据前面的分析,程序流程图如下图所示:
【N+】千里马Plus项目式课程 - 05 视觉巡线1图8

3.4程序编写
1.千里马学习巡线的颜色。
【N+】千里马Plus项目式课程 - 05 视觉巡线1图9

2.新建变量“X1”为获取的“X”坐标参数。
【N+】千里马Plus项目式课程 - 05 视觉巡线1图10

3.定义“巡线速度”的函数,并进行传参,参数为左右电机的速度。
【N+】千里马Plus项目式课程 - 05 视觉巡线1图11

4.判断X坐标的位置:X1<=128,左转;X1=128,直行;X1>128,右转。
【N+】千里马Plus项目式课程 - 05 视觉巡线1图12

5.将前面程序综合在一起,完整程序如下:
【N+】千里马Plus项目式课程 - 05 视觉巡线1图13

6.程序刷入后,千里马放至地图上,调整好摄像头角度,将其压至最低,再学习线条色块数据。根据测试结果修改速度差。

4.程序优化
有没有发现,不管怎么调整速度差,千里马在视觉巡线过程中,依旧抖动的厉害,思考一下怎么优化程序。
其实很简单,增大直行的位置区间就好了。如下图所示,我们将 100 ≤ X1 ≤ 156的区间设置为千里马直行区间,当检测到黑线的起点坐标 x1 在这个区间内时,控制千里马直行;当 X1 < 100 时,控制千里马左转;当 X1 > 156 时,控制千里马右转。
【N+】千里马Plus项目式课程 - 05 视觉巡线1图14

修改程序,如下图所示,刷入程序,测试千里马的巡线效果,根据结果修改速度差与直行区间。
【N+】千里马Plus项目式课程 - 05 视觉巡线1图15

通过这些调整,我们发现,千里马巡线速度快了一些,速度变化也顺滑了一些,但是仍然会左右轻微晃动。同一种转弯速度并不能适应所有的转弯角度,一旦设置的速度太快了,很容易脱线;速度设置慢了,转不过去弯。

5.总结
1.摄像头巡线与循迹传感器巡线有什么不同?
2.摄像头巡线过程中应该注意什么?

6.课后作业
1.思考:如果巡线划分区间无限划分,会怎么样?

千里马Plus购买链接:N+千里马Plus

本课PPT、视频及案例代码下载:

链接: https://pan.baidu.com/s/1zVLoqwvsW4urBA2QSqoTVA
提取码: 8888

三春牛-创客  初级技神

发表于 2023-7-9 21:55:53

厉害厉害
回复

使用道具 举报

三春牛-创客  初级技神

发表于 2023-7-9 21:56:54

赞赞赞赞赞
回复

使用道具 举报

花生编程  中级技匠

发表于 2023-7-10 21:34:05

厉害厉害
回复

使用道具 举报

花生编程  中级技匠

发表于 2023-7-10 21:35:14

很棒的作品!
回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail