From c511d02265c9c37cb5dbd461808c02f176df77e3 Mon Sep 17 00:00:00 2001 From: Baruch Tabanpour Date: Wed, 29 May 2024 16:20:27 -0700 Subject: [PATCH] Add hfield. Fixes #1655 #1491 #1695 PiperOrigin-RevId: 638447127 Change-Id: Ib1e5020a8407bc100145a6b382e985c03dd4a848 --- doc/changelog.rst | 13 +- doc/mjx.rst | 4 +- mjx/mujoco/mjx/_src/collision_convex.py | 327 +++++++++++++++--- mjx/mujoco/mjx/_src/collision_driver.py | 25 +- mjx/mujoco/mjx/_src/collision_driver_test.py | 89 +++++ mjx/mujoco/mjx/_src/collision_types.py | 70 ++-- mjx/mujoco/mjx/_src/dataclasses.py | 2 +- mjx/mujoco/mjx/_src/io.py | 24 +- mjx/mujoco/mjx/_src/mesh.py | 113 +++++- mjx/mujoco/mjx/_src/support.py | 2 + mjx/mujoco/mjx/_src/types.py | 37 +- .../barkour_v0/assets/barkour_v0_mjx.xml | 4 +- .../barkour_v0/assets/hfield_240_280.png | Bin 0 -> 174417 bytes 13 files changed, 604 insertions(+), 106 deletions(-) create mode 100644 mjx/mujoco/mjx/test_data/barkour_v0/assets/hfield_240_280.png diff --git a/doc/changelog.rst b/doc/changelog.rst index a2f528fc..59bbad37 100644 --- a/doc/changelog.rst +++ b/doc/changelog.rst @@ -14,12 +14,21 @@ General 2. Added :ref:`timeconst` attribute to the :ref:`position actuator`. When set to a positive value, the actuator is made stateful with :at:`filterexact` dynamics. +MJX +^^^ + +3. Add height-field collision support. Fixes :github:issue:`1491`. +4. Add a pre-compiled field ``mesh_convex`` to ``mjx.Model`` so that mesh properties can be vmapped over. + Fixes :github:issue:`1655`. +5. Fix a bug in convex mesh collisions, where erroneous edge contacts were being created even though face + separating axes were found. Fixes :github:issue:`1695`. + Bug fixes ^^^^^^^^^ -3. Fixed a bug the could cause collisions to be missed when :ref:`fusestatic` is enabled, as is +6. Fixed a bug the could cause collisions to be missed when :ref:`fusestatic` is enabled, as is often the case for URDF imports. Fixes :github:issue:`1069`, :github:issue:`1577`. -4. Fixed a bug that was causing the visualization of SDF iterations to write outside the size of the vector storing +7. Fixed a bug that was causing the visualization of SDF iterations to write outside the size of the vector storing them. Fixes :github:issue:`1539`. Version 3.1.5 (May 7, 2024) diff --git a/doc/mjx.rst b/doc/mjx.rst index 0e3c52f8..361c9cc4 100644 --- a/doc/mjx.rst +++ b/doc/mjx.rst @@ -196,7 +196,7 @@ The following features are **fully supported** in MJX: * - :ref:`Actuator Bias ` - ``NONE``, ``AFFINE`` * - :ref:`Geom ` - - ``PLANE``, ``SPHERE``, ``CAPSULE``, ``BOX``, ``MESH`` + - ``PLANE``, ``HFIELD``, ``SPHERE``, ``CAPSULE``, ``BOX``, ``MESH`` are fully implemented. ``ELLIPSOID`` and ``CYLINDER`` are implemented but only collide with other primitives. * - :ref:`Constraint ` - ``EQUALITY``, ``LIMIT_JOINT``, ``CONTACT_FRICTIONLESS``, ``CONTACT_PYRAMIDAL`` * - :ref:`Equality ` @@ -223,7 +223,7 @@ The following features are **in development** and coming soon: * - Category - Feature * - :ref:`Geom ` - - ``SDF``, ``HFIELD``, ``ELLIPSOID``, ``CYLINDER`` + - ``SDF``. Collisions between (``SPHERE``, ``BOX``, ``MESH``, ``HFIELD``) and ``CYLINDER``. Collisions between (``BOX``, ``MESH``, ``HFIELD``) and ``ELLIPSOID``. * - :ref:`Constraint ` - :ref:`Frictionloss `, ``CONTACT_ELLIPTIC``, ``FRICTION_DOF`` * - :ref:`Integrator ` diff --git a/mjx/mujoco/mjx/_src/collision_convex.py b/mjx/mujoco/mjx/_src/collision_convex.py index 3c3efd5c..7d2c10dd 100644 --- a/mjx/mujoco/mjx/_src/collision_convex.py +++ b/mjx/mujoco/mjx/_src/collision_convex.py @@ -14,8 +14,9 @@ # ============================================================================== """Convex collisions.""" +from collections.abc import Callable import functools -from typing import Tuple +from typing import Tuple, Union import jax from jax import numpy as jp @@ -26,16 +27,19 @@ from mujoco.mjx._src.collision_types import Collision from mujoco.mjx._src.collision_types import ConvexInfo from mujoco.mjx._src.collision_types import FunctionKey from mujoco.mjx._src.collision_types import GeomInfo +from mujoco.mjx._src.collision_types import HFieldInfo from mujoco.mjx._src.types import Data from mujoco.mjx._src.types import GeomType from mujoco.mjx._src.types import Model # pylint: enable=g-importing-member +_GeomInfo = Union[GeomInfo, ConvexInfo] + def collider(ncon: int): """Wraps collision functions for use by collision_driver.""" - def wrapper(func): + def wrapper(collision_fn): def collide( m: Model, d: Data, key: FunctionKey, geom: jax.Array ) -> Collision: @@ -45,18 +49,25 @@ def collider(ncon: int): GeomInfo(d.geom_xpos[g2], d.geom_xmat[g2], m.geom_size[g2]), ] in_axes = [0, 0] + fn = collision_fn for i in [0, 1]: if key.types[i] == GeomType.BOX: infos[i] = mesh.box(infos[i]) in_axes[i] = jax.tree_util.tree_map(lambda x: None, infos[i]).replace( - pos=0, mat=0, face=0, vert=0 + pos=0, mat=0, size=0, face=0, vert=0 ) elif key.types[i] == GeomType.MESH: - infos[i] = mesh.convex(m, key.data_ids[i], infos[i]) + c, cm = infos[i], m.mesh_convex[key.data_ids[i]] + infos[i] = ConvexInfo(**vars(c), **vars(cm)) in_axes[i] = jax.tree_util.tree_map(lambda x: None, infos[i]).replace( - pos=0, mat=0 + pos=0, mat=0, size=0 ) - dist, pos, frame = jax.vmap(func, in_axes=in_axes)(*infos) + elif key.types[i] == GeomType.HFIELD: + hfield_info = mesh.hfield(m, key.data_ids[i]) + infos[i] = hfield_info.replace(pos=infos[i].pos, mat=infos[i].mat) + in_axes[i] = hfield_info.replace(pos=0, mat=0, data=None) + fn = functools.partial(fn, subgrid_size=key.subgrid_size) + dist, pos, frame = jax.vmap(fn, in_axes=in_axes)(*infos) if ncon > 1: return jax.tree_util.tree_map(jp.concatenate, (dist, pos, frame)) return dist, pos, frame @@ -242,9 +253,8 @@ def plane_convex(plane: GeomInfo, convex: ConvexInfo) -> Collision: return dist, pos, frame -@collider(ncon=1) -def sphere_convex(sphere: GeomInfo, convex: ConvexInfo) -> Collision: - """Calculates contact between a sphere and a convex object.""" +def _sphere_convex(sphere: GeomInfo, convex: ConvexInfo) -> Collision: + """Calculates contact between a sphere and a convex mesh.""" faces = convex.face normals = convex.face_normal @@ -276,7 +286,7 @@ def sphere_convex(sphere: GeomInfo, convex: ConvexInfo) -> Collision: face_normal, ) edge_dist = jax.vmap( - lambda plane_pt, plane_norm: (pt - plane_pt).dot(plane_norm) + lambda plane_pt, plane_norm, pt=pt: (pt - plane_pt).dot(plane_norm) )(edge_p0, side_normals) pt_on_face = jp.all(edge_dist <= 0) # lte to handle degenerate edges @@ -291,7 +301,8 @@ def sphere_convex(sphere: GeomInfo, convex: ConvexInfo) -> Collision: # Get the normal, dist, and contact position. pt_normal, d = math.normalize_with_norm(pt - sphere_pos) - # Ensure normal points towards convex centroid. + # Ensure normal points towards convex centroid. Assume convex centroid is at + # the origin. inside = jp.dot(pt, pt_normal) > 0 sign = jp.where(inside, -1, 1) n = jp.where(pt_on_face | (d < 1e-6), -face_normal, sign * pt_normal) @@ -305,11 +316,17 @@ def sphere_convex(sphere: GeomInfo, convex: ConvexInfo) -> Collision: n = convex.mat @ n pos = convex.mat @ pos + convex.pos + return dist, pos, n + + +@collider(ncon=1) +def sphere_convex(sphere: GeomInfo, convex: ConvexInfo) -> Collision: + """Calculates contact between a sphere and a convex mesh.""" + dist, pos, n = _sphere_convex(sphere, convex) return dist, pos, math.make_frame(n) -@collider(ncon=2) -def capsule_convex(cap: GeomInfo, convex: ConvexInfo) -> Collision: +def _capsule_convex(cap: GeomInfo, convex: ConvexInfo) -> Collision: """Calculates contacts between a capsule and a convex object.""" # Get convex transformed normals, faces, and vertices. faces = convex.face @@ -431,6 +448,13 @@ def capsule_convex(cap: GeomInfo, convex: ConvexInfo) -> Collision: dist = -jp.where( has_edge_contact, jp.array([edge_penetration, -1]), face_penetration ) + return dist, pos, n + + +@collider(ncon=2) +def capsule_convex(cap: GeomInfo, convex: ConvexInfo) -> Collision: + """Calculates contacts between a capsule and a convex object.""" + dist, pos, n = _capsule_convex(cap, convex) frame = jax.vmap(math.make_frame)(n) return dist, pos, frame @@ -851,6 +875,7 @@ def _sat_gaussmap( incident_face_norm, -best_axis, ) + dist = jp.where(is_face_separating, 1.0, dist) # Handle edge separating axes by checking all edge pairs. a_idx = jp.tile(jp.arange(edges_a.shape[0]), reps=edges_b.shape[0]) @@ -891,8 +916,9 @@ def _sat_gaussmap( best_edge_idx = edge_dist.argmax() best_edge_dist = edge_dist[best_edge_idx] is_edge_contact = jp.where( - dist.max() < 0, best_edge_dist > dist.max() - 1e-6, - (best_edge_dist < 0) & ~jp.isinf(best_edge_dist) + dist.max() < 0.0, + best_edge_dist > dist.max() - 1e-6, + (best_edge_dist < 0) & ~jp.isinf(best_edge_dist), ) is_edge_contact = is_edge_contact & ~is_face_separating normal = jp.where(is_edge_contact, edge_axes[best_edge_idx], normal) @@ -911,9 +937,45 @@ def _sat_gaussmap( return dist, pos, normal -@collider(ncon=4) -def convex_convex(c1: ConvexInfo, c2: ConvexInfo) -> Collision: - """Calculates contacts between two convex objects.""" +def _box_box(b1: ConvexInfo, b2: ConvexInfo) -> Collision: + """Calculates contacts between two boxes.""" + faces1 = b1.face + faces2 = b2.face + + to_local_pos = b2.mat.T @ (b1.pos - b2.pos) + to_local_mat = b2.mat.T @ b1.mat + + faces1 = to_local_pos + faces1 @ to_local_mat.T + normals1 = b1.face_normal @ to_local_mat.T + normals2 = b2.face_normal + + vertices1 = to_local_pos + b1.vert @ to_local_mat.T + vertices2 = b2.vert + + unique_edges1 = jp.take(vertices1, b1.edge_dir, axis=0) + unique_edges2 = jp.take(vertices2, b2.edge_dir, axis=0) + + # brute-force SAT is more performant for box-box + dist, pos, normal = _sat_bruteforce( + faces1, + faces2, + vertices1, + vertices2, + normals1, + normals2, + unique_edges1, + unique_edges2, + ) + + # Go back to world frame. + pos = b2.pos + pos @ b2.mat.T + n = normal @ b2.mat.T + + return dist, pos, n + + +def _convex_convex(c1: ConvexInfo, c2: ConvexInfo) -> Collision: + """Calculates contacts between two convex meshes.""" # pad face vertices so that we can broadcast between geom1 and geom2 # face has shape (n_face, n_vert, 3) nvert1, nvert2 = c1.face.shape[1], c2.face.shape[1] @@ -932,6 +994,7 @@ def convex_convex(c1: ConvexInfo, c2: ConvexInfo) -> Collision: faces1 = c1.face faces2 = c2.face + # convert to c2 frame to_local_pos = c2.mat.T @ (c1.pos - c2.pos) to_local_mat = c2.mat.T @ c1.mat @@ -942,49 +1005,209 @@ def convex_convex(c1: ConvexInfo, c2: ConvexInfo) -> Collision: vertices1 = to_local_pos + c1.vert @ to_local_mat.T vertices2 = c2.vert - unique_edges1 = jp.take(vertices1, c1.edge_dir, axis=0) - unique_edges2 = jp.take(vertices2, c2.edge_dir, axis=0) - edges1 = jp.take(vertices1, c1.edge, axis=0) edges2 = jp.take(vertices2, c2.edge, axis=0) edge_face_normals1 = c1.edge_face_normal @ to_local_mat.T edge_face_normals2 = c2.edge_face_normal - enable_bruteforce = ( - unique_edges1.shape[0] * unique_edges2.shape[0] - < edges1[0].shape[0] * edges2[0].shape[0] + dist, pos, normal = _sat_gaussmap( + to_local_pos, + faces1, + faces2, + vertices1, + vertices2, + normals1, + normals2, + edges1, + edges2, + edge_face_normals1, + edge_face_normals2, ) - if enable_bruteforce: - dist, pos, normal = _sat_bruteforce( - faces1, - faces2, - vertices1, - vertices2, - normals1, - normals2, - unique_edges1, - unique_edges2, - ) - else: - dist, pos, normal = _sat_gaussmap( - to_local_pos, - faces1, - faces2, - vertices1, - vertices2, - normals1, - normals2, - edges1, - edges2, - edge_face_normals1, - edge_face_normals2, - ) # Go back to world frame. pos = c2.pos + pos @ c2.mat.T - normal = normal @ c2.mat.T - normal = -normal if swapped else normal - frame = jax.vmap(math.make_frame)(normal) + n = normal @ c2.mat.T + n = -n if swapped else n + return dist, pos, n + + +@collider(ncon=4) +def box_box(b1: ConvexInfo, b2: ConvexInfo) -> Collision: + """Calculates contacts between two boxes.""" + dist, pos, n = _box_box(b1, b2) + frame = jax.vmap(math.make_frame)(n) return dist, pos, frame + + +@collider(ncon=4) +def convex_convex(c1: ConvexInfo, c2: ConvexInfo) -> Collision: + """Calculates contacts between two convex objects.""" + dist, pos, n = _convex_convex(c1, c2) + frame = jax.vmap(math.make_frame)(n) + return dist, pos, frame + + +def _hfield_collision( + collider_fn: Callable[[_GeomInfo, _GeomInfo], Collision], + h: HFieldInfo, + obj: _GeomInfo, + obj_rbound: jax.Array, + subgrid_size: Tuple[int, int], +) -> Collision: + """Collides an object with prisms in a height field.""" + # put obj in hfield frame + obj_pos = h.mat.T @ (obj.pos - h.pos) + obj_mat = h.mat.T @ obj.mat + + xmin = obj_pos[0] - obj_rbound + ymin = obj_pos[1] - obj_rbound + cmin = jp.floor((xmin + h.size[0]) / (2 * h.size[0]) * (h.ncol - 1)) + cmin = cmin.astype(int) + rmin = jp.floor((ymin + h.size[1]) / (2 * h.size[1]) * (h.nrow - 1)) + rmin = rmin.astype(int) + + # compute real-valued grid step + dx = 2.0 * h.size[0] / (h.ncol - 1) + dy = 2.0 * h.size[1] / (h.nrow - 1) + + # set zbottom value using base size + bvert = jp.array([0.0, 0.0, -h.size[3]]) + bmask = jp.array([True, True, False]) + + # process all prisms in sub-grid + prisms = [] + for r in range(subgrid_size[1]): + for c in range(subgrid_size[0]): + ri, ci = rmin + r, cmin + c + + # ensure ri, ci are in the bounds of the hfield + ri = jp.clip(ri, 0, h.nrow - 2) + ci = jp.clip(ci, 0, h.ncol - 2) + + p1 = [ + dx * ci - h.size[0], + dy * ri - h.size[1], + h.data[ci, ri] * h.size[2], + ] + p2 = [ + dx * (ci + 1) - h.size[0], + dy * (ri + 1) - h.size[1], + h.data[ci + 1, ri + 1] * h.size[2], + ] + p3 = [ + dx * ci - h.size[0], + dy * (ri + 1) - h.size[1], + h.data[ci, ri + 1] * h.size[2], + ] + top = jp.array([p1, p2, p3]) + bottom = jp.array([p1, p3, p2]) * bmask + bvert + vert = jp.concatenate([bottom, top]) + prisms.append(mesh.hfield_prism(vert)) + + p3 = p2 + p2 = [ + dx * (ci + 1) - h.size[0], + dy * ri - h.size[1], + h.data[ci + 1, ri] * h.size[2], + ] + top = jp.array([p1, p2, p3]) + bottom = jp.array([p1, p3, p2]) * bmask + bvert + vert = jp.concatenate([bottom, top]) + # NB: If the order of verts is updated above, the corresponding + # hfield_prism function must be updated to ensure that all faces have the + # correct winding order. + prisms.append(mesh.hfield_prism(vert)) + + n_prisms = len(prisms) + prisms = jax.tree_util.tree_map(lambda *x: jp.stack(x), *prisms) + dist, pos, n = jax.vmap(collider_fn, in_axes=[None, 0])( + obj.replace(pos=obj_pos, mat=obj_mat), prisms + ) + + dist = dist.flatten() + pos = pos.reshape((-1, 3)) + n = n.reshape((-1, 3)) + n *= -1 # flip the normal since we flipped args in the call to collider_fn + + # Check that we're in the half-space of the hfield norm. If not, pick the top + # face norm. This resolves issues with cracks of doom. + n_repeats = dist.shape[0] // n_prisms + top_norm = jp.repeat(prisms.face_normal[:, 1], n_repeats, axis=0) + cond = jax.vmap(jp.dot, in_axes=[0, None])(n, h.mat[2]) < 1e-6 + n = jp.where(cond[:, None], top_norm, n) + + return dist, pos, n + + +@collider(ncon=4) +def hfield_sphere( + h: HFieldInfo, s: GeomInfo, subgrid_size: Tuple[int, int] +) -> Collision: + """Calculates contacts between a hfield and a sphere.""" + rbound = jp.max(s.size) + dist, pos, n = _hfield_collision(_sphere_convex, h, s, rbound, subgrid_size) + + n_mean = jp.mean(n, axis=0) + mask = dist < jp.minimum(0, dist.min() + 1e-3) + idx = _manifold_points(pos, mask, n_mean) + dist, pos, n = dist[idx], pos[idx], n[idx] + + # zero out non-unique contacts + unique = jp.tril(idx == idx[:, None]).sum(axis=1) == 1 + dist = jp.where(unique, dist, 1) + + # back to world frame, _hfield_collision returns collision in hfield frame + pos = jax.vmap(lambda p: h.mat @ p + h.pos)(pos) + n = jax.vmap(lambda n: h.mat @ n)(n) + + return dist, pos, jax.vmap(math.make_frame)(n) + + +@collider(ncon=4) +def hfield_capsule( + h: HFieldInfo, c: GeomInfo, subgrid_size: Tuple[int, int] +) -> Collision: + """Calculates contacts between a hfield and a capsule.""" + rbound = c.size[0] + c.size[1] + dist, pos, n = _hfield_collision(_capsule_convex, h, c, rbound, subgrid_size) + + n_mean = jp.mean(n, axis=0) + mask = dist < jp.minimum(0, dist.min() + 1e-3) + idx = _manifold_points(pos, mask, n_mean) + dist, pos, n = dist[idx], pos[idx], n[idx] + + # zero out non-unique contacts + unique = jp.tril(idx == idx[:, None]).sum(axis=1) == 1 + dist = jp.where(unique, dist, 1) + + # back to world frame, _hfield_collision returns collision in hfield frame + pos = jax.vmap(lambda p: h.mat @ p + h.pos)(pos) + n = jax.vmap(lambda n: h.mat @ n)(n) + + return dist, pos, jax.vmap(math.make_frame)(n) + + +@collider(ncon=4) +def hfield_convex( + h: HFieldInfo, c: ConvexInfo, subgrid_size: Tuple[int, int] +) -> Collision: + """Calculates contacts between a hfield and a capsule.""" + rbound = jp.max(c.size) + dist, pos, n = _hfield_collision(_convex_convex, h, c, rbound, subgrid_size) + + n_mean = jp.mean(n, axis=0) + mask = dist < jp.minimum(0, dist.min() + 1e-3) + idx = _manifold_points(pos, mask, n_mean) + dist, pos, n = dist[idx], pos[idx], n[idx] + + # zero out non-unique contacts + unique = jp.tril(idx == idx[:, None]).sum(axis=1) == 1 + dist = jp.where(unique, dist, 1) + + # back to world frame, _hfield_collision returns collision in hfield frame + pos = jax.vmap(lambda p: h.mat @ p + h.pos)(pos) + n = jax.vmap(lambda n: h.mat @ n)(n) + + return dist, pos, jax.vmap(math.make_frame)(n) diff --git a/mjx/mujoco/mjx/_src/collision_driver.py b/mjx/mujoco/mjx/_src/collision_driver.py index b67168d3..8791fed7 100644 --- a/mjx/mujoco/mjx/_src/collision_driver.py +++ b/mjx/mujoco/mjx/_src/collision_driver.py @@ -45,8 +45,12 @@ from jax import numpy as jp import mujoco from mujoco.mjx._src import support # pylint: disable=g-importing-member +from mujoco.mjx._src.collision_convex import box_box from mujoco.mjx._src.collision_convex import capsule_convex from mujoco.mjx._src.collision_convex import convex_convex +from mujoco.mjx._src.collision_convex import hfield_capsule +from mujoco.mjx._src.collision_convex import hfield_convex +from mujoco.mjx._src.collision_convex import hfield_sphere from mujoco.mjx._src.collision_convex import plane_convex from mujoco.mjx._src.collision_convex import sphere_convex from mujoco.mjx._src.collision_primitive import capsule_capsule @@ -78,6 +82,10 @@ _COLLISION_FUNC = { (GeomType.PLANE, GeomType.ELLIPSOID): plane_ellipsoid, (GeomType.PLANE, GeomType.CYLINDER): plane_cylinder, (GeomType.PLANE, GeomType.MESH): plane_convex, + (GeomType.HFIELD, GeomType.SPHERE): hfield_sphere, + (GeomType.HFIELD, GeomType.CAPSULE): hfield_capsule, + (GeomType.HFIELD, GeomType.BOX): hfield_convex, + (GeomType.HFIELD, GeomType.MESH): hfield_convex, (GeomType.SPHERE, GeomType.SPHERE): sphere_sphere, (GeomType.SPHERE, GeomType.CAPSULE): sphere_capsule, (GeomType.SPHERE, GeomType.BOX): sphere_convex, @@ -90,7 +98,7 @@ _COLLISION_FUNC = { (GeomType.ELLIPSOID, GeomType.ELLIPSOID): ellipsoid_ellipsoid, (GeomType.ELLIPSOID, GeomType.CYLINDER): ellipsoid_cylinder, (GeomType.CYLINDER, GeomType.CYLINDER): cylinder_cylinder, - (GeomType.BOX, GeomType.BOX): convex_convex, + (GeomType.BOX, GeomType.BOX): box_box, (GeomType.BOX, GeomType.MESH): convex_convex, (GeomType.MESH, GeomType.MESH): convex_convex, } @@ -210,6 +218,21 @@ def _geom_groups( condim = max(m.geom_condim[g1], m.geom_condim[g2]) key = FunctionKey(types, data_ids, condim) + + if types[0] == mujoco.mjtGeom.mjGEOM_HFIELD: + # add static grid bounds to the grouping key for hfield collisions + geom_rbound_hfield = ( + m.geom_rbound_hfield if isinstance(m, Model) else m.geom_rbound + ) + nrow, ncol = m.hfield_nrow[data_ids[0]], m.hfield_ncol[data_ids[0]] + xsize, ysize = m.hfield_size[data_ids[0]][:2] + xtick, ytick = (2 * xsize) / (ncol - 1), (2 * ysize) / (nrow - 1) + xbound = int(np.ceil(2 * geom_rbound_hfield[g2] / xtick)) + 1 + xbound = min(xbound, ncol) + ybound = int(np.ceil(2 * geom_rbound_hfield[g2] / ytick)) + 1 + ybound = min(ybound, nrow) + key = FunctionKey(types, data_ids, condim, (xbound, ybound)) + groups.setdefault(key, []).append((g1, g2, ip)) return groups diff --git a/mjx/mujoco/mjx/_src/collision_driver_test.py b/mjx/mujoco/mjx/_src/collision_driver_test.py index 294c6a67..5492ea7f 100644 --- a/mjx/mujoco/mjx/_src/collision_driver_test.py +++ b/mjx/mujoco/mjx/_src/collision_driver_test.py @@ -721,6 +721,95 @@ class ConvexTest(absltest.TestCase): self.assertTrue((c.dist > 0).all()) +class HFieldTest(absltest.TestCase): + _HFIELD = """ + + + + + + + + + + + + + + + + + + + + + + + + + + """ + + def test_sphere_hfield(self): + m = mujoco.MjModel.from_xml_string(self._HFIELD) + mx = mjx.put_model(m) + + d = mujoco.MjData(m) + d.qpos[:] = m.keyframe('qpos1').qpos + dx = mjx.put_data(m, d) + + collision_jit_fn = jax.jit(mjx.collision) + kinematics_jit_fn = jax.jit(mjx.kinematics) + dx = kinematics_jit_fn(mx, dx) + dx = collision_jit_fn(mx, dx) + + # check that all geoms are colliding with the hfield + for geom_id in [1, 2, 3]: + mask = (dx.contact.geom == np.array([0, geom_id])).all(axis=1) + c = jax.tree_util.tree_map(lambda x, m=mask: x[m], dx.contact) + self.assertTrue((c.dist < 0).any()) + self.assertTrue((c.dist > -1e-3).any()) + # all contact normals are roughly pointing in the right direction + self.assertTrue((c.frame[:, 0].dot(np.array([0, 0, 1])) > 0.7).all()) + + def test_hfield_outside(self): + """Tests that objects outside of the hfield do not collide.""" + positions = ['2.0 0', '-2.0 0', '0 -2.0', '0 2.0'] + for p in positions: + xml = self._HFIELD.replace('= 0).all()) + + def test_hfield_deep(self): + """Tests that objects with deep penetration do not get stuck.""" + m = mujoco.MjModel.from_xml_string(self._HFIELD) + mx = mjx.put_model(m) + + d = mujoco.MjData(m) + d.qpos[:] = m.keyframe('qpos2').qpos + dx = mjx.put_data(m, d) + + collision_jit_fn = jax.jit(mjx.collision) + kinematics_jit_fn = jax.jit(mjx.kinematics) + dx = kinematics_jit_fn(mx, dx) + dx = collision_jit_fn(mx, dx) + + # check that all geoms are colliding with the hfield + for geom_id in [1, 2, 3]: + mask = (dx.contact.geom == np.array([0, geom_id])).all(axis=1) + c = jax.tree_util.tree_map(lambda x, m=mask: x[m], dx.contact) + # all contact normals are in the top half-face of the hfield + self.assertTrue((c.frame[:, 0].dot(np.array([0, 0, 1])) > 0.7).all()) + + class BodyPairFilterTest(absltest.TestCase): """Tests that certain body pairs get filtered.""" diff --git a/mjx/mujoco/mjx/_src/collision_types.py b/mjx/mujoco/mjx/_src/collision_types.py index 49d77438..e7af8f23 100644 --- a/mjx/mujoco/mjx/_src/collision_types.py +++ b/mjx/mujoco/mjx/_src/collision_types.py @@ -15,31 +15,10 @@ """Collision base types.""" import dataclasses -from typing import Tuple +from typing import Optional, Tuple import jax -# pylint: disable=g-importing-member -from mujoco.mjx._src.dataclasses import PyTreeNode -# pylint: enable=g-importing-member - - -class GeomInfo(PyTreeNode): - """Geom propertes of primitive and SDF shapes.""" - pos: jax.Array - mat: jax.Array - size: jax.Array - - -class ConvexInfo(PyTreeNode): - """Geom propertes of convex meshes.""" - pos: jax.Array - mat: jax.Array - vert: jax.Array - face: jax.Array - face_normal: jax.Array - edge: jax.Array - edge_face_normal: jax.Array - edge_dir: jax.Array - +from mujoco.mjx._src.dataclasses import PyTreeNode # pylint: disable=g-importing-member +import numpy as np # Collision returned by collision functions: # - distance distance between nearest points; neg: penetration @@ -48,18 +27,53 @@ class ConvexInfo(PyTreeNode): Collision = Tuple[jax.Array, jax.Array, jax.Array] +class GeomInfo(PyTreeNode): + """Geom properties for primitive shapes.""" + + pos: jax.Array + mat: jax.Array + size: jax.Array + + +class ConvexInfo(PyTreeNode): + """Geom properties for convex meshes.""" + + pos: jax.Array + mat: jax.Array + size: jax.Array + vert: jax.Array + face: jax.Array + face_normal: jax.Array + edge: jax.Array + edge_face_normal: jax.Array + edge_dir: Optional[jax.Array] = None + + +class HFieldInfo(PyTreeNode): + """Geom properties for height fields.""" + + pos: jax.Array + mat: jax.Array + size: np.ndarray + nrow: int + ncol: int + data: jax.Array + + @dataclasses.dataclass(frozen=True) class FunctionKey: """Specifies how geom pairs group into collision_driver's function table. Attributes: types: geom type pair, which determines the collision function - data_ids: geom data id pair: mesh id for mesh geoms, otherwise -1. - Meshes have distinct face/vertex counts, so must occupy distinct - entries in the collision function table. + data_ids: geom data id pair: mesh id for mesh geoms, otherwise -1. Meshes + have distinct face/vertex counts, so must occupy distinct entries in the + collision function table. condim: grouping by condim of the colliision ensures that the size of the - resulting constraint jacobian is determined at compile time. + resulting constraint jacobian is determined at compile time. + subgrid_size: the size determines the hfield subgrid to collide with """ types: Tuple[int, int] data_ids: Tuple[int, int] condim: int + subgrid_size: Tuple[int, int] = (-1, -1) diff --git a/mjx/mujoco/mjx/_src/dataclasses.py b/mjx/mujoco/mjx/_src/dataclasses.py index ba513d96..a96bb966 100644 --- a/mjx/mujoco/mjx/_src/dataclasses.py +++ b/mjx/mujoco/mjx/_src/dataclasses.py @@ -30,7 +30,7 @@ def _jax_in_args(typ) -> bool: return True if dataclasses.is_dataclass(typ): return any(_jax_in_args(f.type) for f in dataclasses.fields(typ)) - if typing.get_origin(typ) in (list, dict, Union, set): + if typing.get_origin(typ) in (tuple, list, dict, Union, set): return any(_jax_in_args(t) for t in typing.get_args(typ)) return False diff --git a/mjx/mujoco/mjx/_src/io.py b/mjx/mujoco/mjx/_src/io.py index 594ca15f..5068373a 100644 --- a/mjx/mujoco/mjx/_src/io.py +++ b/mjx/mujoco/mjx/_src/io.py @@ -22,6 +22,7 @@ from jax import numpy as jp import mujoco from mujoco.mjx._src import collision_driver from mujoco.mjx._src import constraint +from mujoco.mjx._src import mesh from mujoco.mjx._src import support from mujoco.mjx._src import types import numpy as np @@ -68,14 +69,16 @@ def put_model(m: mujoco.MjModel, device=None) -> types.Model: if m.ntendon: raise NotImplementedError('tendons are not supported') + mesh_geomid = set() for g1, g2, ip in collision_driver.geom_pairs(m): t1, t2 = m.geom_type[[g1, g2]] # check collision function exists for type pair if not collision_driver.has_collision_fn(t1, t2): t1, t2 = mujoco.mjtGeom(t1), mujoco.mjtGeom(t2) raise NotImplementedError(f'({t1}, {t2}) collisions not implemented.') - # margin/gap not supported for geoms - if mujoco.mjtGeom.mjGEOM_MESH in (t1, t2): + # margin/gap not supported for meshes and height fields + no_margin = {mujoco.mjtGeom.mjGEOM_MESH, mujoco.mjtGeom.mjGEOM_HFIELD} + if no_margin.intersection({t1, t2}): if ip != -1: margin = m.pair_margin[ip] else: @@ -83,6 +86,9 @@ def put_model(m: mujoco.MjModel, device=None) -> types.Model: if margin.any(): t1, t2 = mujoco.mjtGeom(t1), mujoco.mjtGeom(t2) raise NotImplementedError(f'({t1}, {t2}) margin/gap not implemented.') + for t, g in [(t1, g1), (t2, g2)]: + if t == mujoco.mjtGeom.mjGEOM_MESH: + mesh_geomid.add(g) for enum_field, enum_type, mj_type in ( (m.actuator_biastype, types.BiasType, mujoco.mjtBias), @@ -100,12 +106,24 @@ def put_model(m: mujoco.MjModel, device=None) -> types.Model: if not np.allclose(m.dof_frictionloss, 0): raise NotImplementedError('dof_frictionloss is not implemented.') - fields = {f.name: getattr(m, f.name) for f in types.Model.fields()} + mjx_only = {'mesh_convex', 'geom_rbound_hfield'} + mj_field_names = {f.name for f in types.Model.fields()} - mjx_only + fields = {f: getattr(m, f) for f in mj_field_names} + fields['geom_rbound_hfield'] = fields['geom_rbound'] fields['geom_rgba'] = fields['geom_rgba'].reshape((-1, 4)) fields['mat_rgba'] = fields['mat_rgba'].reshape((-1, 4)) fields['cam_mat0'] = fields['cam_mat0'].reshape((-1, 3, 3)) fields['opt'] = _make_option(m.opt) fields['stat'] = _make_statistic(m.stat) + + # Pre-compile meshes for MJX collisions. + fields['mesh_convex'] = [None] * m.nmesh + for i in mesh_geomid: + dataid = m.geom_dataid[i] + if fields['mesh_convex'][dataid] is None: + fields['mesh_convex'][dataid] = mesh.convex(m, dataid) # pytype: disable=unsupported-operands + fields['mesh_convex'] = tuple(fields['mesh_convex']) + model = types.Model(**{k: copy.copy(v) for k, v in fields.items()}) return jax.device_put(model, device=device) diff --git a/mjx/mujoco/mjx/_src/mesh.py b/mjx/mujoco/mjx/_src/mesh.py index 2498aae2..31f45571 100644 --- a/mjx/mujoco/mjx/_src/mesh.py +++ b/mjx/mujoco/mjx/_src/mesh.py @@ -16,14 +16,18 @@ import collections import itertools -from typing import Tuple +from typing import Tuple, Union import warnings import jax from jax import numpy as jp +import mujoco +from mujoco.mjx._src import math # pylint: disable=g-importing-member from mujoco.mjx._src.collision_types import ConvexInfo from mujoco.mjx._src.collision_types import GeomInfo +from mujoco.mjx._src.collision_types import HFieldInfo +from mujoco.mjx._src.types import ConvexMesh from mujoco.mjx._src.types import Model # pylint: enable=g-importing-member import numpy as np @@ -141,7 +145,9 @@ def _convex_hull_2d(points: np.ndarray, normal: np.ndarray) -> np.ndarray: return hull_point_idx -def _merge_coplanar(m: Model, tm: trimesh.Trimesh, meshid: int) -> np.ndarray: +def _merge_coplanar( + m: Union[mujoco.MjModel, Model], tm: trimesh.Trimesh, meshid: int +) -> np.ndarray: """Merges coplanar facets.""" if not tm.facets: return tm.faces.copy() # no facets @@ -221,6 +227,7 @@ def box(info: GeomInfo) -> ConvexInfo: c = ConvexInfo( info.pos, info.mat, + info.size, vert, face, face_normal, @@ -236,22 +243,21 @@ def box(info: GeomInfo) -> ConvexInfo: return c -def convex(m: Model, mesh_id: int, info: GeomInfo) -> ConvexInfo: +def convex(m: Union[mujoco.MjModel, Model], data_id: int) -> ConvexMesh: """Processes a mesh for use in convex collision algorithms. Args: m: an MJX model - mesh_id: the mesh id to process - info: pos, mat, size of this geom + data_id: the mesh id to process Returns: - a convex mesh info + a convex mesh """ - vert_beg = m.mesh_vertadr[mesh_id] - vert_end = m.mesh_vertadr[mesh_id + 1] if mesh_id < m.nmesh - 1 else None + vert_beg = m.mesh_vertadr[data_id] + vert_end = m.mesh_vertadr[data_id + 1] if data_id < m.nmesh - 1 else None vert = m.mesh_vert[vert_beg:vert_end] - graphadr = m.mesh_graphadr[mesh_id] + graphadr = m.mesh_graphadr[data_id] graph = m.mesh_graph[graphadr:] graph_idx = 0 @@ -273,21 +279,98 @@ def convex(m: Model, mesh_id: int, info: GeomInfo) -> ConvexInfo: tm_convex = trimesh.Trimesh(vertices=vert, faces=face) vert = np.array(tm_convex.vertices) - face = _merge_coplanar(m, tm_convex, mesh_id) + face = _merge_coplanar(m, tm_convex, data_id) face_normal = _get_face_norm(vert, face) edge, edge_face_normal = _get_edge_normals(face, face_normal) - edge_dir = _get_unique_edge_dir(vert, face) face = vert[face] # materialize full nface x nvert matrix - c = ConvexInfo( - info.pos, - info.mat, + c = ConvexMesh( vert, face, face_normal, edge, edge_face_normal, - edge_dir, ) return jax.tree_util.tree_map(jp.array, c) + + +def hfield_prism(vert: jax.Array) -> ConvexInfo: + """Builds a hfield prism.""" + # The first 3 vertices define the bottom triangle, and the next 3 vertices + # define the top triangle. The remaining triangles define the side of the + # prism. + face = np.array([ + [0, 1, 2, 0], # bottom + [3, 4, 5, 3], # top + [0, 3, 5, 1], + [0, 2, 4, 3], + [2, 1, 5, 4], + ]) + edges = np.array([ + # bottom + [0, 1], + [1, 2], + [0, 2], + # top + [3, 4], + [3, 5], + [4, 5], + # sides + [0, 3], + [1, 5], + [2, 4], + ]) + edge_face_norm = np.array([ + # bottom + [0, 2], + [0, 4], + [0, 3], + # top + [1, 3], + [1, 2], + [1, 4], + # sides + [2, 3], + [2, 4], + [3, 4], + ]) + + def get_face_norm(face): + # use ccw winding order convention, and avoid using the last vertex + edge0 = face[2, :] - face[1, :] + edge1 = face[0, :] - face[1, :] + return math.normalize(jp.cross(edge0, edge1)) + + centroid = jp.mean(vert, axis=0) + vert = vert - centroid + face = vert[face] + face_norm = jax.vmap(get_face_norm)(face) + + c = ConvexInfo( + centroid, + jp.eye(3, dtype=float), + jp.ones(3), + vert, + face, + face_norm, + edges, + face_norm[edge_face_norm], + None, + ) + + return jax.tree_util.tree_map(jp.array, c) + + +def hfield(m: Union[mujoco.MjModel, Model], data_id: int) -> HFieldInfo: + adr = m.hfield_adr[data_id] + nrow, ncol = m.hfield_nrow[data_id], m.hfield_ncol[data_id] + h = HFieldInfo( + jp.zeros(3, dtype=float), + jp.eye(3, dtype=float), + m.hfield_size[data_id], + nrow, + ncol, + m.hfield_data[adr : adr + nrow * ncol].reshape((ncol, nrow), order='F'), + ) + return h diff --git a/mjx/mujoco/mjx/_src/support.py b/mjx/mujoco/mjx/_src/support.py index 421126f9..0cd31636 100644 --- a/mjx/mujoco/mjx/_src/support.py +++ b/mjx/mujoco/mjx/_src/support.py @@ -197,6 +197,7 @@ def _getnum(m: Union[Model, mujoco.MjModel], obj: mujoco._enums.mjtObj) -> int: mujoco.mjtObj.mjOBJ_SITE: m.nsite, mujoco.mjtObj.mjOBJ_CAMERA: m.ncam, mujoco.mjtObj.mjOBJ_MESH: m.nmesh, + mujoco.mjtObj.mjOBJ_HFIELD: m.nhfield, mujoco.mjtObj.mjOBJ_PAIR: m.npair, mujoco.mjtObj.mjOBJ_EQUALITY: m.neq, mujoco.mjtObj.mjOBJ_ACTUATOR: m.nu, @@ -218,6 +219,7 @@ def _getadr( mujoco.mjtObj.mjOBJ_SITE: m.name_siteadr, mujoco.mjtObj.mjOBJ_CAMERA: m.name_camadr, mujoco.mjtObj.mjOBJ_MESH: m.name_meshadr, + mujoco.mjtObj.mjOBJ_HFIELD: m.name_hfieldadr, mujoco.mjtObj.mjOBJ_PAIR: m.name_pairadr, mujoco.mjtObj.mjOBJ_EQUALITY: m.name_eqadr, mujoco.mjtObj.mjOBJ_ACTUATOR: m.name_actuatoradr, diff --git a/mjx/mujoco/mjx/_src/types.py b/mjx/mujoco/mjx/_src/types.py index caccbea8..0036e58d 100644 --- a/mjx/mujoco/mjx/_src/types.py +++ b/mjx/mujoco/mjx/_src/types.py @@ -15,7 +15,7 @@ """Base types used in MJX.""" import enum - +from typing import Tuple import jax import mujoco from mujoco.mjx._src.dataclasses import PyTreeNode # pylint: disable=g-importing-member @@ -112,6 +112,24 @@ class GeomType(enum.IntEnum): # unsupported: NGEOMTYPES, ARROW*, LINE, SKIN, LABEL, NONE +class ConvexMesh(PyTreeNode): + """Geom properties for convex meshes. + + Attributes: + vert: vertices of the convex mesh + face: faces of the convex mesh + face_normal: normal vectors for the faces + edge: edge indexes for all edges in the convex mesh + edge_face_normal: indexes for face normals adjacent to edges in `edge` + """ + + vert: jax.Array + face: jax.Array + face_normal: jax.Array + edge: jax.Array + edge_face_normal: jax.Array + + class ConeType(enum.IntEnum): """Type of friction cone. @@ -322,6 +340,7 @@ class Model(PyTreeNode): nmesh: number of meshes nmeshvert: number of vertices in all meshes nmeshface: number of triangular faces in all meshes + nhfield: number of heightfields nmat: number of materials npair: number of predefined geom pairs nexclude: number of excluded geom pairs @@ -396,6 +415,7 @@ class Model(PyTreeNode): geom_solimp: constraint solver impedance: contact (ngeom, mjNIMP) geom_size: geom-specific size parameters (ngeom, 3) geom_rbound: radius of bounding sphere (ngeom,) + geom_rbound_hfield: static rbound for hfield grid bounds (ngeom,) geom_pos: local position offset rel. to body (ngeom, 3) geom_quat: local orientation offset rel. to body (ngeom, 4) geom_friction: friction for (slide, spin, roll) (ngeom, 3) @@ -419,6 +439,12 @@ class Model(PyTreeNode): mesh_vert: vertex positions for all meshes (nmeshvert, 3) mesh_face: vertex face data (nmeshface, 3) mesh_graph: convex graph data (nmeshgraph,) + mesh_convex: pre-compiled convex mesh info for MJX (nmesh,) + hfield_size: (x, y, z_top, z_bottom) (nhfield,) + hfield_nrow: number of rows in grid (nhfield,) + hfield_ncol: number of columns in grid (nhfield,) + hfield_adr: address in hfield_data (nhfield,) + hfield_data: elevation data (nhfielddata,) mat_rgba: rgba (nmat, 4) pair_dim: contact dimensionality (npair,) pair_geom1: id of geom1 (npair,) @@ -488,6 +514,7 @@ class Model(PyTreeNode): nmesh: int nmeshvert: int nmeshface: int + nhfield: int nmat: int npair: int nexclude: int @@ -561,6 +588,7 @@ class Model(PyTreeNode): geom_solimp: jax.Array geom_size: jax.Array geom_rbound: jax.Array + geom_rbound_hfield: np.ndarray geom_pos: jax.Array geom_quat: jax.Array geom_friction: jax.Array @@ -584,6 +612,12 @@ class Model(PyTreeNode): mesh_vert: np.ndarray mesh_face: np.ndarray mesh_graph: np.ndarray + mesh_convex: Tuple[ConvexMesh, ...] + hfield_size: np.ndarray + hfield_nrow: np.ndarray + hfield_ncol: np.ndarray + hfield_adr: np.ndarray + hfield_data: jax.Array mat_rgba: np.ndarray pair_dim: np.ndarray pair_geom1: np.ndarray @@ -632,6 +666,7 @@ class Model(PyTreeNode): name_siteadr: np.ndarray name_camadr: np.ndarray name_meshadr: np.ndarray + name_hfieldadr: np.ndarray name_pairadr: np.ndarray name_eqadr: np.ndarray name_actuatoradr: np.ndarray diff --git a/mjx/mujoco/mjx/test_data/barkour_v0/assets/barkour_v0_mjx.xml b/mjx/mujoco/mjx/test_data/barkour_v0/assets/barkour_v0_mjx.xml index a98db27b..82dd41df 100644 --- a/mjx/mujoco/mjx/test_data/barkour_v0/assets/barkour_v0_mjx.xml +++ b/mjx/mujoco/mjx/test_data/barkour_v0/assets/barkour_v0_mjx.xml @@ -77,6 +77,7 @@ + @@ -101,7 +102,8 @@ - + + diff --git a/mjx/mujoco/mjx/test_data/barkour_v0/assets/hfield_240_280.png b/mjx/mujoco/mjx/test_data/barkour_v0/assets/hfield_240_280.png new file mode 100644 index 0000000000000000000000000000000000000000..97f72d2a91ccd770a04059d455dda0e6e1bc4d2a GIT binary patch literal 174417 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%0Ag=~m}3lUz+!tzGMAV=m))6{-~M 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 UAJXGjAzu#