当前位置: 首页 > news >正文

Gazebo GUI模型编辑器

模型编辑器

现在我们将构建我们的简单机器人。我们将制作一个轮式车辆,并添加一个传感器,使我们能够让机器人跟随一个斑点(人)。

模型编辑器允许我们直接在图形用户界面 (GUI) 中构建简单的模型。对于更复杂的模型,您需要学习如何编写 SDF 文件,并查看有关构建机器人的教程。 但就目前而言,我们可以在 Gazebo GUI 中做所有事情!

模型编辑器用户界面

要进入模型编辑器,请单击菜单栏中的 ,然后选择 。或者,使用热键 Ctrl+M。 物理场和仿真将在您进入模型编辑器后立即暂停。EditModel Editor

模型编辑器界面看起来类似于主 Gazebo UI,但有一些细微的差异。左侧面板和顶部工具栏现在仅包含用于编辑和创建模型部分的小部件。显示模拟数据的底部工具栏处于隐藏状态,因为模拟现在已暂停。

  1. 工具栏 - 包含用于编辑模型的工具
  2. 调色板 - 也称为左面板。有两个用于编辑模型的选项卡。
  3. “插入”选项卡 - 用于添加链接和嵌套模型的工具
  4. “模型”选项卡 - 允许编辑模型属性和内容
调色板(左面板)

调色板有两个选项卡。

  • 插入:插入选项卡是添加新零件(链接和模型)的位置 添加到模型编辑器中。有三个部分。

    • 简单形状:这些是原始几何图形,可以是 插入以在模型中形成链接
    • 自定义形状:该按钮允许您从模型中的链接导入自定义网格。它目前支持 COLLADA (.dae)、3D Systems (.stl)、Wavefront (.obj) 和 W3C SVG (.svg) 文件。Add
    • 模型数据库:具有模型列表。这些形状可以像简单形状一样插入到模型编辑器中。插入后,它们称为嵌套模型
  • 模型:模型选项卡允许您设置正在构建的模型的名称和基本参数。它显示模型中的链接、关节、嵌套模型和插件的列表。可以使用链接检查器修改参数。可以使用这些方法中的任何一种打开它。

    1. 双击列表中的项目
    2. 双击场景中的项目
    3. 右键单击列表中的项目,然后选择Open Link Inspector
    4. 右键单击场景中的项目,然后选择Open Link Inspector
工具栏

与在模拟模式下一样,模型编辑器中的主工具栏包含用于与场景中的对象进行交互的工具(请参阅用户界面教程)。

可用的工具包括选择、平移、缩放、旋转、撤消和重做、复制和粘贴、对齐、捕捉、视图调整和关节创建。

局限性

模型编辑器支持大多数基本模型构建任务,这些任务可以通过编写 SDF 来完成。但是,有一些功能不是 尚未可用:

  • 编辑嵌套模型和嵌套模型中的链接。

  • 添加和编辑某些几何类型,包括平面和折线。

  • 支持高度图。

  • CAD 功能。

车辆制造

创建车辆

本节提供有关在模型编辑器中创建简单车辆模型的分步说明。

底盘

  1. 首先,我们将创建车辆底盘。在左侧面板的“插入”选项卡中,单击“框”图标一次,将光标移动到场景中的任意位置,然后再次单击以释放该框。

  2. 接下来,调整盒子的大小,使其看起来更像汽车底盘的形状。我们可以通过选择位于顶部工具栏上的缩放工具来做到这一点。 选择场景中的框,该框上方应显示一个 RGB 色标记。红色标记表示 X 轴,绿色表示 Y,蓝色表示 Z。 将鼠标移到红色标记上以突出显示它,然后单击并拖动以使机箱沿 X 轴更长。缩放机箱 所以它大约有 2 米长。您可以通过查看地面上 1x1 米的网格来估计这一点。

  3.  现在使用缩放工具展平机箱。单击并向下拖动蓝色标记,使机箱大约是其原始尺寸的一半。
  4. 我们想将底盘降低到更靠近地面的位置。为了给出精确的测量结果,我们将使用链接检查器。双击该框以调出 检查员。向下滚动到“链接”选项卡的底部以查找参数并更改为 0.4m,然后在框外单击(不要按回车键)。单击以保存更改并关闭检查器。PoseZOK

