草庐IT

Fast-planner 和 Ego-planner 比较

又菜又爱玩_ 2023-05-26 原文

Fast-planner 和 Ego-planner 比较


Fast-planner和Ego-planner都是无人机路径规划中常见的算法,但它们的实现方式和目标略有不同。

Fast-planner 是一种高效的 全局路径规划算法,它主要用于生成无人机的长期规划路径,以最小化整个路径的时间和距离。该算法通过先前的地图信息和无人机当前状态,生成一条起点和终点之间的最优路径,并且在运行时间上非常快速,通常能够在几秒内完成路径规划。

相比之下,Ego-planner 是一种更加局部的路径规划算法,其主要目的是在无人机飞行过程中即时生成适合当前交通状况的 短期规划路径,以确保无人机的安全性和飞行效率。Ego-planner会在每次更新时考虑无人机周围的实时信息,如障碍物和其他干扰的运动信息,以生成一个可行的飞行路径。因此,Ego-planner的实时性非常高,但是它可能不是最优的路径规划算法

总的来说,Fast-planner和Ego-planner都有自己的优点和缺点,其选择主要取决于具体的应用场景和需求。例如,在长途旅行或大规模交通规划中,Fast-planner可能更适合;而在城市建筑稠密和复杂的城市环境中,Ego-planner可能更适合。
Fast-Planner是一种基于规划图的快速全局路径规划算法,它适用于无人机在复杂环境中高速穿越的场景,例如飞越森林或城市的快速运输。

Fast-Planner

Fast-Planner算法的主要思想是将环境建模为一个有向无环图(DAG),每个节点表示一个离散的空间位置,边表示两个位置之间的通行关系。Fast-Planner采用一种称为“不完全样条代替”的技术来实现路径规划,这种技术可以在保持计算效率的同时,生成平滑的路径。

Fast-Planner算法的核心部分是一种名为“快速矩阵式A*”(Fast Matrix-Style A*)的搜索算法。这种算法通过预处理边缘的代价值和通过矩阵运算来处理节点代价值,从而实现了更快的计算速度。此外,Fast-Planner还引入了一种称为“高速跳跃”的技术,它可以在搜索过程中跳过不需要的节点,从而提高搜索速度。

Fast-Planner算法在多个仿真场景和实际无人机场景中进行了测试,并与其他快速路径规划算法进行了比较。实验结果表明,Fast-Planner算法在效率和路径质量方面表现出色,具有较好的实时性和鲁棒性,可应用于无人机在复杂环境中的高速穿越场景。

Ego-planner

EGO-Planner 的无 ESDF(Euclidean Signed Distance Field)梯度型局部规划器,适用于四旋翼无人机。传统的梯度型规划器需要 ESDF 的信息来计算障碍物的梯度,但是 ESDF 需要进行昂贵的计算和存储,并且只能处理固定的环境。EGO-Planner 取而代之,使用另一种称为距离场网格(Distance Field Grid)的技术,它比 ESDF 更加简单,可以在运行时动态构建,从而可以应对不同环境的变化。

EGO-Planner 的主要思想是使用有限差分来估计距离场网格的梯度,然后将其用于路径规划。为了保证飞行的平稳性,论文中提出了一种基于“控制变量转换”(Control Variable Transformation)的方法,将生成的路径转化为一个控制输入,从而使得四旋翼无人机可以以平稳的方式沿着路径飞行。

EGO-Planner 在多种复杂环境下进行了实验,并与其他梯度型规划器进行了比较。实验结果表明,EGO-Planner 能够在不需要 ESDF 的情况下快速生成平滑的轨迹,与其他规划器相比,其计算时间更短,规划的路径更平滑。总的来说无 ESDF 梯度型规划器 EGO-Planner,可以实现快速、高效、平滑的路径规划,并适用于不同环境下的四旋翼无人机飞行任务。

