MoJoCo 入门教程(七)XML 参考(二)

简介: MoJoCo 入门教程(七)XML 参考

MoJoCo 入门教程(七)XML 参考(一)+https://developer.aliyun.com/article/1585337

2.9.4 body/geom (*)

       此元素创建一个 geom,并将其刚性连接到定义 geom 的主体上。同一主体可连接多个几何体。在运行时,它们决定体的外观和碰撞属性。在编译时,它们还可以根据惯性元素的存在和编译器中 inertiafromgeom 属性的设置来确定体的惯性属性。具体做法是将所有连接到机体上的 geom 的质量和惯性相加,其中 geom 组的范围由编译器的 inertiagrouprange 属性指定。计算地质体质量和惯性时使用了地质体形状、指定密度或意味着密度的地质体质量以及均匀密度假设。

       物理仿真并不严格要求 Geom。我们可以创建和仿真一个只有主体和关节的模型。这样的模型甚至可以可视化,使用等效惯性盒来表示物体。这样的仿真只缺少接触力。我们并不推荐使用此类模型,但了解到这一可能性有助于明确体和关节在 MuJoCo 中的作用。

name(名称):字符串,可选

       几何体的名称。

class:字符串,可选

       用于设置未指定属性的默认类。

type: [plane, hfield, sphere, capsule, ellipsoid, cylinder, box, mesh, sdf]([平面、hfield、球体、胶囊、椭圆体、圆柱体、长方体、网格、sdf]),"sphere"(球体)

       几何体的类型。关键字的含义如下:

  • 平面(plane)类型定义了一个用于碰撞检测的无限平面。它只能连接到世界本体或世界的静态子对象。平面通过通过 pos 属性指定的点。它的法线指向 geom 本地坐标系的 Z 轴。+Z 方向对应的是空白空间。因此,位置和方向默认值(0,0,0)和(1,0,0,0)将创建一个 Z=0 高度的地面平面,+Z 方向是世界的垂直方向(这是 MuJoCo 的惯例)。由于平面是无限的,因此可以使用平面上的任何其他点来定义。不过,指定的位置对于渲染还有额外的意义。如果前两个尺寸参数中的任何一个为正值,那么平面将被渲染为一个有限尺寸的矩形(正维)。该矩形以指定位置为中心。需要三个尺寸参数。前两个参数指定了矩形沿 X 轴和 Y 轴的半径。第三个尺寸参数很特别:它指定了用于渲染的平面网格细分间距。在线框渲染模式下,这些细分网格会显示出来,但一般来说,它们不应该用来在地平面上绘制网格(应该使用纹理)。相反,它们的作用是改善光照和阴影,与用于渲染方框的细分效果类似。从背面观察平面时,平面会自动变成半透明状态。平面和方框的 +Z 面是唯一可以显示反射的表面,前提是应用于该几何体的材质具有正反射。要渲染无限平面,请将前两个尺寸参数设置为零。
  • hfield 类型定义了高度域 geom。geom 必须使用下面的 hfield 属性引用所需的高度区域资产(asset)。geom 的位置和方向设置了高度区域的位置和方向。geom 的大小将被忽略,取而代之的是高度字段资产(asset)的大小参数。请参阅 hfield 元素的说明。与平面类似,高度场 geom 只能附加到世界主体或世界的静态子对象上。
  • 球体(sphere)类型定义了一个球体。该类型和接下来的四种类型对应于内置的几何基元。这些基元被视为用于碰撞检测的解析曲面,在许多情况下依赖于自定义的成对碰撞例程。仅包含平面、球面、胶囊和长方体的模型在碰撞检测方面效率最高。其他几何体类型会调用通用的凸碰撞器。球体以几何体的位置为中心。只使用一个尺寸参数,指定球体的半径。几何基元的渲染是通过自动生成的网格完成的,网格的密度可以通过质量进行调整。球体网格沿经纬线进行三角剖分,Z 轴穿过南北极。在线框模式下,这对坐标系方向的可视化非常有用。
  • 胶囊(capsule)类型定义了一个胶囊,它是一个由两个半球体封盖的圆柱体。它的坐标系是 Z 轴。按常规方法指定地理坐标系时,需要两个尺寸参数:胶囊的半径和圆柱体部分的半高。不过,胶囊和圆柱体也可以被视为连接器,因此可以使用下面的 fromto 属性进行另一种指定。在这种情况下,只需要一个尺寸参数。
  • 椭球体(ellipsoid)类型定义了一个椭球体。这是一个沿本地坐标系的 X、Y 和 Z 轴分别缩放的球体。它需要三个尺寸参数,分别对应三个半径。需要注意的是,尽管椭球体是平滑的,但它们的碰撞也是通过通用的凸形碰撞器来处理的。唯一的例外是平面-椭球体碰撞,它是通过分析计算得出的。
  • 圆柱体(cylinder)类型定义了一个圆柱体。它需要两个尺寸参数:圆柱体的半径和半高。圆柱体沿几何体坐标系的 Z 轴定向。也可以使用下面的 fromto 属性来指定。
  • 长方体(box)类型定义了一个长方体。需要三个尺寸参数,分别对应于方框沿几何体坐标系 X、Y 和 Z 轴的半尺寸。请注意,方框-方框碰撞是唯一一种可以生成大量接触点的成对碰撞类型,根据配置的不同,最多可以生成 8 个接触点。接触点生成本身速度很快,但这会减慢约束求解器的速度。作为一种替代方法,我们在标记中提供了 boxconvex 属性,它将导致使用通用的凸对撞器,每个几何体对最多产生一个接触点。
  • 网格(mesh)类型定义了一个网格。geom 必须使用 mesh 属性引用所需的网格资产。请注意,网格资产也可以从其他 geom 类型引用,从而拟合出原始形状;请参阅下文。网格大小由网格资产决定,geom 大小参数将被忽略。与所有其他几何体不同,编译后的网格几何体的位置和方向与此处相应属性的设置不相等。相反,它们会被平移和旋转所偏移,而平移和旋转是网格资产在其自身坐标系中居中和对齐所必需的。请回顾在网格元素中关于居中和对齐的讨论。
  • sdf 类型定义了一个带符号的距离域(SDF,也称为带符号的距离函数)。为了使 SDF 可视化,必须使用 mesh/plugin 属性指定自定义网格。请参阅 model/plugin/sdf/ 目录,了解带有 SDF 几何图形的示例模型。有关 SDF 插件的更多详情,请参阅扩展部分章节。

