Skip to content

Feature: Decouple Data Ingestion from ROS to Reduce Overhead #3

@9LogM

Description

@9LogM

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

  1. 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.
  2. 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.

  3. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions