【运动规划算法】OpenPlanner


前言

OpenPlanner是名古屋大学开发的开源自动驾驶框架Autoware中使用的运动规划算法。它是通过对全局路径进行采样生成一系列的候选路径,结合矢量地图、传感器信息以及碰撞、交通规则等约束和优化目标,选择出最优的运动轨迹。OpenPlanner通用性强,只需相应的调整参数即可与任何的移动机器人配合使用。
在这里插入图片描述

下图是OpenPlanner的一般体系结构,其主要三个组成部分是全局规划器行为状态生成器局部规划器
在这里插入图片描述
OpenPlanner旨在用于移动机器人的自主导航,更确切地说是应用于自动驾驶领域。它结合了矢量地图或道路网络地图中包含的所有离散信息(例如交通信号灯,交通标志,十字路口,停车线等的位置),这相对于其他的开源的导航系统OMPL和Navigation Stack来说是主要的优势。

使用矢量地图可以更加轻松、快速地进行全局和局部规划。当然,像RRT * 和 Hybrid A *这些自由空间中全局规划器对于停车和越野情况也是很重要的。在这种情况下,我们可以切换到自由空间规划器进行全局规划,仍需要使用Open Planner的行为状态机和本地规划器。与Navigation Stack相比,OpenPlanner的另一个优势是OpenPlanner可以与非完整约束底盘一起使用。

此外,OpenPlanner还提供基本的行为状态机功能,添加新状态很容易。 另一方面,OMPL不提供状态机或离散行为计划。 关于规划器的建图需求,Navigation Stack和OMPL都是需要代价地图的,OpenPlanner只需矢量图而不需要代价地图,除非切换到自由空间计划。 总而言之,OpenPlanner更适合于遵守交通规则的自主移动机器人导航系统,它仅需要矢量地图和目标位置即可进行全局规划,而对于局部规划和行为状态生成,则仅需要当前位置和检测到的障碍即可。


一、原理

OpenPlanner包含全局规划器、行为状态生成器和局部规划器。本文只讨论其中的局部规划器op_planner模块。

op_planner包含Roll-outs GeneratorRoll-outs Evaluator

Roll-outs Generator

  • 根据矢量地图生成的全局路径作为参考生成一系列平滑的候选路径。

Roll-outs Evaluator

  • 结合障碍物信息以及其他因素来计算各个候选路径的代价,从而挑选出一条平滑、无障碍的局部路径。

1. Roll-outs Generator

Rollouts Generator是被实时执行的,因为局部规划都必须满足实时工作的基本要求。目标处理时间最多为0.1秒,以便控制器可以快速响应速度变化。候选路径生成算法的输入是当前位置、规划距离、生成候选路径的数量和全局路径。输出为n条平滑轨迹,从车辆中心一直延伸到最大规划距离。
在这里插入图片描述
如上图所示,将采样的过程划分为三个部分Car tip、Roll in和Roll out。

Car tip

  • 从车辆中心到横向采样点的距离,其长度决定了车辆切换到不同轨迹的平滑度。

Roll in

  • 水平横向采样点到平行横向采样点的距离,其长度与车辆速度成正比。车辆行驶的速度越快,此区域产生平滑变化的时间就越长。

Roll out

  • 平行横向采样点到最大规划距离,通过从全局路径垂直移动固定的距离(称为Roll out密度)来执行直接横向采样。

Roll-outs Generator包括三个主要步骤

  1. 根据车辆的当前位置和最大规划距离从全局路径中提取所需的部分;
  2. 针对提取出的全局路径进行点的横向采样;
  3. 使用共轭梯度对每个采样轨迹进行平滑处理生成候选轨迹,共轭梯度是一种非线性迭代优化技术,可消除采样步骤导致的滚动不连续性。 这也改善了曲率,从而使转向更平稳。

在这里插入图片描述


2.Roll-outs Evaluator

Roll-outs Evaluator的作用是根据优先级代价、过渡代价和碰撞代价评估每一条从Roll-outs Generator生成的候选路径,从中挑选出总代价最小的一条作为最优路径输出。

2.1 优先级代价

优先级代价是对每条候选路径进行分级,中心路径的优先级是最高的,然后由中心路径向两边递减,这是为了在没有障碍物的情况下,让车辆保持在中心路径。
在这里插入图片描述
优先级代价使机器人保持在车道的中心。选定的轨迹位于中心,其他轨迹的渐变颜色代表代价。

2.2 过渡代价

过渡代价是为了限制车辆不会频繁在候选路径之间切换,这是为了确保车辆前进的平滑度。

2.3 碰撞代价

碰撞代价分两部分lateral_cost和longitudinal_cost来计算。

lateral_cost

  • 候选路径到障碍物的横向水平距离。

