首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用摄像机让机器人跟随一条线

如何使用摄像机让机器人跟随一条线
EN

Stack Overflow用户
提问于 2011-12-11 19:12:49
回答 4查看 6.9K关注 0票数 1

我正在试着让一个机器人识别地面上的一条线并跟随它。

我在互联网上搜索了很多跟线机器人的例子,但它们都使用专门的传感器来检测这条线。

我想在机器人上使用摄像头来达到这个目的。

我是计算机视觉领域的新手,所以我想要一些关于如何处理这个问题的建议。具体地说,我如何检测直线及其相对于机器人的角度/方向?如何检测转弯?

更新以下nikies评论:

这条线看起来如何由我决定,我想在地上放一些鲜艳的胶带,但我可以用任何最简单的…

这款相机既可以拍摄彩色图像,也可以拍摄黑白图像。

照明和位置可能会有所不同,但我稍后会担心它,我只想知道如何开始。有没有一种“通用”的方法呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-12-14 04:29:56

这里有一种方法,适合于改进。

通过缩放、像素化过滤器和阈值的组合,将相机输入减少到由白色或黑色方块组成的3x3网格。通过适当的调整,缩小应该能够炸掉这条线,以便它恰好占据缩小的像素中的三个。然后,机器人的逻辑包括在八个方向中的一个方向上移动,以保持中心像素为黑色。

缩容后的图片:

代码语言:javascript
复制
☐ ■ ☐
☐ ■ ☐ ↑ move forward one unit
☐ ■ ☐

左转是什么样子的:

代码语言:javascript
复制
☐ ☐ ☐
■ ■ ☐ ← turn 90 degrees left
☐ ■ ☐

这是一个非常简单的方案,将视频输入转换为干净的3x3网格并不是一项简单的任务,但它应该足以让您朝着正确的方向移动。

票数 6
EN

Stack Overflow用户

发布于 2011-12-31 00:50:59

一种选择是使用OpenCV或类似的图像处理/视觉库以及向前和向下的相机来执行以下操作:

  1. 放置一盘已知的、不常见的明亮颜色的磁带,如黄色或橙色。如果你愿意在你的机器人上安装一个光源,你甚至可以使用反光胶带。
  2. 使用OpenCV将彩色视频图像分解为三个HSV平面-色调(颜色),饱和度和值(强度)。
  3. 使用描边宽度转换来标识线条。下面的StackOverflow帖子有一个关于SWT的视频的链接:Stroke Width Transform (SWT) implementation (Java, C#...)
  4. Apply,一种细化算法(Stentiford或StackOverflow),将分割的带线减少到单像素宽度。
  5. 将单个像素视为曲线拟合的输入点。或者,更简单地说,计算直线上每组N个连续点的端点到端点的角度。
  6. 应用一些3D几何图形以及有关机器人当前方向和速度的信息来计算它必须转弯的时间,以及要跟随直线的速度。

如果你的机器人移动缓慢,那么向下看的相机可能更合适。计算比较简单,但机器人不能往前看。

票数 1
EN

Stack Overflow用户

发布于 2011-12-19 05:43:23

你的机器人需要多快移动?有AI (人工智能)选项(这将比另一个答案中描述的做出简单决定要慢。

在AI领域,您可以调查:

自组织映射(SOM),尝试在黑线上进行推理。你可以教它识别形状(我以前用过它来识别字母)。我认为这可以在现代计算机上相当快地计算出来,但这取决于你的机器人硬件(不能完全记住)。

AI技术需要相当长的时间来训练,并且需要你去学习。如果你想要一种固定的代码方式,另一个答案也是一个很好的选择。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8463489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档