Add vertex-based flex constraints (dim=2).

PiperOrigin-RevId: 859552050
Change-Id: I61d4b9dc40f041c5b930e5f8810a803e8bccb87a
This commit is contained in:
Alessio Quaglino
2026-01-22 04:54:11 -08:00
committed by Copybara-Service
parent 2cc2e579f1
commit 54dd623650
15 changed files with 705 additions and 22 deletions
+63 -2
View File
@@ -997,6 +997,11 @@ STRUCTS: Mapping[str, StructDecl] = dict([
type=ValueType(name='int'),
doc='number of non-zeros in sparse flexedge Jacobian matrix',
),
StructFieldDecl(
name='nJfv',
type=ValueType(name='int'),
doc='number of non-zeros in sparse flexvert Jacobian matrix',
),
StructFieldDecl(
name='nmesh',
type=ValueType(name='int'),
@@ -2880,6 +2885,14 @@ STRUCTS: Mapping[str, StructDecl] = dict([
doc='radius around primitive element',
array_extent=('nflex',),
),
StructFieldDecl(
name='flex_size',
type=PointerType(
inner_type=ValueType(name='mjtNum'),
),
doc='vertex bounding box half sizes in qpos0',
array_extent=('nflex', 3),
),
StructFieldDecl(
name='flex_stiffness',
type=PointerType(
@@ -2923,9 +2936,9 @@ STRUCTS: Mapping[str, StructDecl] = dict([
StructFieldDecl(
name='flex_edgeequality',
type=PointerType(
inner_type=ValueType(name='mjtByte'),
inner_type=ValueType(name='int'),
),
doc='is edge equality constraint defined',
doc='0: none, 1: edges, 2: vertices',
array_extent=('nflex',),
),
StructFieldDecl(
@@ -3000,6 +3013,30 @@ STRUCTS: Mapping[str, StructDecl] = dict([
doc='column indices in sparse Jacobian',
array_extent=('nJfe',),
),
StructFieldDecl(
name='flexvert_J_rownnz',
type=PointerType(
inner_type=ValueType(name='int'),
),
doc='number of non-zeros in Jacobian row',
array_extent=('nflexvert', 2),
),
StructFieldDecl(
name='flexvert_J_rowadr',
type=PointerType(
inner_type=ValueType(name='int'),
),
doc='row start address in colind array',
array_extent=('nflexvert', 2),
),
StructFieldDecl(
name='flexvert_J_colind',
type=PointerType(
inner_type=ValueType(name='int'),
),
doc='column indices in sparse Jacobian',
array_extent=('nJfv', 2),
),
StructFieldDecl(
name='flex_rgba',
type=PointerType(
@@ -5609,6 +5646,22 @@ STRUCTS: Mapping[str, StructDecl] = dict([
doc='flex edge lengths',
array_extent=('nflexedge',),
),
StructFieldDecl(
name='flexvert_J',
type=PointerType(
inner_type=ValueType(name='mjtNum'),
),
doc='flex vertex Jacobian',
array_extent=('nJfv', 2),
),
StructFieldDecl(
name='flexvert_length',
type=PointerType(
inner_type=ValueType(name='mjtNum'),
),
doc='flex vertex lengths',
array_extent=('nflexvert', 2),
),
StructFieldDecl(
name='bvh_aabb_dyn',
type=PointerType(
@@ -7879,6 +7932,14 @@ STRUCTS: Mapping[str, StructDecl] = dict([
type=ValueType(name='double'),
doc='radius around primitive element',
),
StructFieldDecl(
name='size',
type=ArrayType(
inner_type=ValueType(name='double'),
extents=(3,),
),
doc='vertex bounding box half sizes in qpos0',
),
StructFieldDecl(
name='internal',
type=ValueType(name='mjtByte'),