Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
168 commits
Select commit Hold shift + click to select a range
d2956d2
Encapsulate the articulation element kind into a type
AntoineRichard Jul 14, 2026
80e2fbf
Wire articulation ordering into the OVPhysX backend
AntoineRichard Jul 3, 2026
0b0601b
Adapt OVPhysX backend to reworked ordering core
AntoineRichard Jul 8, 2026
3582dd5
Adapt OVPhysX backend to merged ordering buffer helper
AntoineRichard Jul 9, 2026
063e866
Add cross-backend articulation ordering interface tests
AntoineRichard Jul 3, 2026
c6ca69d
Adapt ordering iface tests to reworked core
AntoineRichard Jul 8, 2026
0921523
Remove duplicate backend discovery regression
AntoineRichard Jul 17, 2026
802fcb8
Adopt articulation ordering in events, consumers, and docs
AntoineRichard Jul 3, 2026
6e9adaa
Restore Newton identity write fast path
AntoineRichard Jul 13, 2026
968ad54
Deprecate removed articulation data kernels
AntoineRichard Jul 13, 2026
d9a07e6
Reference cfg fields in ordering diagnostics
AntoineRichard Jul 13, 2026
d4d4ec2
Trim redundant ordering event map tests
AntoineRichard Jul 13, 2026
effcea1
Right-size ordering interface test matrix
AntoineRichard Jul 13, 2026
9b770cd
Relocate map application tests to the core suite
AntoineRichard Jul 13, 2026
753a602
Avoid aliasing the effort output in the ordered write launch
AntoineRichard Jul 14, 2026
855c6f2
Name telemetry kernel indices by their order space
AntoineRichard Jul 14, 2026
7265a25
Clarify post-step callback fires once per step
AntoineRichard Jul 14, 2026
da963b7
Adopt ordering-presence properties in Newton write_data_to_sim
AntoineRichard Jul 14, 2026
4b64291
Cache articulation ordering read launches
AntoineRichard Jul 11, 2026
37c3614
Expand articulation read launch caching
AntoineRichard Jul 15, 2026
2c640cf
Handle empty cached read launches
AntoineRichard Jul 15, 2026
dc5d3aa
Add Warp index kernel dispatcher
AntoineRichard Jul 21, 2026
51a5d27
Format Warp index kernel dispatcher
AntoineRichard Jul 21, 2026
8cdfa8c
Document Warp index kernel dispatcher
AntoineRichard Jul 21, 2026
f3819c9
Broaden shared Warp index kernels
AntoineRichard Jul 21, 2026
04356e4
Support int64 PhysX selectors
AntoineRichard Jul 21, 2026
0015415
Move Newton selector casts into kernels
AntoineRichard Jul 21, 2026
42595f7
Suppress Newton test import warning
AntoineRichard Jul 21, 2026
e60bbdb
Support int64 OVPhysX selectors
AntoineRichard Jul 21, 2026
b29e4d0
Fix OVPhysX selector factory routing
AntoineRichard Jul 21, 2026
8cb1352
Benchmark Warp selector dtypes
AntoineRichard Jul 21, 2026
5b27d04
Fix benchmark copyright header
AntoineRichard Jul 21, 2026
d68f15c
Document articulation selector support
AntoineRichard Jul 21, 2026
16e3908
Fix raw index kernel compatibility
AntoineRichard Jul 21, 2026
576755c
Normalize external environment selectors
AntoineRichard Jul 21, 2026
41d3ab5
Guard external selector sentinels
AntoineRichard Jul 21, 2026
ab793b2
Fix deferred selector validation
AntoineRichard Jul 21, 2026
c1c1c41
Add per-asset selector cache
AntoineRichard Jul 21, 2026
d8ee45d
Accept proxy selectors in index kernels
AntoineRichard Jul 21, 2026
be4d99f
Fix Newton proxy factory annotation test
AntoineRichard Jul 21, 2026
7c58ee2
Test proxy selector factory edge cases
AntoineRichard Jul 21, 2026
38d8a5d
Add proxy return mode to asset finders
AntoineRichard Jul 21, 2026
290a7ef
Return cached proxies from asset finders
AntoineRichard Jul 21, 2026
33950cd
Handle empty proxy selector views
AntoineRichard Jul 21, 2026
587d80d
Use explicit asset finder representations
AntoineRichard Jul 21, 2026
fec58f1
Tighten actuator selector handling
AntoineRichard Jul 21, 2026
caaec11
Benchmark cached proxy selectors
AntoineRichard Jul 21, 2026
0f0d627
Tighten selector benchmark boundaries
AntoineRichard Jul 21, 2026
42f1115
Document cached asset finder proxies
AntoineRichard Jul 21, 2026
28f526e
Clarify cached finder documentation
AntoineRichard Jul 21, 2026
0fa6647
Format selector kernel tests
AntoineRichard Jul 21, 2026
a4e6837
Fix cached proxy selector consumers
AntoineRichard Jul 21, 2026
6e9c336
Harden proxy selector benchmarks
AntoineRichard Jul 21, 2026
bcd2b45
Document proxy finder migration
AntoineRichard Jul 21, 2026
44ea335
Enforce expected selector benchmark modes
AntoineRichard Jul 21, 2026
89b90cf
Complete cached finder migration contracts
AntoineRichard Jul 21, 2026
6fedeab
Move articulation kind protocols into type
AntoineRichard Jul 22, 2026
e3ba853
Enforce articulation kind singletons
AntoineRichard Jul 27, 2026
03300c4
Wire articulation ordering into the OVPhysX backend
AntoineRichard Jul 3, 2026
7e27272
Adapt OVPhysX backend to reworked ordering core
AntoineRichard Jul 8, 2026
1222e6e
Adapt OVPhysX backend to merged ordering buffer helper
AntoineRichard Jul 9, 2026
d7f3e1d
Document P6 review cleanup design
AntoineRichard Jul 21, 2026
23fb0c0
Fix ordered indexed joint state writes
AntoineRichard Jul 21, 2026
be22fd7
Simplify OVPhysX articulation writes
AntoineRichard Jul 21, 2026
fd12808
Simplify OVPhysX ordering staging
AntoineRichard Jul 21, 2026
c96a895
Clarify OVPhysX ordering tests
AntoineRichard Jul 21, 2026
fe1a5ed
Remove stale articulation helper raises
AntoineRichard Jul 21, 2026
b203d5a
Document P6 review follow-up design
AntoineRichard Jul 22, 2026
8c34c4b
Clarify P6 property staging design
AntoineRichard Jul 22, 2026
0833c01
Add live OVPhysX ordered target coverage
AntoineRichard Jul 22, 2026
317592d
Consolidate OVPhysX property reads
AntoineRichard Jul 22, 2026
2e7ecc5
Consolidate OVPhysX property writes
AntoineRichard Jul 22, 2026
c0cc65f
Complete OVPhysX ordering changelog
AntoineRichard Jul 22, 2026
b46fc72
Fix ordered OVPhysX position limit staging
AntoineRichard Jul 22, 2026
8ee2c17
Remove internal P6 review specs
AntoineRichard Jul 22, 2026
5d12718
Add cross-backend articulation ordering interface tests
AntoineRichard Jul 3, 2026
3a9e440
Adapt ordering iface tests to reworked core
AntoineRichard Jul 8, 2026
c9e2284
Remove duplicate backend discovery regression
AntoineRichard Jul 17, 2026
2dbd5dd
Add shared articulation ordering fixtures
AntoineRichard Jul 21, 2026
37fed30
Share articulation ordering test fixtures
AntoineRichard Jul 21, 2026
f9dbbe3
Filter mock backend case-insensitively
AntoineRichard Jul 21, 2026
edf5ffa
Fix structured mock tensor reads
AntoineRichard Jul 21, 2026
5ec72fd
Fix OVPhysX mock write capabilities
AntoineRichard Jul 21, 2026
8461318
Guard mock binding dtype reinterpretation
AntoineRichard Jul 21, 2026
f3a9841
Fix shared ordering fixture references
AntoineRichard Jul 22, 2026
7a16d22
Fix Newton shared ordering references
AntoineRichard Jul 27, 2026
ea9170d
Adopt articulation ordering in events, consumers, and docs
AntoineRichard Jul 3, 2026
60e7228
Restore Newton identity write fast path
AntoineRichard Jul 13, 2026
39422ac
Reference cfg fields in ordering diagnostics
AntoineRichard Jul 13, 2026
0c3692b
Trim redundant ordering event map tests
AntoineRichard Jul 13, 2026
dca0eda
Right-size ordering interface test matrix
AntoineRichard Jul 13, 2026
0cc92a5
Relocate map application tests to the core suite
AntoineRichard Jul 13, 2026
fb7f8f3
Avoid aliasing the effort output in the ordered write launch
AntoineRichard Jul 14, 2026
e77e394
Name telemetry kernel indices by their order space
AntoineRichard Jul 14, 2026
ad9792d
Clarify post-step callback fires once per step
AntoineRichard Jul 14, 2026
7431fc6
Adopt ordering-presence properties in Newton write_data_to_sim
AntoineRichard Jul 14, 2026
e9ab91b
Fix Newton ordering fixture reference
AntoineRichard Jul 21, 2026
d9dc963
Fix Newton material randomization mock
AntoineRichard Jul 27, 2026
87dacd6
Cache articulation ordering read launches
AntoineRichard Jul 11, 2026
29198b6
Expand articulation read launch caching
AntoineRichard Jul 15, 2026
e4882ba
Handle empty cached read launches
AntoineRichard Jul 15, 2026
f8cb530
Add cached read empty launch tests
AntoineRichard Jul 21, 2026
5a00c43
Add changelog migration guidance
AntoineRichard Jul 21, 2026
52978c8
Fix rigid asset state cache invalidation
AntoineRichard Jul 21, 2026
88bf44f
Fix OVPhysX interface test harness
AntoineRichard Jul 21, 2026
47838d6
Fix COM-dependent asset cache invalidation
AntoineRichard Jul 21, 2026
251f904
Cache articulation ordering read launches
AntoineRichard Jul 11, 2026
1b3d3f4
Expand articulation read launch caching
AntoineRichard Jul 15, 2026
a3d975a
Handle empty cached read launches
AntoineRichard Jul 15, 2026
67b8460
Add cached read empty launch tests
AntoineRichard Jul 21, 2026
e79b9f2
Add changelog migration guidance
AntoineRichard Jul 21, 2026
00c869a
Add OvPhysX articulation dynamics
AntoineRichard Jul 29, 2026
8bd23d9
Cache OvPhysX articulation reads
AntoineRichard Jul 29, 2026
5659b7a
Merge articulation element kind refactor
AntoineRichard Jul 29, 2026
f4bae89
Merge cached articulation reads
AntoineRichard Jul 29, 2026
3384f04
Merge rigid asset cache invalidation
AntoineRichard Jul 29, 2026
cebcb62
Merge articulation selector APIs
AntoineRichard Jul 29, 2026
c7aee2f
Consolidate aggregate changelog fragments
AntoineRichard Jul 29, 2026
6f649e1
Update aggregate changelog contracts
AntoineRichard Jul 29, 2026
6c9b88d
Fix articulation selector parity regressions
AntoineRichard Jul 29, 2026
19cfb1c
Default finder selectors to legacy mode
AntoineRichard Jul 29, 2026
57dc783
Remove redundant legacy finder arguments
AntoineRichard Jul 29, 2026
e496523
Test scene entity finder behavior
AntoineRichard Jul 29, 2026
9107831
Align finder default documentation
AntoineRichard Jul 29, 2026
c28b393
Remove redundant finder proxy flags
AntoineRichard Jul 29, 2026
2c4d8d8
Merge branch 'develop' into antoiner/articulation-reordering-integration
kellyguo11 Jul 30, 2026
5ac115e
Merge remote-tracking branch 'origin/develop' into antoiner/articulat…
AntoineRichard Jul 30, 2026
edaaf56
Add shared selector benchmark modes
AntoineRichard Jul 30, 2026
e39b0a7
Benchmark cold and cached asset finders
AntoineRichard Jul 30, 2026
33a2048
Integrate index kernel dtype benchmark
AntoineRichard Jul 30, 2026
e3d4c60
Document selector benchmark grid
AntoineRichard Jul 30, 2026
c452a7e
Fix benchmark device and config compatibility
AntoineRichard Jul 30, 2026
e3cca1e
Merge remote PR branch
AntoineRichard Jul 30, 2026
8b10b48
Restrict index dispatch to Torch and Warp
AntoineRichard Jul 30, 2026
1eb7eb6
Remove proxy selector factory inputs
AntoineRichard Jul 30, 2026
59e9e37
Make proxy selector outputs explicit
AntoineRichard Jul 30, 2026
c8c5a9d
Select explicit internal index views
AntoineRichard Jul 30, 2026
8c5927d
Align selector benchmarks with public inputs
AntoineRichard Jul 30, 2026
397d26f
Clean selector review leftovers
AntoineRichard Jul 30, 2026
c886006
Simplify index kernel benchmark timing
AntoineRichard Jul 30, 2026
99745b9
Trim selector integration coverage
AntoineRichard Jul 30, 2026
7d1b34e
Merge remote-tracking branch 'origin/develop' into antoiner/articulat…
AntoineRichard Jul 30, 2026
0c4dd37
Trim articulation benchmark scaffolding
AntoineRichard Jul 30, 2026
d8bee62
Simplify selector benchmark dispatch
AntoineRichard Jul 30, 2026
f38ba4e
Remove redundant index compatibility paths
AntoineRichard Jul 30, 2026
3a10c0a
Add cached Warp read launches
AntoineRichard Jul 30, 2026
a7be0ca
Consolidate articulation read launch caching
AntoineRichard Jul 30, 2026
024a6ae
Cache PhysX rigid asset reads
AntoineRichard Jul 30, 2026
ada40d6
Cache Newton rigid asset reads
AntoineRichard Jul 30, 2026
1401953
Cache OVPhysX rigid asset reads
AntoineRichard Jul 30, 2026
fec8ce4
Fix articulation velocity cache invalidation
AntoineRichard Jul 30, 2026
2a605d7
Normalize reversed-joint dynamics reads
AntoineRichard Jul 30, 2026
0465a24
Prototype OVPhysX selector scratch
AntoineRichard Jul 31, 2026
1fea108
Revert OVPhysX selector scratch prototype
AntoineRichard Jul 31, 2026
dea2965
Prototype OVPhysX selector masks
AntoineRichard Jul 31, 2026
7a25c29
Select OVPhysX selector scratch
AntoineRichard Jul 31, 2026
fc146c0
Add OVPhysX dynamics mock bindings
AntoineRichard Jul 31, 2026
a4c6c4b
Fix OVPhysX scratch kernel launch
AntoineRichard Jul 31, 2026
19e72de
Address articulation integration feedback
AntoineRichard Jul 31, 2026
c40c3d9
Fix empty articulation joint writes
AntoineRichard Jul 31, 2026
45f5298
Expand asset selector benchmarks
AntoineRichard Jul 31, 2026
00c8c25
Reuse simulator index scratch
AntoineRichard Jul 31, 2026
a83b390
Fix asset selector review issues
AntoineRichard Jul 31, 2026
1bb2de3
Fix PhysX interface selector setup
AntoineRichard Jul 31, 2026
72bd9e6
Fix PhysX collection interface setup
AntoineRichard Jul 31, 2026
9cc1ee7
Keep OVPhysX tests out of core shard
AntoineRichard Jul 31, 2026
87db7fa
Merge branch 'develop' into antoiner/articulation-reordering-integration
AntoineRichard Jul 31, 2026
3e4faac
Merge branch 'develop' into antoiner/articulation-reordering-integration
kellyguo11 Aug 1, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 52 additions & 14 deletions docs/source/testing/micro_benchmarks.rst
Original file line number Diff line number Diff line change
Expand Up @@ -146,10 +146,10 @@ Python environment must contain the backend being measured.
- Asset benchmarks
- Sensor benchmarks
* - PhysX
- Launch Isaac Sim and use mocked PhysX views
- Run kitless with mocked PhysX views

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we qualify this requirement? The prerequisites table now says PhysX asset benchmarks run kitless with mocked PhysX views, and the asset runtime no longer launches the app. Isaac Sim is still required for the PhysX sensor benchmarks, but not for the asset benchmarks described above.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in a83b390. The troubleshooting text now states that PhysX sensor benchmarks require Isaac Sim; the kitless PhysX asset benchmark requirement remains as documented in the prerequisites table.

