当系统正在运行的时候,每次进行ros spinonce 它都会调用PlanningCallBack函数,在这个函数没有接收到goal目标的时候,它会先进行通行区域的更新,也就是计算fgscore和gscore
我们进入UpdateGraphTraverability函数,它主要分为两个部分:
第一个是针对odom,拓展到所有的nav_node,我们计算gscore,并更新当前cur_graph的gscore值和nav_node的父节点parent,这里用到的是广度优先算法,正如作者论文里提到的,我们先选择odom,然后遍历它的所有connect_nodes,更新open_set,在取出connect_nodes的connect_nodes,一直遍历直到所有点都进入close_set即完成。
第二部分是更新fgscore,这个只针对node属性里is_covered为true的nav_node,所以并不是所有的nav_node都有fgscore。对于有fgscore的nav_node,我们称它的父节点为free_parent