ros navigation 局部路径算法dwa解析(一)
继ros里面A*全局规划之后,再解析局部路径算法dwa的整个算法调用过程,至于细节放到后面的章节去写
dwa的整体思路网上有很多相关的资料了
https://blog.****.net/heyijia0327/article/details/44983551具体的可以参看这一篇博客
本篇文章的话只要是说navigation包里面的调用过程,不关心整体思路
前期将局部路径设置为DWA算法也比较简单
ros局部路径算法调用函数接口为computeVelocityCommands(geometry_msgs::Twist& cmd_vel)
在dwa算法里面为dwa_planner_ros.cpp里面的
bool DWAPlannerROS::computeVelocityCommands(geometry_msgs::Twist& cmd_vel)
整体的核心就是下图
核心函数就是dwaComputeVelocityCommands(current_pose_, cmd_vel)
该函数主要就是根据当前位置和目标位置计算需要下发的速度指令。核心如下
核心函数为findBestPath,而该函数的核心如下
先将local planner生成器初始化,然后在调用scored_sampling_planner_的 findBestTrajectory,
该函数所在文件为base_local_planner/src/simple_scored_sampling_planner.cpp,其的核心内容为:
上面是轨迹生成,下面是对轨迹进行评分。
轨迹生成函数主要的是在base_local_planner/src/simple_trajectory_generator.cpp里面
可见轨迹生成算法的核心函数是generateTrajectory,这些内容以后再介绍。
而评分函数主要就是调用各种score函数
具体的函数内容以后再介绍