RRT*算法的核心在于两个过程:重新选择父节点和重布线
1.重新选择父节点
过程:在选择邻域内(邻域内的点命名为X_near_i),计算从X_init—>X_near_i—>X_rand的距离,选取距离最短且满足碰撞检测的X_near_i作为X_rand的父节点。
作用:重新选择父节点使新生成的节点路径代价降为最小,优化了搜索路径。
2.重新布线
过程:在完成第一步的基础上,依次计算X_init—>X_near_i的距离,并记录。假设新选择的父节点命名为X_near_parent,依次计算X_init—>X_near_parent—>X_rand—>X_near_i的值,记录并与前者做差,如果后者距离小,则删除原先的线(X_near_i与X_near_i父节点之间的连线),连接X_rand和_near_i形成的新线。
作用:重布线使得生成新节点后的随机树减少冗余通路,减小路径代价。
注:迭代次数和设定时间会影响最后的路径,理论上迭代次数越多,路径越接近最优,这也是RRT*属于渐进寻优算法的原因。