七、动作规划

7.1、动作规划的任务以及基本概念

规划控制的基本任务就是在感知到周围环境的基础上,结合无人车的目的地和当前位置对于车辆做出最合理的决策、规划和控制。整个决策规划控制软件系统按照解决问题的不同层面,从上至下可以分为全局路径规划、行为决策、动作规划、动作控制。

在动作控制模块,我们需要在遵循道路交通规则的前提下,将自动驾驶车辆从当前位置导航到目的地。

动作规划的本质,是在车辆给定状态给定环境下,寻找到一条最优路径,使车辆移动到目标点。所谓的最优,不仅需要考虑到行驶距离,还要考虑道路上其他车辆、舒适性以及安全性。

在介绍常见的规划器之前,首先介绍规划器的一些属性,如图所示

在这里插入图片描述

我们一般从以下几个维度来判断规划器的优劣程度

(1)完备性,即是不是在任何情况下都能找到一个从起点到终点的路径,它又分为概率完备性和决策完备性;

完备性:完备性指如果在起点和终点之间有路径存在,规划器一定能求出一个解,如果求不出解,则说明起点和终点之间不存在路径;

概率完备性:概率完备性指只要起点与终点之间有路径存在,只要规划或者搜索的时间足够长,就一定有路径解;

决策完备性:决策完备性指只要有最优路径存在,通过一定的时间,就一定能找到最优解;

(2)效率,即完成规划计算的快慢程度;

一般使用大O表示法来反映算法的效率;

(3)最优性,即规划出来的路径是不是最优的;

(4)复杂度,即这个方法能不能求解一个复杂的问题;

(5)最后是规划器在不同的约束下的表现,其中包括路径的约束和运动的约束;

7.2、基于采样的路径规划

7.2.1 RRT算法

RRT 算法全称为Rapid-exploration Random Tree,即快速搜索随机树法,是一种基于采样的路径规划方法,在多维空间中搜索效率不低。算法在初始时随机树只包含路径起点,以其作为随机树的根节点,通过随机采样不断产生新的节点,各节点相互连接形成一棵向外扩展的随机树,当目标点也被划入随机树中则搜索路径成功。

RRT算法的流程图如下所示:

在这里插入图片描述

根据流程图可知 RRT 算法具体步骤如下:

(1)当算法初始化时,随机树内只有根节点 Q i n i t Q_{init} Qinit,也就是路径规划的起点,算法开始对随机树进行扩展,得到第一个随机采样点 Q r a n d Q_{rand} Qrand

(2)如下图所示,通过计算随机树中每个节点到 Q r a n d Q_{rand} Qrand的欧氏距离,从随机树中选择距离 Q r a n d Q_{rand} Qrand最近的节点 Q n e a r e s t Q_{nearest} Qnearest

(3)从最近点 Q n e a r e s t Q_{nearest} Qnearest向随机点 Q r a n d Q_{rand} Qrand方向生长一段距离,得到新节点 Q n e w Q_{new} Qnew。如果 Q n e w Q_{new} Qnew的生长过程与状态空间中的障碍物无任何碰撞,则将其加入随机树中,否则放弃此次生长;

(4)重复进行随机采样,随机树不断加入新的节点,直到某一次得到的新节点是目标点Qgoa或与其距离小于提前设定的阈值,则说明随机树已生长到目标点位置,并将其也加入到随机树中;

(5)从目标点 Q g o a l Q_{goal} Qgoal反推回起点 Q i n i t Q_{init} Qinit,无需搜索便可得到无障碍路径。

在这里插入图片描述

RRT 算法优势在于:

(1)算法结构简单,搜索域适应性较广,随机采样将搜索导向空白区域,避免了对空间的建模过程,且搜索路径具有概率完备性;

(2)在考虑微分约束而容易产生多维度问题的情况下,不会出现基于几何构造等传统常规算法易出现的维度灾难问题,可直接应用于非完整约束和多自由度机器人的运动规划中;

(3)得到的由多个分段曲线组成的路径,完全符合移动机器人等系统受到的非完整微分约束,可被其直接跟踪。

而RRT算法缺陷如下:

