以下大部分内容参考自

ros_by_example_hydro_volume_1.pdf

local costmap 是怎么生成的?跟三维点云有什么关系?

global costmap在没有全局地图下怎么办?

要实现标题所述功能:

需要配置local costmap和global costmap

在move_base里默认用到的costmap(这一点在论文:ROS Navigation: Concepts and Tutorial 3.6最后一段节有说到,而且说明了怎么配置layered costmap)

是monolithic costmap这个在论文:

Layered Costmaps for Context-Sensitive Navigation中有详细描述

layered costmap就是一层层不同地图重叠在一起

在论文:Layered Costmaps for Context-Sensitive Navigation里描述的很详细,主要是讲了layered costmap这么进行更新和每一层都是什么

包括:

其中master layer是aggregate layer where path planning occurs

对于local costmap, 如voxel layer就是其中一层,他可以判断比如一个桌子,激光会扫到桌子腿,认为可以过去,但是机器人还是会碰到桌子,因为激光扫不到桌面,

这个例子是在讲voxel grid论文里看到的:

The Office Marathon:Robust Navigation in an Indoor Office Environment

然后在layered costmap update时就会在master上三维向二维投影出桌面,让机器人不走这条路径。

local costmap和global costmap采用地图方式不一样

global costmap采用静态地图(通过slam产生的),这里只是涉及避障所以可以将静态地图设置为空白地图,将地图世界坐标/map和定位采用的坐标系tf通过static_transform固定在一起这个可以看

http://www.cnblogs.com/hong2016/p/6831484.html

如果之后要采用静态地图再修改

http://www.cnblogs.com/hong2016/p/6831484.html

中讲到的llaunch file就好了

  <node name="map_server" pkg="map_server" type="map_server" args="$(find pioneer_zed)/maps/blank_map.yaml" />

下面这段话摘自ros bt example volume1 8.2 Testing move_base in the ArbotiX Simulator 第二段

Finally, since we are using a blank map and our simulated robot has no sensors, the robot cannot use scan data for localization. Instead, we simply set a static identity

transform to tie the robot's odometry frame to the map frame which essentially assumesthat the odometry is perfect.

local costmap不采用静态地图而是采用rolling window

http://answers.ros.org/question/10482/navigation-without-map/

you're right - I figured that out, this thread is a bit outdated. As for your question - the normal trend is to use rolling_window: true for local costmap since by definition that map is used for collision checking with the immediate robot.

http://answers.ros.org/question/10620/whats-the-difference-between-global-and-local-costmaps-static_map/

For the tutorial, only the global costmap uses an a priori map, so the static_map parameter is set to true. The local costmap, however, only uses local sensor information to build an obstacle map, so static_map is set to false.

rolling window是

http://answers.ros.org/question/223880/what-is-rolling-window-used-for/

"Rolling window" means that you do not use the costmap to represent your complete environment, but only to represent your local surroundings (e.g. 5m x 5m around your robot). The costmap will then move along with your robot and will be updated by incoming sensor data.

http://answers.ros.org/question/39858/costmap-static_map/

You have to make sure that you also set the size of the rolling window appropriately:

rolling_window: true
width: 15.0
height: 15.0
resolution: 0.05
origin_x: 0.0
origin_y: 0.0

When using a static map, the width and height are determined using the loaded image. In a rolling window, you must manually specify these parameters for your robot. Just know that it places your robot in the center of the rolling window, so the robot can only see things that are height/2 meters away.

