【笔记:3D航路规划算法】一、随机搜索锚点(python实现,讲解思路)

news2024/11/23 7:52:31

目录

  • 关键概念
  • 3D路径规划算法
    • 1. A*算法
    • 2. 快速随机锚点
      • 1. 初始化:
      • 2. 实例化搜索算法:
      • 3. 路径生成:
      • 4. 绘制图像:

3D路径规划是在三维空间中寻找从起点到终点的最短或最优路径的一种技术。它广泛应用于无人机导航、机器人运动规划、虚拟现实等领域

关键概念

  1. 节点和网格

    • 在3D路径规划中,节点表示三维空间中的位置,通常用(x, y, z)坐标表示。
    • 网格是将三维空间离散化的方式,可以是规则的立方体网格或其他形式的分区。
  2. 代价函数

    • 代价函数用于评估从一个节点移动到另一个节点的代价,通常包括距离和可能的障碍物影响。
    • 常见的距离度量包括欧几里得距离、曼哈顿距离等。
  3. 启发式函数

    • 启发式函数用于估计当前节点到目标节点的代价,在A*算法中非常重要。
    • 例如,三维欧几里得距离可以用作启发式函数。
  4. 障碍物

    • 障碍物表示在三维空间中不可通过的区域。
    • 在路径规划中需要检测和避开这些区域。

3D路径规划算法

1. A*算法

A算法是最常用的路径规划算法之一,它结合了启发式搜索和实际代价来找到最优路径。以下是A算法在3D空间中的步骤:

  1. 初始化

    • 创建起点节点和终点节点。
    • 将起点节点添加到开放集合(open set)中。
  2. 搜索过程

    • 从开放集合中取出代价最小的节点。
    • 生成当前节点的所有邻居节点。
    • 对每个邻居节点进行评估,如果节点在障碍物中,跳过该节点。
    • 如果邻居节点是终点节点,记录路径并结束搜索。
    • 否则,计算邻居节点的代价,并将其添加到开放集合中。
  3. 路径构建

    • 从终点节点开始回溯到起点节点,构建最终路径。

2. 快速随机锚点

随机锚点是一种适用于高维空间的路径规划算法,通过随机采样和锚点的扩展找到路径。

1. 初始化:

创建一个搜索空间

space_size = np.array([(0, 1000), (0, 1000), (0, 1000)])  # 搜索空间的维度
Z = search_tree(space_size)

生成若干障碍物,这里均为长方体,简单一点可以构建2个顶点就可以制作好障碍物
还需要输入起始位置和目标位置,不能让这两点在障碍物中

n = 100 # n个障碍物
z_start = (0, 0, 0)  # 起始位置
z_end = (1000, 1000, 1000)  # 目标位置
Cuboid = generate_random_cuboid(Z, z_start, z_end, n)

2. 实例化搜索算法:

q = 50  # 在路径规划过程中,每次扩展时,新的节点之间的最大距离。这个距离越大,扩展速度越快,但可能会导致不够精细的路径
r = 1  # 检测新生成的路径是否与障碍物相交的最小边长度。如果新生成的边长度小于 r,则需要检查该边是否与障碍物相交
max_explore = 512  # 在路径规划过程中最多允许采样的次数。如果达到这个次数还没有找到有效路径,则算法会超时
p = 0.5  # 检查连接到目标的概率。在每次扩展时,有一定的概率直接尝试将新节点连接到目标位置。这个概率值越大,算法越倾向于直接尝试连接到目标,而不是继续随机扩展。
xxx = XXX(Z, q, z_start, z_end, max_explore, r, p)

3. 路径生成:

  • 将起点添加到空间中
  • 开始循环
    • 随机生成一个锚点
    • 找到随机锚点距离最近的空间节点(一开始就是起点)
    • 找到随机锚点和空间节点,距离为空间节点q的一个点
    • 检查锚点是否在长方体内,如果不在则返回
    • 判断锚点和空间节点的边是否在障碍物内,若不在,则相连
    • 根据检测概率p检查当前新锚点是否可以连接到目标,如果可以则视为成功推出循环
  • 从终点反推起点生成路径

