TIG*算法的核心思想是:用几何计算替代随机采样。当无人机前方遇到障碍物时,算法不依赖随机试探,而是精确计算绕行所需的切点,将这些切点作为候选航点,再通过A式搜索选择最优路径。

发布时间:2026/7/18 10:16:18

TIG*算法的核心思想是:用几何计算替代随机采样。当无人机前方遇到障碍物时,算法不依赖随机试探,而是精确计算绕行所需的切点,将这些切点作为候选航点,再通过A式搜索选择最优路径。
TIG*分为两种规划模式S-TIG*静态规划和O-TIG*在线规划模式全程运用环境S-TIG*静态切线交点制导环境完全已知的情况O-TIG*在线切线交点制导环境并非完全已知需要在线计算S-TIG*利用全局地图信息一次性规划出完整路径O-TIG*依靠机载传感器局部感知遇到未知障碍时动态重规划。回到顶部3.2障碍物建模与原始TIG算法使用椭圆不同TIG*采用凸多边形棱柱表示障碍物。算法首先对不规则障碍物应用凸包算法Convex Hull将其转换为凸多边形再向上拉伸形成3D棱柱。每个障碍物定义为论文指出Section IV“Polygonal representations provide a more accurate and flexible way to capture the complex geometries of real-world obstacles.”说明多边形表示法能更准确、更灵活地描述真实世界障碍物的复杂几何形状。回到顶部3.3虚拟椭圆与安全距离为了确保无人机飞行安全TIG*算法在真实障碍物周围构建“虚拟椭圆”引入安全距离余量其中d表示安全距离即UAV与障碍物之间保持的最小间距。这种设计的核心思想是让无人机沿着虚拟椭圆的边界飞行而非真实的障碍物边界从而保证足够的安全余量。回到顶部3.4航点生成策略TIG*算法的核心在于航点的几何生成方法。当从当前节点N到目标点T的直线被障碍物阻挡时算法会通过切线交点来生成绕行航点其基本原理如下1.从当前节点N向首个碰撞的障碍物绘制两条切线2.从目标点T向同一障碍物绘制两条切线3.不同切线的交点构成候选航点。针对可能出现的几种不可行情况例如切线平行、无交点等算法采用虚拟椭圆技术即航点被定义为虚拟椭圆与切线的交点并选择距离当前节点较远的交点作为实际航点。设从当前节点N出发的切线交虚线椭圆与两点、其中比更接近N所以选择较远点作为航点即这种“故意绕远路”的策略可以避免无人机在飞行过程中出现急转弯让飞行轨迹在绕过障碍物后更加平缓流畅做到“平滑”。回到顶部3.5启发式函数为了在多个候选航点中选择最优者TIG*算法定义了如下启发式函数其中1.D(N,W)从当前节点N到候选航点W的路径长度2.P从N到W的切线段上穿过的障碍物数量3.α障碍物数量的权重系数用于衡量路径长度与安全性4.D(W,T)从W到目标点T的欧式距离估计。启发式函数H(W)的设计体现了三个优化目标1.最短路径通过D(N,W)D(W,T)实现2.最少障碍交互通过实现减少绕行次数3.高计算效率启发式引导搜索向目标方向迅速收敛。回到顶部3.6路径平滑处理TIG*算法生成的原始路径由直线段连接各航点构成在航点处存在转角。这些转角无法被无人机直接执行因此需要平滑处理。TIG*算法采用二次贝塞尔曲线对每三个连续节点进行平滑处理其中、、为三个连续的控制点航点。经过平滑处理后还需验证一下性能指标路径长度目标函数转弯角度目标函数回到顶部3.7算法流程四.仿真实现回到顶部4.1开发环境与工具本研究的仿真实验采用以下开发环境项目配置操作系统Windows11编程环境MATLAB R2022b核心依赖TIG-3D-UAV-Planning开源框架可视化工具MATLAB plot3三位绘图在MATLAB R2022b环境中TIG-3D-UAV-Planning框架的代码结构如下- main/主入口文件run_static.m用于静态规划run_unknown.m用于在线规划- algorithms/S-TIG*和O-TIG*核心算法- geometry/碰撞检测、切线生成等几何计算- waypoint_generation/虚拟椭圆与航点生成- visualization/3D可视化绘图- evaluation/性能指标计算- maps/预定义测试地图本报告使用run_static.m和map_city.mat进行仿真实验。回到顶部4.2核心代码实现4.2.1虚拟椭圆计算虚拟椭圆与安全距离matlabfunction inflated_obstacles inflate_obstacles(obstacles, safety_distance) % ------------------------------------------------------------ % Inflates polygonal prism obstacles by safety_distance % in XY plane and Z direction. % ------------------------------------------------------------ inflated_obstacles obstacles; for i 1:length(obstacles) prism obstacles{i}; vertices prism.vertices; % --- Inflate polygon in XY --- inflated_vertices inflate_polygon(vertices, safety_distance); % --- Inflate in Z --- z_min prism.z_range(1) - safety_distance; z_max prism.z_range(2) safety_distance; prism.vertices inflated_vertices; prism.z_range [z_min z_max]; prism.height z_max; inflated_obstacles{i} prism; end end function inflated_vertices inflate_polygon(vertices, d) % ------------------------------------------------------------ % Inflates convex polygon outward by distance d % ------------------------------------------------------------ centroid mean(vertices,1); inflated_vertices zeros(size(vertices)); for i 1:size(vertices,1) direction vertices(i,:) - centroid; direction direction / norm(direction eps); inflated_vertices(i,:) vertices(i,:) d * direction; end end4.2.2计算转弯角度matlabfunction angle calculate_angle(A, B, C) % Calculate vectors AB and BC in 3D AB A - B; BC C - B; % Check if any two points are the same if all(round(A,6) round(B,6)) || all(round(B,6) round(C,6)) angle 180; else % Calculate dot product and magnitudes of the vectors dotProduct dot(AB, BC); magAB norm(AB); magBC norm(BC); % Calculate the cosine of the angle between AB and BC cosTheta dotProduct / (magAB * magBC); % Ensure the cosine value is within the valid range for acos cosTheta max(min(cosTheta, 1), -1); % Calculate the angle in radians and convert to degrees angle acosd(cosTheta); end end4.2.3获取感知内障碍物matlabfunction in_range_indices obstacles_in_range(uav_pos, polygons, r) % polygons: array of structs with fields vertices (Nx2) and height % uav_pos: 1x3 [x, y, z] % r: sensing radius (scalar) in_range_indices {}; for i 1:length(polygons) if is_obstacle_in_range(polygons{i}, uav_pos, r) in_range_indices [in_range_indices polygons{i}] ; %#okAGROW end

