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

目录

  • 关键概念
  • 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.mzph.cn/diannao/48239.shtml

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

相关文章

蓝牙新篇章:WebKit的Web Bluetooth API深度解析

蓝牙新篇章:WebKit的Web Bluetooth API深度解析 在物联网(IoT)时代,Web应用与物理设备的交互变得越来越重要。WebKit的Web Bluetooth API开启了一个新时代,允许Web页面直接与蓝牙设备通信。这一API不仅提高了用户体验,还为创新的…

Python爬虫——1爬虫基础(一步一步慢慢来)

一、爬虫是什么? (spider) Python 爬虫是利用编程语言 Python 来获取互联网上的数据的技术。它可以自动化地访问网页、提取信息并进行数据处理。以下是Python爬虫的基础知识和步骤: 主要特点和功能: 自动化浏览&#…

【医学影像】X86+FPGA:支持AI医学影像设备应用的工控主板,赋能CT、MRI、X线、超声等医学影像设备

支持AI医学影像设备应用的工控主板 在我国人口老龄化问题不断加剧,对影像诊断需求持续增长,和国家利好高端医学影像市场发展的系列法规和政策接连出台的大环境下,AI医学影像设备产业迎来发展黄金期。紧跟发展大势,基于12/13代 In…

开放开源开先河(三)

伴随开源生态快速发展壮大、开源项目数量爆发式增长的是国家层面对开源的鼓励和推动。2020被业界称为开源爆发年,本年度的“木兰协议”正式成为国际化开源许可证,工信部联合全球知名开源平台Gitee建设中国独立的开源托管平台。2021年3月,开源…

Federated Graph Augmentation for Semisupervised Node Classification

文章目录 1 本文的主要贡献2 FedGA 模型3 FedGA-L 模型3.1 模型的思想3.2 模型具体步骤 4 实验 1 本文的主要贡献 解决图联邦学习中利用图拓扑结构和无标签节点数据的难题,提出了一种称为联合图增强(FedGA)的新方法,以更好地利用拓扑信息,然…

试编写函数fun的功能是:为一个偶数寻找两个素数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主函数。

代码如下&#xff1a; #include <stdio.h> #include <math.h> void fun(int a, int *b, int *c) { int i,j,d,y;for (i3;i<a/2;ii2){y1; //y为标志变量for (j2;j<sqrt((double)i );j)if (i%j0) y0;if (y1){da-i; for (j2;j<sqrt((double)d );j)…

03Spring底层架构核心概念解析

为了感谢罕哥对我工作的帮助&#xff0c;特此记录下学习过程&#xff0c;期待成为和罕哥一样优秀的人 时间&#xff1a;2024.7.13 内容&#xff1a;spring源码课程3学习记录 一、BeanDefinition BeanDefinition表示Bean的定义&#xff0c;BeanDefinition中存在很多属性用来…

【python学习】python的知识点总结、特点和思考及解答(代码示例)

引言 python 是一种高级编程语言&#xff0c;具有简洁的语法和丰富的库&#xff0c;被广泛应用于Web开发、数据分析、人工智能、科学计算等领域 文章目录 引言一、python知识点总结1.1 基础语法1.1.1 变量和数据类型1.1.2 控制结构1.1.3 函数和模块 1.2 面向对象编程1.2.1 类和…

Linux CAN数据收发

在Linux环境下&#xff0c;使用SocketCAN进行CAN消息的发送和接收通常涉及到socket编程。 写了一个简单的示例&#xff0c;展示了如何实现CAN消息的发送&#xff08;tx&#xff09;和接收&#xff08;rx&#xff09;函数。 1. 包含必要的头文件 #include <stdio.h> …

如何通过成熟的外发平台,实现文档安全外发管理?

