ROS Navigation -- base_local_planner

ROS Navigation – base_local_planner概述

ROS Navigation – base_local_planner

使用算法:trajectory Rollout and Dynamic Window approaches。
输入:全局规划、costmap
输出:速度命令
适用对象:全向和非全向
机器人轮廓:凸多边形或者圆形

概述

Trajectory Rollout and Dynamic Window Approach (DWA)算法基本理念如下:
在这里插入图片描述

1、在机器人控制空间离散的采样(dx,dy,dtheta)
2、拿采样的离散点做前向模拟,基于机器人当前状态,预测如果使用空间采样点的速度运动一段时间,会发生什么
3、评估前向模拟的每条轨迹,评估标准包括(接近障碍,接近目标,接近全局路径和速度)。丢弃不合法的轨迹(如可能碰到障碍物的轨迹)
4、采用得分最高的轨迹,并将其对应速度发给底座
5、重复以上步骤

DWA和Trajectory Rollout区别:控制空间采样差异
Trajectory Rollout:前向模拟阶段所有速度集合
DWA:更小的采样空间。(效率更高,较为推荐)

1.1 map grip

每个控制周期,在机器人周围创建栅格地图(大小为局部成本地图大小,由move_base决定)。
为接近目标的轨迹评分时,考虑的目标为局部目标。

2震荡抑制

为了防止振荡,当机器人向任何方向移动时,对于下一个循环,相反方向被标记为无效,直到机器人从设置标志的位置移动超过一定距离。

3通用local planning

以下的类和接口遵照通用局部规划器工作原则允许进行不同实例化。以dwa_local_planner为模板加入自己的代价函数或者轨迹生成器,来创建客制化的局部规划器是可能的。

3.1 TrajectorySampleGenerator

该接口描述了一种可以生成很多轨迹发生器,每调用一次nextTrajectory()就会返回一个新的轨迹。利用trajectory rollout or the DWA的方法,SimpleTrajectoryGenerator类可以生成许多轨迹。

3.2 TrajectoryCostFunction

这个接口包含了最重要的函数scoreTrajectory(Trajectory &traj), 该函数输入轨迹后会输出轨迹评价分数。如果输出负分数意味着轨迹无效;如果输出正直,对于代价函数来说值越小越好。每个代价函数有一个比例因子,与其它代价函数比较时候,通过调节比例因子,代价函数影响可以被改变。base_local_planner包附带了一些在PR2上使用过的代价函数。

3.3 SimpleScoredSamplingPlanner

这是轨迹搜索的简单实现,采用TrajectorySampleGenerator和TrajectoryCostFunction列表。它将调用nextTrajectory()直到生成器停止生成轨迹。对于每个轨迹,它将循环遍历成本函数列表,将其正值相加或在一个成本函数返回负值时中止评分。

使用成本函数的比例,结果是具有正成本函数结果的最佳加权和的轨迹。

3.5 Cost Functions

3.5.1 ObstacleCostFunction

基于感知到的障碍评估轨迹

3.5.2 MapGridCostFunction

基于与全局路径或者目标点的接近程度评价轨迹。

3.5.3 OscillationCostFunction

用以减小震荡

3.5.4 PreferForwardCostFunction

适用于类似PR2那种在机器人前方有很好传感器(如倾角雷达)布置的机器人。 该代价函数鼓励前向运动,惩罚后向或者其它周围方向性运动。

4 TrajectoryPlannerROS

该接口继承了nav_core包的nav_core::BaseLocalPlanner接口。

4.1.1 发布的主题

~/global_plan (nav_msgs/Path)
表示的是局部规划器目前正在跟随的全局规划中的一部分,主要用于可视化。
~/local_plan (nav_msgs/Path)
表示的是上一个周期局部规划或者轨迹得分最高者,主要用于可视化。
~/cost_cloud (sensor_msgs/PointCloud2)
用于表示规划的代价珊格,也是用于可视化目的。参数publish_cost_grid_pc用来使能或者关闭该可视化。New in navigation 1.4.0

4.1.2 订阅的主题

odom (nav_msgs/Odometry)
该Odometry信息用于向局部规划器提供当前机器人的速度。 这个里程消息中的速度信息被假定使用的坐标系与TrajectoryPlannerROS对象内代价地图的robot_base_frame参数指定的坐标系相同。有关该参数详细介绍请参照 costmap_2d 包。

5轨迹规划器

base_local_planner::TrajectoryPlanner实现了DWA and Trajectory Rollout算法。 如果要在ROS中想使用base_local_planner::TrajectoryPlanner, 请使用进过封装的TrajectoryPlannerROS wrapper。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值