ROS源码解读(一)--局部路径规划

包括Trajectory Rollout 和 Dynamic Window Approach (DWA)两种方法,理论上来说分别对应base_local_planner和dwa_local_planner两个包,但其实dwa的大部分代码都放在了base_local_planner包里面

框架

对于这种大工程,我们还是从类继承图来着手:

这里写图片描述

以上接口是局部规划的核心,简单来说:

  1. TrajectorySampleGenerator产生一系列轨迹
  2. 然后TrajectoryCostFunction遍历轨迹打分
  3. TrajectorySearch找到最好的轨迹拿来给小车导航
  4. 由于小车不是一个质点,worldModel会检查小车有没有碰到障碍物。

这里写图片描述

流程

1.初始化

包括参数,地图,车身数据,比例系数

2.更新局部地图和代价

  • 将全局路径中第一个离开局部地图的点作为全局目标(或者使用最后一个在局部地图内的点作为全局目标)
  • 更新局部地图中每个点的代价,具体是在computeTargetDistance中实现的,实现的方法是用队列实现了一格格膨胀的效果,eg 终点为0,相邻的点cost+1 ,同理路径上的点为0,膨胀+1,注意同一个点取最小值

3.寻找最优路径

  • 然后TrajectoryCostFunction遍历轨迹打分

  • 每条轨迹遍历代价函数,比例求和

本DWA中主要使用了如下几种评分函数:

  • OscillationCostFunction oscillation_costs_ 震荡代价 ;是否震荡
  • ObstacleCostFunction obstacle_costs_ 障碍物代价 ; 看看是否撞到障碍
  • base_local_planner::MapGridCostFunction path_costs_ 路径代价 ;是否靠近全局路径规划
  • base_local_planner::MapGridCostFunction goal_costs_ 目标代价;是不是朝着目标行驶
  • base_local_planner::MapGridCostFunction goal_front_costs_ 前向预判的距离针对目标;
  • base_local_planner::MapGridCostFunction alignment_costs_ 前向预判的距离针对路径;

    优点可扩展

    base_local_planner::PreferForwardCostFunction prefer_forward_costs_ 优先选择前向行驶;

ROS(机器人操作系统)是一套用于开发机器人软件的开源框架,其中包括了丰富的功能包。局部路径规划器(Local Path Planner)是ROS中的一个重要功能包。 局部路径规划器用于在机器人周围的局部环境中计算机器人的运动轨迹,以避开障碍物并达到目标位置。它基于机器人的传感器数据和地图信息,对机器人周围的环境进行感知和分析,然后根据规划算法生成合适的路径。 ROS局部路径规划器功能包提供了多种路径规划算法的实现,包括经典的Dijkstra算法、A*算法等。这些算法根据不同的需求和环境特点,可以选择合适的算法来进行路径规划。 局部路径规划器的核心思想是通过将机器人当前位置作为起点,在环境中搜索一个合适的路径,并考虑到障碍物的避开以及路径的平滑性。具体的规划过程可以分为以下几个步骤: 1. 获取机器人当前位置和地图信息。 2. 根据当前位置和地图,使用路径规划算法计算出一条可行的路径。 3. 对计算出的路径进行平滑处理,以便更顺利地跟随路径。 4. 将规划的路径发送给机器人的控制系统,实现路径跟踪和控制。 局部路径规划器的目标是使机器人能够安全、高效地在复杂环境中移动,避开障碍物并尽快到达目标位置。它在机器人导航任务中起到关键作用,能够帮助机器人实现自主移动和避障等功能。 总而言之,ROS局部路径规划器是一种功能强大的工具,通过利用机器人感知和规划算法,能够为机器人提供合适的路径,使其在环境中安全地移动。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值