【Gazebo入门教程】第四讲 场景建模/建筑编辑器

文章目录

  • 【Gazebo入门教程】第四讲 场景建模/建筑编辑器
    • 一、场景编辑器
      • 1.1 打开方式:
      • 1.2 UI界面分析:
    • 二、导入平面图
      • 2.1 导入图片
      • 2.2 设置分辨率
    • 三、添加特征
      • 1. 创建墙壁
      • 2. 创建楼层
      • 3. 添加门窗和台阶
      • 4. 添加颜色和质地
    • 四、编辑与保存建筑
      • 1. 编辑建筑
      • 2. 保存建筑
  • 总结

前言:在先前的博客中,我们分别使用了Gazebo的模型编辑器(可视化方法)和SDF文件实现了对于机器人模型的建模,并简单添加了传感器进行仿真分析,想要进一步地进行实际仿真,就需要对于场景进行建模,创造出机器人所在的环境,本文从场景编辑器出发,介绍如何创建机器人的活动空间。

一、场景编辑器

1.1 打开方式:

(1)启动Gazebo,选择EditBuilding Editor
(2)启动Gazebo,快捷键Ctrl+B

1.2 UI界面分析:

\qquad 1. 调色板

左边绿色的是调色板,可以选择建筑物的特征和材质

\qquad 2. 2D视图

右上黄色的是2D视角,可以导入要描出的楼层平面图(可选),并插入墙,窗,门和台阶

\qquad 3. 3D视图

右下红色的是3D视角,可以预览你的建筑物,你也可以在这里为建筑的不同部分分配颜色和纹理

二、导入平面图

2.1 导入图片

  • 场景建造:创建建筑有两种方法,即通过现有的图像作为模板进行设计,或者完全从零开始手动创建建筑场景,注意:此处的模板图像应尽量为激光扫描等清晰图像,此处以前者为例,图片如下:

  • 导入图像:
  1. 点击调色板下方的Import按钮。然后将会弹出Import Image对话框;
  2. 选择平面图所在路径,然后单击Next

2.2 设置分辨率

  • 设置分辨率:

【目的:确保图像上的墙以正确比例显示,用像素/米设置图像分辨率,自行计算分辨率的方法如下;】

  1. 选择一段你知道真实世界长度的线,比如顶壁红框的距离为7.5米;
  2. 鼠标在墙的一端单击,水平移动鼠标至另一端,再点击一次(显示橙色线);
  3. 设置Distance为真实世界距离,输入对话框,自动重新计算分辨率;
  4. 单击OK完成设置

三、添加特征

1. 创建墙壁

  • 绘制步骤:
  1. 在调色板上单击Wall
  2. 在2D视图上,在任意墙角单击开始绘制墙体,随鼠标移动,墙的长度会自动显示;
  3. 再次单击取消绘制,进入相邻墙体绘制,使用Esc/双左击/右击完成取消绘制

  • 注意事项:
  1. 门窗会在后续步骤中添加,故墙壁绘制可以相对随意,还会进行细致的编辑处理;
  2. 默认情况下,墙体会以15°和0.25 m递增,并且还会捕捉到现有墙的端点。如果不希望自动补抓,可在绘图时按住Shift进行自由绘画。
  3. 没有使用调色板内特征时,可以点击2D视图内的特征并拖动进行微调;
  4. 选中某堵墙,2D视图中会橘黄色高亮该墙壁,继续左键双击,可以打开墙壁检查器Wall Inspector,对数据进行准确操作(修改墙的厚度、长、高等数据)

2. 创建楼层

  • 前提:继续添加高层楼层的前提是前一层的墙壁必须创建完毕,通过+添加楼层,并在2D视图中选中view指定楼层,其中当前选中楼层会在3D视图中呈半透明状,低层不透明,高层隐藏,效果如下;

  • 注意事项:
  1. 创建流程:在2D视图的顶部,单击+添加一个级别。或者,右键单击2D视图,然后选择Add a level
  2. 添加新层后,将自动插入地板。如果下面的台阶上有楼梯,则在保存建筑物时,将从地面上挖一个台阶
  3. 建立新层时复制上一层的所有墙体,并且使用默认材质。没有其他特征被复制。可以手动删除不需要的墙。

3. 添加门窗和台阶

