Hybrid A*论文,Practical Search Techniques in Path Planning for Autonomous Driving笔记

2023-05-16

Practical Search Techniques in Path Planning for Autonomous Driving

Code reference here:

  • KTH GitHub repository based on ROS and OMPL

1. Introduction and Related Work

The first step uses a heuristic search in continuous coordinates that guarantees kinematic feasibility of computed trajectories.

The second step uses conjugate gradient (CG) descent to locally improve the quality of the solution, producing a path that is at least locally optimal, but usually attains the global optimum as well.

2. Hybrid-State A* Search

与传统A star只能经过cell的center不同,本方法是可以取到cell的内部或边界点的。但是并不是一个cell中任意一点都能取到(在比较小的分辨率下),由于动力学约束的限制。

搜索空间为 ( x , y , θ ) (x,y,\theta) (x,y,θ)比传统的网格A star多了角度,均为离散量。

虽然这样得到的路径path不一定是最优(minimum cost)的,但是drivable的,而不是传统A star生成的piecewise-linear的形式。

注意(我的想法):A star类算法不同于RRT类采样算法,都不可避免地要面对网格划分这一问题,网格划分地过大,则路径最优性较差,网格划分地过小,则对于一定体积的robot没有意义(无法达到那样的精度,可能是动力学约束或分辨率太低,远小于模型大小);所以分辨率的选择也是问题。

整个hybrid A star过程分为两步,一是Heuristics,二是Analytic Expansion。

Heuristics:

Our search algorithm is guided by two heuristics.

These heuristics do not rely on any properties of hybrid-state A* and are also applicable to other search methods (e.g., discrete A*).

单纯从heuristic searching algorithm而言,不只是用于hybrid a star,也用于其他搜索方法。

启发式搜索的第一阶段使用non-holonomic-without-obstacles,不考虑障碍物的非完整性约束搜索方法(考虑车辆的非完整性约束),从 ( x , y , θ ) (x,y,\theta) (x,y,θ) ( x g , y g . θ g ) (x_g,y_g.\theta_g) (xg,yg.θg)的邻域(因为完全的精确,在离散空间内是无法达到的),完全忽略障碍物,得到最短路径,启发项;

这里有两个问题:

  • 首先是原文并不是这么翻译的,原文为To compute it, we assume a goal state of ( x g , y g , θ g ) = ( 0 , 0 , 0 ) (x_g,y_g,\theta_g)=(0,0,0) (xg,yg,θg)=(0,0,0) and compute the shortest path to the goal from every point ( x , y , θ ) (x,y,\theta) (x,y,θ) in some discretized neighborhood of the goal, assuming complete absence of obstacles. 这样看来的翻译是将goal设为全0,在其离散领域内的所有点寻找到goal的最短路径,尽管翻译是这样,但我暂时看不出这样做有什么意义,留一个TODO
  • 第二个问题是,原文说到We then use a max of the non-holonomic-without-obstacles cost and 2D Euclidean distance as our heuristic;这个cost和2D距离如何在and的情况下,作启发项h?

作者的解释是,这样的做法可以cut off search branches that approach the goal with wrong headings;我觉得使用欧氏距离做启发项的一项,或是comparative是有道理的,尤其是当NHWO项过大的时候,具体还需要看代码,或者继续读,留一个TODO

第二阶段忽略车辆的非完整性约束,采用2-D动态规划,仅使用障碍物地图计算到达目标点的最短距离。

解决U-shape的问题。

Analytic Expansion:

可以理解为,越趋近于goal,在每一个node的下一个child中,会有更大的频率插入无碰撞的Reed-Sheep曲线的check,若为真,停止搜索直接使用RS曲线。

3. Path-Cost Function Using the Voronoi Field

the author define Voronoi field as a field, whose concept comes from potential field and generalized Voronoi field.

