Add named element access methods to mjx.Model (body, joint, geom, actuator, etc.) #3002
+532
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes: #2806
Problem :
Users of
mjx.Modelcannot access model elements by name using the same intuitive API asmujoco.MjModel. Currently, users must either:mjx.name2id(model, mujoco.mjtObj.mjOBJ_BODY, "name")(verbose, 3 arguments)mjx.Modelandmujoco.MjModelobjects togetherWhat this PR does
Adds named element access methods to mjx.Model that mirror the mujoco.MjModel API:
Added methods:
body(), joint() (alias: jnt()), geom(), site()
camera() (alias: cam()), mesh(), actuator(), sensor()
tendon(), equality() (alias: eq()), numeric(), tuple(), key() (alias: keyframe())
Implementation:
_get_element()helper method handles all lookups (DRY)mujoco.mjtObjenum for type-safetysupport.name2id()Testing :