contype: int, "1"

       此属性和下一个属性指定 32 位整数位掩码,用于动态生成的接触对的接触过滤。请参阅计算章节中的碰撞检测。如果一个几何体的 contype 与另一个几何体的 conaffinity 兼容,或反之亦然,则两个几何体可以发生碰撞。兼容是指两个位掩码有一个共同的位被设置为 1。

conaffinity:int, "1"

       用于过滤接触的位掩码;参见上文的 contype。

condim:int, "3"

       动态生成的接触对的接触空间维度被设置为两个参与几何体的 condim 值的最大值。请参阅计算章节中的接触。允许的值及其含义如下:

condim

Description

1

无摩擦接触。

3

常规摩擦接触,切线平面上的对向滑移。

4

摩擦接触,切线平面上的对向滑动以及围绕接触法线的旋转。这对于模拟柔性接触非常有用(与接触穿透力无关)。

6

摩擦接触、切线平面内的对向滑移、绕接触法线的旋转以及绕切线平面两轴的旋转。后一种摩擦效应对于防止物体无限滚动非常有用。

group: int, "0"

       该属性指定了该 geom 所属的整数组。对物理的唯一影响是在编译时,根据组别选择的 geom 会推断出体质量和惯量;请参阅编译器的 inertiagrouprange 属性。在运行时,可视化器使用该属性启用或禁用整个几何体组的渲染。它也可用作自定义计算的标记。

priority: int, "0"

       geom 优先级决定了如何将两个碰撞 geom 的属性组合起来形成接触点的属性。它与 solmix 属性相互影响。请参阅触点参数。

size: real(3), "0 0 0"

       几何体尺寸参数。所需的参数数量及其含义取决于 geom 类型,详见 type 属性。这里我们只提供一个摘要。所有要求的尺寸参数都必须为正值;内部默认值与无效设置相对应。需要注意的是,当非网格 geom 类型引用网格时,该类型的几何基元会与网格相匹配。在这种情况下,尺寸将从网格中获取,而 geom 尺寸参数将被忽略。因此,下表中所需尺寸参数的数量和描述仅适用于不引用网格的几何体。

Type

Number

Description

plane

(平面)

3

X 半尺寸;Y 半尺寸;渲染时方格线之间的间距。如果 X 或 Y 半尺寸为 0,则平面在尺寸为 0 的维度上渲染为无限大。

hfield

(高度域)

0

几何尺寸将被忽略,取而代之的是高度区域尺寸。

sphere

(球)

1

球体半径。

capsule

(胶囊)

1 or 2

胶囊半径;不使用 fromto 规范时,圆柱体部分的半长。

ellipsoid

(椭圆体)

3

X 半径;Y 半径;Z 半径。

cylinder

(圆柱体)

1 or 2

圆柱体半径;不使用 fromto 规格时的圆柱体半长。

box

(长方体)

3

X 半径;Y 半径;Z 半径。

mesh

(网格)

0

忽略几何尺寸,使用网格尺寸。

material:字符串,可选

       如果指定了该属性,则该属性会将一种材质应用到几何体(geom)上。材质决定了几何体的视觉属性。唯一的例外是颜色:如果下面的 rgba 属性与其内部默认值不同,则会优先使用该属性,而其余的材质属性仍会应用。需要注意的是,如果同一材料被多个几何体(以及站点和筋腱)引用,并且用户在运行时更改了它的某些属性,那么这些更改将立即对引用该材料的所有模型元素生效。这是因为编译器会将材料及其属性保存为 mjModel 中的一个单独元素,而使用该材料的元素只保留对它的引用。

rgba: real(4), "0.5 0.5 0.5 1".

       该属性可用于仅设置颜色和透明度,而不是创建材质资产并对其进行引用。这种方法不如材质机制灵活,但更方便,通常也足够了。如果该属性的值与内部默认值不同,它将优先于材质。

friction(摩擦力):real(3), "1 0.005 0.0001"

       动态生成的接触对的接触摩擦参数。第一个数字是滑动摩擦力,沿切线平面的两条轴线作用。第二个数字是扭转摩擦力,作用于接触法线周围。第三个数字是滚动摩擦力,围绕切平面的两个轴线产生作用。接触对的摩擦参数根据混合溶胶和优先属性进行组合,详见 "接触参数"。

mass:实数,可选

       如果指定了此属性,则下面的密度属性将被忽略,并根据给定的质量、几何形状和均匀密度假设计算出几何密度。计算得出的密度将用于获取几何体(geom)惯性。请注意,几何体(geom)质量和惯性仅在编译过程中使用,必要时用于推断主体(body)质量和惯性。在运行时,只有主体(body)惯性属性会影响仿真;几何体(geom)质量和惯性甚至不会保存在 mjModel 中。

density:实数,"1000

       用于计算几何体质量和惯性的材料密度。计算基于几何体形状和均匀密度假设。内部默认值 1000 是以 SI 单位表示的水的密度。该属性仅在上述质量属性未指定时使用。

shellinertia [false, true], "假"

       如果为 "true",则计算地壳惯性时会假设所有质量都集中在边界上。在这种情况下,密度被解释为表面密度,而不是体积密度。

solmix:实数, "1"

       该属性指定用于平均接触参数的权重,并与优先级属性交互。请参阅 "接触参数"。

solref, solimp

       用于触点仿真的约束求解器参数。请参见求解器参数。

margin:实数,"0

       距离阈值,低于此阈值时将检测到触点并将其纳入全局数组 mjData.contact。但这并不意味着会产生接触力。只有当两个几何表面之间的距离低于 margin-gap 时,接触才会被认为是有效的。请注意,约束阻抗可以是距离的函数,这在求解器参数中已有说明。该函数适用的量是两个几何体之间的距离减去边距加上间隙。

gap:实数,"0

       此属性用于生成非活动触点,即约束求解器忽略的触点,但为了进行自定义计算而包含在 mjData.contact 中。当此值为正数时,margin 和 margin-gap 之间的 geom 距离将与此类非活动触点相对应。

fromto:real(6),可选

       该属性只能用于胶囊、方框、圆柱体和椭圆体几何体(capsule, box, cylinder and ellipsoid geoms)。它提供了对几何体长度以及坐标系位置和方向的另一种指定。六个数字是一个点的三维坐标,然后是另一个点的三维坐标。几何体的拉长部分连接这两点,几何体坐标系的 +Z 轴从第一点朝向第二点,而在垂直方向上,几何体的尺寸都等于尺寸属性的第一个值。坐标系的方向与 "坐标系方向 "中描述的 z 轴属性的步骤相同。坐标系位置位于端点之间的中间位置。如果指定了该属性,其余与位置和方向相关的属性将被忽略。右边的图片演示了使用相同的 Z 值将 fromto 与四个支持的几何体结合使用。模型在此。请注意,capsule 的 fromto 语义是独一无二的:两个端点指定了半径定义 capsule 表面的分段。

pos:real(3),"0 0 0"

       几何体(geom)的位置,在定义几何体(geom)坐标的体(body)坐标系中指定。

quat、axisangle、xyaxes、zaxis、euler

       坐标系框架的方向。请参阅坐标系方向。

hfield:字符串,可选

       如果且仅当 geom 类型为 "hfield "时,才必须指定此属性。它引用了在坐标系框架的位置和方向上实例化的高度域资产。

mesh:字符串,可选

       如果 geom 类型为 "mesh",则此属性为必填项。它引用了要实例化的网格资产。如果 geom 类型对应的是几何基元,即 "球体"、"胶囊"、"圆柱体"、"椭圆体"、"盒体 "(“sphere”, “capsule”, “cylinder”, “ellipsoid”, “box”)中的一种,也可以指定此属性。在这种情况下,该基元会自动拟合到此处引用的网格资产中。拟合过程使用网格的等效惯性盒或轴对齐包围盒,这由编译器的属性 fitaabb 决定。拟合后的几何体大小通常符合预期,如果不符合预期,可以使用下面的 fitcale 属性进一步调整。在编译后的 mjModel 中,geom 表示为指定基元类型的常规 geom,没有用于拟合的网格参考。

fitcale:实数,"1"

       此属性仅在原始几何类型与网格资产拟合时使用。此处指定的缩放比例是相对于自动拟合程序的输出结果而言的。默认值为 1 时,结果保持不变;默认值为 2 时,拟合几何体的所有尺寸都会增大两倍。

fluidshape: [none, ellipsoid], “none”

       "椭圆体 "激活基于椭圆体近似几何体形状的几何体级流体相互作用模型。激活后,基于体惯性大小的模型将在定义 geom 的体上禁用。详情请参阅 "基于椭球体的流体相互作用模型 "一节。

fluidcoef: real(5), "0.5 0.25 1.5 1.0 1.0" 无量纲系数

       流体相互作用模型的无量纲系数,如下所示。详见基于椭球体的流体相互作用模型一节。

Index

Description

Symbol

Default

0

钝阻力系数

eq?C_%7BD%2C%5Cmathrm%7Bblunt%7D%7Deq?C_%7BD%2C%5Cmathrm%7Bblunt%7D%7D

0.5

1

细长阻力系数

eq?C_%7BD%2C%5Ctext%7Bslender%7D%7Deq?C_%7BD%2C%5Ctext%7Bslender%7D%7D

0.25

2

角阻力系数 eq?C_%7BD%2C%5Ctext%7Bangular%7D%7Deq?C_%7BD%2C%5Ctext%7Bangular%7D%7D

1.5

3

库塔升力系数

eq?C_%7BK%7Deq?C_%7BK%7D

1.0

4

马格努斯升力系数

eq?C_%7BM%7Deq?C_%7BM%7D

1.0

user: real(nuser_geom), "0 0 ..."

       参见用户参数。

