Copper v0.6: Video, Computer Vision, and Hardware Acceleration

We're excited to announce the release of Copper 0.6!

Until now, our primary focus has been ensuring that Copper achieves extremely low latency, a challenging feat in modern computer architectures. And we've succeeded! Our latencies are measured in nanoseconds, making Copper two orders of magnitude faster than ROS2 in its default configuration.

But what about throughput?

This release focuses on pushing large buffers through Copper's compute graph—such as images, matrices, and point clouds.

For example, here's a Video4Linux video source running at 4K 30fps, seamlessly processed through Copper and streamed to Rerun.

We achieved this by leveraging Direct Memory Access (DMA), allowing data to flow directly from the camera without passing through the main CPU. The data remains untouched until it's finally streamed to Rerun.

Computer Vision with Kornia-rs

We worked with the kornia-rs project to integrate a 0 copy seemless integration between their Computer Vision algorithms and the new Copper API. It opens up an entire family of algorithms & filters now natively available in Copper: scaling, blur, sobel, hessian, thresholds, icp, etc etc…

But it doesn’t stop there! Copper now supports NVIDIA® CUDA®.

Our buffer management system enables efficient tracking of memory buffers in heterogeneous architectures, essentially, any memory not directly controlled by the CPU, such as GPU memory or NUMA setups. We've integrated Copper with cudarc, allowing users to seamlessly transfer images and buffers to and from the GPU, and share them across tasks for image processing, linear algebra, neural networks, and more.

We can't wait to see what our users will create with Copper and the power of CUDA kernels at their fingertips!

Other notable highlights in this release

This release has been incredibly busy! We received 10 external contributions—an exciting first for us—demonstrating the growing momentum of the Copper ecosystem.

  • We simplified the creation and initialization of Copper applications with a prefix and a builder pattern:

let mut application = CaterpillarApplicationBuilder::new()
        .with_context(&copper_ctx)
        .build()
        .expect("Failed to create application.");
  • We have a new driver for the Livox Lidar Tele15 that is very useful for long range applications like highway driving.

  • We also simplified the automatic generation of Copper projects by asking at creation which version of Copper the user wants to use : either local, git or the latest official release.

  • Logging: we added a couple parameters to the application config to be able to tune the output: those large images challenged the default parameters! We can also completely disable the task logging for people using external loggers.

  • We now have a new Debug Output panel in the little TUI monitoring component

New logging Panel

And much more, feel free to check out the detail release note here!

Previous
Previous

Copper on a Drone video miniseries tutorial

Next
Next

2025 SWE Internship @ Copper?