dwa控制器
dwa大框架实现
关于dwaComputeVelocityCommands 的实现
关于最优路径findBestPath 的实现
关于findBestTrajectory 流程
关于代价值的计算 scoreTrajectory
关于代价层
- 路径层 path_costs_ 实现跟线的作用
- 摆动层 OscillationCostFunction 减少车体摆动
- 障碍物层 ObstacleCostFunction 避免与障碍物碰撞
- 旋转层 TwirlingCostFunction 减少旋转
path_costs_
- 目的:实现尽可能的贴线运动
- 原理:对全局path进行切割 再对获取得到的path建立虚拟地图 然后进行相对应的赋值,采样得到的路径会得到相对应的代价值
关于摆动层 OscillationCostFunction
- 目的:减少车体摆动
- 原理: 若上一次向左 ,当前执行向右 下一次又要求向左 则丢弃
障碍物层 ObstacleCostFunction
- 目的:防止机器撞到障碍物
- 原理: 对每个进行 footprint(车体模型扩展),通过代价值地图进行代价值,对每个点求其代价值costmap->getCost(cell_x, cell_y)
- 考虑:getCost 获取得到的是否是一个梯度的地图 离障碍物越远值越小
旋转层
- 目的:减少旋转
- 原理:用角速度作为代价值的返回值 角速度越大那么代价值也越大