“在代码的海洋里,有无尽的知识等待你去发现。我就是那艘领航的船,带你乘风破浪,驶向代码的彼岸。
💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
RRT*-Smart 在 RRT*的基础上进行了重大改进,其主要改进之处在于对路径的优化。通常情况下,通过 RRT(快速扩展随机树)和 RRT*所生成的路径往往是曲折的,甚至略带波浪形。这主要是因为节点是随机生成的,具有一定的随机性。然而,在实际应用中,在开放空间里最好的路径通常是一条直线。 RRT*-Smart 在操作上与前一阶段的 RRT*完全一致。具体而言,它首先通过与 RRT*相同的方式进行路径搜索,直到找到从起点到终点的可行路径。在找到可行路径之后,RRT*-Smart 便开始着重考虑对路径进行优化,其目标是将原本弯曲的曲线转变为直线。 这个路径优化的过程实际上是从叶子节点开始的。它不断地去寻找是否可以无障碍地直接连接到前一个节点。如果能够直接向前连接一层,那么就会有更多的直线部分,而曲线部分则会相应减少。为了提高计算速度,我们不妨直接将障碍物视为矩形。在将弯曲的路径转变为直线的过程中,我们可以找到几个锚点。这些锚点往往位于障碍物附近,它们无法直接帮助我们对后代节点进行优化。但是,通过对这些锚点的合理利用和分析,我们可以更好地规划出更加优化的路径,从而提高整个路径规划的效率和质量。
📚2 运行结果
主函数部分代码:
clc;clear all;close all;
addpath(genpath('utils'),genpath('world'))
fixed_env=1;
%% set search range
search_range=[250 250 250];
%% set start_point and goal
start_point=[10 10 10];
goal=[150 150 150];
%% create world with obstacle
if fixed_env
[obstacles,min_obs_radius] = general_fixed_obstacles();
else
obstacle_num=5;
min_obs_radius=30;
obstacles = generate_obstacles(obstacle_num,min_obs_radius,search_range,start_point,goal);
end
%% find best path with rrt*-smart
step_length=10;
max_fail_attemps=500;
target_path_num=1;
[path_RRTstar,path_RRTsmart,tree,treeS] = rrt_start_smart(start_point,goal,search_range,obstacles,min_obs_radius,step_length,max_fail_attemps,target_path_num);
%% plot world
plot_world(obstacles,start_point,goal,path_RRTstar,path_RRTsmart,tree,treeS);
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。
[1]陈徵粼,刘灏,毕天姝.基于配电网PMU的无监督电力系统扰动特征提取与分类[J/OL].中国电机工程学报:1-13[2024-01-10].https://doi.org/10.13334/j.0258-8013.pcsee.230464.
[2]刘泳,陈帝伊,张猛等.水电煤电协同发展促进电力系统低碳转型方案评价[J/OL].人民长江:1-11[2024-01-10].http://kns.cnki.net/kcms/detail/42.1202.tv.20240108.1403.004.html.