混合式A星代码解析_4 修正优化算法smoothPath.cpp

本文介绍了Smoother类的两个关键函数:tracePath()和smoothPath()。tracePath()通过递归方式从目标节点回溯至起始节点,构建最优路径。而smoothPath()对回溯的路径进行优化,通过迭代过程修正路径上的节点位置,考虑了障碍物、平滑度和曲线等修正项,确保路径的平滑性和合规性。整个优化过程限制在最大迭代次数内,以保持计算效率。

5. 优化函数Smoother

5.1 tracePath()

  • 功能:此函数的功能就是要找到一条从start节点到goal节点的路径path.
  • 参数:此处带入的初始节点指针node是已经找到的goal的指针,i是第回溯到第一个节点了,path是回溯的路径.

本函数采用了递归调用的模式,不断去找node的前任节点node->getPred(),不断更新路径path,知道node为空指针nullptr,意味着已经到了start节点.

void Smoother::tracePath(const Node3D* node, int i, std::vector<Node3D> path) {
   
   
  if (node == nullptr) {
   
   
    this->path = path;
    return;
  }

  i++;
  path.push_back(*node);
  tracePath(node->getPred(), i, path);
}

5.2 smoothPath()

  • 功能:把tracePath()回溯到的路径path进行优化
  • 参数:
void Smoother::smoothPath(DynamicVoronoi& voronoi) {
   
   
  
}
  • 步骤:

5.2.1 初始化参数

包括voronoi的尺寸,最大叠代次数和路径长度.

  // load the current voronoi diagram into the smoother
  this->voronoi = voronoi;
  this
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值