高速巡线机器人

问题描述 投票:0回答:1

如何设计仅使用相机传感器但速度较高的巡线机器人?我目前正在使用 opencv 库来处理帧并从中计算转向角。但在更高的速度下,由于路径变化很快,给定的方法不起作用。

附注是否有适合此应用程序的特定相机?

camera robotics highspeed
1个回答
0
投票

它应该是一个复杂的系统,并且值得一本好的科学出版物。所以这是一个非常简单的答案。

当您考虑算法时,重要的是要理解,它始终是交易。您可以获得 FPS 小且分辨率差的相机,但随后您可以遵循具有大转弯半径的更平滑的路线。

或者,如果您需要跟随一些急转弯的疯狂曲线,您应该获得好的相机,或者可能很少有相机。

首先我们假设以下条件:

  1. 您需要带有单摄像头或线传感器的解决方案。
  2. 线条为深色,背景为浅色。
  3. 机器人速度为 25mph。
  4. 我们还有两个参数:
    • 厚度 - 我们希望最大化厚度变化。
    • 转弯半径 - 我们希望最小化转弯半径。

我们开始了。

在顶层,您的系统看起来像是带有负面反馈的块。

您的情况:

  • 反馈是相对于中心的线偏角...和机器人速度
  • 输出信号转向所需的机器人速度。我认为最好是放慢机器人速度,然后失败并松开线路。

通常为了实现平稳反应,您应该使用 PID 控制器,有时(在航天工业中)贝尔曼方程

机器人

你的机器人大概是这样的:

  1. 它接受线偏角。
  2. 它通过转向PID
  3. 计算所需的转向
  4. 可能会发生这样的情况,您应该降低速度,这就是为什么您可能需要诸如最大速度计算器
  5. 之类的东西
  6. 然后知道最大速度和当前速度,您可以计算速度误差并将其发送到推力PID
  7. 输出上的推力 PID 会形成正信号或负信号,分别告诉您的电机(或更确切地说硬件电机控制器)加速或停止。
  8. 转向信号也发送至转向伺服系统。

现在有了这个模式,我们可以讨论一些算法了。

据说快速相机可以让您跟随更急的转弯。 但是转弯半径还取决于机器人的其他物理属性:质量、车轮轮胎。

相机传感器

如果我对你的机器人的理解是正确的,那么相机传感器只是几个过滤器:

  1. 阈值。它可能是“大津阈值”,甚至可能是“自适应阈值”。两种方法都允许在不同的光照条件下工作。 使用

    moments
  2. 过滤器查找线的中心。只要线条是黑色的,就应该反转框架。这可以通过在上一步中传递
  3. THRES_BINARY_INV 而不是 THRES_BINARY

     来实现。
    选取

    x
  4. 动量中心坐标,与框架中线比较:
  5.     declination = x - frame_width/2
    

  6. 就是这样。
这组滤波器使用非常高效的卷积算法,即使在最旧的 RPi 版本上也应该以最小的延迟工作。

如果您需要提高 FPS,您可以从顶部和底部裁剪帧。

非常急转弯

这个解决方案甚至可以处理像这样的直角转弯:

------ | | ^ <robot>

您所需要的只是调整

转向PID
参数。

但它可能不适用于相机捕捉两个方向的 U 形转弯: -- | | | | ^ <robot>

在这种情况下,您应该减小相机的视角。

进一步改进

事实上,在最近的案例中,当你的相机可以看到整个掉头可能是一个优势。实际上,您能识别的曲线越多,您就能更好地规划机器人的运动。但它需要更强大和更昂贵的算法。

您还可以嵌入简单的

LSTM模型

来识别一些危险情况。

© www.soinside.com 2019 - 2024. All rights reserved.