前轮

  1. 让我们继续讨论前轮。首先从左侧面板上的“插入”选项卡插入圆柱体。

  2. 默认方向的圆柱体不会很好地滚动。让我们使用 Link Inspector 沿 X 轴旋转它。双击圆柱体,滚动到底部的“姿势”部分,然后更改为 1.5707 弧度(90 度),然后在框外单击。暂时不要关闭检查器。Roll

  3. 接下来,通过为其提供准确的尺寸来调整轮子的大小。转到“视觉对象”选项卡,查看此链接中的视觉对象列表。应该只有一个。通过单击文本标签旁边的小箭头来展开视觉对象项。向下滚动到该部分,然后更改为 0.3m 和 0.25m。visualGeometryRadiusLength

  4. 您现在应该看到一个较小的圆柱体位于一个较大的圆柱体中。这是意料之中的,因为我们只改变了视觉几何形状,而没有改变碰撞。“视觉”是链接的图形表示,不会影响物理模拟。另一方面,“碰撞” 由物理引擎用于碰撞检查。要同时更新车轮的碰撞,请转到“碰撞”选项卡,展开唯一的碰撞项目,然后输入相同的几何尺寸。:0.3m和:0.25m。单击以保存更改并关闭检查器。RadiusLengthOK

  5. 现在我们已经创建了第一个轮子,我们将使用它作为模板并制作另一个轮子。选择滚轮,然后单击顶部工具栏中的复制图标。

  6. 单击“粘贴”图标,然后将鼠标移回场景以插入副本。

    现在,让我们通过沿正 X 轴(场景中的红色标记)对齐底盘来确保车辆能够正确行驶。当您在下一步中添加轮子时, 确保它们位于沿正 X 轴延伸的车辆末端

  7. 底盘和车轮目前是自由移动的车身。为了限制它们的运动,我们将在每个车轮和底盘之间添加接头。单击顶部工具栏中的“关节”图标以显示“关节创建”对话框。

  8. “关节创建”对话框包含通常为关节指定的关节属性。在配置任何属性之前,系统会提示您选择关节的父链接和子链接。将鼠标移到场景中的机箱上以使其突出显示,然后单击它以将其设置为 关节的父项。

  9. 将鼠标移动到左前轮;现在应该有一条线从机箱的原点延伸到鼠标的末端。单击滚轮以将其设置为关节的子项。将创建一个新关节。默认情况下,它是一个旋转关节(如对话框中的部分所示),它只是 恰好是我们想要的关节类型。Joint Types
    注意:此时更改视角很有用。这可以在上方工具栏中完成;单击带有橙色边的立方体图标。


     
  10. 接下来,我们需要配置车轮的旋转轴。在“关节创建”对话框中,找到截面并将轴更改为 (0, 0, 1)。注意方向盘上的RGB关节视觉效果。您应该看到,现在在关节视觉对象的蓝色箭头上会出现一个黄色环 表示它是旋转轴。Joint axisZ
  11. 为了将车轮对准底盘旁边,我们将使用“关节创建”对话框中部分中的不同对齐选项。首先,我们将在 X 轴上对齐,因此单击该选项以查看对齐结果。圆柱体应突出显示,以指示其 姿势已更改。Align linksAlign Max

  12. 在我们的示例中,我们希望将车轮与底盘齐平。要使轮子更近,请单击该选项。然而,这还不是我们想要的。单击 Y 对齐选项旁边的选项,将车轮的最小值(与最大值相反)与机箱的最大值对齐。 请注意,该选项将应用于子链接,因为下面下拉列表中显示的默认对齐配置是 。如果设置了配置,则该选项将应用于父链接。Align MaxReverseReverseChild to ParentParent to ChildReverseCreate


     
  13. 若要将滚轮放置在地面上方,请连按两次滚轮以打开链接检查器。我们可以使用对话框底部的部分来移动滚轮。鉴于轮子的半径为 0.3m,请继续将位置更改为 0.3m 以放置在地面上,然后按 .PoseZOk

  14. 对另一个前轮重复关节创建过程和轴配置,确保 a) 底盘是关节的父轮,车轮是子轮,b) 旋转轴设置为 ,并且 c) 使用选项将右轮对齐,因为它位于底盘的另一侧。ZY Align Min

脚轮

  1. 要为车辆制作脚轮,请单击左侧面板上的球体按钮并将其插入到场景中。

  2. 通过以与前轮相同的方式为其提供精确尺寸来调整球体的大小。转到“视觉对象”选项卡以查看此链接中的视觉对象列表,展开唯一的视觉对象项,向下滚动到该部分并将其更改为 0.2m。确保对 “碰撞”选项卡。GeometryRadius

  3. 要在脚轮和底盘之间创建接头,请单击顶部工具栏中的接头图标,调出接头创建对话框。将鼠标移动到场景,然后选择机箱作为父链接,选择球体作为子链接。

  4. 与前轮关节不同,脚轮向各个方向滚动,没有特定的旋转轴。在凉亭中,这是使用球形接头模拟的。因此,在该部分下,选择联合选项。您应该会看到场景中的联合视觉对象更改颜色以指示 设置了不同的接头类型。Joint typesBall

  5. 接下来,对齐脚轮,使其与底盘居中并位于后端。在“对齐连杆”部分中,选择将两个连杆在轴上居中的选项,然后选择移动脚轮的选项,使其放置在车辆的正后部。按下按钮完成关节创建过程。Align CenterYAlign MinCreate

  6. 最后,放置脚轮,使其刚好位于地面上方。为此,请打开链接检查器并将位置设置为 0.2m。Z

添加传感器

我们将添加到汽车中的传感器是深度摄像头传感器,它将帮助我们检测汽车前方的物体。在本教程中,我们将从模型数据库中插入一个现有的传感器模型。

  1. 转到“调色板”(左侧面板)并选择选项卡以查看该部分中可用的模型列表。InsertModel Database

  2. 列表中的模型按其所在的路径进行组织。如您所见,第一个列表包含本地计算机上可用的模型,如标题中的路径所示。如果您是初次使用的用户,则可能不会在列表中看到很多型号。当您从以下位置下载它们时,将出现更多内容 在线模型数据库。找到包含路径的列表并将其展开以查看联机模型数据库中可用的模型。http://gazebosim.org/models/

  3. 模型按字母顺序排列。在列表中找到深度相机,然后单击它以开始下载模型。这可能需要几秒钟的时间,具体取决于网络连接。

  4. 下载完成后,您应该会看到景深相机模型出现在场景中。它看起来像一个小立方体。将鼠标移动到场景上,然后单击汽车前方的空白区域以插入深度摄像头。
  5. 选择顶部工具栏中的“平移”工具,然后移动深度相机,使其位于车辆前部的底盘顶部,并在轴上大致居中。Y

  6. 接下来,将深度摄像头固定到机箱上。单击顶部工具栏中的“关节”图标以打开“关节创建”对话框。将鼠标移动到场景,然后选择机箱作为父链接,选择深度相机作为子链接。

  7. 在“关节创建”对话框中,选择“关节”选项,然后单击以完成关节的创建。Joint TypesFixedCreate

添加插件

到目前为止,我们制造的车辆已经完成了所有的物理和传感器组件。然而,它不会真正做太多事情,而是保持静止并在模拟中生成深度数据。插件是一种很好的方法,通过允许模型执行传感器数据等计算来增强模型的自主权 处理、路径规划和控制。为简单起见,本教程将为我们的车辆使用现有的插件。请注意,可以创建自己的插件,但需要编写代码。请参阅插件教程。

  1. 转到左侧面板,然后选择选项卡以查看构成您构建的汽车模型的部件。Model

  2. 在下,您应该会看到一个按钮。单击它以打开模型插件检查器,允许您向模型添加新插件。Model PluginsAdd

  3. 首先,给插件起一个名字。在字段中输入。插件名称在此模型中必须是唯一的。followerPlugin Name

  4. 我们将要使用的插件被调用,因此请在字段中输入此插件。文件名对应于存储在本地计算机上的插件库的实际文件名。它以动态链接的共享对象库的形式存在,因此命名约定和 扩展(在 Linux 上)。如果您在其他操作系统上使用 Gazebo,请不要担心,因为扩展程序将自动替换为正确的扩展程序。libFollowerPlugin.soFilename.so

  5. 该插件不需要任何其他参数,因此您可以将该字段留空。注意:这是一个用于演示目的的简单插件。插件通常具有各种关联的参数,例如,差速器驱动插件需要指定控制 左右轮,以便它可以将车辆向正确的方向移动。在插件的情况下,它对它所附加的模型类型做出了许多假设,并尝试自动找到关节和传感器。followerInnerxmlfollower
     

  6. 单击以添加插件。该插件现在应该出现在左侧面板的下方。OKModel Plugins

     

    保存模型

    1. 通过转到菜单并选择 来保存模型。输入模型的名称,然后单击 。FileSave AsSave

    2. 退出模型编辑器,方法是转到并选择 。Gazebo 现在应该切换回正常模拟模式。点击“播放”按钮运行模拟。FileExit Model Editor

    3. 要测试插件是否正常工作,请在汽车前面插入一个盒子,然后看到汽车缓慢地向它移动。

      如果以后想再次编辑模型,只需右键单击它并在上下文菜单中选择即可。Edit Model