4. 绘制图像:

在这里插入图片描述
可旋转探索效果展示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1937270.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于垂直领域大模型的探索和尝试

节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对大模型技术趋势、算法项目落地经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。 总结链接如…

SpringCloud—08—高级之SpringCloud Alibaba中—Sentinel

文章目录 提前预知18、Sentinel是什么?18.1、sentinel是什么?18.2、Sentinel下载安装运行18.3、Sentinel初始化监控18.4、Sentinel流控规则1、流控规则基本介绍2、流控规则之-QPS-直接-快速失败3、流控规则之-线程数-直接失败4、流控规则之-QPS-关联-快速…

实战篇(十):使用Processing创建可爱花朵:实现随机位置、大小和颜色的花朵

使用Processing创建可爱花朵 0.效果预览1. 引言2. 设置Processing环境3. 创建花朵类4. 实现花瓣绘制5. 绘制可爱的笑脸6. 鼠标点击生成花朵7. 完整代码8. 总结与扩展0.效果预览 在本教程中,我们将使用Processing编程语言来创建一个可爱的花朵生成器。通过封装花朵为一个类,并…

git教程, 命令行版

前言 git就是代码版本管理系统,很简单的作用就是每一次commit之后,修改文件都是跟上一次commit的仓库文件做对比,也可以调出历史的文件查看某次commit修改了什么东西 0环境准备: 安装git, 百度一下,然后打开cmd&…

教室管理系统的开发与实现(Java+MySQL)

引言 教室管理系统是学校和培训机构日常运营中不可或缺的工具。本文将介绍如何使用Java、Swing GUI、MySQL和JDBC开发一个简单而有效的教室管理系统,并涵盖系统的登录认证、教室管理、查询、启用、暂停和排课管理功能。 技术栈介绍 Java:作为主要编程…

[数据集][目标检测]导盲犬拐杖检测数据集VOC+YOLO格式4635张2类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):4635 标注数量(xml文件个数):4635 标注数量(txt文件个数):4635 标注…

base SAS programming学习笔记(read raw files3)

使用LIST INPUT 来读入位置不固定的外部文件&#xff0c;如下所示&#xff1a; 1.LIST input格式 INPUT variable <$> :$符合表示字符&#xff0c;variable是读入的变量名&#xff1b;默认的数值和字符长度为8&#xff1b;可以使用length 语句为字符变量设置长度&#xf…

学习测试10-1自动化 python基础

下载python 要配置环境变量 进入Python的官方下载页面 http://www.python.org/download/安装PyCharm工具&#xff0c;网上可以下载&#xff0c;很多资源&#xff0c;也有免安装的版本&#xff0c;在网上找激活码 链接: https://pan.baidu.com/s/1Y6S_n3KbnjOdE9EDZ5nixw?pwdd…

使用Windows Linux 子系统安装 Tensorflow,并使用GPU环境

在Microsoft Store商店安装Ubuntu 20.04 使用 nvidia-smi 命令查看GPU信息&#xff0c;查看支持的CUDA版本&#xff0c;这里最高支持11.7 安装cuda工具集 进入官网&#xff1a;CUDA Toolkit Archive | NVIDIA Developer&#xff0c;现在对应版本&#xff0c;点击 配置平台&…

走进数组的奇妙之旅(1)

引言&#xff1a; 在前几篇文章中&#xff0c;我们深入探讨了函数的奥秘。在讲述函数知识的过程中&#xff0c;我们邂逅了一个新的概念&#xff0c;你或许还记得在演示 strcpy函数时&#xff0c;出现的这行代码&#xff1a;char1[20]{0};。当时&#xff0c;你是否感到好奇&…

前端组件化实践:Vue自定义加载Loading组件的设计与实现