2.9.4.1 geom/plugin (?)

       将此 geom 与引擎插件关联。插件或实例均为必填项。

plugin:字符串,可选

       插件标识符,用于隐式插件实例化。

instance:字符串,可选

       实例名称,用于显式插件实例化。

2.9.5 body/site (*)

       该元素创建一个站点,它是一种简化和受限的 geom。这里只提供了一小部分 geom 属性;详细说明请参阅 geom 元素。从语义上讲,站点代表相对于体(body)坐标系的感兴趣的位置。站点不参与碰撞以及体(body)质量和惯性的计算。可用于渲染站点的几何形状仅限于可用 geom 类型的子集。不过,在一些不允许使用几何体的地方也可以使用 "位点":安装传感器、指定空间筋的通点、为执行器构建滑块曲柄传动装置。

name:字符串,可选

       站点名称。

class:字符串,可选

       用于设置未指定属性的默认类别。

type:[sphere, capsule, ellipsoid, cylinder, box]([球体、胶囊、椭圆体、圆柱体、长方体]), sphere("球体").

       几何形状类型。该类型用于渲染,并决定触摸传感器的活动感应区。

group: int, "0"

       站点(site)所属的整数组。该属性可用于自定义标签。可视化器也可使用该属性启用或禁用整个站点组的渲染。

material:字符串,可选

       用于指定站点(site)视觉属性的材质。

rgba:real(4),"0.5 0.5 0.5 1"

       颜色和透明度。如果该值与内部默认值不同,则会覆盖相应的材质属性。

size:real(3), "0.005 0.005 0.005" 表示站点(site)几何形状的尺寸。

       代表站点的几何图形的尺寸。

fromto:real(6),可选

       该属性只能用于胶囊、圆柱体、椭圆体和箱体(capsule, cylinder, ellipsoid and box)站点。它提供了站点长度以及坐标系位置和方向的另一种规格。这六个数字是一个点的三维坐标,然后是另一个点的三维坐标。站点的拉长部分连接这两点,站点坐标系的 +Z 轴从第一点朝向第二点。坐标系方位的获取步骤与 "坐标系方位 "中所述的 Z 轴属性相同。坐标系位置位于两点之间的中间。如果指定了该属性,其余与位置和方向相关的属性将被忽略。

pos:real(3), "0 0 0"

       站点坐标系的位置。

quat、axisangle、xyaxes、zaxis、euler

       站点坐标系的方向。请参见坐标系方向。

user: real(nuser_site), "0 0 ..."

       请参见用户参数。

2.9.6 body/⁠camera (*)

2.9.7 body/⁠light (*)

2.9.8 body/⁠plugin (?)

2.9.9 body/⁠composite (*)

2.9.10 body/⁠flexcomp (*)

2.9.11 body/⁠frame (*)

2.10 body/⁠frame (*)

2.11 deformable (*)

2.12 equality (*)

2.13 tendon (*)

2.14 actuator (*)

       这是执行器定义的分组元素。请回顾计算一章中对 MuJoCo 执行模型的讨论,以及本章前面讨论的执行器快捷方式。下面所有执行器相关元素的前 13 个属性都是相同的,因此我们只在一般执行器下记录一次。

2.14.1 actuator/⁠general (*)

       该元素创建了一个通用执行器,提供对所有执行器组件的完全访问权限,并允许用户独立地指定这些组件。

name:字符串,可选

       元素名称。参见元素命名。

class:字符串,可选

       活动默认类。请参阅默认设置。

group(组):int, "0"

       执行器所属的整数组。该属性可用于自定义标签。可视化器也可以使用它来启用或禁用整个执行器组的渲染。

ctrllimited: [false,true,auto], "auto"

       如果为 true,执行器的控制输入将在运行时自动箝位到 ctrlrange。如果为假,则控制输入箝位被禁用。如果在编译器中设置了 "auto"(自动)和 autolimits(自动限制),则在未明确将此属性设置为 "true "的情况下,如果定义了 ctrlrange,控制箝位将自动设置为 true。请注意,控制输入箝位也可以通过 option/flag 的 clampctrl 属性全局禁用。

forcelimited: [false,true,auto],"auto

       如果为 "true",执行器的力输出将在运行时自动夹紧至 forcerange。如果为 "false",将禁用力夹紧。如果在编译器中设置了 "auto"(自动)和 autolimits(自动限制),则在没有明确将此属性设置为 "true "的情况下,如果定义了 forcerange,力夹紧将自动设置为 true。

actlimited: [false,true,auto], "auto"

       如果为 true,则与该执行器相关的内部状态(激活)将在运行时自动箝位到 actrange。如果为假,则激活箝位被禁用。如果在编译器中设置了 "auto"(自动)和 autolimits(自动限制),则在没有明确将此属性设置为 "true"(真)的情况下定义 actrange 时,激活箝位将自动设置为 "true"(真)。更多详情,请参阅激活箝位部分。

ctrlrange:real(2), "0 0"

       控制输入的箝位范围。第一个值必须小于第二个值。

       在未指定 ctrllimited 的情况下设置此属性是错误的,除非编译器中设置了自动限制。

forcerange:real(2), "0 0"

       夹紧力输出的范围。第一个值不得大于第二个值。

       设置此属性而不指定 forcelimited 将导致错误,除非编译器中设置了 autolimits。

actrange: real(2), "0 0"

       箝位激活状态的范围。第一个值不得大于第二个值。更多详情,请参阅激活箝位部分。

       在未指定 actlimited 的情况下设置此属性是错误的,除非编译器设置了 autolimits。

