首页 > 其他分享 >9、教程-2环境修改

9、教程-2环境修改

时间:2023-07-27 18:56:17浏览次数:48  
标签:教程 定义 环境 视图 修改 字段 节点 DEF 刚体

在本教程中,我们将教您如何在环境中创建简单的对象。第一步是创建一个与环境相互作用的球。我们将讨论与节点相关的几个概念:它们的含义是什么,如何创建它们,它们必须如何附属,等等。此外,我们将了解如何设置物理。
将介绍几种类型的节点。其详细定义见参考手册。将节点图表放在你面前,也将有助于理解节点的继承关系。

将上一节的wbt文件另存为obstacles.wbt

 修改地板

默认的RectangleArena PROTO定义了一个固定在静态环境上的简单地板,即没有物理节点,并由墙包围。Webots对象库中提供了其他预建楼层。我们现在将删除RectangleArena节点,并添加一个简单的地板,我们将在本教程稍后手动用墙围绕它。

要删除RectangleArena,请在三维视图或场景树视图中左键选择它,然后按键盘上的del键。或者,也可以在三维视图中单击鼠标右键,然后在关联菜单中选择“删除”(也可以直接在场景树视图中使用关联菜单)。选择TexturedBackgroundLight节点,然后单击“+”按钮。在打开的对话框中,选择PROTO节点(Webots项目)/对象/楼层/楼层(实体)。

新添加的Floor PROTO默认大小为10mx10m,但可以通过更改相应字段来调整其大小、位置和纹理。

在场景树视图中,选择并展开“楼板”。修改大小字段并将其设置为{1,1}以将其大小调整为1mx1m。

 

实体节点

本小节介绍了Webots中最重要的基础节点:Solid节点,许多其他节点都源自该节点。
实体节点表示刚体,即可以忽略变形的实体。刚体任意两个给定点之间的距离在时间上保持不变,而不受外力的影响。例如,桌子、机器人指骨或轮子都是刚体。柔体和关节对象不是刚体。例如,绳子、轮胎、海绵或关节式机械臂都不是刚体。但是,铰接实体可以分解为多个刚体。
Webots的物理引擎仅用于模拟刚体。设计仿真时,一个重要步骤是将各种实体分解为单独的刚体。
若要定义刚体,必须创建实体节点。在该节点内,将根据刚体的特性设置不同的子节点。下图显示了刚体及其子节点。“实体”节点的图形表示由填充其子列表的“形状”节点定义。碰撞边界在其boundingObject字段中定义。图形表示和碰撞形状通常但不一定相同。最后,物理场定义了物体是属于动态环境还是属于静态环境。所有这些子节点都是可选的,但物理场需要定义boundingObject。

“几何体”框(在此图中)代表任何类型的几何图元。事实上,它可以用球体、长方体、圆柱体等来代替。

创建一个球

现在我们将向模拟中添加一个球。该球将被建模为刚体,如图所示。球体节点将用于定义球的几何结构。

在场景树视图中,选择最后一个节点,然后按“添加”按钮。在对话框中,打开“基础”节点区域,然后选择“实体”节点。在场景树视图中,展开“实体”节点并选择其children字段。使用“添加”按钮将“形状”节点添加到其中。选择“形状”节点的外观字段,然后使用“添加”按钮添加PBRA外观节点。

  1. 添加一个Sphere节点作为新创建的Shape节点的geometry字段。
  2. 展开“PBRAappearance”节点,并将其“金属度metalness”字段更改为0,将其“粗糙度roughness”字段改为1。
  3. 将另一个“球体”节点添加到实体的boundingObject字段中。
  4. 最后,将“物理”节点添加到实体的physics字段中。
  5. 通过修改“实体”节点的平移场,将球放置在机器人前面(例如,在{0.2,0,0.2}处)。
  6. 保存仿真
  7. 结果如下

模拟开始时,球会碰到地板。可以通过对球施加力(ctrl+alt+左键单击+拖动)来移动球。通过启用“视图/可选渲染/显示接触点”菜单项,球和地板之间的接触点可以显示为青色线。

Geometries

为了定义球,我们在两个不同的上下文中使用了Sphere节点:用于图形表示(子对象)和定义物理边界(boundingObject)。所有“几何体”节点(如“球体”节点)都可以在图形上下文中使用。但是,在物理环境中只能使用其中的一个子集。节点图表表示在每个上下文中支持哪些节点。
我们现在将通过增加用于表示球体的三角形数量来减小球体的大小并提高其图形质量。

For each Sphere node defining the ball, set its radius field to 0.05 and its subdivision field to 2. Refer to the Reference Manual to understand what the subdivision field stands for.

DEF-USE机制

DEF-USE机制允许在一个位置定义节点,并在场景树的其他位置重用该定义。这对于避免世界文件中相同节点的重复非常有用。此外,它还允许用户同时修改多个对象。它的工作原理如下:首先用DEF字符串标记节点。然后,可以使用USE关键字在其他地方重用此节点的副本。只有DEF节点的字段可以编辑,USE的字段继承自DEF节点,不能更改。此机制取决于世界文件中节点的顺序。应在任何相应的USE节点之前定义DEF节点。
我们前面用来定义球的两个球体定义是多余的。现在,我们将使用DEF-USE机制将这两个球体合并为一个球体。

 