相关新闻

Java毕设项目:基于 SpringBoot 的红色景点留言评价系统的设计与实现 基于 SpringBoot 的红色文旅宣传教育平台 (源码+文档,讲解、调试运行,定制等)

Java毕设项目:基于 SpringBoot 的红色景点留言评价系统的设计与实现 基于 SpringBoot 的红色文旅宣传教育平台 (源码+文档,讲解、调试运行,定制等)

2026/7/11 12:03:42

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

HFSS vs ADS 滤波器仿真对比:500MHz 带通 3 方案性能与精度分析

HFSS vs ADS 滤波器仿真对比:500MHz 带通 3 方案性能与精度分析

2026/7/8 8:39:01

HFSS与ADS滤波器仿真深度对比:500MHz带通设计的3种技术路线实战解析 在射频前端设计中,带通滤波器的性能直接影响系统整体表现。当工程师面对500MHz中心频率的带通滤波器设计需求时,工具选择往往成为首要难题:是采用ADS进行快速电…

超复数全域经济周期场与信息谱场——金融与密码学底层理论重构 《0·1·∞三元一体全域超复数统一场论》系列全集(五篇一字不漏完整合订版)

超复数全域经济周期场与信息谱场——金融与密码学底层理论重构 《0·1·∞三元一体全域超复数统一场论》系列全集(五篇一字不漏完整合订版)

2026/7/7 2:15:53

超复数全域经济周期场与信息谱场——金融与密码学底层理论重构 《01∞三元一体全域超复数统一场论》系列全集(五篇一字不漏完整合订版) 作者:乖乖数学 日期:2026-07-04

Avro4s字段映射与命名策略:从驼峰到蛇形命名转换的终极指南