文档安全外发管理是企业信息安全管理的重要组成部分&#xff0c;它涉及到企业向外发送的文件&#xff0c;需要进行严格的控制和管理&#xff0c;防止敏感或机密信息的泄露。以下是一些关键考虑因素&#xff1a; 文件外发的挑战&#xff1a;企业在文件外发时面临的主要挑战包括…

Windows 电脑装机软件推荐

1.系统辅助&#xff1a; https://github.com/microsoft/PowerToys/releases 2.下载工具&#xff1a; Motrix

wls2下的centos使用桥接模式连接宿主机网络独立静态ip

前提&#xff1a;wsl2已安装&#xff0c;可正常更新 1.在控制面板中&#xff0c;打开开启或关闭windows功能&#xff0c;将里面的 Hyper-V功能打开&#xff0c;此处涉及重启 2. 按一下win键&#xff0c;输入hy&#xff0c;上面可以看到Hyper-V Manager,点进去 3.选择右边的 Vi…

Fiddler抓包

一个不错的文档&#xff1a;萌新要入行-CSDN博客 测试之路&#xff1a;3年经验来面试20K的测试岗&#xff0c;连基本功都不会&#xff0c;还不如去招应届生 Fiddler教程&#xff1a;https://www.cnblogs.com/zhangyangcheng/articles/15218175.html Fiddler安装教程&#xff1…

为什么Spring选择使用容器来管理对象,而不是直接使用new

为什么Spring选择使用容器来管理对象&#xff0c;而不是直接使用new 在Java应用程序开发中&#xff0c;对象的创建和管理是一项基础且关键的任务。传统上&#xff0c;开发者习惯于使用new关键字直接在代码中实例化对象。然而&#xff0c;随着应用程序规模的扩大和复杂度的增加…

Linux内存从0到1学习笔记(8.20 ION (二))

五,使用ION 5.1 User Space使用ION 通常,用户空间设备访问库将使用 ION 分配大的连续媒体缓冲区。例如,静态相机库可能会分配一个捕获缓冲区供相机设备使用。一旦缓冲区完全填充了视频数据,库可以将缓冲区传递给内核,以由 JPEG 编码器硬件模块处理。 用户空间的 C/C++ …

F5理念左移,实现API安全的全生命周期管理

API是我们现代数字生活中隐形的中枢神经系统&#xff0c;从远程医疗到在线银行&#xff0c;实时API让世界变得更美好。不可否认的是&#xff0c;当应用程序和架构发生变化时&#xff0c;攻击面也会随之变化。传统的安全措施&#xff0c;比如WAF、DDoS和Bot防护仍然必不可少&…

【深度学习图片】图片清洗,只留下图像中只有一张人脸的,而且人脸是全的

环境&#xff1a; conda install pytorch torchvision torchaudio pytorch-cuda11.8 -c pytorch -c nvidia -ypip install onnx1.15 onnxruntime-gpu1.17pip install insightface0.7.3pip install opencv-pythonpip install gradio图片清洗&#xff0c;只留下图像中只有一张人脸…

java中传引用问题

在 Java 中&#xff0c;所有对象都是通过引用传递的&#xff0c;而基本数据类型是通过值传递的。 引用传递&#xff1a; 当一个对象作为参数传递给方法时&#xff0c;传递的是对象的引用。对这个对象引用进行的修改会影响到原始对象。例如&#xff1a; public class Test {p…

CentOS Mysql8 数据库安装

添加mysql yum仓库 这里安装的是8.0版本&#xff0c;如需其他版本在此查看mysql版本列表 wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm sudo rpm -Uvh mysql80-community-release-el7-3.noarch.rpm安装mysql sudo yum install mysql-server …

新能源汽车缩写含义

汽车类型的缩写及其对应的英文全称和中文解释的表格&#xff1a; 缩写英文全称中文解释EVElectric Vehicle电动车HEVHybrid Electric Vehicle混合动力电动车BEVBattery Electric Vehicle纯电动车PHEVPlug-in Hybrid Electric Vehicle插电式混合动力电动车ICEVInternal Combust…