ROS自学实践(11):利用map_server功能包创建自己的地图
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功能包创建自己的地图相关推荐
- ROS 学习笔记(一):工作空间+功能包创建
ROS 学习笔记(一):工作空间+功能包创建 一.创建工作空间(catkin_make编译): 1.创建工作空间 catkin_ws 创建空间.初始化(建立一个文件夹) cd ~ mkdir -p ~ ...
- ROS wiki绝对是相关的功能包的介绍最完整的网站。
ROS wiki绝对是相关的功能包的介绍最完整的网站. https://www.bilibili.com/video/BV1zt411G7Vn?p=6 ROS wiki里面的功能包是非常多的,基本你 ...
- Ros知识【09】:功能包介绍
前言: 一个功能包内部,包含若干个节点:每个功能包对外使用:topic.service.paremeter作为接口:其它开发人员可以使用这些接口,不必关心功能包内部细节: 一.ubuntu下安装好ro ...
- 机器人编程趣味实践18-他山之石(功能包)
机器人操作系统功能包可以使用如下两种方式使用: sudo apt install xxx colcon build xxx 第一种是打包的安装文件,第二种是源代码编译. 如何自己编写功能包后续细说,本 ...
- 利用WordPress官方插件创建sitemap站点地图的最佳方法
作为站长不论小白还是经验丰富的老鸟,网站运营最重要的就是站点地图,站点地图是什么?它是一个工具,站长每天网站更新信息都被记录到网站地图(sitemap)里面,这是供搜索引擎爬虫抓取信息的页面,跟我们普 ...
- ROS自学实践(5):GAZEBO建模及添加相机和激光雷达传感器并进行仿真
在搭建完机器人小车的模型之后,需要向其添加传感器,以便提取传感器的数据,进行后续的工作. 一.相机 1.添加camera_gazebo.xacro文件 同添加机器人模型一样,添加一个相机也需要进行定义 ...
- android返回上一级代码,Android实践11 | 利用intent返回数据给上一级activity
利用intent返回数据给上一级activity 2018-05-08_154146.jpg activity间数据传递的,不但可以把数据从一个activity传给下一个activity,也可以从下一 ...
- DJI 无人机 Onboard SDK ROS 功能包demo运行
DJI 无人机 Onboard SDK ROS 功能包demo运行 demo功能 准备测试环境 运行 dji sdk 节点 运行 demo 节点 自动飞行任务 航点自动飞行 兴趣点环绕自动飞行 飞行控 ...
- 【RK3399Pro学习笔记】四、ROS 创建工作空间与功能包
目录 创建工作空间 编译工作空间 功能包 创建功能包 编译功能包 设置环境变量 检查环境变量 平台:华硕 Thinker Edge R 瑞芯微 RK3399Pro 固件版本:Tinker_Edge_R ...
最新文章
- [Angular 2] @ngrx/devtools demo
- 微信获取位置 转化为 高德地图 位置 地址
- Java Web学习总结(19)——web.xml配置详解
- Android开发周报:Android 8.0开始推送、微店插件化实践
- 破解版xmind 8
- hdmi接口和计算机连接,hdmi接口,教您hdmi接口怎么连接电视
- oracle文本类型字段,Oracle字符的5种类型的介绍
- 计算机过热保护,CPU过热 保护电脑关机的解决办法有哪些
- 为什么许多器件的片选信号低电平有效,而不是高电平有效?
- 纳德拉时代下的微软开源之路
- 【基于Java语言的Android个人开发笔记,开屏引导页】利用ViewPagerFragment实现引导页
- 软件自动化测试框架STAF
- 为你留存最美好的岁月——汉印CP4000L体验评测
- html的鼠标手怎么去掉,flex htmlText属性和Label设置鼠标手形状
- 【汇正财经】什么是成长投入策略?
- 剖析微信等即时通讯常用组件(一)
- 使用Fragment实现Tab效果
- 例3.2 计算存款利息。有1000元,存一年。(1)活期,年利率为r1,(2)一年期定期,年利率为r2,(3)存两年半年定期,年利率为r3。
- sonicwall TZ-105 防火墙基本介绍
- 高通:推出全新5G基站
热门文章
- C++ 判断 IP 是否在 1网段。 char string 查找 截取 比较
- JavaScript 伪数组和数组
- eas bos 查看工作流sql 当前任务名称 任务创建时间 审批人
- 金边php,柬埔寨首都,不如中国县级市?金边与中国各大城市比一比
- 【转】英语中的从属连词,28个,一篇搞定(句子结构2)
- 2020,上市也疯狂
- 抖音、今日头条、西瓜视频将打包上市
- 数据异质性会影响深度学习变化检测模型的迁移能力,请列出提升模型迁移性的解决思路...
- Android A/B System OTA分析(六)如何获取 payload 的 offset 和 size
- Python地球科学领域应用:python处理遥感数据、站点数据、遥感水文数据、气候变化数据、WRF模式数据后处理、运行生态模型