Avro4s字段映射与命名策略:从驼峰到蛇形命名转换的终极指南

2026/7/18 10:12:44

Avro4s字段映射与命名策略:从驼峰到蛇形命名转换的终极指南 【免费下载链接】avro4s Avro schema generation and serialization / deserialization for Scala 项目地址: https://gitcode.com/gh_mirrors/avr/avro4s 在Scala应用中处理Avro数据时&#xff0c…

TTS-WebUI:一站式语音生成终极解决方案,快速创建专业级语音内容

TTS-WebUI:一站式语音生成终极解决方案,快速创建专业级语音内容

2026/7/18 10:12:44

TTS-WebUI:一站式语音生成终极解决方案,快速创建专业级语音内容 【免费下载链接】TTS-WebUI A single Gradio React WebUI with extensions for ACE-Step, OmniVoice, Kimi Audio, Piper TTS, GPT-SoVITS, CosyVoice, XTTSv2, DIA, Kokoro, OpenVoice, …

RL4CO快速入门:10分钟掌握组合优化强化学习框架

RL4CO快速入门:10分钟掌握组合优化强化学习框架

2026/7/18 10:12:44

RL4CO快速入门:10分钟掌握组合优化强化学习框架 【免费下载链接】rl4co A PyTorch library for all things Reinforcement Learning (RL) for Combinatorial Optimization (CO) 项目地址: https://gitcode.com/gh_mirrors/rl/rl4co 想要快速上手RL4CO这个强大…

TI TPS62740+TPS61030方案:智能表计高功率射频与超长续航电源设计详解

TI TPS62740+TPS61030方案:智能表计高功率射频与超长续航电源设计详解

2026/7/18 10:12:44

1. 项目概述与核心挑战在智能水表、气表这类需要部署在千家万户、且一用就是十几二十年的设备里,电源设计是个让人“又爱又恨”的活儿。爱的是,一旦设计成功,产品生命周期内几乎无需维护;恨的是,设计约束极其苛刻&…

CANN/asc-devkit RTC获取二进制数据

CANN/asc-devkit RTC获取二进制数据

2026/7/18 10:12:44

aclrtcGetBinData 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitco…

动态域名解析神器:3种创新用法让DDNS成为你的网络管家

动态域名解析神器:3种创新用法让DDNS成为你的网络管家

2026/7/18 10:02:44

动态域名解析神器:3种创新用法让DDNS成为你的网络管家 【免费下载链接】DDNS 🌐自动更新域名解析到本机IP(支持dnspod,阿里DNS,CloudFlare,华为云,DNSCOM...) 项目地址: https://gitcode.com/gh_mirrors/dd/DDNS 你是否曾因家庭宽带的动态IP而无法…

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

2026/7/17 10:50:47

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator XUnity.AutoTranslator作为Unity游戏社区中最成熟的文本翻译解决方…

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

2026/7/17 17:34:09

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持 【免费下载链接】raspberrypi-kernel It provides openEuler kernel source for Raspberry Pi 项目地址: https://gitcode.com/openeuler/raspberrypi-kernel 前往项目官网免费下载&…

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

2026/7/18 5:51:23

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧 【免费下载链接】integration-test The repo contains test suits for system integration test 项目地址: https://gitcode.com/openeuler/integration-test 前往项目官网免费下载:…

从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则

从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则

2026/7/18 0:02:02

更多请点击: https://kaifayun.com 第一章:从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则 在Claude驱动的产品需求文档(PRD)生成实践中,原始业务意图往往以自然语言片…

Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单

Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单

2026/7/18 0:02:02

更多请点击: https://codechina.net 第一章:Cursor配置生成失效?3大隐藏陷阱4行修复代码,资深工程师连夜整理的紧急补救清单 Cursor 配置生成突然失效,是近期高频报障场景。表面看是 cursor.config.json 未更新或 LSP…

某智驾大牛创业

某智驾大牛创业

2026/7/18 0:02:02

作者:钟声编辑:Mark出品:红色星际头图:智能驾驶图片据悉,国内某头部智驾公司端到端模型技术大牛Z投身创业,并且已经拿到融资。Z不仅是该头部公司内部最年轻的对标阿里P10级别技术负责⼈,更是业内…