【Hierarchical Coverage Path Planning in Complex 3D Environments】

2023-09-15 18:08:54

Hierarchical Coverage Path Planning in Complex 3D Environments 复杂三维环境下的分层覆盖路径规划


算法分两层,一层高级一层低级:
高层算法将环境分离多个子空间,如果给定体积中有大量的结构,则空间会进一步细分。全局TSP问题;低层算法采用简单的采样路径规划,解决每一个子空间的详细覆盖扫描问题。

视点采样

选择视点,并在各个子空间中计算详细的覆盖路径以形成路径。一个视点信息包含 位置信息x,y,z,和三维旋转角pitch,roll,yaw :[x,y,z,roll,pitch,yaw];roll = 0;

规定视点距离表面的距离D;在八叉树地图中保存视点,对空间进行划分。如果一个空间中的视点个数大于一定数量,这个空间将被细分为8个子空间。
在这里插入图片描述

全局TSP

将视点放入八叉树地图中,根据以上的视点个数原则对八叉树进行划分,获得子空间;用TSP求解器确定子空间的访问顺序;再遍历每一个子空间,用TSP求解器求出子空间中视点的最佳访问顺序,作为无人机的初始搜索路径。当计算TSP巡回时,子空间中的开始视点和结束视点分别被选择为最接近前个子空间的结束视点和下个子空间的开始视点。处理的两个步骤对许多K∈Z+迭代重复。然后,来自子空间的最短路径被级联,以在算法2中的行19上形成整个覆盖路径。
在这里插入图片描述
其中,在子空间的遍历中,SelectViewpoints子空间中的视点选取法则根据最小基数选取,考虑视点覆盖区域的大小作为优先级,视点选取的概率与优先级成正比,随机选取(而不是直接选取覆盖区域最大的视点),选取视点完成后,适当减少其他视点的奖励(优先级),直到没有更多的可接受奖励的视点为止。输出的表示子空间全覆盖视点。

在这里插入图片描述

更多推荐

Openresty(二十二)ngx.balance和balance_by_lua终结篇

一灰度发布铺垫①init_by_lua*init_by_luainit_by_lua_block特点:在openresty'start'、'reload'、'restart'时执行,属于'masterinit'阶段机制:nginx'master'主进程'加载配置文件'时,运行全局LuaVM级别上的参数指定的'Lua代码

操作系统备考学习 day4 (2.1.7 - 2.2.4)

操作系统备考学习day4二、进程与线程2.1进程与线程2.1.7线程的状态与转换2.2处理机调度2.2.1调度的概念、层次2.2.2进程调度的时机切换与过程调度的方式2.2.3调度器、闲逛进程2.2.4调度算法的评价指标二、进程与线程2.1进程与线程2.1.7线程的状态与转换线程的状态与转换线程的组织与控制2.2处理机

使用亚马逊云服务器在 G4 实例上运行 Android 应用程序

随着Android应用程序和游戏变得越来越丰富,其中有些甚至比PC上的软件更易于使用和娱乐,因此许多人希望能够在云上运行Android游戏或应用程序,而在EC2实例上运行Android的解决方案可以让开发人员更轻松地测试和运行Android应用程序。在这篇博客文章中,我们将展示如何使用NICEDCV在Anbox中运行A

【JDK 8-Lambda】3.1 Java高级核心玩转 JDK8 Lambda 表达式

一、什么是函数式编程?二、什么是lambda表达式?1.先看两个示例A.【创建线程】B.【数组排序-降序】2.lambda表达式特性A.使用场景(前提):B.语法(params)->expressionC.参数列表D.方法体F.好处一、什么是函数式编程?将一个函数(也称“行为”)作为一个参数进行传递面向对象编程是对数据

【Redis】Redis 的学习教程(十一)之使用 Redis 实现分布式锁

1.分布式锁概念在多线程环境下,为了保证数据的线程安全,锁保证同一时刻,只有一个可以访问和更新共享数据。在单机系统我们可以使用synchronized锁、Lock锁保证线程安全。synchronized锁是Java提供的一种内置锁,在单个JVM进程中提供线程之间的锁定机制,控制多线程并发。只适用于单机环境下的并发控制。

解决Nacos配置刷新导致定时器停止执行的问题

1.问题描述我使用了一个定时器类来执行某个任务,并且使用Nacos作为配置中心来管理定时器的配置。我发现当Nacos配置发生变化时,定时器实例会停止执行任务,导致任务无法按预期执行。2.原先的实现方式以下是我原先的代码实现方式:@Component@RefreshScope@RequiredArgsConstructo

英飞凌TC3xx--深度手撕HSM安全启动(四)--TC3xx HSM使能和配置技巧

上一章,我们简单聊了下英飞凌TC3xx的HSM的系统框架、相关UCB、Host和HSM通信模块。今天着重分析HSM的使能。1.系统引入HSM的思考为什么要增加HSM信息安全方面考虑,系统的安全启动、ECU之间安全数据的交互、ECU内部的敏感信息保存TC3xx使能HSM后,HSM的代码应该存放在哪里?在上一章,我们了解到

C++的移动构造和移动赋值运算符

右值引用右值引用(rvaluereferences)是一种新的用于绑定右值的引用类型。那么什么是右值?右值通常是编译器生成的用于表达式计算的临时变量或常量。目前来说,我们还不能安全地使用引用变量来绑定右值。从编译原理上讲,右值是只存在于表达式计算时的未命名值。下面这一表达式产生了一个右值:x+(y*z);//AC++e

SpringBoot携带Jre绿色部署项目_免安装Jdk[Linux服务器]

文章目录SpringBoot携带Jre绿色部署项目[Linux服务器]1.实现步骤2.自测成功,如下2-1环境准备2-2运行项目SpringBoot携带Jre绿色部署项目[Linux服务器]说明:实际应用的不方便场景:1.实际项目部属时,现有服务器可能已安装有Jdk,和自己项目的Jdk版本不一致,不敢轻易安装自己使用的

解决Permission is not allowed后基于Ubuntu23.04安装配置docker与docker-compose

参考:Docker官网-InstallDockerEngineonUbuntu虚拟机里安装ubuntu-23.04-beta-desktop-amd64,开启SSH(换源、备份),配置中文以及中文输入法等基于CentOS7安装配置docker与docker-compose一、InstallusingtheAptrepo

代码随想录算法训练营第二天(C) | 977.有序数组的平方 209.长度最小的子数组 59.螺旋矩阵

文章目录前言一、977.有序数组的平方二、209.长度最小的子数组三、59.螺旋矩阵总结前言java版:代码随想录算法训练营第二天|977.有序数组的平方,209.长度最小的子数组,59.螺旋矩阵_愚者__的博客-CSDN博客一、977.有序数组的平方双指针法:int*sortedSquares(int*nums,in

热文推荐