1.前言

在进行路径规划与仿真时,往往需要对我们的算法进行验证,有很多方式来进行,比如利用QT可视化界面进行仿真,如下图是自己利用QGraphicsview建立的一个仿真环境。也可以利用ROS中的地图工具来进行,本文尝试使用ROS的map_server工具包进行地图的建立。

2.流程

(1)安装navigation功能包,或者单独安装map_server功能包

安装功能包时如果找不到功能包,添加一下中科大的镜像站,然后再下载

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-get update
sudo apt-get install ros-kinetic-navigation

(2)用画图软件创建一个地图

Ubuntu下Pinta图片编辑器是一款比较好用的画图截图软件,推荐大家使用,这里我存储的是png文件,命令map.png

(3)创建ros功能包,添加map文件夹

常规创建ros功能包,这里不再赘述

在根目录下新建ROS工作空间,命名pathplanning,并建立子文件夹src
mkdir -p pathplanning/src
进入src文件目录,初始化工作空间
cd src
catkin_init_workspace
退回pathplanning目录,编译工作空间
cd ..
catkin_make
设置环境变量
source devel/setup.bash
创建laser_receive功能包
catkin_create_pkg pathplanning std_msgs roscpp rospy

进入到pathplanning/src/pathplanning目录下

mkdir map

将map.png文件放到map文件夹下

(4)配置map.yaml文件

在map文件夹下创建map.yaml文件添加[1]

image: testmap.png
resolution: 0.1
origin: [0.0, 0.0, 0.0]
occupied_thresh: 0.65
free_thresh: 0.196
negate: 0
  • image:指定包含occupancy data的image文件路径; 可以是绝对路径,也可以是相对于YAML文件的对象路径 。
  • resolution:地图分辨率,单位是meters/pixel 。
  • origin:图中左下角像素的二维位姿,如(x,y,yaw),yaw逆时针旋转(yaw=0表示没有旋转)。系统的很多部分现在忽略yaw值。注意fix_frame是map
  • occupied_thresh:像素占用率大于这个阈值则认为完全占用。
  • free_thresh:像素占用率比该阈值小被则认为完全自由。
  • negate:无论白色或黑色,占用或自由,语义应该是颠倒的(阈值的解释不受影响)。
  • negate : Whether the white/black free/occupied semantics should be
    reversed (interpretation of thresholds is unaffected)

(5)显示地图

在map文件夹下打开终端

rosrun map_server map_server map.yaml

如果遇到闪退,一般是,map.yaml文件里面加了多余的换行和或空格,删掉即可。
启动rviz

看来800×600图片不小啊,在进行路径规划的时候,太大的地图对算法的实时性要求会很高。

(6)简单地接收一下地图

#include <ros/ros.h>
#include "nav_msgs/OccupancyGrid.h"void callback(const nav_msgs::OccupancyGridConstPtr& map)
{int height = map->info.height;int width = map->info.width;std::cout << "receive map!" <<"height: " << height << " width: "<<width<<std::endl;
}int main(int argc, char** argv)
{ros::init(argc, argv, "map_receiver");ros::NodeHandle n;ros::Subscriber sub = n.subscribe("map",100,callback);std::cout << "hahah" << std::endl;ros::spin();return 0;
}

参考文献:
[1]https://www.ncnynl.com/archives/201708/1897.html600