摘要 随着前端技术的飞速发展&#xff0c;组件化开发已成为提高开发效率、降低维护成本的重要方法。本文介绍了前端Vue自定义加载Loading组件的设计思路与实现过程&#xff0c;该组件通过设置gif动画实现加载效果&#xff0c;可广泛应用于页面请求加载场景。通过该组件的实践&…

银行业务知识全篇(财务知识、金融业务知识)

第一部分 零售业务 1.1 储蓄业务 4 1.1.1 普通活期储蓄(本外币) 4 1.1.2 定期储蓄(本外币) 5 1.1.3 活期一本通 9 1.1.4 定期一本通 10 1.1.5 电话银行 11 1.1.6 个人支票 11 1.1.7 通信存款 13 1.1.8 其他业务规…

解决AI训练中的“Convergence Warning”报错:提高模型稳定性 ️‍♂️

解决AI训练中的“Convergence Warning”报错&#xff1a;提高模型稳定性 &#x1f3cb;️‍♂️ 解决AI训练中的“Convergence Warning”报错&#xff1a;提高模型稳定性 &#x1f3cb;️‍♂️摘要引言“Convergence Warning”报错的成因分析 &#x1f914;1. 学习率设置不当2…

昇思学习打卡-23-生成式/CycleGAN图像风格迁移互换

文章目录 模型介绍网络结构数据集可视化网络的其他细节模型推理 模型介绍 CycleGAN(Cycle Generative Adversarial Network) 即循环对抗生成网络&#xff0c;实现了一种在没有配对示例的情况下学习将图像从源域 X 转换到目标域 Y 的方法。 该模型一个重要应用领域是域迁移(Do…

VMware中Ubuntu磁盘空间的清理

最近发现Ubuntu占用空间过大&#xff0c;在网上找了一些方法&#xff0c;在这里总结一下。 1.删除快照 把不需要的快照删除&#xff0c;但要注意删除快照可能会影响到后续的快照链。每个快照依赖于前面的快照。如果删除一个中间快照&#xff0c;虚拟机可能无法找到完整的差异…

谷粒商城实战笔记-36-前端基础-Vue-介绍HelloWorld

文章目录 一&#xff0c;MVVM 思想直接操作DOM的示例使用Vue和MVVM的示例MVVM与DOM操作的主要区别 二&#xff0c;Vue 简介三&#xff0c;第一个Vue项目1 新建项目2 安装依赖3 使用Vue 这一节的主要内容是演示Vue的简单使用。 一&#xff0c;MVVM 思想 M&#xff1a;即 Model…

基础vrrp(虚拟路由冗余协议)

一、VRRP 虚拟路由冗余协议 比如交换机上联两个路由器&#xff0c;由两个路由虚拟出一台设备设置终端设备的网关地址&#xff0c;两台物理路由的关系是主从关系&#xff0c;可以设置自动抢占。终端设备的网关是虚拟设备的ip地址&#xff0c;这样&#xff0c;如果有一台路由设备…

c++模板初识

目录 一、 泛型编程 二、 函数模板 1.函数模板概念 2.函数模板格式 3.函数模板的原理 4.函数模板的实例化 1. 隐式实例化&#xff1a;让编译器根据实参推演模板参数的实际类型 2.显式实例化&#xff1a;在函数名后的<>中指定模板参数的实际类型 5.模板参数的…

万物互联时代,手机丢了我们该怎么办?

万物互联时代&#xff0c;我们的手机丢了该怎么办&#xff1f;全身家当都在一部手机里&#xff0c;这个时候我们更要冷静&#xff0c;然后先尝试着打电话、发短信、定位找手机。 如果实在找不到的话&#xff0c;先借个电话号码把以下四件事给做好&#xff1a; ①挂失手机号&am…

《昇思25天学习打卡营第21天|Pix2Pix实现图像转换》

Pix2Pix 是一种图像转换模型&#xff0c;使用条件生成对抗网络&#xff08;Conditional Generative Adversarial Networks&#xff0c;cGANs&#xff09;实现图像到图像的转换。它主要由生成器&#xff08;Generator&#xff09;和判别器&#xff08;Discriminator&#xff09;…