• 自动驾驶学习笔记(八)——路线规划


    #Apollo开发者#

    学习课程的传送门如下,当您也准备学习自动驾驶时,可以和我一同前往:

    《自动驾驶新人之旅》免费课程—> 传送门

    《Apollo Beta宣讲和线下沙龙》免费报名—>传送门

    文章目录

    前言

    路线规划

    路由元素

    路径搜索

    最优计算

    实例

    Tips

    总结


    前言

            见《自动驾驶学习笔记(一)——Apollo平台

            见《自动驾驶学习笔记(二)——Apollo入门

            见《自动驾驶学习笔记(三)——场景设计

            见《自动驾驶学习笔记(四)——变道绕行仿真

            见《自动驾驶学习笔记(五)——绕行距离调试

            见《自动驾驶学习笔记(六)——Apollo安装

            见《自动驾驶学习笔记(七)——感知融合

    路线规划

            路线规划的目标是利用地图数据和实时交通信息,找到从A到B的最佳路线。

    路由元素

            为了便于开发查找路径的算法,首先需要将地图转化为由节点和边缘组成的数据结构,节点代表路段,边缘代表路段之间的连接,如下图所示:

    路径搜索

           如下图所示,搜索从A到B的路径

            第一步,查找A相邻的节点,有8个候选节点1~8

            第二步,查找1~8相邻的节点,有13个候选节点a~m。

            这时就出现了21条候选路径:

            A->1->d

            A->1->e

            A->1->f

            A->2->b

            A->2->c

            A->2->d

            A->3->a

            A->3->b

            A->3->c

            A->5->k

            A->5->l

            A->5->m

            A->6->j

            A->6->k

            A->6->i

            A->7->h

            A->7->i

            A->7->j

            A->8->f

            A->8->g

            A->8->h

            第三步,在上述21条候选路径的相邻节点上继续搜索新的候选节点,进而产生新的候选路径。

            重复上述搜索过程,直至节点B在候选路径中出现为止。

    最优计算

            上述路径搜索算法,如果A至B的距离变远,或者地图的粒度变细,那么需要消耗的算力将是指数级增加的,所以就需要引入最优排序,在每一个步骤都剔除掉一些相对较差的候选路径。这里先从路径长度这一个角度来评价候选路径,每个步骤中的候选路径长度f,都有已有距离长度g和剩余距离长度h两部分组成,如下图所示:

    第一步的路径长度值

    第二步的路径长度值

    实例

            如下图所示,车辆在一个高速公路的出口,搜索到左转、直行和右转三个候选路径,分别对应不同的g值和h值,两者相加计算得到最优的路径为右转路线。

    Tips

            在路线规划的实际应用中,不管是路径搜索,还是最优计算,除了要考虑上述的地图数据和距离长度之外,通常还要考虑有没有市政封路、交通事故、堵车缓行、路面质量、红绿灯多少、加油充电站、停车场出入口、路桥费多少等等因素,是一个比较复杂的工程问题。

    总结

           以上就是本人在学习自动驾驶时,对所学课程的一些梳理和总结。后续还会分享另更多自动驾驶相关知识,欢迎评论区留言、点赞、收藏和关注,这些鼓励和支持都将成文本人持续分享的动力。

            另外,如果有同在小伙伴,也正在学习或打算学习自动驾驶时,可以和我一同抱团学习,交流技术。


            版权声明,原创文章,转载和引用请注明出处和链接,侵权必究!

            文中部分图片来源自网络,若有侵权,联系立删。

  • 相关阅读:
    使用Ruby编写通用爬虫程序
    快速掌握Zookeeper及Java API
    AntScheduler
    leetcode 刷题 log day 50(继续股票专题
    Linux C 基于tcp多线程在线聊天室
    应用层的地址(标识符)到底是什么?
    程序员必看的十步高分电影,强推第八部
    设置linux服务器同步时间
    Gorm 快速入门:高效掌握 MySQL 数据库操作的实用指南
    uniapp navigateTo url路由传参(传递对象)
  • 原文地址:https://blog.csdn.net/CSSUST/article/details/134355099