Apollo规划决策算法仿真调试(5):动态障碍物绕行

这篇具有很好参考价值的文章主要介绍了Apollo规划决策算法仿真调试(5):动态障碍物绕行。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:

Apollo (阿波罗)是一个开放的、完整的、安全的平台,将帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统,快速搭建一套属于自己的自动驾驶系统。Apollo 自动驾驶开放平台为开发者提供了丰富的车辆、硬件选择,强大的环境感知、高精定位、路径规划、车辆控制等自动驾驶软件能力以及高精地图、仿真、数据流水线等自动驾驶云服务,帮助开发者从 0 到 1 快速搭建一套自动驾驶系统。

本系列文章将记录笔者在调试Apollo决策规划算法Planning模块的所见所思所想,不仅会分析决策规划算法具体的代码逻辑,还会使用Vscode对Apollo决策规划算法进行断点调试,从而揭示关键变量的数据结构以及取值。

最近很多粉丝问在apollo规划算法planning模块中,如何才能对运动的障碍物进行绕行。动态障碍物的绕行在量产项目中是一个很大的话题,需要很复杂的逻辑与场景去解决。

这里先不讨论量产解法,提供一种在apollo的仿真环境中动态障碍物绕行的解决思路。先上动态障碍物绕行视频:

Apollo规划决策算法仿真调试(4):动态障碍物绕行

如果对Apollo规划决策算法仿真调试感兴趣,想了解规划算法的实施细节,可以持续关注系列文章:

Apollo规划决策算法仿真调试(1): 使用Vscode断点调试apollo的方法

Apollo规划决策算法仿真调试(2):使用bazel 编译自定义代码模块_

Apollo规划决策算法仿真调试(3):ReferenceLineProvider参考线生成流程

Apollo Planning决策规划算法代码详细解析 (5):规划算法流程介绍

Apollo Planning决策规划算法代码详细解析 (14):SPEED_BOUNDS_PRIORI_DECIDER

自动驾驶算法详解(1) : Apollo路径规划 Piecewise Jerk Path Optimizer的python实现

自动驾驶算法详解(5): 贝塞尔曲线进行路径规划的python实现

后续更多的算法细节调试过程在csdn专栏进行更新,有需要的可以订阅:

https://blog.csdn.net/nn243823163/category_11807746.html?spm=1001.2014.3001.5482https://blog.csdn.net/nn243823163/category_11807746.html?spm=1001.2014.3001.5482 正文如下:

1、动态障碍物绕行分析:

Apollo规划决策算法仿真调试(5):动态障碍物绕行

2、PathLaneBorrowDecider分析

需要进入借道场景才可以触发绕行功能。

3、PathBoundsDecider分析:

可以看到经过PathBoundsDecider计算后,总共形成3个pathBoundary,分别是fallback、regular、right-forward

Apollo规划决策算法仿真调试(5):动态障碍物绕行

相关代码如下:

// Update the path boundary into the reference_line_info.
    std::vector<std::pair<double, double>> regular_path_bound_pair;
    for (size_t i = 0; i < regular_path_bound.size(); ++i) {
      regular_path_bound_pair.emplace_back(std::get<1>(regular_path_bound[i]),
                                           std::get<2>(regular_path_bound[i]));
    }
    candidate_path_boundaries.emplace_back(std::get<0>(regular_path_bound[0]),
                                           kPathBoundsDeciderResolution,
                                           regular_path_bound_pair);
    std::string path_label = "";
    switch (lane_borrow_info) {
      case LaneBorrowInfo::LEFT_BORROW:
        path_label = "left";
        break;
      case LaneBorrowInfo::RIGHT_BORROW:
        path_label = "right";
        break;
      default:
        path_label = "self";
        // exist_self_path_bound = true;
        // regular_self_path_bound = regular_path_bound;
        break;
    }
    // RecordDebugInfo(regular_path_bound, "", reference_line_info);
    candidate_path_boundaries.back().set_label(
        absl::StrCat("regular/", path_label, "/", borrow_lane_type));
    candidate_path_boundaries.back().set_blocking_obstacle_id(
        blocking_obstacle_id);
  }

4、PathAssessmentDecider分析

PathAssessmentDecider中进行路径选择,排序前:

Apollo规划决策算法仿真调试(5):动态障碍物绕行

排序后:

Apollo规划决策算法仿真调试(5):动态障碍物绕行

5、最终选择的路径

可以看到,最终选择的路径是向右借道的路径。

路径如下:

Apollo规划决策算法仿真调试(5):动态障碍物绕行

6、最终结果如下:

Apollo规划决策算法仿真调试(5):动态障碍物绕行文章来源地址https://www.toymoban.com/news/detail-487501.html

到了这里,关于Apollo规划决策算法仿真调试(5):动态障碍物绕行的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python 动态规划 实现机器人躲避障碍物获取最短路径

    要设计一种算法来寻找机器人从左上角移动到右下角的路径,可以使用动态规划来解决这个问题。下面是一种可能的算法: 创建一个处理机器人运动的函数 find_path ,函数接受一个矩阵 grid 作为参数,用于表示机器人移动的网格环境,该矩阵一个由 0 和 1 组成的二位列表,其

    2024年04月09日
    浏览(44)
  • 动态规划解“不同路径问题”(所有路径、有障碍物时的所有路径)

    题目1:不同路径(求到达右下角的所有路径) 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少条不同的路径?    解题思路

    2024年02月14日
    浏览(45)
  • 【动态规划之路径问题】路径条数与带障碍物的路径条数

    ⭐️ 前面的话 ⭐️ 本篇文章将介绍动态规划之路径条数的问题,我将通过两道力扣上面的题来介绍使用动态规划来解决路径条数问题以及路上存在障碍物时路径的条数。 📒博客主页:未见花闻的博客主页 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📌本文由 未见花闻 原创,

    2023年04月09日
    浏览(37)
  • 从零开始的三维激光雷达SLAM教程第二讲(搭建Gazebo仿真环境,并添加动态障碍物)

    毕业设计打算做三维激光SLAM,记录一些学习历程,也给后面人一点帮助。本教程不涉及SLAM基本概念(如果没有自行补充),主要包含以下几部分内容。 搭建激光SLAM的运行环境并运行数据集 在Gazebo中构建仿真地图并添加动态障碍物,使用仿真小车采集激光数据。 A-LOAM详解,

    2024年02月01日
    浏览(48)
  • 【路径规划】粒子群算法求解机器人障碍物环境的Voronoi图路径规划【含GUI Matlab源码 3748期】

    粒子群算法(Particle Swarm Optimization, PSO)可以用于栅格地图上机器人的最短路径规划。在这种问题中,栅格地图被划分为离散的单元格,每个单元格可以是阻挡或可通过的区域。机器人需要从起始位置移动到目标位置,避免碰到阻挡。 PSO算法中,通过使用一群粒子来搜索最优

    2024年01月17日
    浏览(59)
  • apollo自动驾驶进阶学习之:如何实现十字路口左转障碍物绕行

    首先需要理解Planning模块是基于Scenario、Stage、Task这样的层次来进行的,即:场景-步骤-具体的决策方法。Apollo可以应对自动驾驶所面临的不同道路场景,都是通过Scenario统一注册与管理。Scenario通过一个有限状态机来判断选择当前行车场景,每个Scenario下又有多个Stage,指当前

    2024年02月12日
    浏览(45)
  • Apollo决策规划算法学习Chapter3 速度规划算法

    第一章 Apollo决策规划算法基本概念 第二章 Apollo决策规划之路径规划算法 第三章 Apollo决策规划之速度规划算法 本文为第三章,主要讲解 Apollo决策规划算法中的速度规划算法,EM planner的速度规划算法同样是是通过动态规划和二次规划实现的,下面来细讲速度规划算法。 1)回

    2024年02月11日
    浏览(58)
  • ros机器人在navigation下导航costmap_2d动态层(障碍物层)障碍物无法及时消除的情况解决办法

    设备 杉川-3a激光雷达 win10笔记本电脑 ubuntu18.04 ros-melodic 问题 ros机器人在move_base下导航,有静态图层与动态图层,静态图层显示之前已经建立好的地图,而动态层显示现在激光雷达实时扫描到的障碍物。 假设机器人雷达最大范围为8m,在某一时刻,以机器人为原点,在机器人

    2024年02月06日
    浏览(43)
  • 【路径规划】人工势场法APF机器人不同形状障碍物避障路径规划【含Matlab源码 3705期】

    ✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。 🍎个人主页:海神之光 🏆代码获取方式: 海神之光Matlab王者学习之路—代码获取方式 ⛳️座右铭:行百里者,半于九十。 更多Matlab仿真内容点击👇 Matlab图像处理(进阶版) 路径规划

    2024年02月20日
    浏览(36)
  • 基于图像识别的自动驾驶汽车障碍物检测与避障算法研究

    基于图像识别的自动驾驶汽车障碍物检测与避障算法研究是一个涉及计算机视觉、机器学习、人工智能和自动控制等多个领域的复杂问题。以下是对这个问题的研究内容和方向的一些概述。 障碍物检测 障碍物检测是自动驾驶汽车避障算法的核心部分,它需要从车辆的感知数

    2024年02月08日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包