lengthrange:real(2), "0 0"

       执行机构传动的可行长度范围。参见长度范围。

gear: real(6), "1 0 0 0 0 0"

       在所有传动类型中,该属性可缩放推杆的长度(以及力矩臂、速度和力)。它不同于力发生机制中的增益,因为增益只对力输出进行缩放,而不影响长度、力矩臂和速度。对于标量传输的执行机构,只需使用该矢量的第一个元素。其余元素需要用于关节、关节父节点和现场传输,其中该属性用于指定三维力轴和扭矩轴。

cranklength:实数,"0"

       仅用于滑块曲柄传动类型。指定连杆的长度。当存在滑块曲柄式变速器时,编译器希望该值为正值。

joint:字符串,可选

       该属性和接下来的四个属性决定了传动装置的类型。所有属性均为可选属性,但必须指定其中一个。如果指定了该属性,推杆将作用于给定的关节。对于铰链和滑动(hinge and slide)接头,推杆长度等于接头位置/角度乘以齿轮(gear)的第一个元素。对于球形关节,齿轮的前三个元素定义了子坐标系中的 3d 旋转轴,执行器围绕该轴产生扭矩。执行器长度定义为该齿轮轴与关节四元数的角轴表示之间的点积,如果齿轮(gear)进行了归一化处理(通常按齿轮法线缩放),则执行器长度以弧度为单位。请注意,在总旋转量超过 π 后,长度将变为 -π,反之亦然。因此,用于球形关节的位置伺服一般应使用更严格的限制,以防止出现这种缠绕。对于自由关节,齿轮在世界坐标系中定义了一个三维平移轴,然后在子坐标系中定义了一个三维旋转轴。执行器相对于指定的轴产生力和扭矩。自由关节的执行器长度定义为零(因此不应与位置伺服器一起使用)。

jointinparent: 字符串,可选

       与关节相同,但对于球关节和自由关节,齿轮(gear)给出的三维旋转轴是在父坐标系(自由关节的世界坐标系)而不是子坐标系中定义的。

site:字符串,可选

       该传动装置可以在某一位置施加力和扭矩。齿轮矢量定义了一个三维平移轴和一个三维旋转轴。两者都在站点的坐标系中定义。这可用于模拟喷气式飞机和螺旋桨。其效果类似于驱动一个自由关节,而且除非定义了一个反射点(见下文),否则执行器的长度定义为零。与上述关节和母关节传动的一个不同点是,这里的致动器是在部位而不是关节上工作的,但当部位定义为自由浮体的坐标系原点时,这一不同点就消失了。另一个不同点是,对于部位传动,平移轴和旋转轴都是以局部坐标定义的。相反,对于关节来说,平移是全局坐标,旋转是局部坐标,而对于父节点来说,平移和旋转都是全局坐标。

refsite: 字符串,可选

       当使用现场传输时,测量与 refsite 的坐标系相关的平移和旋转。在这种情况下,执行器确实有长度,位置执行器可以用来直接控制末端执行器,参见 refsite.xml 示例模型。如上所述,长度是齿轮矢量与坐标系差值的点积。因此,gear="0 1 0 0 0 0 "表示 "站点在 refsite 坐标系中的 Y 偏移",而 gear="0 0 0 0 1 "表示旋转 "站点在 refsite 坐标系中的 Z 旋转"。建议使用归一化齿轮矢量,只在齿轮的前 3 个或后 3 个元素中使用非零点,因此执行器长度将分别以长度单位或弧度为单位。与球形关节(见上文关节)一样,超过总角度 π 的旋转将产生缠绕,因此建议使用更严格的限制。

body:字符串,可选

       该传动可在接触点上施加与接触法线方向一致的线性力。接触点集是属于指定主体的所有接触点。这可用于模拟自然界的主动粘附机制,如壁虎和昆虫的脚。致动器长度同样定义为零。更多信息,请参阅下面的粘附快捷方式。

tendon:字符串,可选

       如果指定,致动器将作用于给定的肌腱。推杆长度等于肌腱长度乘以齿轮比。可以使用空间筋和固定筋。

cranksite:字符串,可选

       如果指定,则执行机构作用于滑块-曲柄机构,该机构由执行机构隐式决定(即它不是一个单独的模型元素)。指定位置对应于连接曲柄和连杆的销轴。推杆长度等于滑块-曲柄机构的位置乘以齿轮比。

slidersite:字符串,用于滑块曲柄变速器

       仅用于滑块曲柄式传动。指定的位置是连接滑块和连杆的销轴。滑块沿滑块坐标系的 Z 轴移动。因此,在运动学树中定义滑块时,应根据需要确定滑块的方向;在执行器定义中不能改变滑块的方向。

user: real(nuser_actuator), "0 ... 0"

       参见用户参数。

actdim:实数,"-1"

       激活状态的尺寸。默认值为-1,指示编译器根据 dyntype 设置维度。大于 1 的值只允许用于用户定义的激活状态,因为本地类型只需要 0 或 1 的维度。对于大于 1 的激活维度,最后一个元素将用于产生力。

dyntype: [none, integrator, filter, filterexact, muscle, user], "none"

       执行机构的激活动力学类型。可用的动力学类型已在执行模型部分进行了描述。用稍有不同的符号(与 mjModel 和 mjData 字段相对应)重复上述描述,我们可以得到

Keyword

Description

none

No internal state

integrator

act_dot = ctrl

filter

