ros navigation stack---move_base

大部分内容参考自:
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的更多相关文章
- ros navigation stack 各个包的作用
nav_core 该包定义了整个导航系统关键包的接口函数,包括base_global_planner, base_local_planner以及recovery_behavior的接口.里面的函数全是 ...
- ROS naviagtion analysis: move_base
博客转载自:https://blog.csdn.net/u013158492/article/details/50483123 这是navigation的第一篇文章,主要通过分析ROS代码级实现,了解 ...
- 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 ...
- while an existing transition or presentation is occurring; the navigation stack will not be updated
使用UIAlertController提示信息,在之后使用navigation进行逻辑跳转时,出现popToViewController:transition: called on <UINav ...
- ROS Navigation中的map_server地图包功能和使用
博客参考 http://wiki.ros.org/map_server 和 https://www.ncnynl.com/archives/201708/1897.html 1. 安装map_serv ...
- Ionic3错误记录:navigation stack needs at least one root page
BUG场景:在 ActionSheetController 使用modalCtrl.create 创建模态框时报如下错误 原代码片段 解决方式: 重新设置root page
- ROS机器人程序设计(原书第2版)补充资料 (捌) 第八章 导航功能包集入门 navigation
ROS机器人程序设计(原书第2版)补充资料 (捌) 第八章 导航功能包集入门 navigation 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中 ...
- ROSCon 2016视频和幻灯片发布 ROS机器人操作系统重要参考资料
ROSCon 2016视频和幻灯片发布 By Tully Foote on 十月19,2016 7:28 AM 全部PPT下载地址:http://pan.baidu.com/s/1gf2sn2F RO ...
- ROS-2 : ROS系统层级结构
一.ROS文件系统层级 ROS的文件和文件夹按如下层级来组织:
随机推荐
- Java中的垃圾回收机制&内存管理&内存泄漏
1. Java在创建对象时,会自动分配内存,并当该对象引用不存在的时候,释放这块内存. 为什么呢? 因为Java中使用被称为垃圾收集器的技术来监视Java程序的运行,当对象不再使用时,就自动释放对象所 ...
- 安装macports
Mac下面除了用dmg.pkg来安装软件外,比较方便的还有用MacPorts来帮助你安装其他应用程序,跟BSD中的ports道理一样.MacPorts就像apt-get.yum一样,可以快速安装些软件 ...
- c#集合的使用
//添加单个元素用Add方法 ArrayList list = new ArrayList(); list.Add(true); list.Add(); list.Add("小陈" ...
- 《数据结构与算法分析:C语言描述》复习——第三章“线性表、栈和队列”——双向链表
2014.06.14 20:17 简介: 双向链表是LRU Cache中要用到的基本结构,每个链表节点左右分别指向上一个和下一个节点,能够自由地左右遍历. 图示: 实现: // My implemen ...
- 《Cracking the Coding Interview》——第4章:树和图——题目4
2014-03-19 03:40 题目:给定一棵二叉树,把每一层的节点串成一个链表,最终返回一个链表数组. 解法:前序遍历,遍历的同时向各个链表里添加节点.水平遍历好像还不如前序遍历来得方便. 代码: ...
- Git上手:Git扫盲区
Git 自述Git 是由伟大的电脑程序员Linus Torvalds编写的一个开源的,分布式的版本控制系统软件. Git 核心原理Git 利用底层数据结构,通过指向索引对象的可变指针,保存文件快照. ...
- cloud-init简介及组件说明
http://cloudinit.readthedocs.io/en/latest/topics/examples.html介绍: cloud-init是专为云环境中虚拟机的初始化而开发的工具, ...
- kibana的查询语法
kibana的查询语法是 字段Fields:关键词
- 【转载】10个最佳ES6特性
译者按: 人生苦短,我用ES6. 原文: Top 10 ES6 Features Every Busy JavaScript Developer Must Know 译者: Fundebug 为了保证 ...
- NSOperation 开发
目录 1.简介 2.Operation对象 3.自定义Operation对象 4.通过Operation Queues运行Operation对象 5.手动运行Operation对象 一.简介 Coco ...