(1)路径规划结果具有随机性,得到的路径不一定是最优路径,且往往棱角分明,不够平滑,若应用于无人驾驶汽车则会造成车辆航向角突变角度较大,不满足车辆运动学约束;

(2)算法缺乏导向性,当状态空间中狭窄通道较多时,较难找到出路,导致局部节点数量增加,路径搜索效率降低。

7.2.2 RRTstar算法

RRTstar算法针对RRT算法路径非最优这一问题,在其基础上进行改进,不断调整随机树的结构,使得当前结构为最优,随着算法不断的迭代,最后得到的路径也为最优路径,这是一个渐进最优的过程。

RRTstar算法之所以能够得到最优路径,是因为该算法在不断获得新节点的同时会为其更新代价更小的节点作为父节点,比RRT算法多了一个重新连接构造随机树(rewire)的过程。算法主要思路为:得到的节点 Q n e a r e s t Q_{nearest} Qnearest Q n e w Q_{new} Qnew并不会直接连接,而是在局部进行优化处理,当有更优路径时, Q n e w Q_{new} Qnew会重新选择父节点,随机树的结构也会发生改变。具体步骤如下:

(1)初始步骤和RRT 算法一样,当得到一个节点 Q n e w Q_{new} Qnew且通过碰撞检测后,以 Q n e w Q_{new} Qnew为圆心,在半径为R的范围内找到若干个 Q n e a r Q_{near} Qnear

(2)分别计算 Q n e a r Q_{near} Qnear到起始点 Q i n i t Q_{init} Qinit的距离以及 Q n e a r Q_{near} Qnear Q n e w Q_{new} Qnew的距离,并相加,此距离即为 Q n e w Q_{new} Qnew经过重新找到的 Q n e a r Q_{near} Qnear后到达起点的代价 C C C,代价最小值为 C m i n C_{min} Cmin,该 Q n e a r Q_{near} Qnear记为 Q m i n Q_{min} Qmin

(3)若 C m i n C_{min} Cmin小于 Q n e w Q_{new} Qnew经过原本父节点 Q n e a r e s t Q_{nearest} Qnearest后到达 Q i n i t Q_{init} Qinit的代价时,则更换 Q n e w Q_{new} Qnew的父节点为 Q m i n Q_{min} Qmin,连接 Q n e w Q_{new} Qnew Q m i n Q_{min} Qmin

(4)在 Q n e w Q_{new} Qnew重新选择父节点后,对范围内其他 Q n e a r Q_{near} Qnear包括之前的父节点 Q n e a r e s t Q_{nearest} Qnearest进行重新检查,假设 Q n e w Q_{new} Qnew为它们的父节点,计算该节点经过 Q n e w Q_new Qnew后到达起点的代价 C n e w C_{new} Cnew,并与原本代价 C o l d C_{old} Cold进行比较,若 C n e w < C o l d C_{new}<C_{old} Cnew<Cold,则将 Q n e w Q_{new} Qnew作为它们的父节点,并重新构造随机树,反之不变。

RRTstar算法的改进方向主要包含选择代价更小的父节点和重新构造随机树两部分,两者互相配合,在使新节点 Q n e w Q_{new} Qnew构成的路径代价尽可能小的同时,减少随机树的冗余通路,所以最后得到的路径是最优路径,这既是 RRTstar算法的优势,也造成了其不可避免的问题,即并不是每一次重构的节点都与路径相关,过多无用迭代导致算法搜索时间变长,效率大幅度降低。

7.2.3 RRT碰撞检测

RRT算法中最复杂的一步就是碰撞检测,关于RRT的碰撞检测,可以参考博文RRT与碰撞检测Atarasin的博客-CSDN博客rrt碰撞检测

7.3、Lattice planner

看着篇就挺好

Lattice Planner规划算法原理 - 知乎 (zhihu.com)

7.4 结语

随后两节课的内容是决策以及全局路径规划的部分,决策部分只是讲了框架,理论的部分很少,而全局路径规划部分介绍了A_star以及Dijkstra两种全局寻径算法,以前也学过了,所以这两节就不记录。

