在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メモリ(開 ...
随机推荐
- [ZJOI 2013]丽洁体
Description 题库链接 给出四个字符串 \(T,A,B,C\) ,问你至少在 \(T\) 串中删去几个单词能使得 \(T\) 串变为 \(A?B?C\) 的形式,其中 \(?\) 表示任意多 ...
- [SDOI 2011]染色
Description 题库链接 给定一棵有 \(n\) 个节点的无根树和 \(m\) 个操作,操作有 \(2\) 类: 将节点 \(a\) 到节点 \(b\) 路径上所有点都染成颜色 \(c\) : ...
- NOIP 2011 观光公交
题目描述 风景迷人的小城Y 市,拥有n 个美丽的景点.由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车,为游客提供更便捷的交通服务.观光公交车在第 0 分钟出现在 1号景点,随后依次前往 2 ...
- hihocoder 1388 fft循环矩阵
#1388 : Periodic Signal 时间限制:5000ms 单点时限:5000ms 内存限制:256MB 描述 Profess X is an expert in signal proce ...
- APIO 2015
老师让我们打这套题练练手.感觉这套题还是挺有意思的,比国内某些比赛不知道高到哪里去.最后我拿了284/300,貌似比赛是IOI赛制啊,强行被当成OI赛制做了,不然我T3可能还能多骗点. T1.scul ...
- ●BZOJ 1006 [HNOI2008]神奇的国度(弦图最小染色数)○ZOJ 1015 Fishing Net
●赘述题目 给出一张弦图,求其最小染色数. ●题解 网上的唯一“文献”:<弦图与区间图>(cdq),可以学习学习.(有的看不懂) 摘录几个解决改题所需的知识点: ●子图和诱导子图(一定要弄 ...
- Linux学习之CentOS(五)--CentOS下VMware-Tools安装
已经进入到了Linux学习之CentOS的第六篇随笔了,所以这里就介绍一下VMware-Tools的安装. VMware-Tools的安装 VMware-Tools 主要的功能就是让用户在虚拟机和真实 ...
- 【给你一个承诺 - 玩转 AngularJS 的 Promise】
了解Promise 在谈论Promise之前我们要了解一下一些额外的知识:我们知道JavaScript语言的执行环境是"单线程",所谓单线程,就是一次只能够执行一个任务,如果有多个 ...
- struts2中的使用BaseAction获取Session
package com.owen.ma; import java.util.Map; import org.apache.struts2.interceptor.RequestAware; impor ...
- 628. Maximum Product of Three Numbers
Given an integer array, find three numbers whose product is maximum and output the maximum product. ...