act_dot = (ctrl - act) / dynprm[0]

filterexact

Like filter but with exact integration

muscle

act_dot = mju_muscleDynamics(…)

user

act_dot = mjcb_act_dyn(…)

gaintype: [fixed, affine, muscle, user], “fixed”

       增益和偏置共同决定了目前假定为仿射的力发生机制的输出。正如在 "激活模型 "中所解释的,一般公式为:标量力 = 增益项 * (act 或 ctrl) + 偏置项。该公式在激活状态存在时使用激活状态,否则使用控制状态。关键字的含义如下:

Keyword

Description

fixed

gain_term = gainprm[0]

affine

gain_term = gain_prm[0] + gain_prm[1]*length + gain_prm[2]*velocity

muscle

gain_term = mju_muscleGain(…)

user

gain_term = mjcb_act_gain(…)

biastype: [none, affine, muscle, user], “none”

       关键字的含义如下:

Keyword

Description

none

bias_term = 0

affine

bias_term = biasprm[0] + biasprm[1]*length + biasprm[2]*velocity

muscle

bias_term = mju_muscleBias(…)

user

bias_term = mjcb_act_bias(…)

dynprm: real(10), "1 0 ... 0"

       激活动态参数。内置激活类型(肌肉除外)只使用第一个参数,但我们提供了额外参数,以备用户回调实现更复杂的模型。解析器不会强制规定该数组的长度,因此用户可以根据需要输入尽可能多的参数。这些默认值与肌肉致动器不兼容;请参阅下文肌肉。

gainprm: real(10), "1 0 ... 0"

       增益参数。内置增益类型(肌肉除外)只使用第一个参数,但我们提供了额外参数,以备用户回调实现更复杂的模型。解析器不会强制规定该数组的长度,因此用户可以根据需要输入尽可能多的参数。这些默认值与肌肉致动器不兼容;请参阅下文肌肉。

biasprm: real(10), "0 ... 0"

       偏置参数。仿射偏置类型使用三个参数。解析器不会强制规定该数组的长度,因此用户可以根据需要输入尽可能多的参数。这些默认值与肌肉致动器不兼容;请参阅下文肌肉。

actearly: [false,true], "false"

       如果为 "true",力计算将使用激活变量的下一个值,而不是当前值。设置该标志可将控制和加速度之间的延迟减少一个时间步长。

2.14.2 actuator/⁠motor (*)

       这三个元素是前面讨论过的执行器快捷方式。当遇到此类快捷方式时,解析器会创建一个普通执行器,并将其 dynprm、gainprm 和 biasprm 属性设置为上述内部默认值,而不考虑任何默认设置。然后,它将根据快捷方式调整 dyntype、gaintype 和 biastype,解析任何自定义属性(除常用属性外),并将其转换为常规属性(即一般执行器类型的属性),详见此处说明。

       该元素创建了一个直接驱动执行器。基本的常规属性设置如下:

Attribute

Setting

Attribute

Setting

dyntype

none

dynprm

1 0 0

gaintype

fixed

gainprm

1 0 0

biastype

none

biasprm

0 0 0

       该元素没有自定义属性。它只有通用属性,即

name, class, group, ctrllimited, forcelimited, ctrlrange, forcerange, lengthrange, gear, cranklength, joint, jointinparent, tendon, cranksite, slidersite, site, refsite, user

       与执行机构/常规相同。

2.14.3 actuator/⁠position (*)

       该元素用于创建位置伺服。基本的一般属性设置如下:

Attribute

Setting

Attribute

Setting

dyntype

none

dynprm

1 0 0

gaintype

fixed

gainprm

kp 0 0

biastype

affine

biasprm

0 -kp -kv

       除通用属性外,该元素还有一个自定义属性:

name, class, group, ctrllimited, forcelimited, ctrlrange, forcerange, lengthrange, gear, cranklength, joint, jointinparent, tendon, cranksite, slidersite, site, refsite, user

与执行机构/常规相同。

kp:实数,"1

       位置反馈增益。

kv:实数,"0

       执行机构施加的阻尼。使用该属性时,建议使用隐式快速或隐式积分器。

heritrange:实数,"0

       自动设置执行器的范围,使其与传输目标的范围相匹配。默认值表示 "禁用"。例如,如果目标关节的范围是 [0,1],那么值 1.0 将把 ctrlrange 设为 [0,1];值 0.8 和 1.2 将分别把 ctrlrange 设为 [0.1,0.9] 和 [-0.1,1.1]。小于 1 的值有利于不触及极限;大于 1 的值有利于在极限处保持控制权限(可以推动极限)。该属性与 ctrlrange 属性是排他性的,仅适用于定义了范围的关节和肌腱传输。需要注意的是,虽然 inheritrange 既可以作为位置属性,也可以在默认类中使用,但保存的 XML 总是会在执行器处将其转换为显式的 ctrlrange。

2.14.4 actuator/⁠velocity (*)

       该元素用于创建一个速度伺服器。请注意,要创建一个 PD 控制器,必须定义两个执行器:一个位置伺服器和一个速度伺服器。这是因为 MuJoCo 执行器是 SISO 的,而 PD 控制器需要两个控制输入(参考位置和参考速度)。在使用该执行器时,建议使用隐式快速或隐式积分器。基本的一般属性设置如下:

Attribute

Setting

Attribute

Setting

dyntype

none

dynprm

1 0 0

gaintype

fixed

gainprm

kv 0 0

biastype

affine

biasprm