相关文章:

Gazebo GUI模型编辑器

模型编辑器 现在我们将构建我们的简单机器人。我们将制作一个轮式车辆,并添加一个传感器,使我们能够让机器人跟随一个斑点(人)。 模型编辑器允许我们直接在图形用户界面 (GUI) 中构建简单的模型。对于更复…...

pycharm运行正常,但命令行执行提示module不存在的多种解决方式

问题描述 在执行某个测试模块时出现提示,显示自定义模块data不存在,但是在PyCharm下运行正常。错误信息如下: Traceback (most recent call last):File "/run/channelnterface-autocase/testcases/test_chanel_detail.py", line 2…...

GBASE南大通用GBase 8a ODBC的安装文件

GBASE南大通用GBase 8a ODBC 体系结构是基于五个组件,在下图中所示: GBase 8a ODBC 体系结构图  应用 应用是通过调用 ODBC API 实现对 GBase 数据访问的程序。应用使用标准的 ODBC 调用与驱动程序管理器通信。应用并不关心数据存储在哪里&#xff…...

重新配置torch1.8 cuda11.1 torchtext0.9.0虚拟Pytorch开发环境

这里写目录标题 起因发现选择安装cuda 11.1核对下自己的显卡是否支持下载该版本的CUDACUDA下载地址CUDA安装过程 在anaconda中创建一个虚拟环境1.以下是环境的配置过程2.查看虚拟环境列表3.激活虚拟环境 安装torch和torchtext包的过程1.输入下面这句代码,就可以直接…...

【动画图解】一次理清九大排序算法!面试官问到再也不慌!

排序算法 交换排序 冒泡排序快速排序 插入排序 直接插入排序希尔排序 选择排序 简单选择排序堆排序 归并排序基数排序桶排序 一、冒泡排序 冒泡排序是一种简单的交换排序算法,以升序排序为例,其核心思想是: 从第一个元素开始&#xff0c…...

组播地址段及其作用

作用 组播(Multicast)传输:在发送者和每一接收者之间实现点对多点网络连接。如果一台发送者同时给多个的接收者传输相同的数据,也只需复制一份的相同数据包。它提高了数据传送效率。减少了骨干网络出现拥塞的可能性。 地址段 组播协议的地址在 IP 协议中属于 D 类…...

Vue+ElementUI前端添加展开收起搜索框按钮

1、搜索框添加判断 v-if"advanced" <el-form-item label"创建日期" v-if"advanced"><el-date-pickerv-model"daterangeLedat"size"small"style"width: 240px"value-format"yyyy-MM-dd"type&q…...

速盾网络:sdk游戏盾有什么作用?

速盾cdn是一款非常优秀的CDN加速服务&#xff0c;它能够帮助游戏开发者们提升游戏的性能和稳定性。其中&#xff0c;速盾cdn的sdk游戏盾是其一项非常实用的功能&#xff0c;它能够为游戏提供更加稳定和快速的网络连接。 首先&#xff0c;让我们来了解一下什么是sdk游戏…...

理解BeEF的架构

BeEF的组件和工作原理BeEF&#xff08;The Browser Exploitation Framework&#xff09;是一款用于浏览器渗透测试和漏洞利用的强大工具。它由多个组件组成&#xff0c;这些组件协同工作以实现对受害者浏览器的控制和攻击。本文将深入探讨BeEF的各个组件和其工作原理&#xff0…...

esp32-s3训练自己的数据进行目标检测、图像分类

esp32-s3训练自己的数据进行目标检测、图像分类 一、下载项目二、环境三、训练和导出模型四、部署模型五、存在的问题 esp-idf的安装参考我前面的文章&#xff1a; esp32cam和esp32-s3烧录human_face_detect实现人脸识别 一、下载项目 训练、转换模型&#xff1a;ModelAssist…...

华为设备VRP基础

交换机可以隔离冲突域&#xff0c;路由器可以隔离广播域&#xff0c;这两种设备在企业网络中应用越来越广泛。随着越来越多的终端接入到网络中&#xff0c;网络设备的负担也越来越重&#xff0c;这时网络设备可以通过华为专有的VRP系统来提升运行效率。通用路由平台VRP&#xf…...

论文笔记 | ICLR 2023 WikiWhy:回答和解释因果问题

文章目录 一、前言二、主要内容三、总结🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、前言 ICLR 2023 | Accept: notable-top-5%:《WikiWhy: Answering and Explaining Cause-and-Effect Questions》 一段话总结:WikiWhy 是一个新的 QA 数据集,围绕一个新的任务…...

LC24. 两两交换链表中的节点

代码随想录 class Solution {// 举例子:假设两个节点 1 -> 2// 那么 head 1; next 2; next.next null// 那么swapPairs(next.next),传入的是null,再下一次递归中直接返回null// 因此 newNode null// 所以 next.next head; > 2.next 1; 2 -> 1// head.next…...

使用redis-rds-tools 工具分析redis rds文件

redis-rdb-tools安装部署及使用 发布时间&#xff1a;2020-07-28 12:33:12 阅读&#xff1a;29442 作者&#xff1a;苏黎世1995 栏目&#xff1a;关系型数据库 活动&#xff1a;开发者测试专用服务器限时活动&#xff0c;0元免费领&#xff0c;库存有限&#xff0c;领完即止&…...

C# Onnx yolov8 plane detection

C# Onnx yolov8 plane detection 效果 模型信息 Model Properties ------------------------- date&#xff1a;2023-12-22T10:57:49.823820 author&#xff1a;Ultralytics task&#xff1a;detect license&#xff1a;AGPL-3.0 https://ultralytics.com/license version&am…...

Oracle定时任务的创建与禁用/删除

在开始操作之前&#xff0c;先从三W开始&#xff0c;即我常说的what 是什么&#xff1b;why 为什么使用&#xff1b;how 如何使用。 一、Oracle定时器是什么 Oracle定时器是一种用于在特定时间执行任务或存储过程的工具&#xff0c;可以根据需求设置不同的时间段和频率来执行…...

Asp.Net Core 项目中常见中间件调用顺序

常用的 AspNetCore 项目中间件有这些&#xff0c;调用顺序如下图所示&#xff1a; 最后的 Endpoint 就是最终生成响应的中间件。 Configure调用如下&#xff1a; public void Configure(IApplicationBuilder app, IWebHostEnvironment env){if (env.IsDevelopment()){app.UseD…...

【JVM】一、认识JVM

文章目录 1、虚拟机2、Java虚拟机3、JVM的整体结构4、Java代码的执行流程5、JVM的分类6、JVM的生命周期 1、虚拟机 虚拟机&#xff0c;Virtual Machine&#xff0c;一台虚拟的计算机&#xff0c;用来执行虚拟计算机指令。分为&#xff1a; 系统虚拟机&#xff1a;如VMware&am…...

[SWPUCTF 2021 新生赛]Do_you_know_http已

打开环境 它说用WLLM浏览器打开&#xff0c;使用BP抓包&#xff0c;发送到重发器 修改User-Agent 下一步&#xff0c;访问a.php 这儿他说添加一个本地地址&#xff0c;它给了一个183.224.40.160&#xff0c;我用了发现没用&#xff0c;然后重新添加一个地址&#xff1a;X-Forwa…...

hadoop01_完全分布式搭建

hadoop完全分布式搭建 1 完全分布式介绍 Hadoop运行模式包括&#xff1a;本地模式&#xff08;计算的数据存在Linux本地&#xff0c;在一台服务器上 自己测试&#xff09;、伪分布式模式&#xff08;和集群接轨 HDFS yarn&#xff0c;在一台服务器上执行&#xff09;、完全分…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南&#xff1a;从入门到实战 一、Grunt 是什么&#xff1f; Grunt是一个基于 Node.js 的前端自动化任务运行器&#xff0c;主要用于自动化执行项目开发中重复性高的任务&#xff0c;例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

基于鸿蒙(HarmonyOS5)的打车小程序

1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...

OCR MLLM Evaluation

为什么需要评测体系&#xff1f;——背景与矛盾 ​​ 能干的事&#xff1a;​​ 看清楚发票、身份证上的字&#xff08;准确率>90%&#xff09;&#xff0c;速度飞快&#xff08;眨眼间完成&#xff09;。​​干不了的事&#xff1a;​​ 碰到复杂表格&#xff08;合并单元…...

怎么开发一个网络协议模块(C语言框架)之(六) ——通用对象池总结(核心)

+---------------------------+ | operEntryTbl[] | ← 操作对象池 (对象数组) +---------------------------+ | 0 | 1 | 2 | ... | N-1 | +---------------------------+↓ 初始化时全部加入 +------------------------+ +-------------------------+ | …...