I think there is a bug in the OgnIsaacArticulationController
extension (specifically in ...exts/isaacsim.core.nodes/isaacsim/core/nodes/ogn/python/nodes/OgnIsaacArticulationController.py
) in lines 110–111:
if np.asarray(joint_indices).any() and np.asarray([joint_indices != state.joint_indices]).flatten().any():
state.joint_indices = np.array(joint_indices)
Issue:
If joint_indices
has a different shape than state.joint_indices
(e.g., (n,)
vs. (m,)
), this comparison can raise a broadcasting error such as:
ValueError: operands could not be broadcast together with shapes ...
Implications:
This issue can surface when multiple controllers are running simultaneously or successively, each commanding a different number of joints, causing inconsistent shapes for joint_indices
and thus triggering the error.
Possible Fix:
Use a more robust comparison that checks array equality directly (for example, using np.array_equal
). For instance:
if np.asarray(joint_indices).any() and not np.array_equal(joint_indices, state.joint_indices):
state.joint_indices = np.array(joint_indices)
This approach avoids shape mismatch problems by cleanly determining if the new array differs from the old one.
Request:
Could the development team confirm if this fix is tracked or addressed for a future Isaac Sim release? Meanwhile, the above workaround can help anyone experiencing errors with dynamic or mismatched joint arrays.
Let me know if you need any further details or a full reproducible example. Thanks!