ros navigation 局部路径算法dwa解析(一)

    继ros里面A*全局规划之后,再解析局部路径算法dwa的整个算法调用过程,至于细节放到后面的章节去写

   dwa的整体思路网上有很多相关的资料了

https://blog.****.net/heyijia0327/article/details/44983551具体的可以参看这一篇博客

   本篇文章的话只要是说navigation包里面的调用过程,不关心整体思路

前期将局部路径设置为DWA算法也比较简单

ros navigation 局部路径算法dwa解析(一)

ros局部路径算法调用函数接口为computeVelocityCommands(geometry_msgs::Twist& cmd_vel) 

在dwa算法里面为dwa_planner_ros.cpp里面的

 bool DWAPlannerROS::computeVelocityCommands(geometry_msgs::Twist& cmd_vel) 

整体的核心就是下图ros navigation 局部路径算法dwa解析(一)

核心函数就是dwaComputeVelocityCommands(current_pose_, cmd_vel)

该函数主要就是根据当前位置和目标位置计算需要下发的速度指令。核心如下

ros navigation 局部路径算法dwa解析(一)

核心函数为findBestPath,而该函数的核心如下

ros navigation 局部路径算法dwa解析(一)

先将local planner生成器初始化,然后在调用scored_sampling_planner_的 findBestTrajectory,

该函数所在文件为base_local_planner/src/simple_scored_sampling_planner.cpp,其的核心内容为:

ros navigation 局部路径算法dwa解析(一)

上面是轨迹生成,下面是对轨迹进行评分。

轨迹生成函数主要的是在base_local_planner/src/simple_trajectory_generator.cpp里面

ros navigation 局部路径算法dwa解析(一)

可见轨迹生成算法的核心函数是generateTrajectory,这些内容以后再介绍。

而评分函数主要就是调用各种score函数

ros navigation 局部路径算法dwa解析(一)具体的函数内容以后再介绍