这一段的学习就此结束,下一阶段主要还是把仿真环境搭建起来,学习一些开源框架以及验证算法。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
针对本文所研制的走 自 由度机械臂 , 设计 一种基于 CAN 总线通讯 的控 制系 统 。 通   过 D enav i t-Har tenber g 参数法构建机械臂的数学模型 , 推导正运动学 公式 , 设计基于牛   顿迭代法 的逆解算法 , 解决逆运动学 的数值解法多解性 问题 , 获取最优解 。 在此基础 上 ,   在 关节 空 间设计 了 H次插值和五 次插值算法进行路径规划 , 实现对机械臂 的 点到 点 的运   动控制 ; 在 笛卡 尔空 间 , 设计空间直 线轨迹和空 间 圆 弧轨迹规划算法 , 实现机械臂直线   和 圆弧运动 。 设计机械臂控制 系统 的硬件框架 , 包括微处理器系 统 电 路和传 感器模块 电   路 设计 、 通讯总线与各元器件 的选型 。 编 写机械臂控制 软件 , 包括 P ID 控制器 、 人机交   互软件和下位机角 度获取 模块程序 , 制 定系统 通信协议 , 实现用 户对机械臂的各种操作   和 设置 。  为验证古 自 由 度机械臂控制系统 的性能满足设计要求 , 进行试验 I 第 一 , 验证基于   牛顿迭代法的逆解算法的准确性 , 对机械臂 逆解结果进行分析测试 。 第 二 , 在机械臂 安   装过程中 , 需要对安装的 部件进巧测试 , W确 保安装部件可 W 正常工作 , 当单个关节安   装完毕时也需 要进巧测 试 , 保证每安装新 的关节之前系 统是正常 的 。 第 H , 对机械臂各   关节尺寸进行标定实验 , 计算机械臂建模所 需要 的 关节参数 , 为后续 的误差优化处理做   准 备 。 第 四 , 实现用 户 通过软件准确地控制机械臂 , 对系统 的通讯进行 测试 , 计算 总线   负 载率 , 保证各 关节可 W正常 通讯 ; 对控制 界面 的各功 能测 试 , 保证毎个按键实现其对   应 功 能 。 第五 , 系 统测试保证机械臂可 W完成用 户 指 定动作 , 设计多种 动作 , 测试机械   臂是否可 W 完成指 定动作 。 第六 , 测试机械臂的精度和误差 , 设计机械臂运动 路径点 的 坐 标 , 测 量实际坐标系所经过 点 的坐标 , 分析计 算误差 。
基于frenet优化轨迹的无人车动作规划是一种先进的技术,通过使用Frenet坐标系来描述车辆在道路上的运动状态和路径规划。这种方法可以有效解决传统笛卡尔坐标系下的规划难题,例如避免路径交叉和处理曲率连续性等。 在这个实例中,我们考虑一个无人车需要在某个城市的道路网络中规划行驶路径。首先,采集并处理城市道路的地理数据,包括道路几何形状、交叉口信息和限速等。然后,将这些数据转换到Frenet坐标系下。 接下来,我们需要定义目标和约束条件。目标可能包括最短路径、最小车辆启停次数以及最大速度等。约束条件可以包括遵守交通规则、不与其他车辆碰撞、安全跟随前车等。 在进行路径规划时,我们需要考虑车辆的状态和环境信息。通过车辆传感器获取车辆当前位置、速度、加速度以及周围环境的感知信息。然后,算法会根据这些信息,结合车辆运动学模型,计算出车辆在接下来的时间段内的最优动作,例如加速度、转向角度等。 为了获得最优解,我们可以使用优化算法,例如动态规划、模型预测控制或强化学习等。这些算法会在考虑目标和约束条件的基础上,通过迭代求解来得到最优路径和动作。 在规划完成后,无人车便可以按照规划出的路径和动作进行行驶。同时,无人车还需不断更新环境感知信息,并根据实时的状态调整路径规划动作控制。 通过基于Frenet优化轨迹的无人车动作规划,我们可以实现高效、安全和自主的无人车行驶。这种方法在城市交通管理、自动驾驶技术以及智能交通系统方面具有广阔应用前景。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值