- Launch Isaac Sim and build a live PhysX scene
* - Newton
- Launch Isaac Sim and use mocked Newton views
- Run kitless with mocked Newton views
- Run kitless with the installed Newton runtime
* - OVPhysX
- Run kitless; require the optional ``ovphysx`` runtime wheel
Expand Down Expand Up @@ -185,6 +185,13 @@ Use the top-level component command with an exact physics selector:
./isaaclab.sh microbenchmark --component articulation physics=ovphysx \
--num_instances 4096 --warmup_steps 10 --num_iterations 1000

To isolate one item-selector representation, select its mode explicitly:

.. code-block:: bash

./isaaclab.sh microbenchmark --component articulation physics=physx \
--mode torch_tensor_int64

Replace ``articulation`` with ``rigid_object`` or
``rigid_object_collection``. Each command measures both API surfaces and emits
separate method and data artifacts. The three retained scripts under each
Expand Down Expand Up @@ -228,21 +235,51 @@ Defaults differ by file; use ``--help`` before creating a comparison command.
Asset Input Modes
~~~~~~~~~~~~~~~~~

Methods indexed only by ``env_ids`` support five selector modes:

``torch_list``
Pass selection IDs as Python lists. This includes list-to-tensor conversion
and represents common convenience-API usage.
Pass environment IDs as Python lists. This includes list-to-tensor
conversion and represents common convenience-API usage.

