自动驾驶(六十二)---------导航路径规划
实际上关于路径规划,我在轨迹规划中有介绍,主要是A*算法,但是目前有强需求,所以只能在系统总结一下了,可以算是水一篇文章,抓紧时间吧,有效的时间不多了!
导航路径规划需要掌握的方法我总结有四个:RRT、PRM、A*、hybrid A*。A*我之前有介绍:再论轨迹规划,这里就不做赘述。
1. RRT
RRT(快速探索随机树),首先在环境中,我们有一个起始点,定义为Xinit, 然后我们在环境中随机撒一个点,得到点x_rand,如果x_rand不在障碍物区域,则连接起x_init和x_rand, 我们得到一条连线L,如果L整个不在障碍物里面,则沿着L,从x_init向x_rand的方向移动一定的距离,得到一个新的点,x_new,则x_init,x_new和他们之间的线段构成了一颗最简单的树。
树的扩展: 在开始的基础上,继续重复,在环境中撒点,得到无障碍物区域的点x_rand,然后在已经存在的树上找一个离x_rand最近的点x_near,连接两个点,如果这条线没有障碍物,则沿着这条线,从x_near到x_rand移动一定的距离,得到新的点,x_new, 该点被添加到已经存在的树上
规划: 重复上述过程,直到目标点(或其附近的点)被添加到树上,这时我们就可以在树上找到一条从起点到目标点的路径
2. PRM
RRT当环境中的障碍物较为复杂时计算量较大,有没有什么办法优化呢?PRM(Probabilistic Roadmaps)是一种基于图搜索的方法,一共分为两个步骤:学习阶段、查询阶段。它将连续空间转换成离散空间,再利用A*等搜索算法在路线图上寻找路径,以提高搜索效率。
学习阶段:在给定图的自由空间里随机撒点
,构建一个路径网络图
。 必须是自由空间里的随机点,每个点都要确保机器人与障碍物无碰撞。
查询阶段:根据设定的起点s和终点g,选择合适的路径,首先将s和g点与路径网络中的两个点x,y分别连接,寻找无向路径网络图中x与y连接的路径,这样就可以将起点和终点连接起来,构成全局路径。得到全局路径后,可以使用平滑的方法寻找捷径,优化路径。
3. Hybrid A*
A*算法主要是用在导航中,在车辆轨迹规划中并不好用,这是因为生成的轨迹是折线,这不满足车辆运动学特性,但是A*算法也同样是从一个点到另一个点的一条最优路径,有没有办法转化成车辆可以行使的轨迹线呢?
2010年,斯坦福首次提出一种满足车辆运动学的算法(Hybrid A*),并在(DARPA)的城市挑战赛中得以运用。首先我们采用A*生成一天折线轨迹,节点之间不采用直线相连,而是Reeds-Shepp曲线相连,当然每个节点与节点相连的曲线,要考虑与之相连的节点状态。这样生成的轨迹就是Hybrid A*。那么什么是Reeds-Shepp呢?请看下节:
4. Reeds-Shepp
APA自动泊车可以有各种轨迹实现,如何用最短路径来实现自动泊车呢?首先假设车辆能以固定的半径转向,且车辆能够前进和后退,那么Reeds-Shepp曲线就是车辆在上述条件下从起点到终点的最短路径。在轨迹规划中不仅要求车辆能够到达终点,而且需要车辆的角度也有要求,比如在垂直泊车的过程中,开始车辆平行于道路,终点要求车辆垂直于道路等等,总之车辆的终点位置和终点角度都提出了要求。
首先我们回到车辆运动学:
其中:
这种固定的运动方式在低速情况下轨迹可以近似一个圆,方向盘转角转到最大,其转向半径最小,假设最小转向半径为rmin。为了方便起见Reeds-Shepp中最小转向半径强制设置为1,如果车辆的实际最小转向半径不是1,可也通过适当放缩终点坐标来计算该曲线。
下面曲线就是一条Reeds-Shepp曲线,R表示右打方向,+表示前进,图中从到
,首先右打方向前进,再左打方向后退,最后右打方向前进到达终点。
下表是Reeds-Shepp曲线的基本操作方式,一共有48种操作模式,归为9种Base word,但是在编程求解我们不需要每一种都分开求解,其中他们之间的对称性可以帮助我们减少工作量。例如求解到终点 的
后,我们可以用同样的方法来求解
但是需要将终点换为
,这种处理方法在文中叫timeflip,还有其他的f对称,这里不做介绍可以参看原文。
通过这几种组合可以得到最短路径。这里举个例子,从不同位置到达同一目标的Reeds-sheep:
自动驾驶(六十二)---------导航路径规划相关推荐
- 【自动驾驶】基于采样的路径规划算法——PRM(含python实现)
文章目录 参考资料 1. 基本概念 1.1 基于随机采样的路径规划算法 1.2 概率路图算法(Probabilistic Road Map, PRM) 1.3 PRM算法的优缺点 1.4 PRM算法伪 ...
- Mobileye 自动驾驶策略(二)
Mobileye 自动驾驶策略(二) 与多方都成功进行了合作,其中比较大型的合作包括法雷奥.百度和中国 ITS. 法雷奥是最近的的 Tier 1 合作伙伴,法雷奥和 Mobileye 签署协议,表示未 ...
- 吴甘沙创业照见自动驾驶十年变迁,产业爆发在下一个春天里 | 自动驾驶这十年...
个人创业照见自动驾驶十年变迁. 效力英特尔16年.三发创业之心最终"出走"人工智能,吴甘沙的创业故事已经被说得太多.而他所领衔创立的驭势科技,继2017年完成国内首个自动驾驶商业运 ...
- ROS 教程2 机器人雷达建图 蒙特卡洛定位 导航 路径规划 仿真
ros 机器人雷达建图 蒙特卡洛定位 导航 路径规划 仿真 move_base gmapping acml 博文github 一.安装 turtlebot 移动机器人底座 进行导航 1.安装系统依赖 ...
- 面渣逆袭:三万字,七十图,详解计算机网络六十二问(收藏版)
大家好,我是老三,开工大吉,虎年第一篇,面渣逆袭系列继续! 这次给大家带来了计算机网络六十二问,三万字,七十图详解,大概是全网最全的网络面试题. 建议大家收藏了慢慢看,新的一年一定能够跳槽加薪,虎年& ...
- 面渣逆袭:计算机网络六十二问,三万字图文详解!速收藏!
这次给大家带来了计算机网络六十二问,三万字,七十图详解,大概是全网最全的网络面试题. 基础 1.说下计算机网络体系结构 计算机网络体系结构,一般有三种:OSI 七层模型.TCP/IP 四层模型.五层结 ...
- Android安卓百度地图定位+导航+路径规划实现APP(源码+APK) 毕业设计
百度地图实时定位+导航路径规划的实现APP 本科生毕业设计:<一种智能停车系统的设计>,成都信息工程大学,2018 使用到的技术 百度地图SDK LBS云数据管理 路径规划与导航 二维码扫 ...
- 从零开始做自动驾驶定位(二):轨迹精度评估
从零开始做自动驾驶定位(二):轨迹精度评估 一.EVO工具的使用 1.evo简介 evo [1] 是一个很好的测评工具,它可以根据时间戳将轨迹进行对齐,同时可以将不同尺度的轨迹按照你指定的标准轨迹进行 ...
- 【正点原子Linux连载】第六十二章 Linux SPI驱动实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...
- 【Microsoft Azure 的1024种玩法】六十二.利用Azure Private DNS 实现虚拟网络中域名的管理解析
[简介] Azure Private DNS是Azure为我们虚拟网络提供的安全可靠的DNS服务,我们无需自行配置DNS即可在虚拟网络中实现域名的解析及配置, 于此同时,我们在内网中也可以利用自己的自 ...
最新文章
- python内置模块大全 processon
- jsf登录注册页面_您将在下一个项目中使用JSF吗?
- C语言 —— 获取字符串中两个字符之间的的数据
- 8月语言排行:C#继续呈现增长态势
- Golang sync.WaitGroup 简介与用法
- php统计网站 / html页面 浏览访问次数程序
- python不会英语不会数学怎么自学-英语和数学都不好,但是我想学Python编程可以吗?...
- Atitit 2018 技术趋势与没落技术总结 目录 1. 2018 技术雷达	1 1.1. HOSTED IDENTITY MANAGEMENT AS A SERVICE (SaaS)身份管理
- 127.0.0.1和localhost和本机IP三者的区别
- 液压泵优化设计matlab,基于MATLAB/Simulink的挖掘机动力匹配技术的转速传感变量系统设计...
- markdown下载以及安装详情
- android开发:NDK开发配置
- 网络编程1之send、recv函数详解
- 计算机辅助绘图工具,CAD精确辅助绘图工具
- 常见电容器图片_常用电容器大全 (附图片)
- iOS开发雕虫小技之傻瓜式定位神器-超简单方式解决iOS后台定时定位
- 数据管理执行指南 | 你需要知道什么?
- [vscode] markdown_index 可以为你的markdown标题添加序号的插件
- 【倾斜摄影】——三维建模软件ContextCapture 空三质量报告详细解读
- fast RCN论文笔记