轨迹规划综述

概述

轨迹规划的任务是计算出一个无碰撞可执行的轨迹(包含路径和速度信息),保证车辆从起点安全的驾驶到目的地,并尽可能高效。其问题的本质是一个多目标的数学优化问题。

优化目标

主要的优化目标包括:
安全性:避免与场景中的障碍物发生碰撞;针对动态障碍物,由于其未来运动的不确定性,降低其未来的碰撞风险;
稳定性:由于车辆的惯性较大,灵活性差,期望轨迹需要保证车辆的物理可行性和控制器的稳定性;
舒适性:考虑到乘员的舒适性,需要在满足安全性和稳定性的同时保证车辆的驾驶舒适度,包括加减速以及转向等过程;
驾驶效率:在满足安全性和稳定性的同时,保证车辆以更快的速度驾驶,从而更短的时间到达目的地。

在实际场景中,规划过程需要考虑各种物理约束,有且不限于:
加减速度约束:受到动力系统和制动系统的性能极限,及驾驶员的安全性和舒适性的制约;
非完整性约束:车辆具有三个运动自由度,但是只有两个控制自由度,其非完整性约束决定了轨迹的物理可行性;
动力学约束:考虑到车辆的动力学特性和车身稳定性,其驾驶过程中的曲率和横摆角速度具有一定的约束;

用到的算法

2.1 基于图搜索的算法:Dijkstra、A*、D*(全局路径规划)
2.2 基于曲线拟合的算法:圆弧与直线、多项式曲线、样条曲线、贝塞尔曲线、微分平坦(局部路径规划)
2.3 基于数值优化的算法:利用目标函数和约束对规划问题进行描述和求解(局部路径规划)
2.4 基于人工势场的算法:人工势场法(全局路径规划)
2.5 基于采样的算法:RRT(全局路径规划)
2.6 基于智能法的算法:模糊逻辑、神经网络、遗传算法(略)

Dijkstra

Dijkstra算法是广度优先算法,是一种发散式的搜索,Dijkstra算法的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。迪杰斯特拉算法的成功率是最高的,因为它每次必能搜索到最优路径。但迪杰斯特拉算法的搜索速度是最慢的:随着图维度的增大,其计算效率会明显变低

A*

在这里插入图片描述
基本步骤:

把起点加入 open list 。
重复如下过程:
a ) 遍历 open list ,查找 F 值最小的节点移到 close list ,把它作为当前要处理的节点。
b ) 判断当前方格的 8 个相邻方格的每一个方格,若为unreachalbe或者已在 close list 中则忽略。否则做如下操作。
c ) 如果它不在 open list 中,把它加入 open list ,并且把当前方格设置为它的父亲,记录该方格的 F , G 和 H 值。
d ) 如果它已经在 open list 中,检查这条路径 ( 即经由当前方格到达它那里 ) 是否更好,用 G 值作参考。更小的 G 值表示这是更好的路径。如果是这样,把它的父亲设置为当前方格,并重新计算它的 G 和 F 值。

A*他是导航的基础算法(如百度地图):

规划的第一步是路线导航。侧重于研究如何从地图上的A点前往B点:如手机导航系统。Apollo中通过路线规划模块处理该任务。
规划的第二步是:在路线规划的基础上进行轨迹规划。该轨迹由一系列点定义,每个点都有一个关联速度和一个指示何时应抵达那个点的时间戳。Apollo通过规划模块处理该任务。
路线规划的目标是,找到从地图上的A前往B的最佳路径。轨迹规划的目标是找到避免碰撞和保持舒适度的可执行轨迹。
下图形由“节点”(node)和“边缘”(edge)组成。节点代表路段,边缘代表这些路段之间的连接。例如:在交叉路口,汽车可从节点1移动到节点2、节点3或节点4,反之亦然。
我们可以对一个节点移动到另一个节点所需的成本进行建模。例如在现实生活中,拐过一个交叉路口比直行更费劲,所以从节点1到节点4的成本高于从节点1到节点3的成本.

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值