IrisConduit: The Bridge of Light
**IrisConduit** is the interface layer of Project Iris – it’s how you, as a developer or designer, interact with the power of IrisCore. If IrisCore is the engine, IrisConduit is the dashboard and steering wheel. It provides the high-level components and APIs that let you plug Unreal Engine elements into ROS 2 with minimal effort. The name "Conduit" is apt: it channels data between your game world and ROS 2, acting truly as a bridge of light carrying messages.
**Blueprint Components:** IrisConduit offers a suite of ready-to-use Unreal Engine Components that you can add to any Actor or Blueprint. For example, you might attach an `IrisPublisher` component to a Camera actor. In the details panel, you can configure it to publish a `sensor_msgs/Image` topic at a desired rate – and just like that, your Unreal camera becomes a ROS 2 camera sensor. Similarly, an `IrisSubscriber` component can be attached to a robot pawn to listen for `geometry_msgs/Twist` messages (velocity commands) and feed them into your movement logic. This design allows non-ROS experts to integrate ROS 2 topics via familiar Unreal workflows:contentReference[oaicite:21]{index=21}.
**Easy API for Developers:** For more advanced usage, IrisConduit provides a C++ and Blueprint API. You can programmatically create publishers/subscribers or send messages from code. The APIs are designed to be similar to ROS 2 rclcpp where it makes sense – for instance, calling an `Publish()` function on a publisher component to send a message struct. Underneath, IrisConduit hands off the data to IrisCore, which actually transmits it via DDS. The separation is transparent; as a developer using IrisConduit, you just call publish/subscribe and handle callbacks, and the data flows to or from ROS 2 automatically.
**Unified Interface for All Data:** IrisConduit doesn’t just handle simple topics – it supports a wide range of data types, from standard sensor and control messages to custom message types you define. If you have a custom ROS 2 message, you can import its interface (via IDL or provided integration pipeline) and IrisConduit will allow you to generate a matching Unreal struct/class so you can publish it. This capability means you’re not limited to pre-defined types; Project Iris can evolve with your project’s specific data needs, all while using the same Conduit framework.
**Live Visualization and Tuning:** Because IrisConduit lives in the Unreal Engine editor environment, you can visualize and tweak your connections easily. For instance, you could see a list of active topics and toggle publishers on/off during simulation, or adjust QoS settings on a particular Conduit component if you need to switch a sensor to reliable delivery. This interactive design philosophy makes it straightforward to iterate on your simulation setup – bridging the gap between game design and robotics infrastructure.
In essence, IrisConduit is what makes Project Iris *user-friendly*. It takes the raw power of DDS and ROS 2 (courtesy of IrisCore) and presents it in a way that *Unreal developers* and *robotics engineers* can both work with comfortably. By marrying the flexibility of Unreal’s component system with the standardization of ROS 2 messages, IrisConduit truly fulfills the role of Iris in mythology: a messenger connecting two worlds.