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

2023-05-16

【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有关教程,主要目的是方便自行查询知识,巩固学习经验,无任何商业用途。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 关于Cmake与CmakeLists(一)--背景,须知,示例

    一 背景及须知 1 背景 xff1a VS2019与VS2010在编写程序时都是创建了一个工程 xff0c 然后直接打开 sln即可 但是vscode仅仅是一个编辑器 xff0c 打开之后只有 c或者 cpp文件 xff0c 故需要手动编译
  • webgl(three.js)实现室内定位,楼宇bim、实时定位三维可视化解决方案——第五课

    webgl three js 实现室内定位 楼宇bim 实时定位三维可视化解决方案 第五课 参考文章 xff1a xff08 1 xff09 webgl three js 实现室内定位 楼宇bim 实时定位三维可视化解决方案 第五课 xff
  • Linux虚拟机在线扩容lvm类型root分区

    目录 Linux虚拟机在线扩容lvm类型root分区写在前面正文写在后面 Linux虚拟机在线扩容lvm类型root分区 写在前面 这是我在CSDN上的第一篇文章 作为一个半江湖的IT人 xff0c 这些年来也在CSDN受益很多 今天是20
  • 无vCenter创建vSAN集群

    无vCenter创建vSAN集群 最近仍有朋友在问题 xff0c vCenter如果 挂了 xff0c vSAN还能正常运行吗 xff1f 这个小文通过手动创建vSAN集群的方式来解答下这个问题吧 xff08 生产环境慎用 xff01 xf
  • 记一次mdadm软raid1升级容量

    MDRaid 2块4TB做了软RAID1 xff0c 需要升级成2块8TB盘 查看磁盘信息 xff0c SerialNumber等会儿会用到 xff0c 防止换错盘 span class token function sudo span h
  • [简洁版]youtube-dl下载命令

    简介 YouTube dl是python上的pip模块 xff08 开源 xff09 xff0c 可以用来下载YouTube Bilibili等多个平台的视频 音频文件 xff0c 可谓是居家旅行必备小工具 本文主要介绍一些常用的youtu
  • [简版]VMware强大的管理工具-PowerCLI

    一 PowerCLI介绍 什么是 PowerCLI PowerCLI 是一个命令行工具 xff0c 可以用于自动化vSphere管理 xff0c 包括网络 存储 虚拟机以及其他很多功能 PowerCLI包含超过700个命令 要安装Power
  • [简版]使用PowerCLI自定义vSphere ISO安装镜像

    一 什么情况下要自定义ISO镜像 一般来说 xff0c 对于DELL Lenovo HPE这类主流的服务器厂商 xff0c VMware官方vSphere ISO镜像或者官网的第三方客制镜像 xff08 由服务器厂商提供的封装镜像 xff0
  • [简版] 关于vSphere漏洞-OpenSLP

    一 前言 近期vSphere OpenSLP漏洞在野利用的新闻频频被爆出来 xff0c 大伙儿非常关注 由于vSphere虚拟化客户之广泛 xff0c 很多朋友都表达了自己的焦虑 xff0c 同时也会担心自己管理的vSphere虚拟化平台是
  • [简版] Linux搭建SAMBA文件共享服务

    SMB服务搭建 更多参数含义参考链接 常用配置 安装samba span class token comment Ubuntu span span class token function sudo span span class toke
  • STM32 HAL库详解

    STM32 HAL库整体总结 STM32 之二 HAL库详解 及 手动移植 本篇博客是对以上参考资源的一个二次总结与整理 1 HAL库文件结构 对于开发人员而言 xff0c 首先要清楚 HAL 库的文件结构 根据文件类型可认为以下两大类 x
  • STM32 HAL库学习(四):DMA之串口空闲中断

    STM32CubeMX 配置实现参考这里 1 串口空闲中断 1 1 UART DMA方式接收数据 STM32串口使用DMA方式接收数据可以减小CPU的开销 对于接收定长数据 xff0c 可以将DMA接收缓冲区的长度设定为待接收数据的长度 x
  • Android Studio 启动模拟器出现“Timed out after 300seconds waiting for emulator to come online“解决方案

    Android Studio 启动模拟器出现 34 Timed out after 300seconds waiting for emulator to come online 34 解决方案 参考文章 xff1a xff08 1 xff0
  • 结构体中的位定义

    1 结构体位定义 在工作中 xff0c 经常遇到按位 xff08 bit xff09 定义结构体 的情况 由于一个字节有8个位 xff0c 这时 xff0c 程序员往往对bit的位置产生困惑 现在给出2个例子 xff0c 来说明位的定义次序
  • 蓝牙基础(三):蓝牙协议栈总体认知

    蓝牙基础 xff08 三 xff09 xff1a 蓝牙协议栈总体认知 0 前言 初入门经典蓝牙学习 xff0c 网上资料参差不齐 xff0c 本博客旨在整理自己的一些总结内容 xff0c 建立整体功能认识 xff0c 以便后续深入学习 1
  • FreeRTOS学习(四)任务调度与切换

    文章目录 1 任务调度2 任务切换2 1 SVC 和 PendSV2 2 上下文2 3 切换场景2 4 PendSV Handler 3 总结 1 任务调度 在建立完任务后紧接着调用任务调度函数 xff0c 便会使系统运行起来 span c
  • FreeRTOS学习(五)队列与信号量

    文章目录 1 队列1 1 队列特性1 2 队列创建1 2 1 接口函数1 2 2 内存占用1 2 3 创建过程分析 1 3 入队与出队1 3 1 队列项入队1 3 1 队列项出队 2 信号量2 1 二值信号量2 2 计数型信号量2 3 互斥
  • FreeRTOS学习(六)时间管理

    文章目录 1 延时函数1 1 vTaskDelay 1 2 vTaskDelayUntil 1 3 系统时钟节拍 2 软件定时器2 1 定时器概述2 2 定时器 API 3 总结 1 延时函数 当任务需要调用延时函数延时时 xff0c 任务
  • C语言 sscanf库函数

    目录 1 函数描述2 函数应用2 1 基础应用2 2 高级应用 1 函数描述 xff08 1 xff09 函数功能 xff1a 通常被用来解析并转换字符串 xff0c 从str指定的字符串读取数据 xff0c 并根据参数format字符串来
  • C语言 文件读写

    目录 1 文件打开与关闭1 1 打开文件 fopen 1 2 关闭文件 fclose 2 读取文件2 1 fgetc 2 2 fgets 2 3 fscanf 3 写入文件3 1 fputc 3 2 fputs 3 3 fprintf 1