(1)门窗

  • 绘制步骤:
  1. 在调色板上,点击WindowDoor;
  2. 在2D视图中移动鼠标时,要插入的特征会随之移动,在3D视图中其对应物也会随之移动
  3. 单击所需位置以放置特征。

  • 注意事项:
  1. 目前,门窗视为墙上的简单孔/洞;
  2. 将鼠标悬停在门上时,门窗会自动与墙壁对齐。移动时会显示到墙的末端的距离。
  3. 在墙壁上添加了相关特征之后,可能很难看到其在平面图中的位置。为了简化操作,可以在2D视图的顶部选择查看或隐藏当前级别的平面图或特征。还可以使用热键来切换可见性,F对应floor和G对应特征;

(2)楼梯

  • 绘制步骤:
  1. 在调色面板上,单击Stairs
  2. 在2D视图中移动鼠标时,要插入的特征会随之移动,在3D视图中其对应物也会随之移动
  3. 单击所需位置以放置特征,在2D视图内放置后,双击打开台阶检查器Stairs Inspector可以更改属性。

4. 添加颜色和质地

  • 添加方法:两种方法,分别如下:

1. 从Wall Inspector、Stairs InspectorLevel Inspector分别为墙壁,楼梯和地板添加颜色和纹理,随后打开检查器,选择材料,然后选择Apply完成

2. 从调色板中选择颜色和纹理,点击调色板内的任一特征,鼠标会变成对应特征,再移动鼠标至3D视图内进行编辑既可。添加完成之后,鼠标右键可以退出当前特征的选中:

  1. 单击调色板中的颜色或纹理
  2. 在3D视图中移动鼠标时,悬停的功能将突出显示,显示所选材质的预览
  3. 单击突出显示的功能会为其分配选定的材料,根据需要单击任意数量的功能
  4. 完成所选材质的操作后,右键单击3D视图,或在任何要素外部单击以退出材质模式

【注意:在高版本的Gazebo中可以通过点击调色板内的More可完成自定义颜色,但要注意目前不支持自定义材质,每个特征只能有一种颜色,和一种材质】

四、编辑与保存建筑

1. 编辑建筑

  • 楼层:
  1. 变更楼层:通过2D视图顶部的下拉列表选择对应楼层
  2. 编辑楼层:双击2D视图以打开带有层配置选项的检查器。或者,右键单击并选择Open Level Inspector
  3. 删除楼层:按2D视图顶部的-按钮删除当前层,或右键单击并选择Delete Level

  • 墙体(门窗操作类似):
  1. 选中墙体:在2D视图中,单击要编辑的墙;
  2. 平移和旋转:通过将墙拖动到新位置来平移墙,通过拖动墙的端点之一来调整墙的大小或旋转墙;
  3. 编辑墙体:在2D视图中双击墙以打开带有配置选项的检查器。或者,右键单击并选择Open Wall Inspector。编辑你想要修改的内容,然后按Apply预览更改
  4. 删除墙体:选中你想要删除的墙体,按下Delete键,或在2D视图中右键单击墙体,选择Delete

2. 保存建筑

  • 修改模型名称:在左上方的Model Name
  • 保存步骤:
  1. 顶部工具栏点击File -> Save As(或者Ctrl + S)
  2. 保存时,会新建一个目录,该目录下存有.sdf和配置文件
  3. Advanced Options里,可以添加名称和描述

  • 后续操作:退出建筑编辑器后,进入模型编辑器,File ->Exit Building Editor,可以通过Insert标签中找到该场景并添加完成仿真;

总结

  • 内容分析:本篇博客主要介绍了在Gazebo中如何进行场景的建模,通过使用建筑编辑器,导入外部图像文件并手动创建墙体、门窗、楼层等结构,通过对建筑的编辑和创建完成机器人工作环境的设立,采用图文并盛的方式进行细致讲解,完成了创建机器人仿真环境的完整过程。

  • 注意:本文参考了Gazebo官方网站以及古月居中的Gazebo有关教程,主要目的是方便自行查询知识,巩固学习经验,无任何商业用途。

【Gazebo入门教程】第四讲 场景建模/建筑编辑器相关推荐

  1. 【Gazebo入门教程】第二讲 模型库导入与可视化机器人建模(模型编辑器)

    [Gazebo入门教程]第二讲 模型库导入与可视化机器人建模(模型编辑器) 文章目录 [Gazebo入门教程]第二讲 模型库导入与可视化机器人建模(模型编辑器) 一.模型库导入 二.模型编辑器(以轮式 ...

  2. 【Gazebo入门教程】第一讲 Gazebo的安装、UI界面、SDF文件介绍

    [Gazebo入门教程]第一讲 Gazebo的安装.UI界面.SDF文件介绍 文章目录 [Gazebo入门教程]第一讲 Gazebo的安装.UI界面.SDF文件介绍 一.Gazebo的简介与安装 1. ...

  3. 【Gazebo入门教程】第六讲 控制器插件的编写与配置(下)

    [Gazebo入门教程]第六讲 控制器插件的编写与配置(下) \qquad 文章目录 [Gazebo入门教程]第六讲 控制器插件的编写与配置(下) 一.系统插件 二.Velodyne传感器插件 1. ...

  4. 【Gazebo入门教程】第三讲 SDF文件的静/动态编程建模

    [Gazebo入门教程]第三讲 SDF文件的静/动态编程建模 文章目录 [Gazebo入门教程]第三讲 SDF文件的静/动态编程建模 一.自定义模型并导入Gazebo 1. 基础操作准备 2. 建立模 ...

  5. 【知识整理】这可能是最好的RxJava 2.x 入门教程(四)

    这可能是最好的RxJava 2.x入门教程系列专栏 文章链接: 这可能是最好的RxJava 2.x 入门教程(完结版)[强力推荐] 这可能是最好的RxJava 2.x 入门教程(一) 这可能是最好的R ...

  6. 【Gazebo入门教程】第五讲 控制器插件的编写与配置(上)

    [Gazebo入门教程]第五讲 控制器插件的编写与配置(上) 文章目录 [Gazebo入门教程]第五讲 控制器插件的编写与配置(上) 一.控制插件的使用方法 1. 插件简介 2. 插件编写流程 二.模 ...

  7. WPF入门教程系列四——Dispatcher介绍

    WPF入门教程系列四--Dispatcher介绍 一.Dispatcher介绍 微软在WPF引入了Dispatcher,那么这个Dispatcher的主要作用是什么呢? 不管是WinForm应用程序还 ...

  8. java程序设计p75_java语言程序设计实用教程第四讲控制结构.ppt

    java语言程序设计实用教程第四讲控制结构.ppt 还剩 29页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: ...

  9. Python机器学习算法入门教程(四)

    Python机器学习算法入门教程(四) 文章目录 Python机器学习算法入门教程(四) Logistic回归算法(分类问题) 什么是分类问题? Logistic回归算法 数学解析Logistic回归 ...

最新文章

  1. jquery 常见选择器详解3
  2. Docker Review - 图形化工具 Portainer
  3. 【STM32】定时器相关函数和类型
  4. MyBatis设计模式总结
  5. 【Android开发—智能家居系列】(一):智能家居原理
  6. Objective-C 深复制和浅复制与NSCopying协议
  7. mysql删除delete语句
  8. 矢量合成和分解的法则_力的合成与分解专题解析,寒假复习!
  9. jzoj3850-Fibonacci进制【斐波那契倍增】
  10. c++基础学习(08)--(继承、重载、多态、虚函数)
  11. 第二篇 Python图片处理模块PIL(pillow)
  12. 云计算产业迎利好 未来五年信息化发展蓝图公布
  13. 程序员必须掌握的 CPU 硬核干货!
  14. java的程序编码,JAVA编码转换的详细过程
  15. DM数据库登录用户名密码外部存储
  16. dotnetbar 控件使用总结(一)
  17. 人机大战简史(第二版)
  18. 计算机网络技术ui设计,UI设计小白到大神的进阶之路—入门基础篇
  19. 【C++从入门到踹门】第十四篇:二叉搜索树
  20. sklearn分类算法-决策树、随机森林

热门文章

  1. Ubuntu18.04启动盘制作
  2. fiddler手机下载证书提示No root certificate was found. Have you enabled HTTPS traff 解决方法 及手机配置代理后无网络问题
  3. 新手坐高铁怎么找车厢_坐高铁时如何快速找到自己车票上的车厢和座位! 说出来你都不敢相信...
  4. 【Unity3D日常开发】修改游戏对象的材质颜色
  5. 极大极小搜索 α-β剪枝的实现
  6. 智能家居时代,怎样选择一把你心底里切实需要的智能门锁?
  7. Elasticsearch JestClient 使用
  8. C语言简易程序设计————11、打印楼梯与笑脸
  9. 从财报看爱奇艺增长想象 长视频巨头要说“10分钟”新故事
  10. android svg路径动画,Android和播放SVG动画