文章中定义的Voronoi场来自potential field和Voronoi Diagram两个概念,相当于在GVD上应用了potential的方法。
ρ V ( x , y ) = ( α α + d o ( x , y ) ) ( d V ( x , y ) d O ( x , y ) + d V ( x , y ) ) ( d O − d O m a x ) 2 ( d O m a x ) 2 \rho_V(x,y)=(\frac{\alpha}{\alpha+do(x,y)})(\frac{d_V(x,y)}{d_O(x,y)+d_V(x,y)})\frac{(d_O-d_O^{max})^2}{(d_O^{max})^2} ρV(x,y)=(α+do(x,y)α)(dO(x,y)+dV(x,y)dV(x,y))(dOmax)2(dOdOmax)2
其中:

  • d O d_O dO为到最近obstacle的距离
  • d V d_V dV为到GVD的edge的距离,应该也是最近
  • α \alpha α为一个大于0的常数
  • d O m a x d_O^{max} dOmax作者虽然没有给出解释,但其是一个“安全值”,距离障碍物的距离超出该安全值后,该障碍物在场中的权重 ρ \rho ρ为0

α \alpha α d O d_O dO为大于0的常数,控制falloff rate和Voronoi场的最大影响范围;上式针对的是 d O < d O m a x d_O<d_O^{max} dO<dOmax的情况,如果不符合该情况,则 ρ V ( x , y ) = 0 \rho_V(x,y)=0 ρV(x,y)=0

上式具有如下的性质:

  • 如果 d O > d O m a x d_O>d_O^{max} dO>dOmax,则 ρ V ( x , y ) = 0 \rho_V(x,y)=0 ρV(x,y)=0
  • ρ V ( x , y ) ∈ [ 0 , 1 ] \rho_V(x,y)\in[0,1] ρV(x,y)[0,1],且关于 ( x , y ) (x,y) (x,y)连续
  • ρ V ( x , y ) \rho_V(x,y) ρV(x,y)在obstacle内部达到最大值
  • ρ V ( x , y ) \rho_V(x,y) ρV(x,y)在GVD的edge上达到最小值

使用作者提出的Voronoi field的好处是,没有传统的potential field那么保守,使得一些狭窄的,在原potential field中不能navigate的passage变得navigable,原文如下:

The key advantage of the Voronoi field over a conventional potential fields is the fact that the field value is scaled in proportion to the total available clearance for navigation.

稀疏点云似乎不能被用作规划,但稠密点云如何构建GVD,又如何从GVD构建VF,这是第三部分的关键问题。

这个问题可以从Google和论文代码中找到答案。

所以VD及其衍生的diagram,如果robot沿着或趋向于沿着他们的edge移动,这样的path是clear to obstacles的,但这并不一定是最优(比如时间,距离上),又或者根据GVD的edge扩张方法,或是本文中提到的VF场,来增加可行域的面积,为最优path提供先决条件。

本章节作者完成了VF的定义,从程序上理解为,输入一张map(可能是mat或什么数据格式),输出一张基于此map的VF图,之后的工作就交给planner去做了。

4. Local Optimization and Smoothing

分为两个优化阶段:

  • non-linear optimization on coordinates of the vertices, improves the length and smoothness of the solution
  • non-parametric interpolation, with higher resolution path discretization

given a sequence of vertices x i = ( x i , y i ) , i ∈ [ 1 , N ] x_i=(x_i,y_i),\quad i\in [1,N] xi=(xi,yi),i[1,N]

  • o i \textbf{o}_i oi,距离vertex最近的obstacle的位置
  • Δ x i = x i − x i − 1 \Delta \textbf{x}_i=\textbf{x}_i -\textbf{x}_{i-1} Δxi=xixi1, the displacement vector at the vertex
  • Δ ϕ i \Delta \phi_i Δϕi, the change in the tangential angle at the vertex

