在本文中,提出了一种稳健高效的四旋翼运动规划体系,主要架构如下:
1.kinodynamic 路径搜索方法在离散控制空间中找到一个安全的、kinodynamic 可行且时间最短初始轨迹。
2.我们通过 B 样条优化来改善轨迹的平滑度和间隙,该优化结合了来自欧几里得距离场 (EDF) 的梯度信息和动态约束,有效地利用了 B 样条的凸包特性。
3.将最终轨迹表示为非均匀 B 样条,采用迭代时间调解方法来包管动态可行和非保守轨迹。
for (double ay = -max_acc_; ay <= max_acc_ + 1e-3; ay += max_acc_ * res)
for (double az = -max_acc_; az <= max_acc_ + 1e-3; az += max_acc_ * res)//对输入进行离散化,每次加max/r,每个离散2r+1个量,一共有(2r+1)3种组合
{
um << ax, ay, az;
inputs.push_back(um);
}
for (double tau = time_res * max_tau_; tau <= max_tau_; tau += time_res * max_tau_)//对时间进行离散化,控制输入的持续时间集合τ,有多种的时间选择(不只是t=0.5)使得新生成的路径更加多样化,不仅由离散的控制量决定,也可由离散的时间量决定
for (double ay = -max_acc_; ay <= max_acc_ + 1e-3; ay += max_acc_ * res)
for (double az = -max_acc_; az <= max_acc_ + 1e-3; az += max_acc_ * res)//对输入进行离散化,每次加max/r,每个离散2r+1个量,一共有(2r+1)3种组合
{
um << ax, ay, az;
inputs.push_back(um);
}
for (double tau = time_res * max_tau_; tau <= max_tau_; tau += time_res * max_tau_)//对时间进行离散化,控制输入的持续时间集合τ,有多种的时间选择(不只是t=0.5)使得新生成的路径更加多样化,不仅由离散的控制量决定,也可由离散的时间量决定
由于离散化的 control input,很难在 goal state 中有一个 primitive end,即我们在nc点通过离散输入的作用,下一个状态刚好到达了goal点。为了赔偿它并加快搜索速率,我们引入了一个分析扩展方案。
主要思路是,我们弹出节点nc,用之前相同的方法算一条从当前点nc到目标点xg的路径,如果这条路径是安全的(没有障碍物碰撞)而且是动力学可行的,那么我们就提前停止搜索。
对应的代码是这一段: