ROS naviagtion analysis: move_base

本文深入剖析ROS导航包中的move_base组件,通过代码分析了解其构造函数及主要功能,包括全局和局部规划器、costmap更新、行为状态机等关键模块。同时,文章探讨了move_base如何处理机器人导航任务,如路径规划、避障和目标到达判断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是navigation的第一篇文章,主要通过分析ROS代码级实现,了解navigation。本文从move_base入手。
机器人导航主要框架如图:
Navigation Stack主要组成部分:move_base:
moveBase
move_base 函数调用关系图
UML 类图

用户调用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。关于pluginlib的分析也有在接下来的文章中进行。
bgp_loader_ 和 blp_loader_ 的作用是为以下类成员提供实例化:

      boost::shared_ptr<nav_core::BaseLocalPlanner> tc_;
      boost::shared_ptr<n
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值