-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Currently, our data pipeline relies entirely on ROS 2 for communication between the sensor data source and the Isaac Sim environment. While ROS is a powerful tool for robotics, it introduces significant overhead and a heavy dependency.
This issue proposes creating an alternative, lightweight data ingestion path that bypasses ROS entirely.
Proposed Solution
-
Modify the C++ Transformer Node: Abstract the data transport layer. Implement a non-ROS communication backend, such as:
- ZeroMQ (ZMQ): A high-performance messaging library ideal for this kind of data streaming (Pub/Sub pattern).
- Protobuf (Protocol Buffers) + a transport layer: This is a leading candidate. We would define a .proto file for our point cloud data. The C++ node would serialize the data into the highly efficient Protobuf binary format, which is language-agnostic and very fast to parse.
-
Modify the Python Digital Twin Controller: Implement a corresponding client to receive data from the chosen non-ROS backend. This would run in a separate thread.
-
Use Configuration Flags: Add a setting in config.yaml to allow the user to select the transport layer at runtime (e.g., transport: "ros" or transport: "zmq").
Acceptance Criteria
-
The system can receive and visualize point cloud data in Isaac Sim without any ROS 2 nodes or daemons running.
-
The new implementation demonstrates a measurable reduction in CPU usage and latency compared to the ROS 2 pipeline.
-
The ROS 2 functionality is retained as an optional mode for users who require it.