避
在这篇博客中,我们将演示如何使用树莓派和Sphero RVR漫游车运行我们的避障算法。主要目标是在检测和避开障碍物的同时探索周围环境。该算法使用障碍物检测算法来识别障碍物。有关更多详细信息,您可以查看上一篇博客.
Raspberry Pi + Sphero RVR漫游车设置如下所示。前面放置了一个移动摄像头,以连续记录运动。
我们运行python代码以获取输出,源代码可以在下面找到。
来自 GitHub 的 API 源代码您需要有订阅密钥才能使用它,您可以查看介绍博客了解如何获取免费订阅密钥。
为了运行漫游车,我们需要调整4个设置。
- 最小安全系数:这是指定漫游车和障碍物之间在任何方向上的最小安全距离。这是一个从 0.1 到 1 的浮点数。这些值将距离表示为图像帧行大小的因子,即如果该值为 0.5,则图像的一半不得存在障碍物。请务必注意,图像中漫游车的中心是最底部的行和中间列。
- MinPathWidthFactor:用于指定漫游车在最小安全距离点处穿越的障碍物之间可用的最小路径宽度。这是一个从 0.1 到 1 的浮点数。这些值表示距离作为图像帧列大小的因子,即如果值为0.5,则在最小距离点处至少有一半图像是无障碍的。
- 最小目标高点因子:这是为了指定要被视为有效的障碍物的最小高度。这是一个从 0.1 到 1 的浮点数。这些值将距离表示为图像帧行大小的因子。这是为了避免由于任何可以遍历的虚假像素或障碍物而导致的误报。
- 最小对象宽度因子:用于指定要视为有效的障碍物的最小宽度。这是一个从 0.1 到 1 的浮点数。这些值将距离表示为图像帧列大小的系数。这是为了避免由于任何可以遍历的虚假像素或障碍物而导致的误报。
输出有三个参数:
- BestDirectionAngle:这指定障碍物数量最少的角度。此值的范围可以从 -90 到 +90。角度为0度对应于方向不变,负角对应于帧左侧的最佳方向,正角对应于帧右侧的最佳方向。
- 最大距离因子:这指定在最佳方向上测量到障碍物的最大距离。这是一个从 0 到 1 的浮点数。这些值将距离表示为图像帧行大小的因子。
- MaxPathWidthFactor:这指定了障碍物在最佳方向上可用的最大路径宽度。这是一个从 0 到 1 的浮点数。这些值将距离表示为图像帧列大小的系数。
如果成功识别出符合所有设置阈值的可遍历路径,则“StatusFlag”将返回 1,否则将返回 0。
示例输入和处理后的输出图像如下所示,以供参考
图像显示原始图像,处理后的图像显示最佳路径。在处理后的图像中,绿色圆锥表示有效路径,红色圆锥表示不满足所有条件的路径。
可以在下面观看此视频的示例。这些设置是
- 最小安全系数 = 0.5
- 最小路径宽度因子 = 0.4
- 最小对象高度因子 = 0.1
- 最小对象宽度因子 = 0.1
在此实现中,还设置了一些附加条件以避免任何障碍。如果最佳方向距离中心45度以上,则由于视野受到限制,因此无法立即识别所有障碍物。在这种情况下,漫游车转向新方向,并等待确认路径是否无障碍。如果是,它将继续向新方向移动,否则,它将旋转并等待确认。
在下一篇博客中,我们将展示使用 IR 在夜间避障算法的工作原理。