(ros/move_base)move介绍

概述

http://wiki.ros.org/move_base?distro=indigo

 

        Move_base 包提供action(见actionlib包)的实现,在世界中给出一个目标,移动基座将会尝试到达这一点。Move_base节点连接全局规划器和本地规划器到一起来实现全局导航任务。支持任何附着于在nav_core包中指定的nav_core::BaseGlobalPlanner接口的全局规划器。Move_base节点也维持两个成本地图,一个是全局规划器的,一个是本地规划器的(见costmap_2d包),他们都是用来完成导航任务的。

NOTE:move_base包能让你使用导航堆栈移动机器人到指定位置。如果只是希望驱动pr2机器人绕里程计坐标系运动,你可能对这个教程感兴趣:pr2_controllers/Tutorials/Using the base controller with odometry and transform information pr2_controllers/Tutorials/Using the base controller with odometry and transform information

 

节点
这个包提供move_base ROS节点,这是导航堆栈的一个重要组成部分。这个节点详细描述和他的配置选项可在下面找到。
(ros/move_base)move介绍_第1张图片

Move_base节点提供一个ROS接口来配置,运行,并且在机器人上与导航堆栈交互。Move_base节点的高级视图和与其他组件如上图所示。蓝色随机器人平台改变,灰色是可选的由系统提供,白色节点是必需的也由系统提供。要知道更多的move_base节点的配置信息,导航堆栈是一个整体,见the navigation setup and configuration tutorial。
1.1.1 期望的机器人行为


在机器人上运行正确配置的move_base节点会使机器人试图到达目标位姿,同时基座在用户指定的公差范围以内。不存在动态障碍物的情况下,move_base节点最终将会在目标方差内得到或者给用户失败信号。当机器人感知自己卡住的时候,move_base节点可能会选择性的执行恢复行为。默认情况下,move_base节点将会采取以下措施,来试图清理出空间:
首先,用户指定区域以外的障碍将会从机器人地图清除。接着,如果可能,机器人将执行就地旋转来清除空间。如果这也失败,机器人将会更加积极的清除它的地图,移除矩形区域以外的所有障碍,机器人在矩形内能就地旋转。随后跟着另一个就地旋转。如果这些都失败了,机器人认为这个目标是不可行的并且会通知用户它已经终止。这些恢复行为可以使用 recovery_behaviors参数配置,使用recovery_behavior_enabled参数设置禁能。
1.1.2 action API
Move_base节点提供SimpleActionServer(见action documentation)的一个实现,需要含有geometry_msgs/PoseStamped消息的目标。可以通过ROS直接与move_base节点通信,但如果考虑使用SimpleActionClient跟踪他们的状态,推荐发送目标到move_base的方法。详见actionlib documentation来获取更多信息。


Action Subscribe Topics   action订阅话题
move_base/goal (move_base_msgs/MoveBaseActionGoal)
move_base在世界中的目标
move_base/cancel (actionlib_msgs/GoalID)
撤销指定目标的请求
Action Published Topics    action发布话题
move_base/feedback (move_base_msgs/MoveBaseActionFeedback)
包含基座在世界中当前位置的反馈
move_base/status (actionlib_msgs/GoalStatusArray)
提供有关(被发送到move_base action)目标的状态信息
move_base/result (move_base_msgs/MoveBaseActionResult)
对move_base action 结果是空
1.1.3 订阅话题
move_base_simple/goal (geometry_msgs/PoseStamped)
为用户提供一个非动作接口到move_base,不需要关注跟踪目标的执行状态
1.1.4 发布话题
cmd_vel (geometry_msgs/Twist)
移动基座执行的速度命令流
1.1.5 服务
~make_plan (nav_msgs/GetPlan)
允许外部用户从move_base请求一个到给定位姿的规划,而不会使move_base执行那个规划。
~clear_unknown_space (std_srvs/Empty)
允许外部用户告诉move_base清理机器人周围区域的未知空间。当move_base的成本地图在环境中已经停止了很长时间,然后在一个新的位置重新开始时非常有用。-New in 1.1.0
~clear_costmaps (std_srvs/Empty)
允许外部用户告诉move_base清除move_base使用的成本地图中的障碍。这可能会导致机器人撞到东西,要谨慎使用。-New in 1.3.1
1.1.6 参数
http://wiki.ros.org/move_base#Parameters
●base_global_planner (string, default: "navfn/NavfnROS" For 1.1+ series)
move_base使用的全局规划插件的名称。
●base_local_planner (string, default: "base_local_planner/TrajectoryPlannerROS" For 1.1+ series)
move_base使用的本地规划插件的名称。
●recovery_behaviors (list, default: [{name: conservative_reset, type: clear_costmap_recovery/ClearCostmapRecovery}, {name: rotate_recovery, type: rotate_recovery/RotateRecovery}, {name: aggressive_reset, type: clear_costmap_recovery/ClearCostmapRecovery}] For 1.1+ series)
move_base使用的一系列恢复行为插件的名称。当move_base没有找到可行规划,这些行为将会运行。每一个恢复行为完成后,move_base就会尝试做规划。如果规划成功,move_base执行正常操作。否则,列表里的下一个恢复行为就会执行。
●controller_frequency (double, default: 20.0)
运行控制周期,发送速度命令到基座的频率,Hz.
●planner_patience (double, default: 5.0)
在空间清理操作操作执行之前,规划器将会等待多少秒来试图找到可行路径。
●controller_patience (double, default: 15.0)
在空间清理操作操作执行之前,没有收到有效控制时,规划器将会等待多少秒。
●conservative_reset_dist (double, default: 3.0)
从地图中清理空间时,距离机器人多少米远的障碍物会从成本地图中清除。这个参数只用在move_base的默认恢复行为中。
●recovery_behavior_enabled (bool, default: true)
是否使能move_base的恢复行为来清理空间。
●clearing_rotation_allowed (bool, default: true)
清理空间时,确定机器人是否就地旋转。
●shutdown_costmaps (bool, default: false)
Move_base处于非活动状态时,确定是否关闭costmap节点。
●oscillation_timeout (double, default: 0.0)
执行恢复行为之前,允许振荡多少秒,seconds。
●oscillation_distance (double, default: 0.5)
机器人必须移动多少米,才会认为不振荡。
●planner_frequency (double, default: 0.0)
运行全局规划周期的频率,Hz。


1.1.7 API组件
Move_base节点包含的组件有他们自己的ROS API。这些组件会分别根据 ~base_global_planner, ~base_local_planner, 和 ~recovery_behaviors的值而改变。这些默认组件的API链接可以在下面找到:
costmap_2d ---------- move_base中使用的costmap_2d包的文档
nav_core ---------- 在move_base中使用的nav_core::BaseGlobalPlanner和nav_core::BaseLocalPlanner接口的文档
base_local_planner --------- move_base使用的base_local_planner的文档
navfn ---------- move_base中使用的navfn 全局规划器的文档
clear_costmap_recovery --------- move_base中使用的clear_costmap_recovery恢复行为的文档
rotate_recovery ------------ move_base中使用的rotate_recovery恢复行为的文档










 

你可能感兴趣的:(ros,ubuntu/inux,编程,C/C++)