首页 > 解决方案 > 自动驾驶汽车如何消除车道上的障碍物?

问题描述

我从事自动驾驶汽车项目。我想确定汽车在高速公路上的转向角。但是对于这个特定的场景,没有车道线或任何车道边界,只有沥青本身。我假设周围环境不会包含任何与沥青颜色足够接近的颜色。

(假设中间没有白线,我看到的都是沥青)

在此处输入图像描述

该过程是实时的(在 Raspberry Pi 上),并且在相机的帮助下捕获帧。

对于这个问题,我提出了如下管道(OpenCV 4.0 with C++):

这条管道清楚地告诉我汽车应该如何转向以保持在单向车道的中间。我可以用 HSV 过滤沥青部分。问题是当车道上有障碍物时。可能会在车道的一侧或中间放置一些盒子。在这种情况下,HSV 过滤器会在车道上创建一个大黑框。霍夫线检测将框的边缘转换为假车道线。最终,这会导致错误的转向预测。实际上,我开发了一种算法来通过观察霍夫线的斜率来处理这个问题,但是它并不总是稳定的。

(放置在车道一侧的红色框)

在此处输入图像描述

我的观点是,您会建议对此过程进行任何改进以消除图像过滤可能存在的障碍吗?车道上的障碍物会导致错误的霍夫线并影响转向决策。我认为的一个改进是从图像的左侧和右侧(在 ROI 中)检测最大白色像素计数的索引,然后将每个像素设置为白色。这将扫除道路中间的障碍物(车辆可能会撞到障碍物),但无论如何都会将障碍物留在车道的一侧。但是如果道路弯曲,这将不实用,因为改进会丢失图像中的弯曲数据。

(图片来源:https://www.masterbuilder.co.in/wp-content/uploads/2018/03/Rs-46000-cr-initiative-taken-for-new-express-highways-elevated-roads-Govt。 .png )

编辑:

当我在 OpenCV 文档中使用 convexHull时,我得到以下结果,这是出乎意料的。

在此处输入图像描述

标签: opencvimage-processing

解决方案


如果出于任何原因看不到车道,特斯拉使用的一个技巧是跟随前车的运动。因此,您可以通过适当的算法利用它们,而不是消除障碍。

您的算法应如下所示:

  1. 尝试检测您正在前进的车道。
  2. 如果找到前车,则使用前车的运动跟踪算法跟踪前车。

这篇文章很好地介绍了python中的对象跟踪:

https://www.pyimagesearch.com/2018/07/30/opencv-object-tracking/

如果您想了解更多关于自动驾驶汽车的信息,可以在这里查看我的 github 存储库:

https://github.com/kochlisGit/autonomous-vehicles-deep-reinforcement-learning


推荐阅读