现在,更改第一个Sphere节点的半径字段也会修改其boundingObject。

为方便起见,boundingObject字段还接受“形状”节点(而不是直接接受“球体”节点)。如图所示,也可以在形状级别使用相同的DEF-use机制。目前最大的好处是可以直接将此形状用于图形目的。稍后,这种机制将被证明对一些传感器非常有用。

Create a second ball with the same parameters but using the Shape node (rather than the Sphere node directly) for the DEF-USE mechanism.

 

标签:教程,定义,环境,视图,修改,字段,节点,DEF,刚体
From: https://www.cnblogs.com/gary-guo/p/17585698.html

相关文章

  • 9、教程-3控制器的更多方面
    现在我们开始讨论与机器人控制器编程相关的主题。我们将设计一个简单的控制器,以避免在前面的教程中创建的障碍。本教程将向您介绍Webots中机器人编程的基础知识。在本章末尾,您应该了解场景树节点和控制器API之间的链接是什么,机器人控制器必须如何初始化和清理,如何初始化机器人设备......
  • PyCharm 获取 Conda 环境列表失败,报错 error code 1 的解决办法
    通常来说,在设置PythonInterpreter时,Condaexecutable的路径为anaconda\Scripts\conda.exe。但是我在给同事部署环境填入该路径,且路径下也确实有对应文件存在,却报错errorcode1。解决方案:用这个路径anaconda\Library\bin\conda.bat可解决问题。这让我想起在Mac上部署Conda......
  • RunnerGo:详细使用教程,带你轻松拿捏性能测试
    RunnerGo简介:RunnerGo是基于go语言开发的轻量级性能测试平台,支持接口测试、自动化测试、性能测试等3大测试模块,相对于传统的性能测试工具,它具有运行速度快、资源占用少等特点。并且还支持可实时查看性能测试报告的平台RunnerGo的优势:1.RunnerGo运行速度更快,更节省资源采用go......
  • multi-GPU环境下的batch normalization需要特殊实现吗?
    3年前曾经写过关于分布式环境下batchnormalization是否需要特殊实现的讨论:batchnormalization的multi-GPU版本该怎么实现?【Tensorflow分布式PS/Worker模式下异步更新的情况】  当时我给出的观点就是在多卡环境下batchnormalization使用每个step内的各显卡batch上......
  • idea2023.1.3 最新激活教程
    说明本教程用来激活 idea2023.1.3版本。激活效果 下载idea2023.1.3版本客户端官网地址:https://www.jetbrains.com/idea/download/other.html根据自己所需下载相应的版本安装(解压)idea2023.1.3版本客户端解压版本的直接在自己的软件安装目录解压即可安装版本一路nex......
  • 九州八荒录H5游戏详细图文架设教程
    前言这次给大家带来一款丧心病狂的超变版仙侠H5游戏,九州八荒录H5,变态到什么程度呢?各种宝物升级到上万阶,还没有达到上限,战力也突破到了千万亿,只有你够肝,榜一大佬指日可待!本文讲解九州八荒录游戏架设教程,想研究H5游戏如何实现,体验游戏中秒天秒地秒空气的一定不要错过。我架......
  • Systemd 入门教程
    Systemd入门教程:命令篇Systemd是Linux系统工具,用来启动守护进程,已成为大多数发行版的标准配置。本文介绍它的基本用法,分为上下两篇。今天介绍它的主要命令,下一篇介绍如何用于实战。一、由来历史上,Linux的启动一直采用init进程。下面的命令用来启动服务。$sudo/et......
  • docker run 修改运行的脚本
    DockerRun:修改运行的脚本在使用Docker部署应用程序时,我们经常需要在容器启动时执行一些特定的脚本。Docker提供了dockerrun命令,允许我们修改容器运行时要执行的脚本。本文将介绍如何使用dockerrun命令来修改容器的启动脚本,并提供相应的代码示例。DockerRun命令简介......
  • 在Windows系统下一键下载安装jdk1.8,并且配置环境变量
    @echooffsetlocalrem定义JDK下载链接和安装路径set"jdk_url=https://repo.huaweicloud.com/java/jdk/8u151-b12/jdk-8u151-windows-x64.exe"set"jdk_installer=jdk-8u151-windows-x64.exe"set"install_path=C:\Java"rem创建安装目录ifnotexi......
  • Next.js 开发环境设置 SSL 证书
    在Next.js中设置证书时,你可以按照以下步骤进行操作:生成自签名证书:在开发环境中,你可以使用自签名证书来启用HTTPS。可以使用工具如OpenSSL来生成自签名证书。以下是一个示例命令:opensslreq-nodes-new-x509-keyoutserver.key-outserver.crt这将生成一个名为serv......