Script Communication in Isaac Sim - Motor Position Data Transfer

Hi together! I’m working on a robotic control system and need help with script communication between three components.

Current Setup:

  • fabrik_controller.py (attached to “FABRIK_System”) - Calculates motor positions
  • master_robot_controller.py (attached to “World”) - Should act as intermediary
  • delta_controller.py (attached to “Unit_001”) - Should receive and apply positions

What Works:

  • FABRIK controller successfully calculates motor positions
  • Delta controller can receive and apply test positions directly
  • All scripts initialize and run without errors

The Issue:

I can’t get the data to flow properly between these scripts. Specifically:

  1. Master controller can’t reliably get data from FABRIK controller
  2. Delta controller isn’t receiving the forwarded positions

What I’ve Tried:

In Master Controller:

motor_positions = self.fabrik_controller.get_current_motor_positions()
controller.set_position(axis, value) # Sending to Delta

Question:

  1. What’s the correct way to share data between multiple BehaviorScripts in Omniverse?
  2. Would a simpler example showing how to pass data between 3 scripts help understand the proper pattern? A working example would be great.

Attached Files:

delta_controller.txt (5.9 KB)
Directorys.txt (479 Bytes)
fabrik_controller.txt (11.9 KB)
master_robot_controller.txt (7.7 KB)
Output.txt (2.4 KB)

Any guidance on the proper way to handle cross-script communication in Omniverse would be greatly appreciated!

regards,
YuuZena

Please check if Event streams — Omniverse Kit 106.4.0 documentation is helpful.

@yuuzena can you please share where in the BehaviorScript did you subscribe to the events? I had a similar challange but was unable to use events because there is no real “init” or “awake” function in the behavior script (for when the object is brought into the current stage)

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.