大部分内容参考自:

ros_by_example_hydro_volume_1.pdf

主要是讲如何让先锋机器人在空白地图上运动

上面图是navigation框架图,可以看到move_base处在核心地位

move_base这个包由许多组件组成

详细看:

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

component apis部分

/map提供全局地图

/tf提供当前全局位姿

“odom”topic提供机器人速度与角速度,这个在DWA(动态窗口法)中会用到,

因为动态窗口法是使用当前机器人速度与角速度推断一段时间后轨迹看看会不会与障碍物相碰

sensor topics 还没有弄明白点云是怎么转换成cost_map

如何使用move_base:

move_base这个包启动后会同时启用

global_planner:参数配置链接:http://wiki.ros.org/global_planner?distro=kinetic

local_planner:参数配置链接:http://wiki.ros.org/base_local_planner?distro=kinetic

global_costmap:参数配置链接:http://wiki.ros.org/costmap_2d

local_costmap:参数配置链接:http://wiki.ros.org/costmap_2d

参数文件配置范例参考:ros by example volume1 中 8.1.2小节

其中planner可以通过设置move_base参数

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

~base_global_planner (string, default: "navfn/NavfnROS" For 1.1+ series)

  • The name of the plugin for the global planner to use with move_base, see pluginlib documentation for more details on plugins. This plugin must adhere to the nav_core::BaseGlobalPlanner interface specified in the nav_core package. (1.0 series default: "NavfnROS")

~base_local_planner (string, default: "base_local_planner/TrajectoryPlannerROS" For 1.1+ series)

  • The name of the plugin for the local planner to use with move_base see pluginlib documentation for more details on plugins. This plugin must adhere to the nav_core::BaseLocalPlanner interface specified in the nav_core package. (1.0 series default: "TrajectoryPlannerROS")

比如要使用别的local planner

http://wiki.ros.org/nav_core#BaseLocalPlanner

上面链接有说明哪些现成local planner可以用

比如用eband_local_planner

http://wiki.ros.org/eband_local_planner

  <node pkg="move_base" type="move_base" name="move_base">
<param name="base_local_planner" value="eband_local_planner/EBandPlannerROS"/>
...
</node>  

就可以在move_base使用使用eband_local_planner了

move_base默认使用base_local_planner

这个可以在

~base_local_planner (string, default: "base_local_planner/TrajectoryPlannerROS" For 1.1+ series)

中看出来

指定了planner之后就可以到对应页面参考参数设置了

之后是一个例子,实现局部路径规划(避障)

因为不需要全局cost_map,所以将/odom和/map固定在一块,用/odom tf来进行定位

两个launch file

这个launch file是启动先锋机器人驱动

<launch>
<!--launch driver-->
<node pkg="rosaria" type="RosAria" name="RosAria">
<param name="port" value="/dev/ttyUSB0" />
</node> <!-- Launch move_base and load all navigation parameters -->
<include file="$(find pioneer_zed)/launch/pioneer_move_base.launch" /> <!-- Run the map server with a blank map -->
<node name="map_server" pkg="map_server" type="map_server" args="$(find pioneer_zed)/maps/blank_map.yaml" /> <!-- Run a static transform between /odom and /map -->
<node pkg="tf" type="static_transform_publisher" name="odom_map_broadcaster" args="0 0 0 0 0 0 /map /odom 100" /> </launch>  

这个launch file是move_base配置

<launch>

  <node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen" clear_params="true">
<remap from="/cmd_vel" to="/RosAria/cmd_vel"/>
<rosparam file="$(find pioneer_zed)/config/costmap_common_params.yaml" command="load" ns="global_costmap" />
<rosparam file="$(find pioneer_zed)/config/costmap_common_params.yaml" command="load" ns="local_costmap" />
<rosparam file="$(find pioneer_zed)/config/local_costmap_params.yaml" command="load" />
<rosparam file="$(find pioneer_zed)/config/global_costmap_params.yaml" command="load" />
<rosparam file="$(find pioneer_zed)/config/base_local_planner_params.yaml" command="load" />
</node> </launch>

  