and Δ ϕ i \Delta \phi_i Δϕi
Δ ϕ i = ∣ tan ⁡ − 1 Δ y i + 1 Δ x i + 1 − tan ⁡ − 1 Δ y i Δ x i ∣ \Delta \phi_i = | \tan^{-1}\frac{\Delta y_{i+1}}{\Delta x_{i+1}} - \tan^{-1}\frac{\Delta y_i}{\Delta x_i} | Δϕi=tan1Δxi+1Δyi+1tan1ΔxiΔyi
The objective function is
ω ρ ∑ i = 1 N ρ V ( x i , y i ) + ω o ∑ i = 1 N σ o ( ∣ x i − o i ∣ − d m a x ) + ω k ∑ i = 1 N − 1 σ k ( Δ ϕ i ∣ Δ x i ∣ − k m a x ) + ω s ∑ i = 1 N − 1 ( Δ x i + 1 − Δ x i ) 2 \omega_{\rho}\sum_{i=1}^{N}\rho_V(x_i,y_i)+\omega_o\sum_{i=1}^{N}\sigma_o(|\textbf{x}_i-\textbf{o}_i|-d_{max})+\omega_k\sum_{i=1}^{N-1}\sigma_k(\frac{\Delta \phi_i}{|\Delta \textbf{x}_i|}-k_{max})+\omega_s\sum_{i=1}^{N-1}(\Delta \textbf{x}_{i+1}-\Delta \textbf{x}_i)^2 ωρi=1NρV(xi,yi)+ωoi=1Nσo(xioidmax)+ωki=1N1σk(∣ΔxiΔϕikmax)+ωsi=1N1(Δxi+1Δxi)2

  • ρ V \rho_V ρV is Voronoi field, defined in part3
  • k m a x k_{max} kmax is the maximum allowable curvature of the path (defined by turning radius of the car)
  • σ o \sigma_o σo and σ k \sigma_k σk are penalty functions (empirically, simple quadratic penalties can work well)
  • ω \omega ω are weights

