Copper v0.8: Check Out The New Zenoh and ROS2 Bridge
v0.8 is out and this is the first blog post out of a series to walk you through everything we added to v0.8 … let’s start with the middleware bridges!
So, in this new release the Copper to ROS2 bridge is here … and with it, a progressive escape hatch from ROS2's tangled web of complexity and indeterminism. Copper is built for modern robotics teams that want determinism, performance, and a Rust-first stack. But what if you're still deeply embedded in ROS2?
Don't Rip and Replace… Migrate progressively
Our community built the zenoh_sink_ros
bridge for exactly this scenario. It lets you keep your ROS2 system running as-is, while gradually moving individual tasks over to Copper. Start with your most performance-critical pipelines like perception, sensor fusion, etc and leave the rest of the non critical ones in ROS2 untouched. You’ll see gains from day one.
How It Works
Copper can emit ROS2-compatible topics over Zenoh, using the rmw_zenoh
backend. No need for ROS2 builds or colcon
. Copper sends the data, and your existing ROS2 nodes receive it like any other topic.
See the implementation here:
🔗 cu_zenoh_sink_ros
Once connected, you can:
Port a node (e.g. sensor fusion) from ROS2 to Copper.
Wire its output to a ROS2 consumer over Zenoh.
Validate it in production.
Repeat with the next component.
We recommend starting from the top of your ROS2 graph ie. nodes that publish to the rest of the system. This makes it easier to drop Copper in as a fast, deterministic producer, without needing to rewrite the rest of the pipeline. That’s why this first bridge is a copper sink, not a source as it is designed to emit messages to the rest of ROS2.
Beyond ROS2: Zenoh as a Universal Bridge
The community also released a pure cu_zenoh_sink
that emits messages in your choice of serialization (ie. anything supported by Rust SerDe actually). This lets you:
Connect Copper to a non-Copper Rust process (e.g. for data logging, or visualization).
Build a Copper-powered swarm of robots using Zenoh as the transport layer.
Create mixed-language architectures where Copper tasks communicate with Python or C++ over lightweight Zenoh messages.
This is your escape route not only from ROS2, but from the overhead of traditional robotics middleware entirely.
Special thanks to Julien Enoch from Zettascale (the creator of Zenoh) for his support!
Questions?
Join us on our Discord Server and if you like what we are doing at Copper don’t forget to ⭐ our github repo!