ROS Navigation分析: move_base (二)

move_base导航配置文件:

<?xml version="1.0"?>
<launch>
  <node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen" clear_params="true">
    <rosparam file="$(find navigation_stage)/nav/params/costmap_common_params.yaml" command="load" ns="global_costmap" />
    <rosparam file="$(find navigation_stage)/nav/params/costmap_common_params.yaml" command="load" ns="local_costmap" />
    <rosparam file="$(find navigation_stage)/nav/params/global_costmap_params.yaml" command="load" />
    <rosparam file="$(find navigation_stage)/nav/params/local_costmap_params.yaml" command="load" />
    <rosparam file="$(find navigation_stage)/nav/params/base_global_planner_params.yaml" command="load" />
    <rosparam file="$(find navigation_stage)/nav/params/teb_local_planner_params.yaml" command="load" />
    <rosparam file="$(find navigation_stage)/nav/params/costmap_converter_params.yaml" command="load" />

    <param name="base_global_planner" value="global_planner/GlobalPlanner" /> 
    <param name="base_local_planner" value="teb_local_planner/TebLocalPlannerROS" /> 
  </node>
</launch>

这是navigation的第一篇文章,主要通过分析ROS代码级实现,了解navigation。本文从move_base入手。 
机器人导航主要框架如图: 

Navigation Stack主要组成部分:move_base: 

用户调用movebase是通过传入带tf参数的构造函数: 

move_base::MoveBase move_base( tf );

以下分析move_base的构造函数:

MoveBase::MoveBase(tf::TransformListener& tf):
    tf_(tf),
    as_(NULL),
    planner_costmap_ros_(NULL), controller_costmap_ros_(NULL),
    bgp_loader_("nav_core", "nav_core::BaseGlobalPlanner"),
    blp_loader_("nav_core", "nav_core::BaseLocalPlanner"), 
    recovery_loader_("nav_core", "nav_core::RecoveryBehavior"),
    planner_plan_(NULL), latest_plan_(NULL), controller_plan_(NULL),
    runPlanner_(false), setup_(false), p_freq_change_(false),     
    c_freq_change_(false), new_global_plan_(false)

这部分是构造函数的初始化列表,可以看到几个重要的参数:

    planner_costmap_ros_(NULL), controller_costmap_ros_(NULL),
    bgp_loader_("nav_core", "nav_core::BaseGlobalPlanner"),
    blp_loader_("nav_core", "nav_core::BaseLocalPlanner"), 
    recovery_loader_("nav_core", "nav_core::RecoveryBehavior")

planner_costmap_ros_是用于全局导航的地图,controller_costmap_ros_ 是局部导航用的地图,地图类型为经过ROS封装的costmap_2d::Costmap2DROS* 。关于地图类型的分析会在接下来的文章中进行。 
bgp_loader_ 是global planner, blp_loader_ 是local planner。二者的声明为: 

pluginlib::ClassLoader<nav_core::BaseGlobalPlanner> bgp_loader_; 
pluginlib::ClassLoader<nav_core::BaseLocalPlanner> blp_loader_; 

是属于一个模板类ClassLoader,实例化为BaseGlobalPlanner或者BaseLocalPlanner。关于plugi

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值