Skip to content

Commit c295669

Browse files
Reject writes to the read-only DOF drive type attribute
ovphysx documents ARTICULATION_DOF_DRIVE_TYPE as read-only, but the attribute was missing from _READ_ONLY_NAMES, so set_attribute accepted writes to it and forwarded them to the binding instead of raising. An audit of the whole classification against the wheel's type table found this to be the only gap: of the twenty-one types ovphysx documents as read-only, twenty were already classified, and no member was misclassified. This is a behavior change. Writes to articulation_dof_drive_type that were previously accepted now raise OvPhysxView.ReadOnlyAttribute. Drive type is authored through the USD drive schema, not the tensor path. The existing read-only behavior test is parameterized over the expected inventory, so adding the name there also asserts that a write raises and leaves no binding behind.
1 parent f1358cc commit c295669

3 files changed

Lines changed: 9 additions & 0 deletions

File tree

source/isaaclab_ov/changelog.d/ovphysx-cpu-only-tensor-types.minor.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,9 @@ Fixed
99
incurred a hidden per-call host-to-device staging copy, and a correctly placed
1010
host buffer was rejected with ``OvPhysxView.DeviceMismatch``. Residency was
1111
measured on a GPU simulation by counting CUDA memcpys around a binding read.
12+
* **Breaking:** Fixed ``articulation_dof_drive_type`` not being classified as
13+
read-only. The underlying tensor type is read-only, but
14+
:meth:`~isaaclab_ov.sim.views.OvPhysxView.set_attribute` previously accepted
15+
writes to it and silently forwarded them. Such calls now raise
16+
``OvPhysxView.ReadOnlyAttribute``. Remove any write to this attribute; drive
17+
type is authored through the USD drive schema, not the tensor path.

source/isaaclab_ov/isaaclab_ov/sim/views/ovphysx_view.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
"articulation_body_inv_mass",
8080
"articulation_body_inv_inertia",
8181
"articulation_dof_projected_joint_force",
82+
"articulation_dof_drive_type",
8283
"articulation_jacobian",
8384
"articulation_mass_center_world",
8485
"articulation_mass_center_local",

source/isaaclab_ov/test/sim/test_ovphysx_view.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
"articulation_body_inv_mass",
5555
"articulation_body_inv_inertia",
5656
"articulation_dof_projected_joint_force",
57+
"articulation_dof_drive_type",
5758
"articulation_link_incoming_joint_force",
5859
"articulation_mass_center_world",
5960
"articulation_mass_center_local",
@@ -243,6 +244,7 @@ def test_read_only_names_are_valid_vocabulary():
243244
def test_read_only_and_cpu_only_classification():
244245
assert is_read_only("articulation_jacobian")
245246
assert is_read_only("rigid_body_acceleration")
247+
assert is_read_only("articulation_dof_drive_type")
246248
assert not is_read_only("articulation_dof_stiffness")
247249
assert is_cpu_only("articulation_dof_stiffness")
248250
assert is_cpu_only("rigid_body_mass")

0 commit comments

Comments
 (0)