ROS自学实践(11):利用map_server功能包创建自己的地图相关推荐

  1. ROS 学习笔记(一):工作空间+功能包创建

    ROS 学习笔记(一):工作空间+功能包创建 一.创建工作空间(catkin_make编译): 1.创建工作空间 catkin_ws 创建空间.初始化(建立一个文件夹) cd ~ mkdir -p ~ ...

  2. ROS wiki绝对是相关的功能包的介绍最完整的网站。

    ROS wiki绝对是相关的功能包的介绍最完整的网站. https://www.bilibili.com/video/BV1zt411G7Vn?p=6 ROS  wiki里面的功能包是非常多的,基本你 ...

  3. Ros知识【09】:功能包介绍

    前言: 一个功能包内部,包含若干个节点:每个功能包对外使用:topic.service.paremeter作为接口:其它开发人员可以使用这些接口,不必关心功能包内部细节: 一.ubuntu下安装好ro ...

  4. 机器人编程趣味实践18-他山之石(功能包)

    机器人操作系统功能包可以使用如下两种方式使用: sudo apt install xxx colcon build xxx 第一种是打包的安装文件,第二种是源代码编译. 如何自己编写功能包后续细说,本 ...

  5. 利用WordPress官方插件创建sitemap站点地图的最佳方法

    作为站长不论小白还是经验丰富的老鸟,网站运营最重要的就是站点地图,站点地图是什么?它是一个工具,站长每天网站更新信息都被记录到网站地图(sitemap)里面,这是供搜索引擎爬虫抓取信息的页面,跟我们普 ...

  6. ROS自学实践(5):GAZEBO建模及添加相机和激光雷达传感器并进行仿真

    在搭建完机器人小车的模型之后,需要向其添加传感器,以便提取传感器的数据,进行后续的工作. 一.相机 1.添加camera_gazebo.xacro文件 同添加机器人模型一样,添加一个相机也需要进行定义 ...

  7. android返回上一级代码,Android实践11 | 利用intent返回数据给上一级activity

    利用intent返回数据给上一级activity 2018-05-08_154146.jpg activity间数据传递的,不但可以把数据从一个activity传给下一个activity,也可以从下一 ...

  8. DJI 无人机 Onboard SDK ROS 功能包demo运行

    DJI 无人机 Onboard SDK ROS 功能包demo运行 demo功能 准备测试环境 运行 dji sdk 节点 运行 demo 节点 自动飞行任务 航点自动飞行 兴趣点环绕自动飞行 飞行控 ...

  9. 【RK3399Pro学习笔记】四、ROS 创建工作空间与功能包

    目录 创建工作空间 编译工作空间 功能包 创建功能包 编译功能包 设置环境变量 检查环境变量 平台:华硕 Thinker Edge R 瑞芯微 RK3399Pro 固件版本:Tinker_Edge_R ...

最新文章

  1. [Angular 2] @ngrx/devtools demo
  2. 微信获取位置 转化为 高德地图 位置 地址
  3. Java Web学习总结(19)——web.xml配置详解
  4. Android开发周报:Android 8.0开始推送、微店插件化实践
  5. 破解版xmind 8
  6. hdmi接口和计算机连接,hdmi接口,教您hdmi接口怎么连接电视
  7. oracle文本类型字段,Oracle字符的5种类型的介绍
  8. 计算机过热保护,CPU过热 保护电脑关机的解决办法有哪些
  9. 为什么许多器件的片选信号低电平有效,而不是高电平有效?
  10. 纳德拉时代下的微软开源之路
  11. 【基于Java语言的Android个人开发笔记,开屏引导页】利用ViewPagerFragment实现引导页
  12. 软件自动化测试框架STAF
  13. 为你留存最美好的岁月——汉印CP4000L体验评测
  14. html的鼠标手怎么去掉,flex htmlText属性和Label设置鼠标手形状
  15. 【汇正财经】什么是成长投入策略?
  16. 剖析微信等即时通讯常用组件(一)
  17. 使用Fragment实现Tab效果
  18. 例3.2 计算存款利息。有1000元,存一年。(1)活期,年利率为r1,(2)一年期定期,年利率为r2,(3)存两年半年定期,年利率为r3。
  19. sonicwall TZ-105 防火墙基本介绍
  20. 高通:推出全新5G基站

热门文章

  1. C++ 判断 IP 是否在 1网段。 char string 查找 截取 比较
  2. JavaScript 伪数组和数组
  3. eas bos 查看工作流sql 当前任务名称 任务创建时间 审批人
  4. 金边php,柬埔寨首都,不如中国县级市?金边与中国各大城市比一比
  5. 【转】英语中的从属连词,28个,一篇搞定(句子结构2)
  6. 2020,上市也疯狂
  7. 抖音、今日头条、西瓜视频将打包上市
  8. 数据异质性会影响深度学习变化检测模型的迁移能力,请列出提升模型迁移性的解决思路...
  9. Android A/B System OTA分析(六)如何获取 payload 的 offset 和 size
  10. Python地球科学领域应用:python处理遥感数据、站点数据、遥感水文数据、气候变化数据、WRF模式数据后处理、运行生态模型