Skip to content

Commit f01eea9

Browse files
committed
Merge remote-tracking branch 'upstream/main' into tendon_friction
2 parents 7a3a4a7 + 703f3e0 commit f01eea9

31 files changed

+3684
-727
lines changed

conftest.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,13 @@ def pytest_addoption(parser):
2424
default=False,
2525
help="run tests with cuda error checking",
2626
)
27+
parser.addoption("--lineinfo", action="store_true", default=False, help="add lineinfo to warp kernel")
2728

2829

2930
def pytest_configure(config):
3031
if config.getoption("--cpu"):
3132
wp.set_device("cpu")
3233
if config.getoption("--verify_cuda"):
3334
wp.config.verify_cuda = True
35+
if config.getoption("--lineinfo"):
36+
wp.config.lineinfo = True

contrib/kernel_analyzer/kernel_analyzer/ast_analyzer_test.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,8 @@ def test_all_issues(
136136
@kernel
137137
def test_no_issues(
138138
# Model:
139-
qpos0: wp.array(dtype=float),
140-
geom_pos: wp.array(dtype=wp.vec3),
139+
qpos0: wp.array2d(dtype=float),
140+
geom_pos: wp.array2d(dtype=wp.vec3),
141141
# Data in:
142142
qpos_in: wp.array2d(dtype=float),
143143
qvel_in: wp.array2d(dtype=float),

mujoco_warp/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
from ._src.io import put_data as put_data
3535
from ._src.io import put_model as put_model
3636
from ._src.passive import passive as passive
37+
from ._src.ray import ray as ray
3738
from ._src.sensor import sensor_acc as sensor_acc
3839
from ._src.sensor import sensor_pos as sensor_pos
3940
from ._src.sensor import sensor_vel as sensor_vel

mujoco_warp/_src/broadphase_test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ def test_sap_broadphase(self):
8585
(6, 7),
8686
]
8787

88-
_, _, m, d = test_util.fixture(xml=_SAP_MODEL)
88+
_, _, m, d = test_util.fixture(xml=_SAP_MODEL, qpos0=True)
8989

9090
mjwarp.sap_broadphase(m, d)
9191

mujoco_warp/_src/collision_box.py

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -192,20 +192,20 @@ def _box_box(
192192
geom_type: wp.array(dtype=int),
193193
geom_condim: wp.array(dtype=int),
194194
geom_priority: wp.array(dtype=int),
195-
geom_solmix: wp.array(dtype=float),
196-
geom_solref: wp.array(dtype=wp.vec2),
197-
geom_solimp: wp.array(dtype=vec5),
198-
geom_size: wp.array(dtype=wp.vec3),
199-
geom_friction: wp.array(dtype=wp.vec3),
200-
geom_margin: wp.array(dtype=float),
201-
geom_gap: wp.array(dtype=float),
195+
geom_solmix: wp.array2d(dtype=float),
196+
geom_solref: wp.array2d(dtype=wp.vec2),
197+
geom_solimp: wp.array2d(dtype=vec5),
198+
geom_size: wp.array2d(dtype=wp.vec3),
199+
geom_friction: wp.array2d(dtype=wp.vec3),
200+
geom_margin: wp.array2d(dtype=float),
201+
geom_gap: wp.array2d(dtype=float),
202202
pair_dim: wp.array(dtype=int),
203-
pair_solref: wp.array(dtype=wp.vec2),
204-
pair_solreffriction: wp.array(dtype=wp.vec2),
205-
pair_solimp: wp.array(dtype=vec5),
206-
pair_margin: wp.array(dtype=float),
207-
pair_gap: wp.array(dtype=float),
208-
pair_friction: wp.array(dtype=vec5),
203+
pair_solref: wp.array2d(dtype=wp.vec2),
204+
pair_solreffriction: wp.array2d(dtype=wp.vec2),
205+
pair_solimp: wp.array2d(dtype=vec5),
206+
pair_margin: wp.array2d(dtype=float),
207+
pair_gap: wp.array2d(dtype=float),
208+
pair_friction: wp.array2d(dtype=vec5),
209209
# Data in:
210210
nconmax_in: int,
211211
geom_xpos_in: wp.array2d(dtype=wp.vec3),
@@ -262,6 +262,7 @@ def _box_box(
262262
collision_pair_in,
263263
collision_pairid_in,
264264
tid,
265+
worldid,
265266
)
266267

267268
# transformations
@@ -271,8 +272,8 @@ def _box_box(
271272
trans_atob = b_mat_inv @ (a_pos - b_pos)
272273
rot_atob = b_mat_inv @ a_mat
273274

274-
a_size = geom_size[ga]
275-
b_size = geom_size[gb]
275+
a_size = geom_size[worldid, ga]
276+
b_size = geom_size[worldid, gb]
276277
a = box(rot_atob, trans_atob, a_size)
277278
b = box(wp.identity(3, wp.float32), wp.vec3(0.0), b_size)
278279

@@ -363,7 +364,7 @@ def _box_box(
363364
for i in range(4):
364365
pos[i] = pos[idx]
365366

366-
margin = wp.max(geom_margin[ga], geom_margin[gb])
367+
margin = wp.max(geom_margin[worldid, ga], geom_margin[worldid, gb])
367368
for i in range(4):
368369
pos_glob = b_mat @ pos[i] + b_pos
369370
n_glob = b_mat @ sep_axis

mujoco_warp/_src/collision_convex.py

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -709,23 +709,23 @@ def gjk_epa_sparse(
709709
geom_condim: wp.array(dtype=int),
710710
geom_dataid: wp.array(dtype=int),
711711
geom_priority: wp.array(dtype=int),
712-
geom_solmix: wp.array(dtype=float),
713-
geom_solref: wp.array(dtype=wp.vec2),
714-
geom_solimp: wp.array(dtype=vec5),
715-
geom_size: wp.array(dtype=wp.vec3),
716-
geom_friction: wp.array(dtype=wp.vec3),
717-
geom_margin: wp.array(dtype=float),
718-
geom_gap: wp.array(dtype=float),
712+
geom_solmix: wp.array2d(dtype=float),
713+
geom_solref: wp.array2d(dtype=wp.vec2),
714+
geom_solimp: wp.array2d(dtype=vec5),
715+
geom_size: wp.array2d(dtype=wp.vec3),
716+
geom_friction: wp.array2d(dtype=wp.vec3),
717+
geom_margin: wp.array2d(dtype=float),
718+
geom_gap: wp.array2d(dtype=float),
719719
mesh_vertadr: wp.array(dtype=int),
720720
mesh_vertnum: wp.array(dtype=int),
721721
mesh_vert: wp.array(dtype=wp.vec3),
722722
pair_dim: wp.array(dtype=int),
723-
pair_solref: wp.array(dtype=wp.vec2),
724-
pair_solreffriction: wp.array(dtype=wp.vec2),
725-
pair_solimp: wp.array(dtype=vec5),
726-
pair_margin: wp.array(dtype=float),
727-
pair_gap: wp.array(dtype=float),
728-
pair_friction: wp.array(dtype=vec5),
723+
pair_solref: wp.array2d(dtype=wp.vec2),
724+
pair_solreffriction: wp.array2d(dtype=wp.vec2),
725+
pair_solimp: wp.array2d(dtype=vec5),
726+
pair_margin: wp.array2d(dtype=float),
727+
pair_gap: wp.array2d(dtype=float),
728+
pair_friction: wp.array2d(dtype=vec5),
729729
# Data in:
730730
nconmax_in: int,
731731
geom_xpos_in: wp.array2d(dtype=wp.vec3),
@@ -772,6 +772,7 @@ def gjk_epa_sparse(
772772
collision_pair_in,
773773
collision_pairid_in,
774774
tid,
775+
worldid,
775776
)
776777

777778
g1 = geoms[0]
@@ -781,28 +782,32 @@ def gjk_epa_sparse(
781782
return
782783

783784
geom1 = _geom(
785+
geom_type,
784786
geom_dataid,
785-
geom_size,
787+
geom_size[worldid],
786788
mesh_vertadr,
787789
mesh_vertnum,
790+
mesh_vert,
788791
geom_xpos_in,
789792
geom_xmat_in,
790793
worldid,
791794
g1,
792795
)
793796

794797
geom2 = _geom(
798+
geom_type,
795799
geom_dataid,
796-
geom_size,
800+
geom_size[worldid],
797801
mesh_vertadr,
798802
mesh_vertnum,
803+
mesh_vert,
799804
geom_xpos_in,
800805
geom_xmat_in,
801806
worldid,
802807
g2,
803808
)
804809

805-
margin = wp.max(geom_margin[g1], geom_margin[g2])
810+
margin = wp.max(geom_margin[worldid, g1], geom_margin[worldid, g2])
806811

807812
simplex, normal = _gjk(mesh_vert, geom1, geom2)
808813

mujoco_warp/_src/collision_driver.py

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
import warp as wp
1919

20-
from .collision_box import box_box_narrowphase
2120
from .collision_convex import gjk_narrowphase
2221
from .collision_primitive import primitive_narrowphase
2322
from .types import MJ_MAXVAL
@@ -32,8 +31,8 @@
3231
@wp.func
3332
def _sphere_filter(
3433
# Model:
35-
geom_rbound: wp.array(dtype=float),
36-
geom_margin: wp.array(dtype=float),
34+
geom_rbound: wp.array2d(dtype=float),
35+
geom_margin: wp.array2d(dtype=float),
3736
# Data in:
3837
geom_xpos_in: wp.array2d(dtype=wp.vec3),
3938
geom_xmat_in: wp.array2d(dtype=wp.mat33),
@@ -42,12 +41,12 @@ def _sphere_filter(
4241
geom2: int,
4342
worldid: int,
4443
) -> bool:
45-
margin1 = geom_margin[geom1]
46-
margin2 = geom_margin[geom2]
44+
margin1 = geom_margin[worldid, geom1]
45+
margin2 = geom_margin[worldid, geom2]
4746
pos1 = geom_xpos_in[worldid, geom1]
4847
pos2 = geom_xpos_in[worldid, geom2]
49-
size1 = geom_rbound[geom1]
50-
size2 = geom_rbound[geom2]
48+
size1 = geom_rbound[worldid, geom1]
49+
size2 = geom_rbound[worldid, geom2]
5150

5251
bound = size1 + size2 + wp.max(margin1, margin2)
5352
dif = pos2 - pos1
@@ -124,8 +123,8 @@ def _upper_tri_index(n: int, i: int, j: int) -> int:
124123
@wp.kernel
125124
def _sap_project(
126125
# Model:
127-
geom_rbound: wp.array(dtype=float),
128-
geom_margin: wp.array(dtype=float),
126+
geom_rbound: wp.array2d(dtype=float),
127+
geom_margin: wp.array2d(dtype=float),
129128
# Data in:
130129
geom_xpos_in: wp.array2d(dtype=wp.vec3),
131130
# In:
@@ -138,13 +137,13 @@ def _sap_project(
138137
worldid, geomid = wp.tid()
139138

140139
xpos = geom_xpos_in[worldid, geomid]
141-
rbound = geom_rbound[geomid]
140+
rbound = geom_rbound[worldid, geomid]
142141

143142
if rbound == 0.0:
144143
# geom is a plane
145144
rbound = MJ_MAXVAL
146145

147-
radius = rbound + geom_margin[geomid]
146+
radius = rbound + geom_margin[worldid, geomid]
148147
center = wp.dot(direction_in, xpos)
149148

150149
sap_projection_lower_out[worldid, geomid] = center - radius
@@ -182,8 +181,8 @@ def _sap_broadphase(
182181
# Model:
183182
ngeom: int,
184183
geom_type: wp.array(dtype=int),
185-
geom_rbound: wp.array(dtype=float),
186-
geom_margin: wp.array(dtype=float),
184+
geom_rbound: wp.array2d(dtype=float),
185+
geom_margin: wp.array2d(dtype=float),
187186
nxn_pairid: wp.array(dtype=int),
188187
# Data in:
189188
nworld_in: int,
@@ -343,8 +342,8 @@ def sap_broadphase(m: Model, d: Data):
343342
def _nxn_broadphase(
344343
# Model:
345344
geom_type: wp.array(dtype=int),
346-
geom_rbound: wp.array(dtype=float),
347-
geom_margin: wp.array(dtype=float),
345+
geom_rbound: wp.array2d(dtype=float),
346+
geom_margin: wp.array2d(dtype=float),
348347
nxn_geom_pair: wp.array(dtype=wp.vec2i),
349348
nxn_pairid: wp.array(dtype=int),
350349
# Data in:
@@ -446,4 +445,3 @@ def collision(m: Model, d: Data):
446445
# TODO(team) switch between collision functions and GJK/EPA here
447446
gjk_narrowphase(m, d)
448447
primitive_narrowphase(m, d)
449-
box_box_narrowphase(m, d)

0 commit comments

Comments
 (0)