ROS Navigation global_planner框架解析

规划的路径都是建立在costmap之上的,所以先讲一下必须知道的costmap的知识,实际代价地图存储在这里unsigned char* costmap_;每个字符八位0~255即cost值。把实际地图根据分辨率映射成栅格地图,依次给栅格编号,如下图所示ROS Navigation global_planner框架解析_第1张图片


维护工作是通过以下几个函数进行:

voidmapToWorld(unsigned int mx, unsigned int my, double& wx, double& wy)将map上的坐标(mx,my)转化成world上的坐标(wx,wy)

boolworldToMap(double wx, double wy, unsigned int& mx, unsigned int& my)const; 将world上的坐标(wx,wy)转化成map上的坐标(mx,my)

inline unsignedint getIndex(unsigned int mx, unsigned int my) const根据map上的坐标得到栅格编号index。

源码解读这篇文章讲的比较好 http://blog.csdn.net/u013158492/article/details/50504963大家可以参考,我就不再重复,主要讲一下我看源码总结的框架,如果大家跟着这个框架看源码的话可能会看的比较快。其中use_dijkstra,use_quadratic ,use_grid_path是global_planner的关键配置参数。

ROS Navigation global_planner框架解析_第2张图片

A*与DijKstra算法的讲解http://blog.csdn.net/kongbu0622/article/details/1871520

ROS Navigation global_planner框架解析_第3张图片

ROS Navigation global_planner框架解析_第4张图片

A*这个函数很重要,我写了注释,大家可以看看

ROS Navigation global_planner框架解析_第5张图片 ROS Navigation global_planner框架解析_第6张图片

如有错误请指出

 

 

(转载请注明作者和出处:http://blog.csdn.net/jeff_lee_ 未经允许请勿用于商业用途)


你可能感兴趣的:(ROS)