一个实例了解自动驾驶路径规划——自动泊车实例介绍及A*算法代码

您是否想浏览中国自主品牌出口车型,可以为您切换到易车国际站。

在转往自动驾驶的道路上,我遇到了三个问题:

1、学习路线问题:不知道学什么,不知道学习顺序,或者是感觉要学的太多,战线被拉得很长,往往学着A,却发现B是基础,就转而学B,最后感觉什么都没有学;

2、学习资料问题:资料太多,不知道该看哪个,又或者没有找到很通透的资料。

博客初步计划通过自动泊车讲解自动驾驶的路径规划,涉及A*,HybridA*,RS曲线(ompl库),并做一些资料推荐(如使用工具的教程,工具书),力求细致,通透,主要为了帮助像我一样初次学习的人快速入门。

一、自动泊车介绍

言归正传,自动泊车是目前(2021年)自动驾驶ADAS中非常火热的一环,与ACC,AEB不同的是,自动泊车是低速自动驾驶,安全问题要小的多。自动泊车主要涉及的领域有:

1、感知:计算机视觉——车位识别,AVM车位(视觉检测的白线车位);超声波雷达——检测障碍物车位(处理没有白线,或者压住白线导致车位检测不到);

2、融合:视觉车位与超声波雷达车位的信息融合;

3、定位:用以确定车辆实时位置,判断车辆是否停到位等;

4、路径规划:结合感知和定位给出合理路径,主要应用HybridA*(自动泊车属于狭窄空间路径规划,还是挺难的);

5、控制:泊车执行环节,控制车的方向盘,车速,使车辆根据给出的路径到达终点,stanly算法,纯跟踪算法,PID控制基本都属于这一环节。

可见,自动泊车涉及的自动驾驶领域还是很全的。自动泊车的车位主要分为三类:

其中斜列车位可以和垂直车位看做一体,可以把垂直车位看做特殊的斜列车位。

自动泊车分为很多类,有APA、记忆泊车、AVP代客泊车等等,简要的说,就是自动泊车是从帮助人停车往自动寻找车位,自动停车,自动泊出的方向进化的,最终的理想状态可以想象这样一幅场景:

1、驾车前往商场,到商场门口后下车购物,同时下达自动泊车指令,车辆开始巡航,寻找商场停车位并完成泊车;购物结束后,从另外一个门出来,手机给车辆发送定位,车辆自动泊出,并前往上车地点。

可以看到,自动泊车解决了自动驾驶的开始和结束的问题,这里也可以发现一个明显问题,车辆如何知道附近有车位,或者充电桩信息呢?于是就有了车端和场端的概念,停车场,充电桩也智能化,与汽车完成通信,发送自身的信息,如车位信息,充电桩占用信息等,这就是场端。

随之而来的下一个问题,就是在到达车位、充电桩的过程中,要走怎样的路径,这就涉及到本次主题路径规划了,路径规划分全局路径规划和局部路径规划,个人认为不需要如此细分,细分过多反而带来理解上个困难,两者用的其实都是同一原理,算法稍有不同,但目的就是为了找到一条路。粗略理解可以按以下理解:

1、全局规划:停车场告知车位位置,车辆从自身位置到车位附近这一段是全局路径规划(如S1到S3),感知的信息是周围的环境信息。

2、局部规划:车道车位附近后,比如在S3点,要停到车位的中间点A5,那么S3到A5的路线就是局部规划。

二、A*算法

第一组:

第二组:

第三组:

A*算法英文版(*//www.gamedev.net/reference/articles/article2003.asp)

以上三组任意一组均可较好理解算法原理,至于源代码,推荐以下链接内的源代码,因为后续的泊车算法将采用以下版本的代码。

THE END
1.最短路径A*算法原理及java代码实现(看不懂是我的失败)算法只要懂原理了,代码都是小问题,先看下面理论,尤其是红色标注的(要源码请留下邮箱,有测试用例,直接运行即可) A*算法 百度上的解释: A*[1](A-Star)算法是一种静态路网中求解最短路最有效的直接搜索方法。 公式表示为: f(n)=g(n)+h(n), https://blog.csdn.net/h348592532/article/details/44421753
2.Java编程实现A*算法完整代码java这篇文章主要介绍了Java编程实现A*算法完整代码,简单介绍了a星算法,然后分享了完整测试代码,具有一定借鉴价值,需要的朋友可以参考下。前言 A*搜寻算法俗称A星算法。这是一种在图形平面上,有多个节点的路径,求出最低通过成本的算法。常用于游戏中 通过二维数组构建的一个迷宫,“%”表示墙壁,A为起点,B为终点,“#https://www.jb51.net/article/129284.htm
3.启发式搜索AStar算法附代码A*算法是对Best-First算法的一种改进,核心思想是广搜,利用open表和close表对节点进行剪枝,同时利用启发式测度来选择最优的扩展节点。 A*算法在满足一定条件下找到的解必然是最优解。 最短路得到最优解条件:A*算法的启发式函数h如果小于等于真实值n的话,那么算法是能得到最优解的,若h大于等于真实值n,那么就不https://www.jianshu.com/p/5704e67f40aa
4.基于向量矩阵的Apriori改进算法研究摘要: 针对传统的关联分析算法Apriori执行效率低、I/O过重、计算量过大等问题,提出了一种通过减少扫描数据库次数来降低候选项集计算复杂度, 在频繁项集求解过程中通过将事务项集转换为行向量,利用“与”操作来提高算法执行效率的Apriori改进算法。利用学生在校行为数据集对Apriori改进算法进行有效性和高效性验证。https://jns.usst.edu.cn/html/2022/1/20220109.htm
5.Apriori算法如何用代码实现mb64ca025376906的技术博客Apriori算法如何用代码实现 Apriori算法是一种用于频繁项集挖掘的算法,通常用于市场篮子分析等场景,用于发现不同商品之间的关联规则。以下是使用Python实现Apriori算法的示例: from itertools import combinations # 定义函数用于生成候选项集 def generate_candidates(itemsets, k):https://blog.51cto.com/u_16213142/7073018
6.基于时空A*算法的多AGV无冲突路径规划从这一角度出发, 本文首先根据物流分拣中心的场地特点选择合适的地图建模方法, 然后将时间维度导入A*算法, 将其改进为时空A*算法, 并将时空A*算法作为基于冲突搜索框架的下层规划器, 用于求解多AGV无冲突路径规划问题. 对上述两种算法的融合, 旨在优势互补为解决路径规划中的冲突问题提供新的求解思路. 最后, 通过仿https://c-s-a.org.cn/html/2022/4/8454.htm
7.实测A*寻路与JPS寻路同一地图运行效率腾讯云开发者社区前面几篇我们把A*算法和JPS的算法都简单介绍了一下,并且展现出来了行动规划,其中A*算法的核心代码我也在《实战|OpenCV结合A*算法实现简单的运动路径规划》中放出来了, 感兴趣的朋友可以连接过去看一下,今天我们就专门对两个算法的运算效果进行一下实测,对比一下看看 https://cloud.tencent.com/developer/article/1621022