在Gazebo中使用DEM構建起伏地形環境
所需資料下載地址:
1. https://bitbucket.org/osrf/gazebo_tutorials/raw/default/dem/files/
数字高程模型(致謝谷歌翻譯)
概述
数字高程模型(DEM)是地形表面的3D表示,不包括任何对象,如建筑物或植被。 DEM通常通过使用传感器的组合来创建,诸如LIDAR,雷达或照相机。地面位置的地形海拔以规则间隔的水平间隔进行采样。维基百科是获取更多有关DEM的详细信息的好资源。术语DEM仅是通用面值,而不是特定格式。事实上,DEM可以表示为高程网格(光栅)或基于矢量的三角形不规则网络(TIN)。目前,Gazebo仅支持GDAL中支持的格式的栅格数据。
在Gazebo中支持DEM的主要动机是能够模拟逼真的地形。救援或农业应用可能有兴趣使用与真实世界匹配的模拟地形来测试他们的机器人行为。
带DEM支持Gazebo(ROS kinetic和Gazebo 7)
为了使用DEM文件,您应该安装GDAL库。
$ sudo apt-get install gdal-bin libgdal-dev libgdal1i python-gdal
DEM文件和定义转换为SDF格式
有几个组织提供高程数据。作为一个例子,让我们下载圣海伦山的DEM文件在它的喷发之前或之后在80年代。这些文件在公共领域,由USGS分发。
解压缩文件并将其重命名为mtsthelens.dem,如下所示:
參考命令,依據實際情況調整
cd 〜/下载
wget https://bitbucket.org/osrf/gazebo_tutorials/raw/default/dem/files/mtsthelens_before.zip
unzip〜/ Downloads / mtsthelens_before.zip -d / tmp
mv /tmp/30.1.1.1282760.dem /tmp/mtsthelens.dem
通常,DEM文件具有大分辨率,Gazebo无法处理它,因此调整DEM的分辨率是个好主意。下一个命令将地形缩放到129x129,并将复制到對應目录中。
$ gdalwarp -ts 129 129 mtsthelens.dem mtsthelens_129.dem
Gazebo中的DEM文件以与加载高度图图像相同的方式加载。 Gazebo自动检测文件是纯文本还是DEM文件。创建文件volcano.world并复制下一个内容。将文件保存到任何位置,例如/ gazebo_dem。
<?xml version="1.0" ?>
<sdf version="1.4">
<world name="default">
<!-- A global light source -->
<include>
<uri>model://sun</uri>
</include> <model name="heightmap">
<static>true</static>
<link name="link">
<collision name="collision">
<geometry>
<heightmap>
<uri>file://mtsthelens_129.dem</uri>
<size>150 150 50</size>
<pos>0 0 0</pos>
</heightmap>
</geometry>
</collision> <visual name="visual_abcedf">
<geometry>
<heightmap>
<texture>
<diffuse>file://media/materials/textures/dirt_diffusespecular.png</diffuse>
<normal>file://media/materials/textures/flat_normal.png</normal>
<size>1</size>
</texture>
<texture>
<diffuse>file://media/materials/textures/grass_diffusespecular.png</diffuse>
<normal>file://media/materials/textures/flat_normal.png</normal>
<size>1</size>
</texture>
<texture>
<diffuse>file://media/materials/textures/fungus_diffusespecular.png</diffuse>
<normal>file://media/materials/textures/flat_normal.png</normal>
<size>1</size>
</texture>
<blend>
<min_height>2</min_height>
<fade_dist>5</fade_dist>
</blend>
<blend>
<min_height>4</min_height>
<fade_dist>5</fade_dist>
</blend>
<uri>file://media/dem/mtsthelens_129.dem</uri>
<size>150 150 50</size>
<pos>0 0 0</pos>
</heightmap>
</geometry>
</visual> </link>
</model> </world>
</sdf>
上面代码中的<heightmap> <size>元素告诉Gazebo是否加载具有原始尺寸(当<size>不存在时)的DEM或缩放它(当存在<size>时)。如果你喜欢缩放DEM,<size>元素告诉Gazebo地形在模拟中将以米为单位的大小。如果要保持正确的宽高比,请务必正确计算宽度,高度和高程(这是<size>中的第三个数字)。在我们的示例中,DEM将缩放为150×150米的正方形,最大高程为50米。
启动Gazebo与DEM文件的世界,你应该看到火山。在我们的示例中,该文件位于/ gazebo_dem目录中。
#确保在您自己的安装路径中采购gazebo setup.sh
$ source /usr/share/gazebo/setup.sh
$ gazebo volcano.world
如何获得我感兴趣的区域的DEM文件?
接下来,我们将描述一种用于获得特定感兴趣区域的DEM文件的方法。
全球土地覆盖设施维护着地球的高分辨率数字地形数据库。转到其搜索和预览工具,您会看到类似下面的图像。每个地形补丁都有一个唯一的路径和行,您应该在使用该工具之前知道。我们将使用QGIS来发现我们感兴趣区域的路径/行。
QGIS是一个跨平台的开源地理信息系统程序,提供数据查看,编辑和分析功能。按照QGIS网站上详细说明下载QGIS。
打开QGIS,点击左边的列图标WMS / WMTS层,点击添加默认服务器,选择Lizardtech服务器,然后,按下连接按钮。选择MODIS值,然后按添加。关闭弹出窗口。下一步是添加具有所有不同补丁的另一个层。下载此shapefile并在任何文件夹中解压缩。回到QGIS并按添加矢量图层(左列图标)。按浏览,然后选择以前未压缩的wrs2descending.shp文件。在打开的窗口中按打开。现在,您将在主窗口看到两个图层。让我们改变wrs2descending图层的透明度,以便能够同时看到这两个图层。双击wrs2_descending图层,然后将其透明度值修改为大约85%。
使用滚动和左按钮导航到您感兴趣的区域。然后点击顶部栏上标识为“功能”的图标。单击您感兴趣的区域,该区域周围的所有地形块将突出显示。新的弹出窗口将显示每个突出显示的修补程序的路径/行值。在下面的图片中,您可以看到包含拉斯帕尔马斯的DEM修补程序的路径和行,这是西班牙加那利群岛的天堂之一。
使用GLCF搜索工具返回到浏览器,并在标记为开始路径和开始行的列中写入路径/行值。然后点击Submit Query;按下预览并下载以查看您的结果。选择您的地形文件,然后按下载。最后,选择扩展名为.gz的文件,并在您喜欢的文件夹中解压缩。全球土地覆盖设施文件采用GeoTiff格式,是最常见的可用DEM文件格式之一。
准备在Gazebo中使用的DEM数据
DEM数据通常以非常高的分辨率创建。在Gazebo中使用gdalwarp之前,请使用gdalwarp将地形的分辨率降低到更易于管理的大小。
$ gdalwarp -ts <width> <height> <srcDEM> <targetDEM>
DEM数据通常包含“洞”或“空”区域。这些部分对应于在创建DEM时无法收集数据的区域。在数据“hole”的情况下,将为该孔分配在该DEM中使用的数据类型的最小或最大值。
始终尝试下载已完成的DEM数据集的“完成”版本。如果您的DEM地形包含漏洞(也称为NODATA值),请尝试使用gdal工具手动修复它,例如gdal_fillnodata.py。
在Gazebo中使用多个DEM
虽然Gazebo不直接支持多个DEM,但GDAL有一套用于将一组DEM合并成一个DEM的实用程序。第一步是下载要合并的DEM集。注意,补丁甚至可以彼此重叠; GDAL将无缝地合并它们。假设当前目录包含一组可以合并的Geotiff文件,请运行下一个命令。
$ gdal_merge.py * .tif -o dem_merged.tif
现在,你可以使用dem_merged.tif在你的世界文件和Gazebo将加载地形与所有的补丁合并。在下一个截图中,您可以看到合并加那利群岛周围四个地形补丁的结果。
在Gazebo中使用DEM構建起伏地形環境的更多相关文章
- Gazebo機器人仿真學習探索筆記(五)環境模型
環境模型構建可以通過向其中添加模型實現,待之後補充,比較有趣的是建築物模型, 可以編輯多層樓層和房間,加入樓梯,窗戶和牆壁等,具體可以參考附錄,等有空再補充. 起伏地形環境構建可以參考之前內容:在Ga ...
- Buildroot構建指南--Overview【转】
本文转载自:http://www.unixlinux.online/unixlinux/linuxjc/gylinux/201703/65218.html Buildroot構建指南--Overvie ...
- 如何在一个项目中同时包含mvc建站、webapi接口
项目做得多了..就会发现有些小项目不想建太多的项目..现在思明在这里和大家分享一下如果再一个项目中同时包含mvc建站以及实现webapi接口 1.新建项目 aps.net web 应用程序 2 新建模 ...
- ROS_Kinetic_25 在ubuntu16.04使用Leap_motion并作为手势输入控制Gazebo中的机器人
ROS_Kinetic_25 在ubuntu16.04使用Leap_motion并作为手势输入控制Gazebo中的机器人 先附上资料网址: 1. https://developer.leapmoti ...
- 安卓手机与ROS通信遥控Gazebo中仿真机器人小车运动(ROS_indigo)
首先,先列出需要用到的一些文件: Gazebo中机器人模型及说明: http://wiki.ros.org/grizzly_simulator https://github.com/g/grizzly ...
- Python中3种内建数据结构:列表、元组和字典
Python中3种内建数据结构:列表.元组和字典 Python中有3种内建的数据结构:列表.元组和字典.参考简明Python教程 1. 列表 list是处理一组有序项目的数据结构,即你可以在一个列表中 ...
- GIS中DTM/DEM/DSM/DOM的含义
DTM(Digital Terrain Model):数字地面模型,是一个表示地面特征空间分布的数据库,一般用一系列地面点坐 标(x,y,z)及地表属性(目标类别.特征等)绗成数据阵列,以此组成数字地 ...
- ASP.NET MVC + MySQL で開発環境構築
from:http://qiita.com/midori44/items/ef7cdd1d37c353e44b5f ASP.NET MVC & EntityFramework によるコードファ ...
- IOSアプリケーション開発環境の構築
IOSアプリケーション開発環境の要求 1) IOSシステムの構造はそのようになっています: 2) ハードウエアの方の要求: コンピューター a) デュアルコアCPU b) 8 gメモリ(開 ...
随机推荐
- LeetCode题目----求中位数---标签:Array
题目难度---困难 题目要求: 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 . 请找出这两个有序数组的中位数.要求算法的时间复杂度为 O(log (m+n)) . 思路:第一眼 ...
- UVA - 11997:K Smallest Sums
多路归并 #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring> ...
- HDU 1729
给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置 她在行走过程中,不能转太多弯了,否则她会晕倒的. (每次在一个方向上一直走到底,并push ...
- bzoj 4033: [HAOI2015]树上染色
Description 有一棵点数为N的树,树边有边权.给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并 将其他的N-K个点染成白色.将所有点染色后,你会获得黑点两两之间的距 ...
- 一起来Fit TDMA over WiFi(1)
1 概述 WiFI TDMA领域,2009年Sam Leffler在<TDMA for Long Distance Wireless Networks>首次系统提出了TDMA技术方案,并 ...
- MYSQL 二进制安装
系统环境:CentOs6.7 i386 Mysql版本:mysql-5.6.36 root登录linux cd pwd #/root/ wget http://mirrors.sohu.com/mys ...
- Java8-理解Colloctor
上一节学习了Java8中比较常用的内置collector的用法.接下来就来理解下collector的组成. Collector定义 Collector接口包含了一系列方法,为实现具体的归约操作(即收集 ...
- 阿里2019实习内推,五轮技术面+一轮HR面,Java岗面经
在牛客网上获取到很多知识和信息,现在反馈一波,希望能对广大找实习的同学有所帮助. 个人情况:EE方向渣硕,二月末内推了阿里集团某部门Java岗,约三周完成了所有面试. 面经如下: 一面 (简历评估): ...
- html文本encode后,js获取参数失败的bug
html中的空格encodeURIComponent后变成%C2%A0,而js中的空格是'%20',二者无法匹配,所以要进行一次替换
- Spring boot 整合 Mybatis + Thymeleaf开发web(二)
上一章我把整个后台的搭建和逻辑给写出来了,也贴的相应的代码,这章节就来看看怎么使用Thymeleaf模板引擎吧,Spring Boot默认推荐Thymeleaf模板,之前是用jsp来作为视图层的渲染, ...