[运动规划算法]基于似然场的快速避障算法

2024-04-21 18:18

本文主要是介绍[运动规划算法]基于似然场的快速避障算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、简介
  • 二、原理
    • 1. 问题描述
    • 2. 概率模型
    • 3. 局部概率
    • 4. 全局概率
    • 5. 方法实现
  • 三、项目演示
  • 参考


一、简介

这是一种在复杂环境中实现快速自主飞行的规划方法。通常,在复杂环境中进行自主导航需要在栅格地图上进行连续搜索,但是导航过程中通过传感器数据来对图进行更新的计算代价是昂贵的,路径规划也是一样,特别是要求搜索出的路径必须是运动学上可行的。我们建议尽量避免在线搜索来减少计算的复杂度。

首先,要对环境进行建模,使障碍物在传感器探测范围内确定性已知,传感器范围以外概率已知,该方法并非寻找代价最低的路径,而是最大化确定能成功导航到下一个目标的可能性。

该方法支持使用或者不使用先验地图的两种配置。两种配置均可用于运动规划。后者可以允许设定特定目标点或者人工指引来进行导航。

在实验中,它使轻型无人机能够在复杂的森林环境中以10m/s的速度飞行。


二、原理

1. 问题描述

定义: Q ⊂ R Q⊂R QR表示为车辆的配置空间, A ⊂ Q A⊂Q AQ表示车辆的当前位置, B ⊂ Q B⊂Q BQ表示目标点的位置,起始状态表示 X s X_s Xs,到达目标点B的概率表示为 P B ( . ) P_B(.) PB(.)

整个规划问题可以描述为:
给定 A 、 B ∈ Q A、B∈ Q ABQ S ⊂ Q S ⊂ Q SQ及在 Q Q Q中的障碍物,通过初始状态 X s X_s Xs来最大化概率 P B ( X s ) P_B(X_s) PB(Xs)
在这里插入图片描述


2. 概率模型

根据问题定义中所述,传感器范围 S S S内的障碍物被确定认为是已知的。如果有地图可用,则S以外的障碍物被认为是概率已知的。否则,则认为是没有先验障碍。

S S S表示为灰色区域。 F ⊂ S F ⊂ S FS为传感器边界(红色实线表示)。给定初始状态 X s X_s Xs,A和B点连接的路径为黑色曲线。对于所有可能的路径,它们必定与 F F F相交。

定义车辆通过F时的状态为 X f X_f Xf。给定为 X f X_f Xf P ( X F ∣ X s ) P (X_F | X_s) P(XFXs)的条件分布可以从传感器提供的障碍信息中得出。此外,可以从先验地图上的障碍物获得车辆从 X f X_f Xf到达B的概率密度 ρ B ( X f ) \rho B(X_f) ρB(Xf)
在这里插入图片描述

车辆从 X f X_f Xf到达B的概率密度 ρ B ( X f ) \rho B(X_f) ρB(Xf)可以表示为:
在这里插入图片描述
根据蒙特卡洛抽样理论,可以建立:
在这里插入图片描述
合并公式(2)和(3)以及假定n是一个常数可得:
在这里插入图片描述


3. 局部概率

给定了初始状态 X s X_s Xs,车辆可以沿着不同的路径到达传感器边界 F F F
在这里插入图片描述
图中所有路径均由三次样条曲线生成,路径首先在35个方向(水平7个,垂直5个方向)上分割,每个路径又在35个方向上分割。这导致一组中的 3 5 2 35^2 352= 1225条路径。考虑35个路径组,总共有35×1225 = 42,875条路径。
在这里插入图片描述
所有路径是根据车辆运动的约束生成的,组中的所有路径都可视为从 X s X_s Xs F F F的可行路径。 在这里插入图片描述
可以将路径末端的状态视为 X f X_f Xf的样本 ξ i ξ_i ξi, i =1、2、…n ,其中的 X f X_f Xf分布是从 P ( X f ∣ X s ) P(X_f | X_s) P(XfXs)得出的。在导航过程中,障碍物会被传感器遮挡住某些路径。图中给出了一个障碍物示例以及组中相应的无碰撞路径。 定义一个布尔函数表示路径的间隙:
在这里插入图片描述
基于公式(4)可以计算出 P B ( X s ) P_B (X_s) PB(Xs):
在这里插入图片描述
将公式(6)应用于所有的路径组,并选择最高 P B ( X s ) P_B (X_s) PB(Xs) X s ∗ X^*_s Xs来执行控制车辆。


4. 全局概率

环境是以体素网格来表示。与传统体素不同的是,我们的体素同时包含位置和方向信息。