``torch_tensor_int32`` and ``torch_tensor_int64``
Pass pre-allocated Torch tensors using the corresponding signed index width.

``torch_tensor``
Pass pre-allocated Torch tensors. This removes repeated list conversion and
represents the optimized Torch path.
``warp_int32`` and ``warp_int64``
Pass pre-allocated Warp arrays using the corresponding signed index width.

``warp_mask``
Pass pre-allocated Warp boolean masks. This mode is available for supported
Newton and OVPhysX mask APIs.
Writers with ``joint_ids`` or ``body_ids`` support the same-type modes above
plus four mixed-width modes:

``torch_tensor_int32_int64`` and ``torch_tensor_int64_int32``
Pass Torch environment and item selectors with the widths named in order.

``warp_int32_int64`` and ``warp_int64_int32``
Pass Warp environment and item selectors with the widths named in order.

Supported Newton and OVPhysX mask APIs are benchmarked separately with
pre-allocated Warp boolean masks.

Not every backend or method supports every mode. Compare a mode only when it has
the same meaning on both sides.

Articulation Finder Phases
~~~~~~~~~~~~~~~~~~~~~~~~~~

Articulation method artifacts also contain actual ``find_bodies`` and
``find_joints`` workloads:

* ``default`` measures the legacy list return.
* ``proxy_cold`` clears the asset-local selector cache before each call, outside
the timer, so the measured finder call includes creation of the device-local
proxy selector.
* ``proxy_cached`` warms the cache during preflight and measures repeated lookup
of the same proxy selector.