随机推荐

  • C语言 条件编译

    目录 1 if elif else endif 2 ifdef else endif 3 ifndef else endif 4 三者区别 根据不同情况编译不同代码 产生不同目标文件的机制 xff0c 称为条件编译 条件编译是预处理程序的功
  • yolo 学习系列(三):训练参数与网络参数

    yolo 学习系列 xff08 三 xff09 xff1a 训练参数与网络参数 手把手教你做目标检测 xff08 YOLO SSD xff09 视频链接 1 训练参数 博主在使用 yolov2 tiny voc 训练 人 这一类目标物体时
  • Caffe 学习系列(七):MobileNet-YOLO 安装与训练

    Caffe 学习系列 xff08 七 xff09 xff1a MobileNet YOLO 安装与训练 基于darknet实现mobilenet 基于darknet框架实现DepthwiseConvolutional层 深度学习 xff08
  • 完美解决api-ms-win-crt-runtime-l1-1-0.dll 丢失问题

    完美解决api ms win crt runtime l1 1 0 dll 丢失问题 参考文章 xff1a xff08 1 xff09 完美解决api ms win crt runtime l1 1 0 dll 丢失问题 xff08 2 x
  • Moveit!入门——古月居机械臂开发笔记(一)

    Moveit 入门 古月居机械臂开发笔记 xff08 一 xff09 引言Moveit xff01 与机械臂控制1 创作机械臂模型2 生成配置文件3 如何使用Moveit xff01 实现机械臂仿真 xff08 gazebo xff09 完
  • 数据处理:Excel读取txt文本

    数据处理 xff08 一 xff09 xff1a Excel读取txt文本 1 1 任务需求 txt 文本为四列数据 xff0c 以空格为分隔符号 xff0c 现导入 Excel 中 1 2 实现步骤 新建 excel 文件点击 数据 来自
  • Raspberrypi 3 系统备份还原, 基于最小系统镜像实现

    Raspberrypi 3 备份还原系统 一 为什么要备份系统 xff1f 1 经常在树莓派上调试程序 xff0c 安装各种软件 xff0c 越来越多的库和程序的安装带来的系统更改几乎是不可逆的 xff0c 一旦某个程序或者驱动出现问题 x
  • linux 内核链表

    linux内核中大量使用如下数据结构实现双向链表 xff1a struct list head struct list head next prev 如果需要有某种数据结构的双向队列 xff0c 就在这种结构内部放一个list head数据
  • FreeRTOS任务基础知识总结

    1 单任务系统 前后台系统 xff1a 中断服务函数为前台程序 xff0c 大循环while 1 作为后台程序 前后台系统的实时性差 xff0c 但是前后台系统简单 xff0c 资源消耗少 2 FreeRTOS是一种抢占式的实时多任务系统
  • 第一章面试题整理

    一 C 43 43 域操作符的使用 include 34 stdio h 34 include 34 windows h 34 int value 61 0 初始化全局变量 void printvalue printf 34 value 6
  • 第十三届蓝桥杯JAVAB组国赛部分思路及代码

    JAVA B组参考代码 文章目录 JAVA B组参考代码 试题 A 重合次数 答案 494 试题 B 数数 答案 25606 试题 C 左移右移 思路 xff1a 对于操作从后向前记录 xff0c 最后操作的肯定是在两端 xff0c 并对该
  • MicroStrategy的面经(from bbs.byr..

    搜了一下论坛 xff0c 发现基本上没有MicroStrategy的面经 xff0c 既然有幸参加了他们的面试 xff0c 这里把面试过程给大家描述一下 xff0c 希望对后来的人有点帮助吧 1 公司介绍 xff1a 中文叫凌策软件 xff
  • 4G工业路由器的透传好处与安全因素

    透传 xff0c 通俗了说就是 透明传输 需要在保证质量的前提下 xff0c 将数据传送到目的节点 xff0c 并且不对数据做任何处理 透传一般都是用来读取远程的串口数据 例如火车站都需要刷身份证信息才能进入 xff0c 但身份证信息数据库
  • 程序员迷茫:30岁以上的“大龄程码农”出路在哪?java码农该怎么办?

    程序员生存 成功 制胜的法则源自IT精英的职业发展秘诀热爱工作 xff0c 享受生活 为什么程序员过了30就不行了 xff1f 我们被固定在 敲代码 的坑里 xff0c 一干就是10年 xff0c 再干别的早已不会 敲代码已经成了一项流水线
  • 【ROS进阶篇】第八讲(上) URDF文件的语法详解

    ROS进阶篇 第八讲 xff08 上 xff09 URDF文件的语法详解 文章目录 ROS进阶篇 第八讲 xff08 上 xff09 URDF文件的语法详解前言一 URDF的基本概念二 link标签1 标签作用2 子标签 三 joint标签
  • push to origin/master was rejected错误解决方案(IDEA)

    push to origin master was rejected错误解决方案 IDEA 参考文章 xff1a xff08 1 xff09 push to origin master was rejected错误解决方案 IDEA xff
  • 【Gazebo入门教程】第一讲 Gazebo的安装、UI界面、SDF文件介绍

    Gazebo入门教程 第一讲 Gazebo的安装 UI界面 SDF文件介绍 文章目录 Gazebo入门教程 第一讲 Gazebo的安装 UI界面 SDF文件介绍一 Gazebo的简介与安装1 基本介绍2 性能要求与安装 二 GUI界面详解1
  • 【Gazebo入门教程】第二讲 模型库导入与可视化机器人建模(模型编辑器)

    Gazebo入门教程 第二讲 模型库导入与可视化机器人建模 xff08 模型编辑器 xff09 文章目录 Gazebo入门教程 第二讲 模型库导入与可视化机器人建模 xff08 模型编辑器 xff09 一 模型库导入二 模型编辑器 xff0
  • 【Gazebo入门教程】第三讲 SDF文件的静/动态编程建模

    Gazebo入门教程 第三讲 SDF文件的静 动态编程建模 文章目录 Gazebo入门教程 第三讲 SDF文件的静 动态编程建模一 自定义模型并导入Gazebo1 基础操作准备2 建立模型基础部件 xff08 静态 xff09 3 创建关节
  • 【Gazebo入门教程】第四讲 场景建模/建筑编辑器

    Gazebo入门教程 第四讲 场景建模 建筑编辑器 文章目录 Gazebo入门教程 第四讲 场景建模 建筑编辑器一 场景编辑器1 1 打开方式 xff1a 1 2 UI界面分析 xff1a 二 导入平面图2 1 导入图片2 2 设置分辨率