如图(a)所示,基于恒定的角度间隔将体素分为多个方向,以 δ δ δ表示。角度间隔设置了车辆穿过体素的方向。 用 X j k , j , k X^k_j, j,k Xjk,jk∈Z 表示体素的状态,其中 j j j是体素指数, k k k是方向指数。 与 X j k X^k_j Xjk相关的位置被建模在体素内,并且将该方向建模为围绕 X j k X^k_j Xjk方向均匀分布在[− δ / 2 δ / 2 δ/ 2δ/2 δ/2δ/2]内。 从 X j k X^k_j Xjk到达B的概率密度表示为 ρ B ( X j k ) \rho B(X^k_j) ρB(Xjk)
在这里插入图片描述
概率可在相邻体素之间传输。考虑概率是从相邻体素传输到 x j k x^k_j xjk的情况,在左下角表示为 j l j_l jl,在右上角表示为 j r j_r jr θ k θ_k θk为与 x j k x^k_j xjk相关的方向。由于位置被建模是均匀地分布在体素中,因此要传输到 x j k x^k_j xjk的概率来自体素 j l j_l jl j r j_r jr中的灰色区域,分别为体素的 1 − t a n θ k / 2 1 − tan θ_k/2 1tanθk/2 t a n θ k ∕ 2 tan θ_k∕2 tanθk2区域。 这里,灰色区域是通过在 j l j_l jl j r j_r jr中画一条平行于 x j k x^k_j xjk方向的线来确定的,该方向连接了体素j的左下和右上顶点。 从每个灰色区域,从三个相邻方向传输概率概率密度传输定义为:
在这里插入图片描述
在这里插入图片描述
r j r_j rj表示由于障碍而引起的体素 j j j的可穿越性,其中 r j r_j rj = 1表示完全清除, r j r_j rj = 0表示完全闭塞。

w f w_f wf w y w_y wy分别确定对应于向后运动和偏航调整的概率分布。
在这里插入图片描述
三维情况的扩展,与二维情况类似。
概率密度计算为:
在这里插入图片描述
其中:
在这里插入图片描述

w j l , k w^{l,k}_j wjl,k表示 x j l , k x^{l,k}_j xjl,k障碍物的可遍历性。

w p w_p wp表示概率传输 ρ B ( x j ∗ l − 1 , k ) \rho_B(x^{l-1,k}_{j*}) ρB(xjl1,k) ρ B ( x j ∗ l + 1 , k ) \rho_B(x^{l+1,k}_{j*}) ρB(xjl+1,k) ρ B ( x l , k ) \rho_B(x^{l,k}) ρB(xl,k)的转弯权重。

要求在传输过程中不损失任何概率:
在这里插入图片描述
初始化期间,概率密度是均匀分布在包含B的体素中的所有方向上。概率的传播是通过迭代进行的。如图给出了2D环境中传播的概率密度演示。体素越亮表示概率密度越高。
在这里插入图片描述


5. 方法实现

路径组是离线生成的。我们使用传感器覆盖范围 S S S生成体素网格来做碰撞检测。

体素和路径之间的对应关系是预先建立,并存储在邻接表中。在邻接表中,每一行都与一个体素相关联,并由路径的索引组成,这些路径被放置在体素中心的障碍物所遮挡。接着,要考虑车辆半径来计算遮挡。

系统启动后,路径和邻接表将加载到机载电脑中。在线碰撞检测会处理所有感知数据,并根据邻接表标记要遮挡的相应路径。然后,该算法会遍历每组中的所有路径,并基于(6)计来算 P B ( X s ) P_B (X_s) PB(Xs),并选择最高 P B ( X s ) P_B (X_s) PB(Xs)值的路径组。 该算法返回 x ∗ s x^s_* xs
在这里插入图片描述


三、项目演示

差速机器人模型的仿真

[运动规划算法]基于似然场的快速避障算法(1)

加入A*算法作全局规划

[运动规划算法]基于似然场的快速避障算法(2)


参考

【1】Ji Zhang Chen Hu Rushat Gupta Chadha Sanjiv Singh,Falco: Fast likelihood‐based collision avoidance with extension to human‐guided navigation.


这篇关于[运动规划算法]基于似然场的快速避障算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/923745

相关文章

Rust中的Option枚举快速入门教程

《Rust中的Option枚举快速入门教程》Rust中的Option枚举用于表示可能不存在的值,提供了多种方法来处理这些值,避免了空指针异常,文章介绍了Option的定义、常见方法、使用场景以及注意事... 目录引言Option介绍Option的常见方法Option使用场景场景一:函数返回可能不存在的值场景

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

动态规划---打家劫舍

题目: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 思路: 动态规划五部曲: 1.确定dp数组及含义 dp数组是一维数组,dp[i]代表

poj 3974 and hdu 3068 最长回文串的O(n)解法(Manacher算法)

求一段字符串中的最长回文串。 因为数据量比较大,用原来的O(n^2)会爆。 小白上的O(n^2)解法代码:TLE啦~ #include<stdio.h>#include<string.h>const int Maxn = 1000000;char s[Maxn];int main(){char e[] = {"END"};while(scanf("%s", s) != EO

秋招最新大模型算法面试,熬夜都要肝完它

💥大家在面试大模型LLM这个板块的时候,不知道面试完会不会复盘、总结,做笔记的习惯,这份大模型算法岗面试八股笔记也帮助不少人拿到过offer ✨对于面试大模型算法工程师会有一定的帮助,都附有完整答案,熬夜也要看完,祝大家一臂之力 这份《大模型算法工程师面试题》已经上传CSDN,还有完整版的大模型 AI 学习资料,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费