Run timing comparisons only while the selected GPU is idle. Another process
using the device can dominate microsecond-scale differences; correctness-only
CPU runs and results collected on a busy GPU must not be presented as speed
comparisons.

Running Sensor Benchmarks
-------------------------

Expand Down Expand Up @@ -359,12 +396,13 @@ Asset Output
~~~~~~~~~~~~

Asset scripts print mean and standard deviation for every method/mode pair in
microseconds, followed by mode comparisons when applicable:
microseconds. Articulation method artifacts additionally contain the finder and
raw index-kernel phases described above:

.. code-block:: text

[1/24] [TORCH_LIST] write_root_state_to_sim... 132.02 +/- 6.79 us
[1/24] [TORCH_TENSOR] write_root_state_to_sim... 65.44 +/- 3.06 us
[1/30] [TORCH_LIST] write_root_state_to_sim... 132.02 +/- 6.79 us
[1/30] [TORCH_TENSOR_INT64] write_root_state_to_sim... 65.44 +/- 3.06 us

They also write a timestamped JSON file to ``--output_dir`` by default. It
contains benchmark configuration, hardware/software metadata, phase names, and
Expand Down Expand Up @@ -561,7 +599,7 @@ Import or Backend Errors

Confirm the backend is installed in the Python environment selected by
``./isaaclab.sh -p``. OVPhysX requires its optional runtime wheel. PhysX
benchmarks require Isaac Sim.
sensor benchmarks require Isaac Sim.

