ros中move_base的使用

move_base概述

move_base 包提供了一个动作的实现(参见actionlib包),给定世界上的目标,它将尝试使用移动基地来实现它。move_base 节点将全局和本地规划器链接在一起以完成其全局导航任务。它支持任何遵循在nav_core包中指定的 nav_core::BaseGlobalPlanner 接口的全局规划器和任何遵循在nav_core包中指定的 nav_core::BaseLocalPlanner 接口的本地规划器。move_base 节点还维护两个成本地图,一个用于全局规划器,另一个用于本地规划器(参见costmap_2d包),用于完成导航任务。

关于actionlib

在任何基于 ROS 的大型系统中,都会有这样的情况:有人想向节点发送请求以执行某些任务,同时也会收到对请求的回复。这目前可以通过 ROS服务来实现。如果服务需要很长时间来执行,用户可能希望能够在执行期间取消请求或获得有关请求进展情况的定期反馈。该actionlib包提供的工具来创建执行长期运行的目标是可以被抢占的服务器。它还提供了一个客户端接口,以便向服务器发送请求。

关于目标的的设定

除了使用在rviz界面中设定的方法外。Move_base源码中有为rviz等提供调用借口,将geometry_msgs::PoseStamped形式的goal转换成move_base_msgs::MoveBaseActionGoal,再发布到对应类型的goal话题中所以可以通过命令行发送对应的导航目标点。

如果起始点为空,设置global_pose为起始点

利用局部路径规划器直接输出轮子速度,控制机器人按照路径走到目标点

地图数据超时,即观测传感器数据不够新,停止机器人,返回false

move_base 状态机

猜你喜欢

转载自blog.csdn.net/kobesdu/article/details/120511710