and for each items

  • The first term of the cost function effectively guides the robot away from obstacles in both narrow and wide passages.
  • The second term penalizes collisions with obstacles.
  • The third term upper-bounds the instantaneous curvature of the trajectory at every node and enforces the non-holonomic constraints of the vehicle.
  • The fourth term is a measure of the smoothness of the path.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hybrid A*论文,Practical Search Techniques in Path Planning for Autonomous Driving笔记 的相关文章

  • .NET Core 中 Path.TryJoin 相对于 Path.Combine 有什么优势?

    我刚刚开始使用 NET Core 2 1 发现Path TryJoin https learn microsoft com en us dotnet api system io path tryjoin view netcore 2 1 a
  • Ruby 有 mkdir -p 吗? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在 ruby 中递归创建目录 https stackoverflow com questions 3686032 how to create directories recursively in
  • PHP is_file 和服务器根相对路径

    请问如何使用 is file 和 folder file jpg 这样的路径 谢谢你 如果路径以 开头 则表示该路径是绝对路径 当路径是相对路径时 即不以 开头 则采用相对于 php 脚本的路径 如果您希望 folder file jpg
  • 如何实现 IFilter 来索引重量级格式?

    我需要为 Microsoft Search Server 2008 开发一个 IFilter 它执行长时间的计算来提取文本 从一个文件中提取文本可能需要 5 秒到 12 小时 我如何设计这样的 IFilter 以便守护进程不会在超时时重置它
  • 如何搜索 Google 电子表格?

    我正在进行一些详尽的搜索 需要确定电子表格中是否已存在新域 URL 然而 所有 Spreadsheet 对象都没有搜索功能 即大多数 Document 对象中的 findText 功能 我觉得我错过了一些重要的事情 我缺少什么 查找文本函数
  • Windows 终端中的图标和背景图像字段无法识别父进程目录

    Windows 终端版本 1 12 10732 0 Windows 内部版本号 19043 1645 Issue 如果这个问题已经在其他地方得到解决 请原谅我 但我意识到当Use parent process directory被检查 Co
  • Emacs:结合 isearch-forward 和 center-top-bottom

    预先非常感谢您的帮助 在 Emacs 中 我喜欢使用 iseach forward C s 但如果突出显示的字体单词位于屏幕中间而不是最底部的中心 我会更喜欢它 我发现自己不断地这样做 C s foo C s C s C s 哦 这就是我一
  • 如何为高流量网络应用程序实现“保存搜索”功能?

    我想知道可以在 eBay 等大型网络应用程序上找到的 保存的搜索 功能 您可以做的就是保存搜索 例如 宾得镜头 50mm 1 4 每当有人出售符合搜索条件的新优质标准快速宾得镜头时 您都会收到通知 对我来说 实现此类功能并不是一件简单的事情
  • Lucene 评分:在什么情况下使用 queryNorm?

    我对 lucene 的评分策略有点困惑 我知道Lucene的评分公式是这样的 score q d coord q d x queryNorm q X SUM
  • $PATH 中 /usr/bin 和 /usr/local/bin 等的顺序

    在我的 Mac 上 我经常使用 bash 对于我的环境设置 我添加了 usr bin and usr local bin into PATH就像我平常做的那样 虽然我知道什么 usr bin and usr local bin关于 我很好奇
  • 将绝对路径和相对路径组合起来得到新的绝对路径

    我正在编写一个程序 其中一个组件必须能够采用给定的路径 例如 help index html or help 和基于该位置的相对路径 例如 otherpage index html or sub dir of help or help2 h
  • H2数据库排序规则:选择什么?

    经过大量阅读和实验后 似乎我想要主要的搜索强度 但第三或相同的排序强度 主要问题 用 H2 或任何其他数据库 可以实现吗 第二个问题 我是这里唯一的人吗 或者你们中有人也喜欢上述组合吗 一些确认会对我的理智有所帮助 背景 看来排序规则只能在
  • 自定义“可搜索”搜索字段 SwiftUI iOS 15

    When using the new searchable modifier in SwiftUI on iOS 15 I have no way to customize the Search Bar appearance Specifi
  • 如何使用 django 过滤器 icontains 获取多个字段

    我正在尝试将查询搜索与所有模型字段进行比较 但我不知道如何在多个字段中执行此操作 这是我的代码 expense Expense objects filter user request user id order by date q requ
  • 如何在 Windows 10 中将文件夹添加到“Path”环境变量(带有屏幕截图)

    在 StackOverflow 和整个网络上 关于如何将特定文件夹添加到 Windows 10 的指南已经过时且很少Path用户的环境变量 我认为针对新开发人员的完整指南 包含分步说明和屏幕截图 对于帮助他们从命令提示符 https upl
  • 使用 Ansible 将二进制文件添加到 PATH

    我正在尝试安装Kiex https github com taylor kiex版本管理器Elixir http elixir lang org install html使用 Ansible 的编程语言 这些是我为此使用的戏剧 name K
  • 无法在 Windows 10 上更新 pip 的 PATH 变量

    我知道有数千个类似的主题 但我的 pip 命令突然停止工作 尽管我进行了所有研究 但我无法弄清楚原因 自从我上次使用 pip 以来已经有一段时间了 令人惊讶的是我的计算机不再识别该命令 我重新安装了pip 提示告诉我PATH变量没有正确更新
  • 使用 -T 开关运行时 $ENV{ENV} 不安全

    当我尝试最后一个例子时perlfaq5 如何计算文件中的行数 http perldoc perl org perlfaq5 html How do I count the number of lines in a file 我收到一条错误消
  • 将构建参数传递给 .wxs 文件以动态构建 wix 安装程序

    我是一名学生开发人员 我已经为我现在工作的公司构建了几个安装程序 所以我对WIX还是比较熟悉的 我们最近决定拥有一个构建服务器来自动构建我们的解决方案 它构建调试和发布以及混淆 和非混淆 项目 你真的不需要理解这些 您需要了解的是 我有相同
  • 以编程方式在 App Store 上运行搜索?

    是否可以从我的应用程序中打开 App Store 应用程序并运行搜索 我想看看是否有一个 appstore 类型的 URL 可以使用 就像 mailto 和 sms 分别打开邮件和短信一样 有谁知道这是否可能 编辑 更多信息 我一直在尝试使

随机推荐