要在模型和虚拟世界之间建立实时数据连接,需要在动态模型对象数量和相应的虚拟世界对象属性之间建立关联。例如,创建与虚拟世界对象属性(如位置和旋转)的关联。
虽然Simscape™MultiBody™和仿真软金宝app件®是通用的机械系统建模平台,也可以使用金宝app仿真软件3 d动画™产品的可视化模型实现在MATLAB®.
将Simulink模型信号与金宝app虚拟世界对象属性关联起来VR水槽块的金宝app仿真软件3 d动画块库,vrlib
.
将一个Simulink信号关联金宝app到一个虚拟对象属性:
从vrlib
图书馆,插入一个VR水槽块到您的Simulink模型中。金宝app
要定义虚拟世界,请使用VR水槽块参数对话框。输入虚拟世界3D文件的名称源文件,或点击浏览以交互方式选择文件。单击,加载选中的虚拟现实场景应用.
为了流畅地可视化运动,您可以改变块样品时间.例如,要想每秒更新虚拟世界25次,设置样品时间来0.04
.的继承样例时间时要小心VR水槽块。根据所使用的求解器,使用继承的样本时间会导致虚拟世界的非等距更新(在模拟时间中)。非等距更新给观察虚拟世界的人一个系统动力学的错误印象。
在虚拟世界树,展开主对象变换
分支。在场景对象层次结构中,根据给定的名称在Simulink中找到你想要控制的所有部分金宝app添加DEF的名字.命名变换
节点代表每个部分。的旋转和位置字段旁边的复选框变换
节点。您可以选择虚拟世界对象的其他属性,例如颜色,但旋转和位置是最常用的。
点击好的.对于每个选定的字段,VR水槽块创建一个输入端口。增加了VR水槽适当的块大小以容纳输入端口的数量。
关联后VR水槽块与虚拟世界,可以双击它打开金宝app仿真软件3 d动画查看器。要访问块参数,请在查看器中选择模拟>块属性.
VR水槽输入接收与它们的虚拟世界表示相对应的信号类型。位置输入是类型的sfvec3f.
,表示的位置[x y z]
坐标。旋转输入是类型的SFRotation
,将旋转定义为[轴角]
,使用所描述的坐标系坐标系统使用,其中角度值以弧度为单位。
将Simulink模型使用的坐标系与虚拟世界的坐标系进行匹配。金宝app如果两个坐标系不相同,变换一个轴。
通常,对象位置可用虚拟世界所需的形式(笛卡尔坐标)。通常,对象旋转是使用旋转矩阵表示来定义的。要将这种旋转转换为VRML格式,请使用旋转矩阵到VRML旋转块。
对象的位置和旋转会根据虚拟世界的层次而不同:
要用全局坐标定义Simulink模型中的所有部件,金宝app当虚拟世界有独立对象的平面结构时,使用这些位置和旋转。
对象位置 | 发送到VR水槽全局坐标的所有职位。 |
物体旋转 | 发送到VR水槽所有的旋转在全局坐标中,旋转中心定义为坐标系原点。若默认旋转中心为变换 对象是[0 0 0] ,则不需要为虚拟世界3D文件中的每个部分定义中心。 |
当Simulink模型中的所有部分遵金宝app循层次关系,并且虚拟世界具有嵌套结构时,使用这些位置和旋转。
对象位置 | 发送到VR水槽在对象层次结构中,相对于它们的父类或前类的局部坐标中的所有位置。例如,发送机器人工具相对于机器人手的位置。 |
物体旋转 | 发送到VR水槽在对象层次结构中,相对于它们的父对象或前任对象的局部坐标的所有旋转。例如,让机器人工具相对于机器人手旋转。 通过使虚拟世界中的旋转中心与Simulink模型中的旋转中心重合,在视觉上匹配物体之间的关节位置。金宝app重合的转动中心,因为当部件之间的关节不在原点( 要定义一个不同于默认值的旋转中心, |
在分层场景结构中,当各部件通过旋转关节连接时,很容易定义部件之间的相对旋转。关节轴直接定义了虚拟世界的旋转轴,所以你可以构造[轴角]
四元素旋转矢量。
Si金宝appmulink模型初始条件必须对应于虚拟世界中定义的初始对象位置和旋转。否则,从Simulink控制的对象从VRML文件中定义的位置跳转到由Simu金宝applink针对模拟所示的位置。要弥补此偏移量,请使用其中一种方法:
在虚拟世界3D文件中,定义另一级嵌套变换
围绕被控制对象。
在Simuli金宝appnk模式中,将对象的初始位置添加到模型计算中,然后发送到VR水槽块。
将Simulink模金宝app型初始条件与虚拟世界中的物体位置对齐,保持物体相对于周围场景的正确位置。你可以调整物体周围的位置。例如,移动道路位置,使汽车在位置[0 0 0]
保持在道路上,没有车轮下沉或漂浮在道路上方。
的VR水槽块只接受定义完全限定字段值的输入。仅在一维描述系统行为的动态模型仍然需要所有被控对象的完整三维位置,以实现其虚拟现实可视化。
为了简化这种情况下的建模,您可以使用VR占位符和VR扩张器街区金宝app仿真软件3 d动画图书馆。
的VR占位符块发出一个特殊值,该价值被解释为未指定的VR水槽块。当此占位符值出现在VR水槽输入,作为单个值或作为向量元素,虚拟世界中的适当值保持不变。
的VR信号扩展器块创建一个具有预定义长度的向量,使用来自输入端口的一些值,并用占位符信号值填充其余的值。
要在一维动态模型中控制虚拟对象的位置,请使用VR信号扩展器块,其输入为受控尺寸。对于它的输出,使用一个三分量向量VR水槽块。剩余的vector元素用占位符信号填充。
的使用VR信号扩展器当定义旋转时,块也是一种可能。当在虚拟世界3D文件中定义了旋转轴时,可以发送到VR水槽阻塞一个虚拟世界旋转值。使用由三个占位符信号和计算的角度组成的值。这个旋转值形成一个有效的四元素[轴角]
向量。
你可以使用金宝app仿真软件3 d动画产品查看使用的模型的行为Simscape多体软件
在Simulink界面中使用金宝appSimscape多体块。
在虚拟世界中创建机器的详细视觉表示。
将虚拟世界连接到Simscape多体身体传感器输出。
在虚拟世界查看器中查看身体的行为。
你可以使用Simscape多体使用该软件3D可视化金宝app仿真软件3 d动画产品。除了这些特性Simscape多体产品提供的建模机械装配,以下特点简化了可视化Simscape多体虚拟现实中的模型:
Simscape多体虚拟世界的坐标系是相同的。
在里面Simscape多体软件,你可以使用全局和局部对象坐标。这种灵活性使得模型很容易适应从CAD工具导出的虚拟世界的结构。
的Simscape多体产品还提供一种方便的进口CAD装配设计方式Simscape多体机器通过Simscape多体链接界面。或者,当您将CAD程序集导出到虚拟世界格式时,您可以向这种组件添加虚拟现实可视化。
的金宝app仿真软件3 d动画软件包括以下功能以配合使用Simscape多体文件:vrcadcleanup
,vrphysmod
, 和stl2vrml
.
根据虚拟世界层次结构,您可以使用两种方法之一来帮助可视化Simscape多体机器:
当虚拟世界具有独立对象的平面结构时,可以通过使用获得机器零件的位置和旋转体传感器块。连接体传感器块连接到身体上的适当坐标系。使用全局坐标定义位置和旋转。通常,您可以将传感器连接到带有原点的身体坐标系[0 0 0]
初始旋转矩阵定义为单位矩阵,[1 0 0;0 1 0,0 0 0 1]
,在全局坐标中。
当虚拟世界具有嵌套对象的分层结构时,可以获得身体位置和旋转。用一个体传感器块及其输出集,以使用局部体坐标。在特殊情况下,例如当两个物体通过一个旋转接头连接时,你可以用关节传感器块。
为了帮助你与虚拟世界互动金宝app仿真软件3 d动画产品提供了一组MATLAB函数和构造,统称为“MATLAB接口”。这种MATLAB功能适用于基于cad的设计的情况包括:
使用自定义GUI可视化静态对象及其在虚拟环境中的关系,例如在交互式机器装配说明中。
基于独立数量(不必时间)可视化3D信息。
在Simulink模型回调中使用MATLAB接口函数。金宝app
可视化动态模型可用作MATLAB代码的系统。
可视化诸如变形的大量对象变化的系统发生。在这种情况下,从动态模型向虚拟世界发送动态大小的矩阵类型数据,这是不可能使用的模拟信号。金宝app
有关使用MATLAB接口设置对象属性的信息,请参见与虚拟现实世界互动.