0 0 -kv

       除通用属性外,该元素还有一个自定义属性:

name, class, group, ctrllimited, forcelimited, ctrlrange, forcerange, lengthrange, gear, cranklength, joint, jointinparent, tendon, cranksite, slidersite, site, refsite, user

       与执行机构/常规相同。

kv:实数,"1

       速度反馈增益。

2.14.5 actuator/⁠intvelocity (*)

       该元素用于创建集成速度伺服。更多信息,请参阅建模章节的激活夹紧部分。基本通用属性设置如下:

Attribute

Setting

Attribute

Setting

dyntype

integrator

dynprm

1 0 0

gaintype

fixed

gainprm

kp 0 0

biastype

affine

biasprm

0 -kp -kv

actlimited

true

   

       除通用属性外,该元素还有一个自定义属性:

name, class, group, ctrllimited, forcelimited, ctrlrange, forcerange, actrange, lengthrange, gear, cranklength, joint, jointinparent, tendon, cranksite, slidersite, site, refsite, user

       与执行机构/常规相同。

kp:实数,"1

       位置反馈增益。

kv:实数,"0

       执行机构施加的阻尼。使用该属性时,建议使用隐式快速或隐式积分器。

inheritrange:实数,"0

       与 position/inheritrange 相同,但设置的是 actrange(与传输目标具有相同的长度语义),而不是 ctrlrange(具有速度语义)。

2.14.6 actuator/⁠damper (*)

       该元件为主动阻尼器,产生的力与速度和控制力成正比: F = - kv * 速度 * 控制,其中 kv 必须是非负值。使用该执行器时,建议使用隐式快速积分器或隐式积分器。基本的一般属性设置如下:

Attribute

Setting

Attribute

Setting

dyntype

none

dynprm

1 0 0

gaintype

affine

gainprm

0 0 -kv

biastype

none

biasprm

0 0 0

ctrllimited

true

       除通用属性外,该元素还有一个自定义属性:

name, class, group, ctrllimited, forcelimited, ctrlrange, forcerange, lengthrange, gear, cranklength, joint, jointinparent, tendon, cranksite, slidersite, site, refsite, user

       与执行机构/常规相同。

kv:实数,"1

       速度反馈增益。

2.14.7 actuator/⁠cylinder (*)

该元素适用于气动或液压缸建模。基本的一般属性设置如下:

Attribute

Setting

Attribute

Setting

dyntype

filter

dynprm

timeconst 0 0

gaintype

fixed

gainprm

area 0 0

biastype

affine

biasprm

bias(3)

       除通用属性外,该元素还有四个自定义属性:

name, class, group, ctrllimited, forcelimited, ctrlrange, forcerange, lengthrange, gear, cranklength, joint, jointinparent, tendon, cranksite, slidersite, site, refsite, user

与执行机构/常规相同。

timeconst:实数,"1

       激活动态的时间常数。

面积:实数,"1

       气缸的面积。内部用作执行机构增益。

直径:实数,可选

       用户可以指定直径来代替面积。如果两者都指定,则直径优先。

偏置:real(3), "0 0 0"

       偏置参数,内部复制到 biasprm 中。

2.14.8 actuator/⁠muscle (*)

该元素用于模拟肌肉执行器,如肌肉执行器部分所述。基本的一般属性设置如下:

Attribute

Setting

Attribute

Setting

dyntype

muscle

dynprm

timeconst(2) tausmooth

gaintype

muscle

gainprm

range(2), force, scale, lmin, lmax, vmax, fpmax, fvmax

biastype

muscle

biasprm

same as gainprm

除通用属性外,该元素还有九个自定义属性:

与执行机构/常规相同。

timeconst:实数(2),"0.01 0.04"

激活和解除激活动态的时间常数。

tausmooth:实数,"0

激活和去激活时间常数之间平滑过渡的宽度。单位为 ctrl,必须是非负值。

range: real(2), "0.75 1.05" 肌肉的工作长度范围,单位为厘米。

肌肉的工作长度范围,单位为 L0。

力:实数,"-1

静止时的峰值作用力。如果该值为负数,峰值力将通过下面的标度属性自动确定。

scale:实数,"200

如果力属性为负值,肌肉的峰值作用力将设为该值除以 mjModel.actuator_acc0。后者是 qpos0 中执行器传动装置上的单位力所引起的关节空间加速度矢量的法线。换句话说,对于拉动更多重量的肌肉,缩放会产生更高的峰值力。

lmin:实数,"0.5

归一化 FLV 曲线的较低位置范围,单位为 L0。

lmax:实数,"1.6

归一化 FLV 曲线的上限位置范围,以 L0 为单位。

vmax:实数,"1.5

肌力降至零时的缩短速度,单位为 L0/秒。

fpmax:实数,"1.3"

相对于静止峰值力,在 lmax 时产生的被动力。

fvmax:实数,"1.2"

拉伸速度达到饱和时产生的主动力,相对于静止峰值力。

2.14.9 actuator/⁠adhesion (*)

该元素定义了一个主动粘附执行器,可在法线方向的触点上注入力,请参见视频说明。视频中显示的模型可在此处找到,并包含内嵌注释。传输目标是一个体,粘着力会注入到所有涉及到属于这个体的几何体的触点上。力在多个接触点之间平均分配。当不使用间隙属性时,这种致动器需要主动接触,无法远距离施力,更像是壁虎和昆虫脚上的主动粘附,而不是工业真空抓取器。为了实现 "远距离吸力",可将主体的几何体 "充气",并增加一个相应的间隙,只有在间隙穿透距离后才能激活触点。这将在检测到触点但未激活的几何体周围形成一层,可用于施加粘合力。在上面的视频中,这种非活动触点是蓝色的,而活动触点是橙色的。粘合致动器的长度始终为 0。ctrlrange 是必需的,而且必须是非负值(不允许有排斥力)。基本的一般属性设置如下:

Attribute

Setting

Attribute

Setting

dyntype

none

dynprm

1 0 0

gaintype

fixed

gainprm

gain 0 0

biastype

none

biasprm

0 0 0

trntype

body

ctrllimited

true

该元素有一个常用属性子集和两个自定义属性。

name(名称)、class(类别)、group(组)、forcelimited(有限制的)、ctrlrange(控制范围)、forcerange(控制范围)、user(用户

与执行机构/常规元素相同。

body:字符串,必填

执行器作用于涉及此机构的所有接点。

gain(增益):实数,"1

附着力致动器的增益,以力为单位。执行器施加的总粘着力是控制值乘以增益。这个力会平均分配给目标机构的所有地心。

2.14.10 actuator/plugin (?)

将此执行器与引擎插件关联。插件或实例均为必填项。

plugin:字符串,可选

插件标识符,用于隐式插件实例化。

instance:字符串,可选

实例名称,用于显式插件实例化。

dyntype: [none, integrator, filter, filterexact, muscle, user], "none" (无,积分器,滤波器,精确滤波,肌肉,用户)。

致动器的激活动力学类型。可用的动力学类型已在执行模型部分进行了说明。如果 dyntype 不是 "none",执行器将增加一个激活变量。该变量将被添加到插件计算的激活状态之后(见执行机构插件激活)。

actrange: 实数(2), "0 0"

与执行器动态类型相关的激活状态箝位范围。该限制不适用于插件计算的激活状态。第一个值不得大于第二个值。更多详情,请参阅 "激活箝位 "部分。

与执行机构/常规相同。

2.15 sensor (*)

       这是传感器定义的分组元素。它没有属性。所有传感器的输出数据都会汇总到 mjData.sensordata 字段中,该字段的大小为 mjModel.nsensordata。这些数据不会用于任何内部计算。

       除了用下面的元素创建的传感器外,顶层函数 mj_step 还计算与身体加速度和相互作用力相对应的 mjData.cacc、mjData.cfrc_int 和 mjData.crfc_ext。其中一些量用于计算某些传感器(力、加速度等)的输出,但即使模型中没有定义此类传感器,这些量本身也是用户可能感兴趣的 "特征"。

2.15.1 sensor/⁠touch (*)

       该元素用于创建触摸传感器。传感器的有效区域由一个位置定义。如果接触点位于该位置的范围内,并且涉及到与该位置相连的物体,则相应的接触力将包含在传感器读数中。如果接触点位于传感器区域之外,但法线与传感器区域相交,则也会包括在内。之所以需要这种重新投影功能,是因为如果没有这种功能,接触点可能会从背面离开传感器区域(由于接触点柔性),从而导致错误的力读数。该传感器的输出为非负标量。其计算方法是将所有触点的法向力(标量)相加。

name, noise, cutoff, user

       请参见传感器。

site:字符串,必填

       定义活动传感器区域的站点。

MoJoCo 入门教程(七)XML 参考(三)+

目录
相关文章
|
2月前
|
传感器 XML 编解码
MoJoCo 入门教程(七)XML 参考(三)
MoJoCo 入门教程(七)XML 参考(三)
56 1
|
2月前
|
XML 存储 数据可视化
MoJoCo 入门教程(七)XML 参考(一)
MoJoCo 入门教程(七)XML 参考
113 1
|
Java 数据库连接 数据库
MyBatis Generator XML 配置文件参考
在最常见的用例中,MyBatis Generator(MBG)由XML配置文件驱动。配置文件告诉MBG:如何连接到数据库什么对象要生成,以及如何生成它们什么表应用于生成对象以下是一个示例MBG配置文件。
915 0
|
2月前
|
XML Java 数据格式
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
这篇文章是Spring5框架的实战教程,主要介绍了如何在Spring的IOC容器中通过XML配置方式使用外部属性文件来管理Bean,特别是数据库连接池的配置。文章详细讲解了创建属性文件、引入属性文件到Spring配置、以及如何使用属性占位符来引用属性文件中的值。
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
|
4月前
|
XML Java 数据格式
java创建xml文件内容
java创建xml文件内容
|
4月前
|
XML Java 数据格式
java解析xml文件内容
java解析xml文件内容
|
1月前
|
SQL XML Java
mybatis :sqlmapconfig.xml配置 ++++Mapper XML 文件(sql/insert/delete/update/select)(增删改查)用法
当然,这些仅是MyBatis功能的初步介绍。MyBatis还提供了高级特性,如动态SQL、类型处理器、插件等,可以进一步提供对数据库交互的强大支持和灵活性。希望上述内容对您理解MyBatis的基本操作有所帮助。在实际使用中,您可能还需要根据具体的业务要求调整和优化SQL语句和配置。
30 1
|
2月前
|
XML 监控 数据格式
ROS 2 - Python、XML 和 YAML 编写 Launch 文件
ROS 2 - Python、XML 和 YAML 编写 Launch 文件
194 0
|
4月前
|
XML Java 数据库
配置applicationContext.xml文件
配置applicationContext.xml文件