ros move_base costmap 理解和实现动态窗口法避障的更多相关文章

  1. 机器人局部避障的动态窗口法(dynamic window approach) (转)

    源:机器人局部避障的动态窗口法(dynamic window approach) 首先在V_m∩V_d的范围内采样速度: allowable_v = generateWindow(robotV, ro ...

  2. ROS知识(14)----局部避障的动态窗口算法(DWA)及其调试的方法

    Dynamic Window Approach(DWA)是重要的局部轨迹规划算法,ROS中使用了DWA算法获得了很好的局部路径规划的效果.具体的教程可参考官方的导航调试资料Navigation Tun ...

  3. SLAM+语音机器人DIY系列:(二)ROS入门——7.理解tf的原理

    摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...

  4. 继承Prototype实现语句不能写在动态原型法中的理解

    阅读javascript高级编程中, 对动态原型法中写Prototype继承父类对象的不可行的现象,不甚理解. 书上说是技术原因,如下有问题代码: 但是把protype语句移到构造函数后面,就OK,如 ...

  5. 理解Javascript的动态语言特性

    原文:理解Javascript的动态语言特性 理解Javascript的动态语言特性 Javascript是一种解释性语言,而并非编译性,它不能编译成二进制文件. 理解动态执行与闭包的概念 动态执行: ...

  6. SLAM+语音机器人DIY系列:(二)ROS入门——8.理解roslaunch在大型项目中的作用

    摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...

  7. 深入理解LINUX下动态库链接器/加载器ld-linux.so.2

    [ld-linux-x86-64.so.2] 最近在Linux 环境下开发,搞了好几天 Compiler 和 linker,觉得有必要来写一篇关于Linux环境下 ld.so的文章了,google上搜 ...

  8. 滑动窗口法——Leetcode例题

    滑动窗口法--Leetcode例题(连更未完结) 1. 方法简介 滑动窗口法可以理解为一种特殊的双指针法,通常用来解决数组和字符串连续几个元素满足特殊性质问题(对于字符串来说就是子串).滑动窗口法的显 ...

  9. 【LeetCode】无重复字符的最长子串【滑动窗口法】

    给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc&quo ...

随机推荐

  1. 用gulp清除、移动、压缩、合并、替换代码

    之前前端代码部署时用的是grunt,后来又出了个gulp工具,最近试用了一下,很方便,感觉比grunt简单好用,下面把一些常见的任务列一下,备用. var gulp = require('gulp') ...

  2. 生成器 yield, next ,send

    重要的yield :相当于一个断层,我们再用next取拿出每一层重要的next :生成器查看装置,查看每一个断层重要的send :和next一样查看每一个段层,不过在查看第二个断层的时候,就可以对前面 ...

  3. Linq语法和C#6.0

    一. linq 1.简介: 能用linq实现的基本都可以用扩展方法实现: 举例: 查询ID>1的狗有如下两种写法 (1)var  r1=dogs.where(d=>d.id>1) ( ...

  4. 孤荷凌寒自学python第五天初识python的列表

    孤荷凌寒自学python第五天 列表 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 粗俗地区分列表,可以这样理解,定义或print列表后显示时,列表中的各元素都是用一个方括号[]括起来的. ...

  5. (转\整)UE4游戏优化 多人大地型游戏的优化(四)内存的优化

    施主分享随缘,评论随心,@author:白袍小道,当苦无妨 小道暗语: 1.因为小道这里博客目录没自己整,暂时就用随笔目录结构,所以二级目录那啥就忽略了.标题格式大致都是(原or转) 二级目录 (标题 ...

  6. IntelliJ IDEA 注释模版 输入/**后 不显示配置好的模板

    简单一句话就是 当你在live templetes里配置好以后,记住abbreviation:输入框里的字母 比如我的是cc ,我要想写注释怎么办? 在方法上输入 /*cc 然后按tab键就出来了

  7. 重现ssd遇到的问题

    首先是create_list.sh和create_data.sh中的data_dir的路径得修改. 然后是在create_data.sh文件调用$caffe_root下的scripts目录中的crea ...

  8. Java 实现二叉树的构建以及3种遍历方法

    转载自http://ocaicai.iteye.com/blog/1047397 大二下学期学习数据结构的时候用C介绍过二叉树,但是当时热衷于java就没有怎么鸟二叉树,但是对二叉树的构建及遍历一直耿 ...

  9. Android记事本10

    昨天: 从Activity中返回数据. 请求码和结果码的作用. 今天: Activity的启动模式. 遇到的问题: 无.

  10. PHP路径相关 dirname,realpath,__FILE__

    ​比如:程序根目录在:E:\wamp\www 中 1.    __FILE__   当前文件的绝对路径 如果在index.php中调用 则返回  E:\wamp\www\index.php 下面再看一 ...