有关Fast-planner 和 Ego-planner 比较的更多相关文章

  1. ruby - Ruby 的 Hash 在比较键时使用哪种相等性测试? - 2

    我有一个围绕一些对象的包装类,我想将这些对象用作散列中的键。包装对象和解包装对象应映射到相同的键。一个简单的例子是这样的:classAattr_reader:xdefinitialize(inner)@inner=innerenddefx;@inner.x;enddef==(other)@inner.x==other.xendenda=A.new(o)#oisjustanyobjectthatallowso.xb=A.new(o)h={a=>5}ph[a]#5ph[b]#nil,shouldbe5ph[o]#nil,shouldbe5我试过==、===、eq?并散列所有无济于事。

  2. ruby - Fast-stemmer 安装问题 - 2

    由于fast-stemmer的问题,我很难安装我想要的任何ruby​​gem。我把我得到的错误放在下面。Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingfast-stemmer:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcreatingMakefilemake"DESTDIR="cleanmake"DESTDIR=

  3. ruby - 是否有用于复杂比较的漂亮语法? - 2

    方法应返回-1,0或1分别表示“小于”、“等于”和“大于”。对于某些类型的可排序对象,通常将排序顺序基于多个属性。以下是可行的,但我认为它看起来很笨拙:classLeagueStatsattr_accessor:points,:goal_diffdefinitializepts,gd@points=pts@goal_diff=gdenddefothercompare_pts=pointsother.pointsreturncompare_ptsunlesscompare_pts==0goal_diffother.goal_diffendend尝试一下:[LeagueStats.new(

  4. ruby - 尝试比较两个文本文件,并根据信息创建第三个 - 2

    我有两个文本文件,master.txt和926.txt。如果926.txt中有一行不在master.txt中,我想写入一个新文件notinbook.txt。我写了我能想到的最好的东西,但考虑到我是一个糟糕的/新手程序员,它失败了。这是我的东西g=File.new("notinbook.txt","w")File.open("926.txt","r")do|f|while(line=f.gets)x=line.chompifFile.open("master.txt","w")do|h|endwhile(line=h.gets)ifline.chomp!=xputslineendende

  5. ruby-on-rails - 我如何比较 'Bcrypt' Gem解密的密码和加密的密码 - 2

    我正在尝试对某些帖子的评论使用简单的身份验证。用户使用即时ID和密码输入评论我使用“bcrypt”gem将密码存储在数据库中。在comments_controller.rb中像这样@comment=Comment.new(comment_params)bcrypted_pwd=BCrypt::Password.create(@comment.user_pwd)@comment.user_pwd=bcrypted_pwd当用户想要删除他们的评论时,我使用data-confirm-modalgem来确认数据在这部分,我必须解密用户输入的密码以与数据库中的加密密码进行比较我怎样才能解密密码,

  6. ruby - Date 与 nil 的比较失败 - ruby - 2

    我正在运行这样的代码:ifvalid_from>Date.today当我运行它时,我得到一个错误提示comparisonofDatewithnilfailed我假设它正在发生,因为在某些情况下valid_from是nil。有没有办法避免出现此错误? 最佳答案 你可以这样做:ifvalid_fromandvalid_from>Date.today...end这将在第一个子句上短路,因为valid_from为nil,因此为false。 关于ruby-Date与nil的比较失败-ruby,我们

  7. ruby - 比较 rspec 中的 float 时的奇怪行为 - 2

    以下测试中的第3个失败:specify{(0.6*2).shouldeql(1.2)}specify{(0.3*3).shouldeql(0.3*3)}specify{(0.3*3).shouldeql(0.9)}#thisonefails这是为什么呢?这是浮点问题还是ruby​​或rspec问题? 最佳答案 从rspec-2.1开始specify{(0.6*2).shouldbe_within(0.01).of(1.2)}在那之前:specify{(0.6*2).shouldbe_close(1.2,0.01)}

  8. Ruby - 使用 Comparable mixin 比较两个不同属性的对象 - 2

    有没有简单的方法(即使用宇宙飞船运算符)在Ruby中定义基于两个不同属性的比较?IE。如果我有一个包含两个属性attr1和attr2的类,是否有Rubyesque方法在attr1上比较此类的两个实例,如果它们相等,则在attr2上比较它们? 最佳答案 这是一种易于扩展(扩展到更多属性)的方式:def(other)[self.attr1,self.attr2][other.attr1,other.attr2]end 关于Ruby-使用Comparablemixin比较两个不同属性的对象,我

  9. ruby - Rails 比较 date.end_of_day.to_datetime 和 date.to_datetime.end_of_day 返回的日期对象值时返回 false - 2

    ruby1.9.3dev(2011-09-23修订版33323)[i686-linux]轨道3.0.20最近为什么在与DateTimeonRails相关的RSpecs项目上工作我发现在给定日期以下语句发出的值date.end_of_day.to_datetime和date.to_datetime.end_of_day虽然它们表示相同的日期时间,但比较时返回false。为了确认这一点,我打开了Rails控制台并尝试了以下操作1.9.3dev:053>monday=Time.now.monday=>2013-02-2500:00:00+05301.9.3dev:054>monday.cla

  10. ruby-on-rails - 与 ActiveSupport 的时间比较失败 - 2

    now=Time.zone.now=>Wed,19Feb201421:30:56UTC+00:00Time.zone.at(now.to_i)=>Wed,19Feb201421:30:56UTC+00:00now==Time.zone.at(now.to_i)=>false这怎么可能?更新:Time.zone.at(now.to_i).to_i==now.to_i=>true 最佳答案 Ruby跟踪时间精确到纳秒:now=Time.zone.now=>Wed,19Feb201421:30:56UTC+00:00Time.zone.a

随机推荐