配置使用costmap_2d_node

应用背景:移动机器人导航规划任务中,需要知道障碍物与机器人的距离信息。原始生成(或绘制)的2D栅格地图无法直接得到机器人距离障碍物的信息,我们需要模拟大量的雷达射线,经过大量计算得到这些信息。即使在静态的环境中,机器人的每个运行周期都需要这样的计算过程。costmap_2d_node作为ROS NAVIGATION STACK的重要插件,直接对2D栅格地图中的障碍物进行高斯扩散,使每个栅格都包含障碍物远近的信息(占据值occupied value)。

系统:ubuntu 14.04+ros indigo


1. Inflation 原理

膨胀(inflation)为被占据栅格(障碍物)按照距离向其周边栅格传播的过程。按照栅格对机器人的影响,可分为5类:

1. “Lethal”代价表明该栅格包含障碍物,如果机器人的中心在此类栅格中,则机器人发生碰撞。

2. “Inscribed”代价表明某栅格距离机器人小于机器人本体的内切圆,如果机器人中在此类栅格中,则机器人肯定发生碰撞。

3. “Possibly circumscribed” 代价与“Inscribed”代价相似,但是其依据为机器人本体的外接圆的半径。当机器人在此类栅格中时,很有可能发生碰撞。

4. “Freespace”代价为零,在此类栅格中,机器人绝对不会发生碰撞。

5. “Unknown”代价。

除此之外的其它代价都介于“Freespace”代价与"Possibly circumscribed"代价之间。

高斯膨胀函数:

exp(-1.0 * cost_scaling_factor * (distance_from_obstacle - inscribed_radius)) * (costmap_2d::INSCRIBED_INFLATED_OBSTACLE - 1)

其中,costmap_2d::INSCRIBED_INFLATED_OBSTACLE 为 254. NOTE: 因为 cost_scaling_factor is multiplied 被乘上负号, 所以增大该因子,将减小障碍物对周围栅格的影响。

2. costmap_2d_node安装、配置与应用

2.1 安装

sudo apt-get install ros-indigo-costmap-2d

2.2 配置

在指定文件夹下新建文件minimal.yaml,并填充以下内容保存。(其中cost_scaling_factor与inflation_radius很重要)

##################################
#        minimal.yaml            #
##################################
plugins: []
publish_frequency: 1.0
footprint: [[-1.3, -0.9], [-1.3, 0.9], [1.3, 0.9], [1.3, -0.9]]
rolling_window: false
plugins: - {name: static_layer,            type: "costmap_2d::StaticLayer"}- {name: inflation_layer,         type: "costmap_2d::InflationLayer"}
#cost_scaling_factor and inflation_radius were now moved to the inflation_layer ns
inflation_layer:enabled:              truecost_scaling_factor:  0.5  # exponential rate at which the obstacle cost drops off (default: 10)inflation_radius:     30.0  # max. distance from an obstacle at which costs are incurred for planning paths.static_layer:enabled:              true

将要处理的地图图片realmap.pgm放在指定文件夹下。

并新建realmap.yaml,填充以下内容保存。

##########################
#     realmap.pgm        #
##########################
image: realmap.pgm
resolution: 0.350000
origin: [0.00000, 0.0000, 0.0]
negate: 0
occupied_thresh: 0.98
free_thresh: 0.0
mode: "scale"

在指定文件夹下新建launch文件costmap_test.launch,并填充以下内容保存。

<!-- --><launch><node name="static_tf0" pkg="tf" type="static_transform_publisher" args="2 0 0 0 0 0 /map /base_link 100" /><node name="map_server" pkg="map_server" type="map_server" args="$(find main_launch)/params/realmap.yaml" /><rosparam file="$(find main_launch)/params/minimal.yaml" command="load" ns="/costmap_node/costmap" />
</launch>

其中,realmap.yaml为map_server发布的全局静态地图。该消息会被costmap_2d_node作为初始化信息,并得到最终的高斯膨胀代价地图。

2.3 应用

roslaunch main_launch costmap_test.launchrosrun costmap_2d costmap_2d_node 

得到高斯膨胀后的地图

配置使用costmap_2d_node相关推荐

  1. nginx配置http、https访问,nginx指定ssl证书,阿里云腾讯云华为云设置nginx https安全访问

    nginx配置http.https访问 要设置https访问需要从对应的云厂商申请证书,并下载Nginx证书到服务器. 我这里从阿里云申请了免费的域名证书,然后将证书放置在服务器的/etc/ssl/. ...

  2. 在kotlin companion object中读取spring boot配置文件,静态类使用@Value注解配置

    在kotlin companion object中读取配置文件 静态类使用@Value注解配置 class Config {@Value("\${name}")fun setNam ...

  3. 大数据学习01——配置虚拟机节点相关网络

    1.配置mac地址和ip (1)更改适配器设置 找到这个后开始设置windows中的网络连接 (2)接着对三台虚拟机的mac地址和ip进行设置 1.mac地址设置 进入linux节点中的这个位置进行设 ...

  4. plsql配置多数据源,想换哪个换哪个

    现在的公司内部普遍使用plsql对数据库进行管理.而数据库非常多,从测试到线上环境数据库那么多,我们通常使用同一配置管理,便于切换.那么配置数据库连接就成为了很重要的一步. 1.安装plsql (这里 ...

  5. Linux下docker安装配置oracle,oracle创建用户并远程连接,实测可用!

    最近在给同学弄毕业设计的数据库,因为oracle在个人电脑上极不稳定,所以他的电脑数据库崩溃了,这时候我就在docker上为他拉了一个oracle,解决了问题. docker的安装共有以下几步,实测没 ...

  6. Linux下tomcat的安装与卸载以及配置(超简单)

    无敌简单的几步 1.安装 //首先你需要下载好tomcat包 sudo tar -xvzf apache-tomcat-7.0.85.tar.gz(这里是包名) -C 你要放的位置 2.卸载 rm - ...

  7. Maven安装与配置(最实用!!!)eclipse中配置maven

    Maven安装与配置 一.需要准备的东西 JDK Eclipse(本章主要是在eclipse中进行配置maven) Maven程序包 二.下载与安装 1. 前往maven下载最新版的Maven程序: ...

  8. CentOS Docker安装配置部署Golang web helloworld

    目录[阅读时间:约5分钟] 一.Docker简介 二.Docker的安装与配置[CentOS环境] 三.Docker部署Golang web helloworld 四.Docker与虚拟机的区别 五. ...

  9. centos使用镜像源轻松配置golang+vscode的方法

    Title:centos使用镜像源轻松配置golang+vscode的方法 (阅读时间:约5分钟) 零.序言 最近笔者在上一门名为服务计算的课程,在老师的作业博客中提到,安装golang+vscode ...

最新文章

  1. Xilinx IP核专题之PLL IP核介绍(Spartan-6)
  2. 用border-width,border-color画三角形
  3. mybatis-generator-gu(mybatis generator 的图形界面工具)
  4. 【MySQl】MyISAM和InnoDB索引对比
  5. JAVA 泛型中的通配符 T,E,K,V,?
  6. Chrome查看cookie
  7. Vue cli3+Hubuilder将项目打包为App
  8. 漫画:数据结构之最短路径 Dijkstra 算法的优化 | 技术头条
  9. MFC实现Flash动画播放
  10. 2019春季学期进度报告(十一)
  11. 客快物流大数据项目(三):项目解决方案
  12. linux 重启ftp的命令,linux开启ftp命令
  13. 路飞学城Python-Day2
  14. 计算机 及其 应用系统
  15. 台式计算机怎么开关网络,怎么用台式电脑开wifi_台式电脑如何开启wifi
  16. 第3节:alphapose环境配置
  17. 对接海康威视ehome踩过的坑总结
  18. 通用键盘鼠标模拟(包括USB和PS2)
  19. 16进制数组和ASK码字符之间的转换
  20. 数据安全与销毁:数据安全已经上升到了国家战略层面

热门文章

  1. 华为分布式文件存储服务器配置,分布式存储服务器
  2. Linux修改静态IP
  3. ajax请求怎么实现跨域
  4. 前端 http request
  5. IEEE xplore论文免费下载
  6. 快速上手JFinal
  7. Python请求HTTPS证书错误
  8. 网络爬虫 测试代理IP
  9. java基础入门传智播客电子版,手撕面试官
  10. 本地服务器模板网站怎么安装,使用dedecms搭建自己的本地网站(全程图解)