CUDA Out of Memory
~~~~~~~~~~~~~~~~~~
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
Added
^^^^^

* Added the ``as_proxy`` return-mode option to asset finder methods.
``as_proxy=False`` is the default and returns the legacy selector
representation, while ``as_proxy=True`` opts into cached
:class:`~isaaclab.utils.warp.ProxyArray` selectors with zero-copy ``.torch``
and ``.warp`` index views. Pass those explicit views to downstream APIs.
* Added a shared asset micro-benchmark grid for Torch and Warp item selectors,
cold and cached finder calls, and signed 32-bit versus signed 64-bit
articulation index-kernel timings.

Fixed
^^^^^

* Fixed shared articulation ordering and external wrench paths to accept signed
32-bit and signed 64-bit selectors without allocating Torch conversion tensors.
* Fixed manager entity resolution for sensors with legacy body finder signatures.
* Fixed external wrench composition to consume explicit Warp views of cached
body selectors without materializing Torch tensors.
* Fixed articulation dynamics reads for reversed USD joint relationships.
2 changes: 1 addition & 1 deletion source/isaaclab/isaaclab/actuators/actuator_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,7 @@ def __str__(self) -> str:
"""Returns: A string representation of the actuator group."""
# resolve joint indices for printing
joint_indices = self.joint_indices
if joint_indices == slice(None):
if isinstance(joint_indices, slice):
joint_indices = list(range(self.num_joints))
# resolve model type (implicit or explicit)
model_type = "implicit" if self.is_implicit_model else "explicit"
Expand Down
2 changes: 1 addition & 1 deletion source/isaaclab/isaaclab/actuators/actuator_pd.py
Original file line number Diff line number Diff line change
Expand Up @@ -381,7 +381,7 @@ def __init__(
self,
cfg: RemotizedPDActuatorCfg,
joint_names: list[str],
joint_ids: Sequence[int],
joint_ids: slice | torch.Tensor,
num_envs: int,
device: str,
stiffness: torch.Tensor | float = 0.0,
Expand Down
58 changes: 42 additions & 16 deletions source/isaaclab/isaaclab/assets/articulation/base_articulation.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
from ...sim import SimulationContext
from ...utils.buffers import TimestampedBufferWarp
from ...utils.leapp.leapp_semantics import OutputKindEnum, joint_names_resolver, leapp_tensor_semantics
from ...utils.warp import ProxyArray
from ..asset_base import AssetBase
from . import ordering_kernels
from .ordering import ArticulationNameMap, ArticulationOrderingConvention, build_articulation_name_map
Expand Down Expand Up @@ -508,25 +509,38 @@ def update(self, dt: float) -> None:
"""

@abstractmethod
def find_bodies(self, name_keys: str | Sequence[str], preserve_order: bool = False) -> tuple[list[int], list[str]]:
def find_bodies(
self,
name_keys: str | Sequence[str],
preserve_order: bool = False,
*,
as_proxy: bool = False,
) -> tuple[list[int] | ProxyArray, list[str]]:
"""Find bodies in the articulation based on the name keys.

Please check the :meth:`isaaclab.utils.string_utils.resolve_matching_names` function for more
Please check the :func:`isaaclab.utils.string.resolve_matching_names` function for more
information on the name matching.

Args:
name_keys: A regular expression or a list of regular expressions to match the body names.
preserve_order: Whether to preserve the order of the name keys in the output. Defaults to False.
as_proxy: Whether to return cached, immutable :class:`ProxyArray` indices. Use ``.warp`` or
``.torch`` and reacquire after invalidation. Defaults to False.

Returns:
A tuple of lists containing the body indices and names.
Matched body indices and names. Indices are a list by default or a cached proxy when requested.
"""
raise NotImplementedError()

@abstractmethod
def find_joints(
self, name_keys: str | Sequence[str], joint_subset: list[str] | None = None, preserve_order: bool = False
) -> tuple[list[int], list[str]]:
self,
name_keys: str | Sequence[str],
joint_subset: list[str] | None = None,
preserve_order: bool = False,
*,
as_proxy: bool = False,
) -> tuple[list[int] | ProxyArray, list[str]]:
"""Find joints in the articulation based on the name keys.

Please see the :func:`isaaclab.utils.string.resolve_matching_names` function for more information
Expand All @@ -537,16 +551,23 @@ def find_joints(
joint_subset: A subset of joints to search for. Defaults to None, which means all joints
in the articulation are searched.
preserve_order: Whether to preserve the order of the name keys in the output. Defaults to False.
as_proxy: Whether to return proxy indices. See :meth:`find_bodies`. Subsets use asset-global
proxy indices.

Returns:
A tuple of lists containing the joint indices, names.
Matched joint indices and names. Indices are a list by default or a cached proxy when requested.
"""
raise NotImplementedError()

@abstractmethod
def find_fixed_tendons(
self, name_keys: str | Sequence[str], tendon_subsets: list[str] | None = None, preserve_order: bool = False
) -> tuple[list[int], list[str]]:
self,
name_keys: str | Sequence[str],
tendon_subsets: list[str] | None = None,
preserve_order: bool = False,
*,
as_proxy: bool = False,
) -> tuple[list[int] | ProxyArray, list[str]]:
"""Find fixed tendons in the articulation based on the name keys.

Please see the :func:`isaaclab.utils.string.resolve_matching_names` function for more information
Expand All @@ -558,16 +579,23 @@ def find_fixed_tendons(
tendon_subsets: A subset of joints with fixed tendons to search for. Defaults to None, which means
all joints in the articulation are searched.
preserve_order: Whether to preserve the order of the name keys in the output. Defaults to False.
as_proxy: Whether to return proxy indices. See :meth:`find_bodies`. Subsets use asset-global
proxy indices.

Returns:
A tuple of lists containing the tendon indices, names.
Matched fixed-tendon indices and names. Indices are a list by default or a cached proxy when requested.
"""
raise NotImplementedError()

@abstractmethod
def find_spatial_tendons(
self, name_keys: str | Sequence[str], tendon_subsets: list[str] | None = None, preserve_order: bool = False
) -> tuple[list[int], list[str]]:
self,
name_keys: str | Sequence[str],
tendon_subsets: list[str] | None = None,
preserve_order: bool = False,
*,
as_proxy: bool = False,
) -> tuple[list[int] | ProxyArray, list[str]]:
"""Find spatial tendons in the articulation based on the name keys.

Please see the :func:`isaaclab.utils.string.resolve_matching_names` function for more information
Expand All @@ -578,9 +606,11 @@ def find_spatial_tendons(
tendon_subsets: A subset of tendons to search for. Defaults to None, which means all tendons
in the articulation are searched.
preserve_order: Whether to preserve the order of the name keys in the output. Defaults to False.
as_proxy: Whether to return proxy indices. See :meth:`find_bodies`. Subsets use asset-global
proxy indices.

Returns:
A tuple of lists containing the tendon indices, names.
Matched spatial-tendon indices and names. Indices are a list by default or a cached proxy when requested.
"""
raise NotImplementedError()

Expand Down Expand Up @@ -2575,10 +2605,6 @@ def _get_backend_ordered_joint_buffer(
)
return backend_data

"""
Internal helpers -- Actuators.
"""

@abstractmethod
def _process_actuators_cfg(self) -> None:
"""Process and apply articulation joint properties."""
Expand Down
Loading
Loading