ROS的路径规划器分为全局路径和局部路径规划,其中局部路径规划器使用的最广的为dwa,个人理解为:
首先全局路径规划会生成一条大致的全局路径,局部路径规划器会把全局路径给分段,然后根据分段的全局路径的坐标,进行局部重新规划,例如:
全局规划后有一组目标点数组【1,2,3,4,5,......】,局部是根据当前速度和时间、约束条件,随机模拟出50条轨迹,选出最佳一条轨迹到达1号目标点,随后重复2,3...,
一直到达到目的地为止。具体的步骤如下:
一、路径存储
1、全局路径存储
在ros move base控制循环中会在规划出新的路径时,将新的全局路径利用setPlan传给DWAPlannerROS,直接保存为global_plan_。
此时的路径时相对于全局地图的全局坐标系的(通常为"map")。
2、局部路径存储
在计算速度前,会先将全局路径映射到局部地图坐标系下(通常为“odom”),在getLocalPlan中,先将较长的全局路径映射并截断到局部地图内(即坐标系转换为局部地图,
且范围完全在局部地图内,超出地图的则抛弃,局部地图为costmap),局部地图使用的是rolling_window。然后,裁减全局路径和局部路径(与机器人当前位置距离超过1m的旧的路径会被裁减掉)。
有了局部的目标点,就可以做规划了。
二、机器人运动模型
运动模型推到是为了进行轨迹推演,具体可参考:http://blog.csdn.net/heyijia0327/article/details/44983551
三、速度采样