longitudinal_cost

  • 候选路径到障碍物的纵向水平距离。
    在这里插入图片描述

2.4 归一化处理

避免评价函数中某一项代价占据过大的优势。


二、项目演示

在这里插入图片描述
在这里插入图片描述


参考资料

【1】Open Source Integrated Planner for Autonomous Navigation in Highly Dynamic Environments

  • 22
    点赞
  • 81
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
讲述机器人运动规划原理的经典书籍。 《规划算法》目录: 第Ⅰ部分 介绍性的资料  第1章 绪论   1.1 从规划(的过程)到规划(的结果)   1.2 实例与应用   1.3 规划的基本组成   1.4 算法规划器与规划    1.4.1 算法    1.4.2 规划器    1.4.3 规划   1.5 本书的组织安排  第2章 离散规划   2.1 离散可行规划简介    2.1.1 问题表述    2.1.2 离散规划的实例    2.2 可行规划的搜索    2.2.1 一般前向搜索    2.2.2 特殊前向搜索    2.2.3 其他搜索方案    2.2.4 搜索方法的统一描述   2.3 离散最优规划    2.3.1 最优定长规划    2.3.2 不指定长度的最优规划    2.3.3 再论Dijkstra算法   2.4 用逻辑来表示离散规划    2.4.1 类似STRIPS的表示    2.4.2 转换到状态空间表示   2.5 基于逻辑的规划方法    2.5.1 部分规划空间中的搜索    2.5.2 建立规划图    2.5.3 满足性规划   进一步阅读   习题   实现 第Ⅱ部分 运动规划  第3章 几何表示与变换   3.1 几何建模    3.1.1 多边形与多面体模型    3.1.2 半代数模型    3.1.3 其他模型   3.2 刚体变换    3.2.1 一般概念    3.2.2 二维变换    3.2.3 三维变换   3.3 物体运动链的变换    3.3.1 二维运动链    3.3.2 三维运动链   3.4 运动树的变换   3.5 非刚体的变换   进一步阅读   习题   实现  第4章 位形空间   4.1 拓扑的基本概念    4.1.1 拓扑空间    4.1.2 流形    4.1.3 路径与连通   4.2 位形空间    4.2.1 二维刚体:SE(2)    4.2.2 三维刚体:SE(3)    4.2.3 物体的链与树   4.3 位形空间障碍物    4.3.1 基本运动规划问题    4.3.2 显式建模Cobs:加:平移情况    4.3.3 显式建模Cobs:一般情形   4.4 闭运动链    4.4.1 数学概念    4.4.2 R2上的运动链    4.4.3 定义一般连杆组的簇   进一步阅读   习题   实现  第5章 基于采样的运动规划  第6章 组合运动规划  第7章 基本运动规划的扩展  第8章 反馈运动规划 第Ⅲ部分 决策论规划  第9章 基本永生理论  第10章 序贯决策理论  第11章 传感器与信息空间  第12章 存在感测不确定性条件下的规则 第Ⅳ部分 微分约束条件下的规划   第13章 微分模型  第14章 微分约束条件下基于采样的规划  第15章 系统理论与分析技术
OpenTripPlanner (OTP) 提供了一个多模式的路程规划开源平台,用户可以通过OTP 内置的web界面结合步行,自行车和公共的交通工具进行路径查询,同时OTP也提供为第三方程序调用的API接口。官网地址:http://opentripplanner.com/github地址:https://github.com/openplans/OpenTripPlanner其数据源可以通过shapfiles,OSM,GTFS等转化详见https://github.com/openplans/OpenTripPlanner/wiki/GraphBuilder打包好的程序下载地址:http://maps5.trimet.org/otp-dev/otp.zip 使用这个只需转化好地图数据,放到指定文件夹下就能直接使用了详见如下几个教程2 minute introduction5 minute detailed dive-inAvailable web app language translations当然也可以直接下载源码,github上的文档也是非常详细的https://github.com/openplans/OpenTripPlanner/wiki/GettingStartedEclipse下面的是源码中的各个工程:opentripplanner‐api‐extendedweb应用程序可以有选择性的显示一个地图;需要一个地图服务器(geoserver)• opentripplanner‐api‐webapp为trip planning 引擎提供一个REST风格的API• opentripplaner‐geocoder为OTP的地理编码提供一个REST风格的API• opentripplanner‐graph‐builder用于配置和构建trip planner图(命令行工具)• opentripplanner‐webapp为trip planning 引擎提供WEB UI• opentripplanner‐gui为了开发和故障排除的图可视化• opentripplanner‐integration系统集成测试• opentripplanner‐routing 核心路由算法,数据结构和一些库• opentripplanner‐utils编码polylines(shapefile)下面的是我用OSM-北京作为数据源部署的程序在其他程序中调用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Travis.X

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值