ros navigation stack---move_base的更多相关文章

  1. ros navigation stack 各个包的作用

    nav_core 该包定义了整个导航系统关键包的接口函数,包括base_global_planner, base_local_planner以及recovery_behavior的接口.里面的函数全是 ...

  2. ROS naviagtion analysis: move_base

    博客转载自:https://blog.csdn.net/u013158492/article/details/50483123 这是navigation的第一篇文章,主要通过分析ROS代码级实现,了解 ...

  3. Roomblock: a Platform for Learning ROS Navigation With Roomba, Raspberry Pi and RPLIDAR(转)

      What is this? "Roomblock" is a robot platform consists of a Roomba, a Raspberry Pi 2, a ...

  4. while an existing transition or presentation is occurring; the navigation stack will not be updated

    使用UIAlertController提示信息,在之后使用navigation进行逻辑跳转时,出现popToViewController:transition: called on <UINav ...

  5. ROS Navigation中的map_server地图包功能和使用

    博客参考 http://wiki.ros.org/map_server 和 https://www.ncnynl.com/archives/201708/1897.html 1. 安装map_serv ...

  6. Ionic3错误记录:navigation stack needs at least one root page

    BUG场景:在 ActionSheetController 使用modalCtrl.create 创建模态框时报如下错误 原代码片段 解决方式: 重新设置root page

  7. ROS机器人程序设计(原书第2版)补充资料 (捌) 第八章 导航功能包集入门 navigation

    ROS机器人程序设计(原书第2版)补充资料 (捌) 第八章 导航功能包集入门 navigation 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中 ...

  8. ROSCon 2016视频和幻灯片发布 ROS机器人操作系统重要参考资料

    ROSCon 2016视频和幻灯片发布 By Tully Foote on 十月19,2016 7:28 AM 全部PPT下载地址:http://pan.baidu.com/s/1gf2sn2F RO ...

  9. ROS-2 : ROS系统层级结构

    一.ROS文件系统层级 ROS的文件和文件夹按如下层级来组织:

随机推荐

  1. 【vim环境配置】详细实录

    [写在前面] 以下的所有内容主要参照: https://github.com/yangyangwithgnu/use_vim_as_ide . 原blog作者写的非常用心,建议大家都去看看.(个人觉得 ...

  2. 每天一个Linux命令(3):ls命令

    ls命令用来显示目标列表,在Linux中是使用率较高的命令.ls命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件. 语法 ls(选项)(参数) 选项 -a:显示所有档案及目录(ls内定将档案名 ...

  3. 【Python】python常用模块

    一.模块.包 什么是模块? 模块实质上就是一个python文件,它是用来组织代码的,意思就是说把python代码写到里面,文件名就是模块的名称,test.py test就是模块名称. 什么是包? 包, ...

  4. 巧用Fiddler代理来禁止资源缓存,从而达到每次都是从服务器加载最新的资源

    Fiddler ->  Rules ->  Performance  -> Disable Caching 直接设置禁用缓存,再在没有清除缓存功能的APP 中重新加载最新的页面, 每 ...

  5. Windows 下开发.NET Core应用

    一.使用Visual Studio 2015开发1.1 依次安装Visual Studio 2015 Update 3.NET Core 1.0.0 - VS 2015 Tooling Preview ...

  6. JavaScript里面的正则以及eval

    1.eval JavaScript中的eval是Python中eval和exec的合集,既可以编译代码也可以获取返回值. eval() EvalError   执行字符串中的JavaScript代码 ...

  7. php 数据库内容增删改查----增

    首先,建立一个主页面(crud.php) <!DOCTYPE html> <html lang="en"> <head> <meta ch ...

  8. zabbixproxy安装

    目录 1     zabbix3.2安装.... 1 2     安装proxy. 1 2.1      安装zabbix-proxy. 1 2.1.1 配置zabbix yum源.... 1 2.1 ...

  9. JavaWeb笔记(六)MVC与三层架构

    MVC M Model 模型 JavaBean 完成具体的业务操作,如:查询数据库,封装对象 V View 视图 JSP 展示数据 C Controller 控制器 Servlet 获取用户输入,调用 ...

  10. web自动化测试:watir+minitest(四)

    脚本连跑: rake是ruby中的一个构建工具,和make很像.允许用ruby来写rakefile. 我们使用rake以任务的方式来运行我们的脚本集. 新建Rakefile文件,写入如下内容: req ...