<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by Site-Server v@build.version@ (http://www.squarespace.com) on Thu, 16 Apr 2026 12:57:29 GMT
--><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://www.rssboard.org/media-rss" version="2.0"><channel><title>What's new - Copper Robotics</title><link>https://www.copper-robotics.com/whats-new/</link><lastBuildDate>Sun, 12 Apr 2026 20:37:12 +0000</lastBuildDate><language>en-US</language><generator>Site-Server v@build.version@ (http://www.squarespace.com)</generator><description><![CDATA[]]></description><item><title>Copper-rs v0.15: New Multithreaded Core, Subsystems, and Swarm Support. Still 100% Deterministic. </title><dc:creator>Guillaume Binet</dc:creator><pubDate>Wed, 01 Apr 2026 14:04:57 +0000</pubDate><link>https://www.copper-robotics.com/whats-new/copper-rs-v015-multithreaded-core-deterministic-subsystems-and-swarm-support-</link><guid isPermaLink="false">66a02354cb746f3329f82ce8:66a3b0efebda816b9f2d4095:69cc727127c2604657bc9cf6</guid><description><![CDATA[copper-rs v0.15 is out: multithreaded core, deterministic subsystems, and 
swarm support. We now extend strict determinism beyond a single process to 
entire distributed robots, replaying systems spanning multiple computers 
and MCUs as one unified execution with 100% fidelity, and even scaling that 
to fleets. This release also introduces a parallel runtime (parallel-rt) to 
push system bandwidth higher with minimal latency impact, plus a high 
precision scheduler for tighter control of execution cycles. With this, we 
have effectively checked all roadmap boxes on the path to 1.0. Full details 
in the release notes.]]></description><content:encoded><![CDATA[<p data-rte-preserve-empty="true" id="yui_3_17_2_1_1775051494489_5745">This will likely be the last release before 1.0. We set out with a clear roadmap, and with 0.15 we have checked every box, and then some.</p><p data-rte-preserve-empty="true" id="yui_3_17_2_1_1775051494489_5746">Until now, Copper demonstrated strict determinism within a single process or a single embedded system. With 0.15, this extends to distributed systems.</p><p data-rte-preserve-empty="true" id="yui_3_17_2_1_1775051494489_5747">Imagine a robot composed of multiple subsystems: two computers and several MCUs, each running their own Copper process. <strong>With 0.15, you can deterministically replay logs across all of what we call “subsystems” (processes or embedded devices) </strong>as a single unified execution. Your entire robot can now be replayed locally as one process with 100% fidelity.</p><p data-rte-preserve-empty="true" id="yui_3_17_2_1_1775051494489_5748">And it does not stop at a single robot.</p>


  


  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1b654c31-f28f-45e4-b7cb-b11dce63a578/Drone-Light-Show-Bingemans-Waterloo-Ontario-1024x594.jpg" data-image-dimensions="1024x594" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1b654c31-f28f-45e4-b7cb-b11dce63a578/Drone-Light-Show-Bingemans-Waterloo-Ontario-1024x594.jpg?format=1000w" width="1024" height="594" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1b654c31-f28f-45e4-b7cb-b11dce63a578/Drone-Light-Show-Bingemans-Waterloo-Ontario-1024x594.jpg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1b654c31-f28f-45e4-b7cb-b11dce63a578/Drone-Light-Show-Bingemans-Waterloo-Ontario-1024x594.jpg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1b654c31-f28f-45e4-b7cb-b11dce63a578/Drone-Light-Show-Bingemans-Waterloo-Ontario-1024x594.jpg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1b654c31-f28f-45e4-b7cb-b11dce63a578/Drone-Light-Show-Bingemans-Waterloo-Ontario-1024x594.jpg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1b654c31-f28f-45e4-b7cb-b11dce63a578/Drone-Light-Show-Bingemans-Waterloo-Ontario-1024x594.jpg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1b654c31-f28f-45e4-b7cb-b11dce63a578/Drone-Light-Show-Bingemans-Waterloo-Ontario-1024x594.jpg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1b654c31-f28f-45e4-b7cb-b11dce63a578/Drone-Light-Show-Bingemans-Waterloo-Ontario-1024x594.jpg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
          
          <figcaption class="image-caption-wrapper">
            <p data-rte-preserve-empty="true">Swarm of drones for a drone show in Ontario, CA</p>
          </figcaption>
        
      
        </figure>
      

    
  


  



  
  
<p data-rte-preserve-empty="true" id="yui_3_17_2_1_1775051494489_5749">The same model applies to fleets. <strong>You can now deterministically replay a swarm of robots</strong> as one coherent system. Distributed autonomy becomes reproducible, testable, and debuggable end to end.</p>
<p data-rte-preserve-empty="true">Traditionally, robot swarms have lived mostly in research environments, where reproducibility and safety constraints are relaxed. Copper brings this paradigm into real-world systems, where reliability, traceability, and safety are paramount. What was previously experimental can now be engineered, validated, and deployed with confidence.</p>


  


  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/f682ea54-53a0-41b6-89ca-0303d244432e/example+distributed+copper.png" data-image-dimensions="2084x1739" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/f682ea54-53a0-41b6-89ca-0303d244432e/example+distributed+copper.png?format=1000w" width="2084" height="1739" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/f682ea54-53a0-41b6-89ca-0303d244432e/example+distributed+copper.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/f682ea54-53a0-41b6-89ca-0303d244432e/example+distributed+copper.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/f682ea54-53a0-41b6-89ca-0303d244432e/example+distributed+copper.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/f682ea54-53a0-41b6-89ca-0303d244432e/example+distributed+copper.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/f682ea54-53a0-41b6-89ca-0303d244432e/example+distributed+copper.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/f682ea54-53a0-41b6-89ca-0303d244432e/example+distributed+copper.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/f682ea54-53a0-41b6-89ca-0303d244432e/example+distributed+copper.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
          
          <figcaption class="image-caption-wrapper">
            <p data-rte-preserve-empty="true">Distributed deterministic demo config (generated from Copper-rs tooling in examples/cu_distributed_resim_demo)</p>
          </figcaption>
        
      
        </figure>
      

    
  


  



  
  <p data-rte-preserve-empty="true">To support this, we introduced a new configuration model for <strong>both subsystems and fleet of identical robots</strong>. A master config defines the full system, and composable instance files allow per-robot overrides such as IDs, calibration, or deployment-specific parameters. This provides a clean path from one robot to many.</p><p data-rte-preserve-empty="true">On the runtime side, 0.15 introduces a multithreaded execution core. The new <strong>parallel-rt</strong> mode allows multiple CopperLists to run in parallel, <strong>increasing system bandwidth (higher Hz) with minimal latency impact</strong>, while preserving deterministic ordering and logging guarantees.</p><p data-rte-preserve-empty="true">We also improved timing precision. Some applications require extremely tight cycle control, even on standard host systems. The rate limiter has been upgraded into a high-precision synchronization mechanism, enabling much tighter control over tick generation and execution cadence.</p><p data-rte-preserve-empty="true">And there is much more in this release. We cannot wait to see what the ecosystem will create with those new capabilities.</p><p data-rte-preserve-empty="true">Check out the full <a href="https://github.com/copper-project/copper-rs/wiki/Copper-Release-Notes#v0150---2026-03-31">release notes</a> for all the details.  <br><br>And as usual, <a href="https://discord.gg/VkCG7Sb9Kw">join us on discord</a> if you have any question! </p>]]></content:encoded><media:content type="image/png" url="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1775008870613-5CKDLI6LYYLQL3K99YM6/v0.15+swarm+thumb.png?format=1500w" medium="image" isDefault="true" width="1500" height="1000"><media:title type="plain">Copper-rs v0.15: New Multithreaded Core, Subsystems, and Swarm Support. Still 100% Deterministic. </media:title></media:content></item><item><title>copper-rs v0.14: a smoother path from prototyping to production</title><dc:creator>Guillaume Binet</dc:creator><pubDate>Fri, 20 Mar 2026 14:08:15 +0000</pubDate><link>https://www.copper-robotics.com/whats-new/copper-rs-v014-from-prototype-to-production-without-changing-systems</link><guid isPermaLink="false">66a02354cb746f3329f82ce8:66a3b0efebda816b9f2d4095:69bc61aca9bc772320fe03ae</guid><description><![CDATA[<p data-rte-preserve-empty="true">One of the persistent frictions in robotics is the gap between exploration and deployment.</p><p data-rte-preserve-empty="true">You prototype quickly in one environment, then rebuild everything to make it deterministic, observable, and safe. The system you experiment with is not the system you ship.</p><blockquote><p data-rte-preserve-empty="true"><strong>Copper-rs v0.14 is all about closing that gap.</strong></p></blockquote><h2 data-rte-preserve-empty="true">Prototype directly inside a real system</h2><p data-rte-preserve-empty="true">Copper now supports running tasks in Python as a first class citizen. One obvious advantage is to leverage any large python code base you might have with a smooth porting pathway towards Rust but also to temporarily open up a python task to quickly iterate on an algorithm before committing.</p><p data-rte-preserve-empty="true">That task (or tasks) sit inside a normal Copper graph, alongside Rust tasks, with the same execution model, the same logs, and the same monitoring and determinism.</p><p data-rte-preserve-empty="true">This makes it possible to:</p><ul data-rte-list="default"><li><p data-rte-preserve-empty="true">validate an algorithm against real logs or simulation</p></li><li><p data-rte-preserve-empty="true">inspect it through the Copper monitor</p></li><li><p data-rte-preserve-empty="true">iterate quickly without changing the surrounding system, and without recompiling.</p></li></ul><p data-rte-preserve-empty="true">Once the behavior is correct, the task can be rewritten in Rust without touching the rest of the graph and LLMs excel at this!</p><p data-rte-preserve-empty="true">The system stays the same from first experiment to final deployment.</p><h2 data-rte-preserve-empty="true">Monitoring that matches how systems are structured</h2><p data-rte-preserve-empty="true">Monitoring is now explicit and composable.</p><p data-rte-preserve-empty="true">Instead of combining everything into a single implementation, you can separate:</p><ul data-rte-list="default"><li><p data-rte-preserve-empty="true">a safety monitor responsible for decisions</p></li><li><p data-rte-preserve-empty="true">a UI monitor for visualization</p></li><li><p data-rte-preserve-empty="true">a lightweight monitor for logging and debugging</p></li></ul><p data-rte-preserve-empty="true">This allows safety policies to be defined independently from how the system is observed.</p><p data-rte-preserve-empty="true">A new <strong>cu_safetymon</strong> component is a base example, it provides configurable handling for:</p><ul data-rte-list="default"><li><p data-rte-preserve-empty="true">panics</p></li><li><p data-rte-preserve-empty="true">lock failures</p></li><li><p data-rte-preserve-empty="true">shutdown conditions</p></li></ul><h2 data-rte-preserve-empty="true">Webassembly is now a supported target: run a copper application directly in a browser!</h2><p data-rte-preserve-empty="true">A Copper application, including its live monitor, can run directly in a browser. The task graph, execution flow, and monitoring behavior are identical to what runs on desktop or even embedded targets.</p><p data-rte-preserve-empty="true">This gives a direct way to demo your robots to potential customers in one click!</p><p data-rte-preserve-empty="true">You can try it right away on our 2 examples:</p><p data-rte-preserve-empty="true"><a href="https://cdn.copper-robotics.com/demo/balancebot/index.html">Click here for to run the balancebot demo</a> (this code runs on linux on a raspberry pi natively with no change)</p><p data-rte-preserve-empty="true"><a href="https://cdn.copper-robotics.com/demo/flight-controller/index.html">Click here for a full flight controller demo</a> (this code runs baremetal on an STM32 and we fly real drones with it)</p><h2 data-rte-preserve-empty="true">Better integration with existing ROS2 systems</h2><p data-rte-preserve-empty="true">The ROS2 bridge is now bidirectional and supports liveliness tracking and ring-buffered data paths.</p><p data-rte-preserve-empty="true">This makes it easier to introduce Copper into an existing ROS2 system as you migrate from ROS2 bit by bit.</p><h2 data-rte-preserve-empty="true">A unified execution context</h2><p data-rte-preserve-empty="true">Tasks and bridges now receive a CuContext instead of a just a robotic clock.</p><p data-rte-preserve-empty="true">This context includes:</p><ul data-rte-list="default"><li><p data-rte-preserve-empty="true">runtime clock</p></li><li><p data-rte-preserve-empty="true">task identity</p></li><li><p data-rte-preserve-empty="true">execution metadata</p></li><li><p data-rte-preserve-empty="true">CopperList context</p></li></ul><p data-rte-preserve-empty="true">This is a move we wanted to do before v1 as it allows us to enrich the context without breaking the API.</p><p data-rte-preserve-empty="true">The same structure is used across runtime execution, simulation, monitoring, and Python integration.</p><h2 data-rte-preserve-empty="true">Fewer workarounds in graph construction</h2><p data-rte-preserve-empty="true">Several changes reduce friction when building larger systems:</p><ul data-rte-list="default"><li><p data-rte-preserve-empty="true">tasks now accept up to 12 inputs</p></li><li><p data-rte-preserve-empty="true">outputs can be explicitly marked as not connected (__nc__)</p></li><li><p data-rte-preserve-empty="true">bridges can opt in or out of simulation (run_in_sim)</p></li></ul><p data-rte-preserve-empty="true">These remove the need for placeholder components and simplify graph definitions.</p><h2 data-rte-preserve-empty="true">Stronger debugging and inspection</h2><p data-rte-preserve-empty="true">Runtime lifecycle information is now a first-class part of logs, and remote debugging includes snapshot caching.</p><p data-rte-preserve-empty="true">Combined with Python iteration over recorded runs, this makes offline analysis and replay significantly more useful.</p><h2 data-rte-preserve-empty="true">Closing the loop</h2><p data-rte-preserve-empty="true">v0.14 brings exploration, simulation, monitoring, and deployment closer together.</p><p data-rte-preserve-empty="true">You can prototype behavior, inspect it in a running system, refine it, and deploy it without switching environments or rewriting infrastructure.</p><p data-rte-preserve-empty="true">That continuity is the core of the release.</p>]]></description><media:content type="image/png" url="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1773958761005-WNJ1FRHN327P9HMYD6DC/Python.png?format=1500w" medium="image" isDefault="true" width="1280" height="720"><media:title type="plain">copper-rs v0.14: a smoother path from prototyping to production</media:title></media:content></item><item><title>What are we solving for with copper-rs?</title><dc:creator>Guillaume Binet</dc:creator><pubDate>Mon, 09 Mar 2026 16:05:39 +0000</pubDate><link>https://www.copper-robotics.com/whats-new/why-we-built-copper</link><guid isPermaLink="false">66a02354cb746f3329f82ce8:66a3b0efebda816b9f2d4095:69ab3286d9b759663e08e354</guid><description><![CDATA[Robotics demos are improving quickly, but turning them into reliable 
autonomous products remains difficult. This post explores the motivation 
behind Copper, a Rust-based runtime for real-world autonomy systems, and 
explains why determinism and low-latency execution are essential for 
debugging and validating autonomous systems, and how Copper approaches 
these challenges by combining compile-time system generation, data-oriented 
execution, and deterministic replay.]]></description><content:encoded><![CDATA[<p class="">Robotics demos have been impressive for a long time.</p><p class="">Humanoid robots dancing.<br> Quadrupeds doing parkour.<br> Drones flying complex trajectories.<br> Robots manipulating objects with increasing dexterity.</p><p class="">At the same time, machine learning has advanced rapidly. Perception systems that were considered difficult ten years ago are now common.<br><br></p><p class="sqsrte-small"><em>Note: This blog entry is based on the small keynote I gave at our copper-rs meetup, </em><a href="https://www.youtube.com/watch?v=IuduPa_nyks" target="_blank"><em>you can also check it out on our youtube channel</em></a></p>


  


  



&nbsp;<figure class="block-animation-site-default"
>
  <blockquote data-animation-role="quote"
  >
    <span>“</span>Given all of this progress, a simple question naturally appears:    But where are the robots?<span>”</span>
  </blockquote>
  <figcaption class="source">&mdash; Source: everyone?</figcaption>
  
  
</figure>
  
  <p data-rte-preserve-empty="true" class=""></p><p class="">We are not talking about research prototypes or lab demonstrations but autonomous systems operating reliably in the real world.</p><p class="">Today the most visible example is probably Waymo. It represents one of the most advanced deployments of autonomy and required enormous investment in sensors, infrastructure, and engineering effort.</p><p class="">Even then, the economics remain difficult. Autonomy at scale is still extremely challenging.</p><p class="">The gap between impressive research demonstrations and reliable autonomous products is much larger than it appears from the outside. Copper started from the desire to understand where that gap comes from.</p><h2>Robotics Works in Controlled Conditions</h2><p class="">Most robotics projects follow a similar trajectory.</p><p class="">Early development tends to move quickly. A robot learns to navigate a hallway, follow a road, or operate inside a structured environment such as a warehouse.</p><p class="">These early results are often good enough to produce convincing demonstrations. They show that the core approach works and that the system can perform useful tasks.</p><p class="">However, the real challenge begins once the robot leaves controlled conditions.</p><p class="">Robots deployed in the real world encounter environments that are fundamentally unpredictable. Lighting conditions change, sensors occasionally misbehave, and unexpected situations appear that were never part of the initial design.</p><p class="">This shift fundamentally changes the development process.</p><h2>The Long Tail Problem</h2><p class="">Autonomy development is dominated by what is commonly called <strong>the long tail</strong>.</p><p class="">Many situations a robot encounters are common and easy to handle. A car driving down an empty road or a robot navigating a clear corridor represents the majority of operating time.</p>


  


  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/e5510630-67ef-45bf-b4ec-13ac9aa8bdb4/Copper+Trace+%23001.png" data-image-dimensions="960x540" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/e5510630-67ef-45bf-b4ec-13ac9aa8bdb4/Copper+Trace+%23001.png?format=1000w" width="960" height="540" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/e5510630-67ef-45bf-b4ec-13ac9aa8bdb4/Copper+Trace+%23001.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/e5510630-67ef-45bf-b4ec-13ac9aa8bdb4/Copper+Trace+%23001.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/e5510630-67ef-45bf-b4ec-13ac9aa8bdb4/Copper+Trace+%23001.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/e5510630-67ef-45bf-b4ec-13ac9aa8bdb4/Copper+Trace+%23001.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/e5510630-67ef-45bf-b4ec-13ac9aa8bdb4/Copper+Trace+%23001.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/e5510630-67ef-45bf-b4ec-13ac9aa8bdb4/Copper+Trace+%23001.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/e5510630-67ef-45bf-b4ec-13ac9aa8bdb4/Copper+Trace+%23001.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
          
          <figcaption class="image-caption-wrapper">
            <p data-rte-preserve-empty="true"><strong>Operational Design Domain / Long Tail graph</strong></p>
          </figcaption>
        
      
        </figure>
      

    
  


  



  
  <p class="">But safe autonomy requires handling far more than common cases. It must also handle rare events that occur only occasionally.</p><p class="">Examples include unusual lighting conditions, sensor edge cases, unexpected obstacles, or combinations of circumstances that were never seen during initial testing.</p><p class="">As development progresses, improvements become harder because each new issue tends to correspond to increasingly rare situations. Collecting the relevant data becomes more expensive and reproducing failures becomes more difficult.</p><p class="">Eventually progress slows dramatically because the engineering loop breaks down. Failures happen rarely and inconsistently, which makes them extremely difficult to analyze and fix.</p><p class="">Closing this loop requires the ability to reproduce failures reliably.</p><h2>Determinism as a First Principle</h2><p class="">Reproducing failures in robotics systems is harder than it should be.</p><p class="">Ideally, debugging a failure would follow a simple workflow. A robot run is recorded, the relevant inputs are captured, and the system is replayed offline in order to reproduce the exact same behavior.</p><p class="">In practice this often fails because robotics software stacks are not deterministic. Small sources of nondeterminism accumulate throughout the system: thread scheduling, asynchronous messaging, operating system behavior, memory allocation patterns, and timing variations.</p><p class="">When these effects interact, the same inputs can produce slightly different outputs on every run. This makes debugging extremely difficult because a failure that appears once may never appear again under identical conditions.</p>


  


  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/9e80ad7c-a16f-451d-b354-b927fb56bf63/Copper+Trace+%23001+%281%29.png" data-image-dimensions="960x540" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/9e80ad7c-a16f-451d-b354-b927fb56bf63/Copper+Trace+%23001+%281%29.png?format=1000w" width="960" height="540" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/9e80ad7c-a16f-451d-b354-b927fb56bf63/Copper+Trace+%23001+%281%29.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/9e80ad7c-a16f-451d-b354-b927fb56bf63/Copper+Trace+%23001+%281%29.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/9e80ad7c-a16f-451d-b354-b927fb56bf63/Copper+Trace+%23001+%281%29.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/9e80ad7c-a16f-451d-b354-b927fb56bf63/Copper+Trace+%23001+%281%29.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/9e80ad7c-a16f-451d-b354-b927fb56bf63/Copper+Trace+%23001+%281%29.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/9e80ad7c-a16f-451d-b354-b927fb56bf63/Copper+Trace+%23001+%281%29.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/9e80ad7c-a16f-451d-b354-b927fb56bf63/Copper+Trace+%23001+%281%29.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
          
          <figcaption class="image-caption-wrapper">
            <p data-rte-preserve-empty="true"><strong>Deterministic replay slide: Outputs on Resim are exactly the same as the outputs on Live or Sim</strong></p>
          </figcaption>
        
      
        </figure>
      

    
  


  



  
  <p class="">Copper was designed around the idea that deterministic replay should be a fundamental property of the system. Given the same inputs, the system must produce exactly the same outputs. This guarantee allows failures observed in the field to be reproduced reliably during development.</p><p class="">In Copper this property is continuously tested. Recorded runs are replayed automatically and the resulting outputs are compared against the original execution. Any divergence indicates that determinism has been broken somewhere in the system.</p><p class="">This constraint strongly influences the rest of the design.</p><h2>Performance Without Sacrificing Modularity</h2><p class="">Autonomous systems operate in a tight control loop that continuously processes sensor data and generates actions.</p><p class="">The latency of this loop directly affects how the robot behaves. Faster loops allow the system to react more quickly to environmental changes.</p><p class="">Unfortunately many robotics frameworks introduce significant overhead through serialization, message passing layers, buffering, and dynamic scheduling.</p><p class="">Developers frequently respond by <strong>merging multiple components together</strong> into large processing blocks. Doing so reduces communication overhead but also eliminates many advantages of modular systems. Debugging becomes harder and reusable components become scarce.</p><p class=""><strong>Copper approaches the problem differently. The runtime is designed so that the cost of decomposing a system into small components remains extremely low.</strong> This makes it possible to preserve modularity without sacrificing performance.</p><p class="">Maintaining small components has several benefits. Individual stages can be inspected independently, intermediate data can be logged for debugging, and components become reusable across projects.</p><p class="">These properties become particularly valuable when diagnosing failures in the long tail.</p><h2>Modern Computers Are Not Optimized for Robotics</h2>


  


  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/5d9001cf-b6e3-4491-beea-dcf8a680c317/Copper+Trace+%23001+%282%29.png" data-image-dimensions="960x540" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/5d9001cf-b6e3-4491-beea-dcf8a680c317/Copper+Trace+%23001+%282%29.png?format=1000w" width="960" height="540" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/5d9001cf-b6e3-4491-beea-dcf8a680c317/Copper+Trace+%23001+%282%29.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/5d9001cf-b6e3-4491-beea-dcf8a680c317/Copper+Trace+%23001+%282%29.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/5d9001cf-b6e3-4491-beea-dcf8a680c317/Copper+Trace+%23001+%282%29.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/5d9001cf-b6e3-4491-beea-dcf8a680c317/Copper+Trace+%23001+%282%29.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/5d9001cf-b6e3-4491-beea-dcf8a680c317/Copper+Trace+%23001+%282%29.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/5d9001cf-b6e3-4491-beea-dcf8a680c317/Copper+Trace+%23001+%282%29.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/5d9001cf-b6e3-4491-beea-dcf8a680c317/Copper+Trace+%23001+%282%29.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
          
          <figcaption class="image-caption-wrapper">
            <p data-rte-preserve-empty="true">Are the modern computers that are AI capable the best platforms for robotics?</p>
          </figcaption>
        
      
        </figure>
      

    
  


  



  
  <p class="">Another challenge arises from the hardware itself.</p><p class="">Modern CPUs are complex parallel machines designed to maximize throughput across many tasks. They rely on deep cache hierarchies, speculative execution, and multiple cores to achieve high performance.</p><p class="">This architecture works well for workloads such as web servers or video streaming, where throughput matters more than predictable latency.</p><p class="">Robotics systems have different requirements. A robot must process sensor data and react within predictable time bounds. Small variations in execution timing can accumulate and degrade system behavior.</p><p class="">Bridging the gap between hardware optimized for throughput and software that requires low latency requires careful control over memory access patterns and scheduling.</p><p class="">Copper attempts to align software execution with the underlying hardware architecture rather than fighting against it.</p><h2>Navigating Design Tradeoffs</h2><p class="">Designing a runtime for robotics involves balancing several competing constraints.</p><p class="">Low latency and high throughput do not always align. Hardware optimized for bandwidth can introduce unpredictable delays.</p>


  


  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/b3c1c832-c45a-4803-9e2c-ee9e827cfd3b/Copper+Trace+%23001+%283%29.png" data-image-dimensions="960x540" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/b3c1c832-c45a-4803-9e2c-ee9e827cfd3b/Copper+Trace+%23001+%283%29.png?format=1000w" width="960" height="540" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/b3c1c832-c45a-4803-9e2c-ee9e827cfd3b/Copper+Trace+%23001+%283%29.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/b3c1c832-c45a-4803-9e2c-ee9e827cfd3b/Copper+Trace+%23001+%283%29.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/b3c1c832-c45a-4803-9e2c-ee9e827cfd3b/Copper+Trace+%23001+%283%29.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/b3c1c832-c45a-4803-9e2c-ee9e827cfd3b/Copper+Trace+%23001+%283%29.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/b3c1c832-c45a-4803-9e2c-ee9e827cfd3b/Copper+Trace+%23001+%283%29.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/b3c1c832-c45a-4803-9e2c-ee9e827cfd3b/Copper+Trace+%23001+%283%29.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/b3c1c832-c45a-4803-9e2c-ee9e827cfd3b/Copper+Trace+%23001+%283%29.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
          
          <figcaption class="image-caption-wrapper">
            <p data-rte-preserve-empty="true">The design tradeoff for a robot is complex as a lot of things you need are in a constant tug of war</p>
          </figcaption>
        
      
        </figure>
      

    
  


  



  
  <p class="">Algorithm designers prefer abstract representations of computation, while efficient execution requires awareness of hardware details such as memory layout and caching behavior.</p><p class="">Safety considerations push systems toward static guarantees, while experimentation during development requires flexibility.</p><p class="">Finally, increasing AI capability often requires more compute resources, which increases cost and power consumption in deployed robots.</p><p class="">Copper was designed by explicitly acknowledging these tensions and choosing design points that favor reliability and reproducibility.</p><p class=""><br><br><br></p><h2>Copper as Compiler, Operating System, and Runtime</h2><p class="">The resulting system does not fit neatly into a single category.</p>


  


  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/41c29bf2-e5da-4e2c-8507-75d2c32d05dd/Copper+Trace+%23001+%285%29.png" data-image-dimensions="960x540" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/41c29bf2-e5da-4e2c-8507-75d2c32d05dd/Copper+Trace+%23001+%285%29.png?format=1000w" width="960" height="540" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/41c29bf2-e5da-4e2c-8507-75d2c32d05dd/Copper+Trace+%23001+%285%29.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/41c29bf2-e5da-4e2c-8507-75d2c32d05dd/Copper+Trace+%23001+%285%29.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/41c29bf2-e5da-4e2c-8507-75d2c32d05dd/Copper+Trace+%23001+%285%29.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/41c29bf2-e5da-4e2c-8507-75d2c32d05dd/Copper+Trace+%23001+%285%29.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/41c29bf2-e5da-4e2c-8507-75d2c32d05dd/Copper+Trace+%23001+%285%29.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/41c29bf2-e5da-4e2c-8507-75d2c32d05dd/Copper+Trace+%23001+%285%29.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/41c29bf2-e5da-4e2c-8507-75d2c32d05dd/Copper+Trace+%23001+%285%29.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
          
          <figcaption class="image-caption-wrapper">
            <p data-rte-preserve-empty="true">Copper is 3 things at the same time</p>
          </figcaption>
        
      
        </figure>
      

    
  


  



  
  <p class="">Copper behaves simultaneously as a compiler, an operating system, and a runtime for compute graphs.</p><p class="">The compiler component moves as much work as possible out of runtime and into compile time. Tasks such as scheduling decisions and memory layout can be resolved before the robot ever executes the program.</p><p class="">Treating Copper as an operating system allows the runtime to avoid many behaviors of general-purpose operating systems that introduce unpredictable timing, such as virtual memory and dynamic scheduling.</p><p class="">Finally, Copper provides a safe compute graph abstraction that allows robotics algorithms to be expressed naturally while maintaining strong safety guarantees.</p><p class="">Rust plays a central role here because it provides memory safety and predictable performance without introducing hidden runtime costs.</p><h3><br><br><br><br></h3><h2>Generating a Specialized Runtime</h2>


  


  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/2fb2d5a4-c27a-46f0-8420-6ccd93efa1b5/Copper+Trace+%23001+%286%29.png" data-image-dimensions="960x540" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/2fb2d5a4-c27a-46f0-8420-6ccd93efa1b5/Copper+Trace+%23001+%286%29.png?format=1000w" width="960" height="540" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/2fb2d5a4-c27a-46f0-8420-6ccd93efa1b5/Copper+Trace+%23001+%286%29.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/2fb2d5a4-c27a-46f0-8420-6ccd93efa1b5/Copper+Trace+%23001+%286%29.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/2fb2d5a4-c27a-46f0-8420-6ccd93efa1b5/Copper+Trace+%23001+%286%29.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/2fb2d5a4-c27a-46f0-8420-6ccd93efa1b5/Copper+Trace+%23001+%286%29.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/2fb2d5a4-c27a-46f0-8420-6ccd93efa1b5/Copper+Trace+%23001+%286%29.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/2fb2d5a4-c27a-46f0-8420-6ccd93efa1b5/Copper+Trace+%23001+%286%29.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/2fb2d5a4-c27a-46f0-8420-6ccd93efa1b5/Copper+Trace+%23001+%286%29.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
          
          <figcaption class="image-caption-wrapper">
            <p data-rte-preserve-empty="true">Everything is executed in a linear fashion in Copper</p>
          </figcaption>
        
      
        </figure>
      

    
  


  



  
  <p class="">When a robotics application is compiled with Copper, the system analyzes the graph of tasks that define the robot’s behavior.</p><p class="">From this graph it generates a specialized execution plan and memory layout tailored to that particular application.</p><p class="">The tasks are ordered in memory so that execution follows a predictable sequence. Memory buffers used to pass data between tasks are laid out sequentially, improving cache locality and reducing latency.</p><p class="">This approach turns the pipeline into a highly efficient execution path aligned with the behavior of the processor’s cache and prefetch systems.</p><p class=""><br><br></p><p class=""><br></p><h2>Real-Time Execution and Logging</h2><p class="">Copper separates two concerns during execution.</p><p class="">The real-time loop processes sensor data and produces actuation outputs as quickly as possible. This path avoids unnecessary work and keeps latency low.</p><p class="">A secondary process handles logging and data persistence. Logging occurs between cycles so that it does not interfere with the real-time loop.</p><p class="">Occasionally the system records keyframes that capture internal state. These keyframes allow debugging tools to jump directly into a replay without requiring the entire execution history from the beginning of the log.</p><p class="">This mechanism helps maintain deterministic replay even when logs are incomplete or partially corrupted.</p><h2>Toward Reliable Autonomy</h2><p class="">Robotics will not become widespread simply because algorithms improve.</p><p class="">Reliable autonomy requires infrastructure that allows engineers to reproduce failures, understand system behavior, and iterate quickly on real-world deployments.</p><p class="">Copper explores one possible approach to this problem by combining deterministic replay, compile-time system generation, and data-oriented execution.</p><p class="">The project is open source and actively evolving as more real systems adopt it.</p>]]></content:encoded><media:content type="image/png" url="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1773068843282-6PE5WDLPJMTZ494F2J5W/TN.png?format=1500w" medium="image" isDefault="true" width="1280" height="720"><media:title type="plain">What are we solving for with copper-rs?</media:title></media:content></item><item><title>copper-rs v0.13: Unlock Full Observability</title><dc:creator>Guillaume Binet</dc:creator><pubDate>Tue, 17 Feb 2026 21:53:30 +0000</pubDate><link>https://www.copper-robotics.com/whats-new/unlock-full-observability-with-copper-rs-v013</link><guid isPermaLink="false">66a02354cb746f3329f82ce8:66a3b0efebda816b9f2d4095:69947a769285d9492d0f647b</guid><description><![CDATA[This is release 0.13 of Copper with a bunch of new observability features.]]></description><content:encoded><![CDATA[<p class="">Copper-rs is a fully deterministic operating system for robotics, but while the OS side of it is neat, we are now also making strides with the offline robotics API &amp; tooling.  </p><p data-rte-preserve-empty="true" class=""></p><h4><strong>Observability with the remote deterministic debug/replay API </strong></h4><p class="">We added a full <strong>observability API with deterministic replay</strong>: see below our Copper time traveler debugger prototype based on this API so it is easier to see visually. Either some local tooling like this one can <strong>play and replay deterministically 2 versions</strong> of your application and do <strong>visual A/B comparisons</strong> of your algorithmic change or imagine that at scale on a <strong>CI/CD remote controlling the replay over aggregated cut logs</strong>.</p>


  


  








  
    
      

        

        
          
            
              <img class="thumb-image" elementtiming="system-gallery-block-slider" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1771339423406-FBVB4GUDGTYA1LKJZPBI/Copper+Timetraveller.jpg" data-image-dimensions="2354x1393" data-image-focal-point="0.5,0.5" alt="Copper Timetraveller.jpg" data-load="false" data-image-id="69947e9f01542033f5099dc1" data-type="image" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1771339423406-FBVB4GUDGTYA1LKJZPBI/Copper+Timetraveller.jpg?format=1000w" /><br>
            
          
          
        

        

      

        

        
          
            
              <img class="thumb-image" elementtiming="system-gallery-block-slider" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1771339437789-ADTOPA9LNXGXC4J0ZXSX/Copper+Timetraveller+proto.jpg" data-image-dimensions="2354x1393" data-image-focal-point="0.5,0.5" alt="Copper Timetraveller proto.jpg" data-load="false" data-image-id="69947ead76b1741e804aac54" data-type="image" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1771339437789-ADTOPA9LNXGXC4J0ZXSX/Copper+Timetraveller+proto.jpg?format=1000w" /><br>
            
          
          
        

        

      
    
  

  








  
  


  
  <p class="">Copper can <strong>speak with your units, including validating of you are mixing apples and oranges in your code at compile time</strong>. We created a new cu29-units crate so you can painlessly use units types that are fully integrated with copper's serialization and reflection!</p>


  


  



<pre><code class="language-rust">use cu29::units::si::acceleration::meter_per_second_squared;
use cu29::units::si::angular_velocity::radian_per_second;
use cu29::units::si::f32::{
    Acceleration, AngularVelocity, MagneticFluxDensity, ThermodynamicTemperature,
};
use cu29::units::si::magnetic_flux_density::microtesla;
use cu29::units::si::thermodynamic_temperature::degree_celsius;
use serde::{Deserialize, Serialize};

/// Standardized IMU payload carrying acceleration, angular velocity, and optional magnetometer data.
#[derive(Clone, Copy, Debug, PartialEq, Serialize, Deserialize, Encode, Decode, Reflect)]
pub struct ImuPayload {
    pub accel_x: Acceleration,
    pub accel_y: Acceleration,
    pub accel_z: Acceleration,
    pub gyro_x: AngularVelocity,
    pub gyro_y: AngularVelocity,
    pub gyro_z: AngularVelocity,
    pub temperature: ThermodynamicTemperature,
}</code></pre>


  
  <h4><strong>Log visualization</strong></h4><p class=""><br>we also added a simple log visualizer that can spawn rerun on recorded data from a standard copper log called cu29-logviz (instead of having to record <strong>with</strong> rerun). We started to build a compatibility layer between the Copper standard types and rerun so automagically you have the right type of visualization for your component. Thanks to Yang Zhou (NYU) for this amazing contribution! </p>


  


  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/020e2b59-1d8c-4c80-9d08-67d0704081f1/Copper+rerun+logs.png" data-image-dimensions="2103x1399" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/020e2b59-1d8c-4c80-9d08-67d0704081f1/Copper+rerun+logs.png?format=1000w" width="2103" height="1399" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/020e2b59-1d8c-4c80-9d08-67d0704081f1/Copper+rerun+logs.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/020e2b59-1d8c-4c80-9d08-67d0704081f1/Copper+rerun+logs.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/020e2b59-1d8c-4c80-9d08-67d0704081f1/Copper+rerun+logs.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/020e2b59-1d8c-4c80-9d08-67d0704081f1/Copper+rerun+logs.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/020e2b59-1d8c-4c80-9d08-67d0704081f1/Copper+rerun+logs.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/020e2b59-1d8c-4c80-9d08-67d0704081f1/Copper+rerun+logs.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/020e2b59-1d8c-4c80-9d08-67d0704081f1/Copper+rerun+logs.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
          
          <figcaption class="image-caption-wrapper">
            <p data-rte-preserve-empty="true">Rerun replaying a Copper log instead of a Rerun log</p>
          </figcaption>
        
      
        </figure>
      

    
  


  



  
  <h4><br><strong>Centralized Linux/std resources</strong></h4><p class="">Copper started to use a new concept of resources ie. for example which serial port do you want to dedicate for which bridge in copper, a kind of HAL system so your tasks can run anywhere. It was limited to embedded devices but now get generalized to Linux! So you can all of the sudden start using an RC controller on linux or FPV goggles or GPSes.</p><p class="">This cement copper as an operating system that is completely uniform between running as a process or running baremetal on microcontrollers. Thanks again to Yang Zhou for this one!!</p>


  


  














































  

    

      <figure data-test="image-block-v2-outer-wrapper" class="
            sqs-block-image-figure
            image-block-outer-wrapper
            image-block-v2
            design-layout-card
            combination-animation-site-default
            individual-animation-site-default
            individual-text-animation-site-default
            image-position-left
            
          " data-scrolled
      >

        
          
            
            
              
              
              
              
              
              
              
              <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/e6b24c34-4fcf-4e9b-9b43-992c8b18b199/resources.png" data-image-dimensions="768x617" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/e6b24c34-4fcf-4e9b-9b43-992c8b18b199/resources.png?format=1000w" width="768" height="617" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/e6b24c34-4fcf-4e9b-9b43-992c8b18b199/resources.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/e6b24c34-4fcf-4e9b-9b43-992c8b18b199/resources.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/e6b24c34-4fcf-4e9b-9b43-992c8b18b199/resources.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/e6b24c34-4fcf-4e9b-9b43-992c8b18b199/resources.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/e6b24c34-4fcf-4e9b-9b43-992c8b18b199/resources.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/e6b24c34-4fcf-4e9b-9b43-992c8b18b199/resources.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/e6b24c34-4fcf-4e9b-9b43-992c8b18b199/resources.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

              
            
          
            
          

        

        
          
          <figcaption data-width-ratio class="image-card-wrapper">
            

              
                <p class="">Resource mapping are now available on linux too!</p>
              

              

              

            
          </figcaption>
        

      </figure>

    

  



  
  <h4><br>Standardized GNSS payload, and ublox compatiblity.</h4><p class="">ublox has an advance cross-constellation API now that we fully map into standard Copper messages. This unlocks very cheap GPS devices and a lot of advanced functions.</p>


  


  


































  <svg width="0" data-image-mask-id="yui_3_17_2_1_1771338358982_37487" height="0">
    <defs>
      <clipPath clipPathUnits="objectBoundingBox" id="yui_3_17_2_1_1771338358982_37487">
        

        

        

        
          <path d="M0,0.5 A0.5 0.5, 0 0 1, 1 0.5 M1,0.5 A0.5 0.5, 0 0 1, 0 0.5 Z">
        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        
      </clipPath>
    </defs>
  </svg>













  

    

      <figure data-test="image-block-v2-outer-wrapper" class="
            sqs-block-image-figure
            image-block-outer-wrapper
            image-block-v2
            design-layout-overlap
            combination-animation-site-default
            individual-animation-site-default
            individual-text-animation-site-default
            image-position-left
            
          " data-scrolled
      >

        
          
            
            
              
              
              
              
              
              
              
              <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/c7482a64-f82a-462c-8a83-b2ca24ebec34/NewBeeDrone-M10Q-Micro-GPS-Module-with-Compass-NewBeeDrone-52650034_800x.webp" data-image-dimensions="800x800" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/c7482a64-f82a-462c-8a83-b2ca24ebec34/NewBeeDrone-M10Q-Micro-GPS-Module-with-Compass-NewBeeDrone-52650034_800x.webp?format=1000w" width="800" height="800" sizes="(max-width: 640px) 100vw, (max-width: 767px) 50vw, 50vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/c7482a64-f82a-462c-8a83-b2ca24ebec34/NewBeeDrone-M10Q-Micro-GPS-Module-with-Compass-NewBeeDrone-52650034_800x.webp?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/c7482a64-f82a-462c-8a83-b2ca24ebec34/NewBeeDrone-M10Q-Micro-GPS-Module-with-Compass-NewBeeDrone-52650034_800x.webp?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/c7482a64-f82a-462c-8a83-b2ca24ebec34/NewBeeDrone-M10Q-Micro-GPS-Module-with-Compass-NewBeeDrone-52650034_800x.webp?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/c7482a64-f82a-462c-8a83-b2ca24ebec34/NewBeeDrone-M10Q-Micro-GPS-Module-with-Compass-NewBeeDrone-52650034_800x.webp?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/c7482a64-f82a-462c-8a83-b2ca24ebec34/NewBeeDrone-M10Q-Micro-GPS-Module-with-Compass-NewBeeDrone-52650034_800x.webp?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/c7482a64-f82a-462c-8a83-b2ca24ebec34/NewBeeDrone-M10Q-Micro-GPS-Module-with-Compass-NewBeeDrone-52650034_800x.webp?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/c7482a64-f82a-462c-8a83-b2ca24ebec34/NewBeeDrone-M10Q-Micro-GPS-Module-with-Compass-NewBeeDrone-52650034_800x.webp?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

              
            
          
            
          

        

        
          
          <figcaption data-width-ratio class="image-card-wrapper">
            

              

              
                <p class="">This small but might ublox M10Q GPS  is now fully supported by Copper but any other protocol 34+ device is now compatible.</p>
              

              

            
          </figcaption>
        

      </figure>

    

  













































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/2d6b41ed-6216-4f70-82ef-cb6d15afc1dd/679dc60588bb741fd81cad5e_drone-mapping.jpg" data-image-dimensions="999x500" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/2d6b41ed-6216-4f70-82ef-cb6d15afc1dd/679dc60588bb741fd81cad5e_drone-mapping.jpg?format=1000w" width="999" height="500" sizes="(max-width: 640px) 100vw, (max-width: 767px) 50vw, 50vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/2d6b41ed-6216-4f70-82ef-cb6d15afc1dd/679dc60588bb741fd81cad5e_drone-mapping.jpg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/2d6b41ed-6216-4f70-82ef-cb6d15afc1dd/679dc60588bb741fd81cad5e_drone-mapping.jpg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/2d6b41ed-6216-4f70-82ef-cb6d15afc1dd/679dc60588bb741fd81cad5e_drone-mapping.jpg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/2d6b41ed-6216-4f70-82ef-cb6d15afc1dd/679dc60588bb741fd81cad5e_drone-mapping.jpg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/2d6b41ed-6216-4f70-82ef-cb6d15afc1dd/679dc60588bb741fd81cad5e_drone-mapping.jpg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/2d6b41ed-6216-4f70-82ef-cb6d15afc1dd/679dc60588bb741fd81cad5e_drone-mapping.jpg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/2d6b41ed-6216-4f70-82ef-cb6d15afc1dd/679dc60588bb741fd81cad5e_drone-mapping.jpg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
          
          <figcaption class="image-caption-wrapper">
            <p data-rte-preserve-empty="true">Drone mapping illustration</p>
          </figcaption>
        
      
        </figure>
      

    
  


  



  
  <p class="">And a bunch of<a href="https://github.com/copper-project/copper-rs/wiki/Copper-Release-Notes#v0130---2026-02-13" target="_blank"> smaller improvements and bug fixes</a>… take it while it is hot! <br></p><p class=""><br><br><br></p><p class=""><br><br><br><br></p><p class=""><br><br><br><br></p>]]></content:encoded><media:content type="image/png" url="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1771358177594-NWE3L7TTLM0QAJ4S7PBF/observability.png?format=1500w" medium="image" isDefault="true" width="186" height="131"><media:title type="plain">copper-rs v0.13: Unlock Full Observability</media:title></media:content></item><item><title>Copper Robotics Selected for Pilot Deployment at Tolle Labs</title><dc:creator>Guillaume Binet</dc:creator><pubDate>Mon, 16 Feb 2026 14:05:52 +0000</pubDate><link>https://www.copper-robotics.com/whats-new/copper-selected-for-pilot-deployment-at-tolle-labs</link><guid isPermaLink="false">66a02354cb746f3329f82ce8:66a3b0efebda816b9f2d4095:699081d1a92b0464100990d8</guid><description><![CDATA[Copper Robotics has been selected by Tolle Labs for a pilot deployment 
within its autonomy-first aerial robotics stack. The engagement, will 
integrate Copper Robotics’ deterministic runtime into Tolle’s flight and 
autonomy systems for real-world evaluation.]]></description><content:encoded><![CDATA[<figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/90605eca-7e78-42f5-a74d-c2b380737019/tolle.png" data-image-dimensions="1024x1024" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/90605eca-7e78-42f5-a74d-c2b380737019/tolle.png?format=1000w" width="1024" height="1024" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/90605eca-7e78-42f5-a74d-c2b380737019/tolle.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/90605eca-7e78-42f5-a74d-c2b380737019/tolle.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/90605eca-7e78-42f5-a74d-c2b380737019/tolle.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/90605eca-7e78-42f5-a74d-c2b380737019/tolle.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/90605eca-7e78-42f5-a74d-c2b380737019/tolle.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/90605eca-7e78-42f5-a74d-c2b380737019/tolle.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/90605eca-7e78-42f5-a74d-c2b380737019/tolle.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
          
          <figcaption class="image-caption-wrapper">
            <p data-rte-preserve-empty="true">Drone from Tolle Labs</p>
          </figcaption>
        
      
        </figure>
      

    
  


  



  
  <p class="">As robotics systems scale, particularly in high-reliability sectors, execution and determinism becomes foundational. We’re excited to collaborate with <a href="https://tolle.in" target="_blank">Tolle Labs</a> to bring Copper Robotics’ deep experience in scalable robotics execution into their stack and advance the development of robust Physical AI systems</p><p class="">Tolle Labs builds autonomy-first aerial robotics systems serving critical verticals such as construction, defense, and gaming &amp; simulation environments. The company integrates AI, computer vision, and advanced flight control into field-deployable unmanned systems engineered for precision, reliability, and mission adaptability. Alongside its application-layer innovations, Tolle develops core flight-control technologies such as Airavat : a high-performance autopilot designed for robust, multi-vehicle operations.</p><p class="">Through this collaboration, Copper Robotics will work closely with the Tolle team to integrate copper-rs, our deterministic, Rust-native runtime into their active autonomy stack. The pilot will evaluate execution predictability, latency control, system observability, and integration efficiency under real-world operational constraints.</p><p class="">Copper Robotics is already deployed across multiple robotics platforms, and this engagement extends our execution layer into a production-oriented aerial autonomy environment. Together, we aim to demonstrate how deterministic runtime infrastructure can streamline increasingly complex autonomy systems while maintaining strict control over system behavior.</p><p class="">We look forward to sharing more updates as the pilot progresses.</p>]]></content:encoded><media:content type="image/png" url="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1771080126202-T6BLW06632T4O50THR34/Tolle+collab.png?format=1500w" medium="image" isDefault="true" width="1500" height="1000"><media:title type="plain">Copper Robotics Selected for Pilot Deployment at Tolle Labs</media:title></media:content></item><item><title>Inside Copper: A Full Video Walkthrough + New Features</title><dc:creator>Guillaume Binet</dc:creator><pubDate>Mon, 26 Jan 2026 17:43:49 +0000</pubDate><link>https://www.copper-robotics.com/whats-new/copper-v012</link><guid isPermaLink="false">66a02354cb746f3329f82ce8:66a3b0efebda816b9f2d4095:696913f87706f41e566d3ed3</guid><description><![CDATA[This is a full tour of Copper targeted at new comers but also current users 
curious about what is in v0.12 and upcoming v0.13]]></description><content:encoded><![CDATA[<p class="">In this video, we take a fast but deep tour of Copper, a deterministic robotics runtime written in Rust.</p><p class="">This walkthrough is designed for newcomers who want a clear mental model of what Copper is and why it exists but also existing Copper users who want to discover the latest features, marked as New in the timeline.</p><p class="">We cover the core concepts behind Copper by showing real tooling, real workflows, and real systems. From observability and determinism to AI inference, embedded development, and distributed execution.</p><p class="">We will touch on: </p><ul data-rte-list="default"><li><p class=""><a href="https://www.youtube.com/watch?v=58UYNb27AlM&amp;t=73s" target="_blank"><strong>ConsoleMon</strong></a>, Copper’s TUI monitor - <strong>New</strong>: refreshed look and bandwidth pane</p></li><li><p class=""><a href="https://www.youtube.com/watch?v=58UYNb27AlM&amp;t=580s" target="_blank"><strong>Offline config viewer</strong></a> and DAG visualization - <strong>New</strong>: updated visuals</p></li><li><p class=""><a href="https://www.youtube.com/watch?v=58UYNb27AlM&amp;t=818s" target="_blank"><strong>New</strong></a>: DAG statistics combining structure with runtime performance</p></li><li><p class=""><a href="https://www.youtube.com/watch?v=58UYNb27AlM&amp;t=902s" target="_blank"><strong>New</strong></a>: Exporting logs to the <strong>MCAP</strong> format</p></li><li><p class=""><a href="https://www.youtube.com/watch?v=58UYNb27AlM&amp;t=1000s" target="_blank"><strong>New</strong></a>: Visualizing Copper logs in <strong>Foxglove</strong></p></li><li><p class=""><a href="https://www.youtube.com/watch?v=58UYNb27AlM&amp;t=1058s" target="_blank"><strong>Determinism</strong></a> in Copper: Why it matters and how we can actually prove it</p></li><li><p class=""><a href="https://www.youtube.com/watch?v=58UYNb27AlM&amp;t=1354s" target="_blank"><strong>New</strong></a>: AI and ML inference with <strong>HuggingFace</strong> </p></li><li><p class=""><a href="https://www.youtube.com/watch?v=58UYNb27AlM&amp;t=1354s" target="_blank">Live visualization using <strong>Rerun</strong></a></p></li><li><p class=""><a href="https://www.youtube.com/watch?v=58UYNb27AlM&amp;t=1538s" target="_blank"><strong>Embedded</strong></a> and bare metal development - Flight controller example</p></li><li><p class=""><a href="https://www.youtube.com/watch?v=58UYNb27AlM&amp;t=1620s" target="_blank"><strong>Missions</strong></a> - Quick overview using the flight controller</p></li><li><p class=""><a href="https://www.youtube.com/watch?v=58UYNb27AlM&amp;t=1779s" target="_blank"><strong>New: Resource bundles</strong></a> - What problem they solve and how they work</p></li><li><p class=""><a href="https://www.youtube.com/watch?v=58UYNb27AlM&amp;t=1914s" target="_blank">Multiprocessing</a> and <strong>distributed</strong> <strong>Copper</strong> - New, kind of: <strong>Zenoh</strong> bridge</p></li></ul><p class="">Feel free to use the index to jump to the parts that matters to you.</p><p data-rte-preserve-empty="true" class=""></p><p data-rte-preserve-empty="true" class=""></p>]]></content:encoded><media:content type="image/png" url="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1769378162062-W7KN6JIXWQDPZOSE2UJ8/Screenshot_20260125_155524.png?format=1500w" medium="image" isDefault="true" width="296" height="214"><media:title type="plain">Inside Copper: A Full Video Walkthrough + New Features</media:title></media:content></item><item><title>Built from First Principles: Why copper-rs works so well building robots with AI coding systems</title><dc:creator>Guillaume Binet</dc:creator><pubDate>Mon, 12 Jan 2026 19:26:00 +0000</pubDate><link>https://www.copper-robotics.com/whats-new/built-from-first-principles-why-copper-rs-works-so-well-building-robots-with-ai-coding-systems</link><guid isPermaLink="false">66a02354cb746f3329f82ce8:66a3b0efebda816b9f2d4095:6963bb3e0a5de87adbe234e7</guid><description><![CDATA[When large language models first met Copper, the result was chaos. Without 
clear structure, constraints, or precedents, AI-assisted coding collapsed 
into spaghetti. But as Copper’s first-principles foundations took shape: 
determinism, observability, and zero-cost modularity, the dynamic flipped. 
This article explores why disciplined systems don’t just survive LLMs, but 
quietly turn them into useful tools for building real robots.]]></description><content:encoded><![CDATA[<p class="">When I first tried LLMs on the <a href="https://github.com/copper-project/copper-rs" target="_blank">Copper</a> code base itself, I have to admit it was an unmitigated disaster: Copper is a new way of thinking about what a runtime for robotics is, codex or copilot had absolutely no idea where I wanted to go, no examples to base themselves on and the more I tried to prompt my way out of this, the more spaghetti code it produced.</p><p class="">It almost made me a full on AI assisted coding skeptic.  But as I was developing a new set of components on top of Copper for making a good platform to build drones on, it completely blew my mind, here is my analysis of why…</p><h4>Good, principled Engineering will never go away.</h4><p class=""><strong>Determinism and observability have always been the #1 non negotiable feature of Copper</strong></p>


  


  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/32971742-b419-46be-8d22-5b7beb9c22b9/FC+right.png" data-image-dimensions="1683x1406" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/32971742-b419-46be-8d22-5b7beb9c22b9/FC+right.png?format=1000w" width="1683" height="1406" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/32971742-b419-46be-8d22-5b7beb9c22b9/FC+right.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/32971742-b419-46be-8d22-5b7beb9c22b9/FC+right.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/32971742-b419-46be-8d22-5b7beb9c22b9/FC+right.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/32971742-b419-46be-8d22-5b7beb9c22b9/FC+right.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/32971742-b419-46be-8d22-5b7beb9c22b9/FC+right.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/32971742-b419-46be-8d22-5b7beb9c22b9/FC+right.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/32971742-b419-46be-8d22-5b7beb9c22b9/FC+right.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
          
          <figcaption class="image-caption-wrapper">
            <p data-rte-preserve-empty="true">Copper can generate SVG diagrams of the structure of your robot. Here is the actuation part of our flight controller example.</p>
          </figcaption>
        
      
        </figure>
      

    
  


  



  
  <ul data-rte-list="default"><li><p class="">For roboticists productivity: I have a saying that “<em>if a bug is reproducible, it is already dead”.</em> Most robotics frameworks including ROS do not guarantee deterministic replay so you won’t have any guarantee that you can reproduce a bug.</p></li></ul><ul data-rte-list="default"><li><p class="">As a proof of safety: To use a dataset as a proof of safety in your safety case: it is easier if 1. you can prove that your robot always runs the same way out of the same data and 2. if you prove that your data coverage is good enough for your problem space. Proving that your robot safe like this is the only way you have if you integrate complex ML inference in your architecture.</p><p data-rte-preserve-empty="true" class=""></p></li></ul><p class=""><strong>Zero performance cost modularity</strong></p><ul data-rte-list="default"><li><p class="">Robots are complex and already very untangled between physics, EE, OS, algorithms, you have unpredictable side effects. If you untangle also your robot code you are in for a very bad experience.</p></li><li><p class="">Robotics frameworks usually use a variant of microservice architecture to isolate pieces of the code from the rest of the system. But doing so usually adds a ton of overhead.</p></li><li><p class="">Instead of letting the system be randomly driven by an OS, Copper uses the same principle with that modular structure but uses it to basically build an OS around it!</p></li><li><p class="">This allows copper to optimize end to end your robot at compile time to squeeze everything possible from your underlying hardware.</p></li></ul><p class="">It allows you to build smaller, more testable and discrete modules because that has virtually no execution overhead!</p><p data-rte-preserve-empty="true" class=""></p><p class=""><strong>Copper is built on Rust with Rust and for the good reasons.</strong></p>


  


  



<figure class="block-animation-fade-in"
>
  <blockquote data-animation-role="quote" data-animation-override>
    <span>“</span>If a bug is reproducible, it is already dead.<span>”</span>
  </blockquote>
  <figcaption class="source">&mdash; gbin</figcaption>
  
  
</figure>
  
  <p class="">Robots needs to be close system programming, see the 2 points I made earlier but when you ask non system programming specialists to produce performent algorithms with C++, you end up chasing undefined behavior in safety critical code all the time. As robots will get more useful being closer and closer to people, killing in the egg any stack and memory corruptions instead of discovering them maybe with some magic linter, worse on CI and even worse on the robot itself is a no brainer.</p><h4>Copper 😼 &amp; Rust 🦀 as a containment for LLM entropy</h4><p class="">LLM has the tendency to produce too much code and locally fix things, this generates a bunch of spaghetti code if let loose across a large piece of code.</p><p class="">Copper has some very precise semantics about what a Task is with a very clear execution &amp; memory model for anyone implementing them. Copper in debug mode can also monitor for the general realtimeness of the tasks with a custom memory allocator catching allocations made at the wrong moments and RTSAN. </p><p class="">Unit tests can emulate one cycle of the execution very easily so your small components by design can be basically designed by unit tests.</p><p class="">Added to this the memory opinionated Rust, if you give those expected inputs &amp; outputs to your digital coding friend, it has almost no choice but to produce correct code.</p>


  


  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/30613d7a-2fb4-4b1f-ac44-7c125f21961a/PXL_20260111_150542445.jpg" data-image-dimensions="8160x6144" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/30613d7a-2fb4-4b1f-ac44-7c125f21961a/PXL_20260111_150542445.jpg?format=1000w" width="8160" height="6144" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/30613d7a-2fb4-4b1f-ac44-7c125f21961a/PXL_20260111_150542445.jpg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/30613d7a-2fb4-4b1f-ac44-7c125f21961a/PXL_20260111_150542445.jpg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/30613d7a-2fb4-4b1f-ac44-7c125f21961a/PXL_20260111_150542445.jpg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/30613d7a-2fb4-4b1f-ac44-7c125f21961a/PXL_20260111_150542445.jpg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/30613d7a-2fb4-4b1f-ac44-7c125f21961a/PXL_20260111_150542445.jpg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/30613d7a-2fb4-4b1f-ac44-7c125f21961a/PXL_20260111_150542445.jpg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/30613d7a-2fb4-4b1f-ac44-7c125f21961a/PXL_20260111_150542445.jpg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
          
          <figcaption class="image-caption-wrapper">
            <p data-rte-preserve-empty="true">Codex deploying and testing directly on the target hardware</p>
          </figcaption>
        
      
        </figure>
      

    
  


  



  
  <h4>LLMs excel at plagiarizing &amp; translating so feed them with good examples!</h4><p class="">With the structured nature of the tasks, natural patterns emerges, having built a set of task examples for any types helped a lot, you see the LLM catching patterns like forgetting less and less to deal with the Time Of Validity of the sensor data for example.</p><h4>LLMs don’t work with a reliable feedback loop</h4><p class="">LLM loves to hallucinate and if you don’t ask them to verify their work they will definitely take the easy route and say: “done boss! happy boss?” without even compiling their code! It is critical to rub their mistakes to their nose.</p><p class="">With Copper it is easy to make the AI coding agent start the robot in a simulation, log that deterministically then have the agent extract the logs (in JSON) and have them check the results with tools like jq to pinpoint any issues.</p><p class="">Same thing with actual logs from the real world, import them and ask you LLM to find the defect and work with it toward resolving it and extracting the step for deterministic reproduction is trivial.</p><p class=""><br><br><br><br><br></p>


  


  



<p data-rte-preserve-empty="true">After a little bit of PID tuning this BMI088 basically worked flawlessly, here is its first flight</p>
  
  <h4>cu-bmi088: a fully AI coded component with Copper, implemented in one shot with Codex</h4><p class="">The BMI088 is a kind of a classic IMU you can find it all types of robots, the context here is  a flight controller for a quad copter</p><p class="">What was given as input: </p><ul data-rte-list="default"><li><p class="">a working example of another IMU (the <a href="https://github.com/copper-project/copper-rs/blob/master/components/sources/cu_mpu9250/src/lib.rs" target="_blank">mpu9250</a>)</p></li><li><p class="">the <a href="https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bmi088-ds001.pdf" target="_blank">datasheet of the bmi088</a></p></li><li><p class="">the expected output in the form of a<a href="https://github.com/copper-project/copper-rs/blob/master/components/payloads/cu_sensor_payloads/src/imu.rs" target="_blank"> message expecting SI units</a> </p></li><li><p class="">a <a href="https://github.com/copper-project/copper-rs/blob/master/components/res/cu_micoairh743/src/lib.rs#L270" target="_blank">set of resources</a> (this is a new type of component in Copper to expose hw and various system resources)</p></li></ul><p class=""><br></p><p class=""><br><br></p><h4>What this says about the future</h4>


  


  



<p data-rte-preserve-empty="true">FPV of Copper passing its first (very sketchy) powerloop</p>
  
  <p class="">Large language models don’t change what makes systems robust. They don’t relax constraints, and they don’t replace discipline. If anything, they do the opposite: they amplify the consequences of whatever engineering choices were already present. In systems built on loose assumptions, implicit state, and weak boundaries, LLMs accelerate entropy. In systems built from first principles, they are forced to operate within real limits.</p><p class="">This is why the question is not whether LLMs will become better at writing code for robots, but whether our systems are structured well enough to tolerate probabilistic contributors at all. Determinism, decomposition, and enforceable invariants are not legacy ideas; they are the only way to keep feedback meaningful when behavior is no longer authored line-by-line by a human.</p><p class=""><strong>First-principles systems age well precisely because they constrain entropy. They make change observable, regressions attributable, and corrections local. This is critical in robotics, a discipline already riddled with externalities. That was true before LLMs existed, and it remains true now.</strong> <strong>Copper was not designed with LLMs in mind; it was designed to make complex systems observable, deterministic, and constrained.</strong> As a result, LLMs can be used without destabilizing the system, with their usefulness emerging as a side effect of those foundations rather than the reason they exist.</p>


  


  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/10fbb7e2-945b-483e-afc8-67a913f07191/PXL_20260110_152602696.jpg" data-image-dimensions="8160x6144" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/10fbb7e2-945b-483e-afc8-67a913f07191/PXL_20260110_152602696.jpg?format=1000w" width="8160" height="6144" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/10fbb7e2-945b-483e-afc8-67a913f07191/PXL_20260110_152602696.jpg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/10fbb7e2-945b-483e-afc8-67a913f07191/PXL_20260110_152602696.jpg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/10fbb7e2-945b-483e-afc8-67a913f07191/PXL_20260110_152602696.jpg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/10fbb7e2-945b-483e-afc8-67a913f07191/PXL_20260110_152602696.jpg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/10fbb7e2-945b-483e-afc8-67a913f07191/PXL_20260110_152602696.jpg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/10fbb7e2-945b-483e-afc8-67a913f07191/PXL_20260110_152602696.jpg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/10fbb7e2-945b-483e-afc8-67a913f07191/PXL_20260110_152602696.jpg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
          
          <figcaption class="image-caption-wrapper">
            <p data-rte-preserve-empty="true">Happy Coding with Copper</p>
          </figcaption>
        
      
        </figure>
      

    
  


  



  
  <p class="">If you like what we are doing, <a href="https://github.com/copper-project/copper-rs" target="_blank">please drop a star our repo on Github</a>, you also want to test out Copper on your project <a href="https://discord.com/invite/VkCG7Sb9Kw" target="_blank">join us on discord</a>, we can help! </p><p class="">We also have a bunch of tutorials on our <a href="https://www.youtube.com/@CopperRobotics" target="_blank">Youtube Channel </a>to help you started.</p>]]></content:encoded><media:content type="image/jpeg" url="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1768154452067-I8IONRLP8AG3D6SJA1EG/PXL_20260110_025252359.jpg?format=1500w" medium="image" isDefault="true" width="1500" height="1129"><media:title type="plain">Built from First Principles: Why copper-rs works so well building robots with AI coding systems</media:title></media:content></item><item><title>Copper v0.11: Bridges and an MVP SDK for robotics-first flight controllers.</title><dc:creator>Guillaume Binet</dc:creator><pubDate>Tue, 02 Dec 2025 21:25:50 +0000</pubDate><link>https://www.copper-robotics.com/whats-new/copper-v011-bridges-and-an-mvp-sdk-for-robotics-first-flight-controllers</link><guid isPermaLink="false">66a02354cb746f3329f82ce8:66a3b0efebda816b9f2d4095:69272ce0c677050d7d85427d</guid><description><![CDATA[Copper v0.11 introduces Bridges—a unified, multi-channel I/O system for 
UART, CAN, ELRS, ESC buses, and more—and delivers the first MVP SDK for 
building a fully Rust, deterministic, robotics-first flight controller. 
This release brings typed multi-channel dispatch, graph-level 
visualization, and TUI monitoring, plus end-to-end support for ELRS/CRSF 
radio links, bidirectional DSHOT300 on the RP2350, MSP in no_std, and 
portable PID loops that run identically on Linux and MCUs. Together these 
components form the core of a Copper-native flight controller, alongside 
upgrades to monitoring, missions, structured logging, embedded CI, and 
numerous fixes. Copper is rapidly evolving into a unified robotics runtime 
that scales from devkits to real hardware across air, ground, water, and 
space.]]></description><content:encoded><![CDATA[<p class=""><a href="https://github.com/copper-project/copper-rs?tab=readme-ov-file#--copper-runtime--sdk" target="_blank"><strong>Copper</strong></a><strong> 0.11</strong> is one of our most important releases so far. It introduces a new class of components called <strong>Bridges</strong> and delivers the minimum viable <strong>SDK for building a Copper-native flight controller</strong>. Flight controllers are only the first low-hanging fruit for Copper. <strong>Many other robotics domains are coming next.</strong></p><p class="">This release moves Copper closer to its long-term goal: a single deterministic robotics runtime that runs on workstations, on embedded microcontrollers, on real robots, and inside simulators. The target is robotics that operates on the ground, in the air, on the water, and eventually in space.</p><p class="">Below is what’s new.</p><h2>Bridges: Multi-Channel I/O</h2>


  


  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/227437cf-7618-4006-8840-9e421cf52fb0/new+connectors.png" data-image-dimensions="1087x469" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/227437cf-7618-4006-8840-9e421cf52fb0/new+connectors.png?format=1000w" width="1087" height="469" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/227437cf-7618-4006-8840-9e421cf52fb0/new+connectors.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/227437cf-7618-4006-8840-9e421cf52fb0/new+connectors.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/227437cf-7618-4006-8840-9e421cf52fb0/new+connectors.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/227437cf-7618-4006-8840-9e421cf52fb0/new+connectors.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/227437cf-7618-4006-8840-9e421cf52fb0/new+connectors.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/227437cf-7618-4006-8840-9e421cf52fb0/new+connectors.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/227437cf-7618-4006-8840-9e421cf52fb0/new+connectors.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
          
          <figcaption class="image-caption-wrapper">
            <p data-rte-preserve-empty="true">New multiconnectors routing in the Copper monitoring for the bridges</p>
          </figcaption>
        
      
        </figure>
      

    
  


  



  
  <p class="">Bridges generalize what used to be separate “sources” and “sinks” into a single logical unit that owns one or more channels (UART, CAN, ELRS radios, ESC buses…).</p><p class="">They let tasks in Copper operate over real transports declaratively, while sharing resources like serial ports safely across crates.</p><p class="">With 0.11, Bridges land end-to-end:</p><ul data-rte-list="default"><li><p class=""><strong>Config parsing</strong> for typed Tx/Rx channel sets</p></li><li><p class=""><strong>Runtime scheduling</strong> that handles multi-channel dispatch</p></li><li><p class=""><strong>Graph APIs</strong> that visualize bridges as first-class components in missions</p></li><li><p class=""><strong>Monitoring</strong> that renders those channels directly in the TUI DAG and matches the DOT export exactly</p></li></ul><p class="">For users, this means you can build complex robot I/O pipelines without writing glue code. For us, it’s the core of how Copper will handle multi-sensor, multi-bus robots going forward.</p><h2>A Copper-Native Flight Controller (MVP)</h2><p class="">A flight controller is a perfect target for showcasing Copper’s determinism and low-latency scheduling.</p><p class="">We’re waiting on new rp2350-based FC boards for live flight tests, but the full stack already runs beautifully on our devkit, including SD-card logging and deterministic replay!</p><h3>ELRS/CRSF Radio Link (host + firmware)</h3><p class="">Our CRSF/ELRS bridge works in both environments. RC commands flow into Copper tasks, and telemetry (LQ, battery, failsafe) flows back through the radio link.</p>


  


  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/cde0a79a-b12c-4980-9077-25ee175d4017/radiomaster.webp" data-image-dimensions="1080x450" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/cde0a79a-b12c-4980-9077-25ee175d4017/radiomaster.webp?format=1000w" width="1080" height="450" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/cde0a79a-b12c-4980-9077-25ee175d4017/radiomaster.webp?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/cde0a79a-b12c-4980-9077-25ee175d4017/radiomaster.webp?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/cde0a79a-b12c-4980-9077-25ee175d4017/radiomaster.webp?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/cde0a79a-b12c-4980-9077-25ee175d4017/radiomaster.webp?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/cde0a79a-b12c-4980-9077-25ee175d4017/radiomaster.webp?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/cde0a79a-b12c-4980-9077-25ee175d4017/radiomaster.webp?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/cde0a79a-b12c-4980-9077-25ee175d4017/radiomaster.webp?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
          
          <figcaption class="image-caption-wrapper">
            <p data-rte-preserve-empty="true">ELRS makes Copper compatible with a plethora of cheap and good quality remotes! (Here the TX15 from Radiomaster you can see in action below) </p>
          </figcaption>
        
      
        </figure>
      

    
  


  


<p data-rte-preserve-empty="true">Demo end to end ELRS → DSHOT running on our Copper Development Kit</p>
  
  <h3>Bidirectional DSHOT (RP2350)</h3><p class="">The RP2350 PIO implementation drives ESCs with DSHOT300 timings and decodes one-wire telemetry bursts. Bridges expose four static DSHOT channels into the task graph. </p><h3>MSP Everywhere (<code>no_std</code> + Bridge)</h3><p class="">MSP remains the lingua franca for Betaflight, Cleanflight, INAV, and countless tools.</p><p class="">We now support MSP in <strong>no_std</strong>, built atop the new embedded registry so multiple crates can safely share UART handles. Stream RC data, sensor packets, tuning commands without writing MSP plumbing.</p>


  


  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/9afccc77-aa6f-4848-992c-7bdab5814d91/Goggles+MSP.png" data-image-dimensions="1911x1073" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/9afccc77-aa6f-4848-992c-7bdab5814d91/Goggles+MSP.png?format=1000w" width="1911" height="1073" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/9afccc77-aa6f-4848-992c-7bdab5814d91/Goggles+MSP.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/9afccc77-aa6f-4848-992c-7bdab5814d91/Goggles+MSP.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/9afccc77-aa6f-4848-992c-7bdab5814d91/Goggles+MSP.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/9afccc77-aa6f-4848-992c-7bdab5814d91/Goggles+MSP.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/9afccc77-aa6f-4848-992c-7bdab5814d91/Goggles+MSP.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/9afccc77-aa6f-4848-992c-7bdab5814d91/Goggles+MSP.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/9afccc77-aa6f-4848-992c-7bdab5814d91/Goggles+MSP.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
          
          <figcaption class="image-caption-wrapper">
            <p data-rte-preserve-empty="true">For example: MSP is the protocol used for the FPV Systems to render all the attitude and flight parameters overlay you see in that picture </p>
          </figcaption>
        
      
        </figure>
      

    
  


  



  
  <h3>PID Control in Firmware</h3>


  


  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/ea698f76-e4c0-409d-a580-f684aa3d63a2/balancebot_dag.png" data-image-dimensions="2622x806" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/ea698f76-e4c0-409d-a580-f684aa3d63a2/balancebot_dag.png?format=1000w" width="2622" height="806" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/ea698f76-e4c0-409d-a580-f684aa3d63a2/balancebot_dag.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/ea698f76-e4c0-409d-a580-f684aa3d63a2/balancebot_dag.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/ea698f76-e4c0-409d-a580-f684aa3d63a2/balancebot_dag.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/ea698f76-e4c0-409d-a580-f684aa3d63a2/balancebot_dag.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/ea698f76-e4c0-409d-a580-f684aa3d63a2/balancebot_dag.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/ea698f76-e4c0-409d-a580-f684aa3d63a2/balancebot_dag.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/ea698f76-e4c0-409d-a580-f684aa3d63a2/balancebot_dag.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
          
          <figcaption class="image-caption-wrapper">
            <p data-rte-preserve-empty="true">The PID tasks in balance bot</p>
          </figcaption>
        
      
        </figure>
      

    
  


  



  
  <p class=""><code>cu_pid</code> now works in <code>no_std</code> and depends only on <code>alloc</code>.<br> The same PID loops you use on Linux now run unchanged on MCUs.</p><p class="sqsrte-large"><span class="sqsrte-text-color--custom"><strong>Taken together MSP + PID + CRSF + DSHOT: Copper now has the core of a flight controller, implemented entirely in Rust, end-to-end deterministic, and fully pluggable into the Copper task graph.</strong></span></p><p data-rte-preserve-empty="true" class=""></p><h2>Remote Operation &amp; Telemetry</h2><h3>ELRS/CRSF enables Remote Ops beyond just flying applications</h3><p class="">The radio link works identically for all kinds of robots on host or MCU.<br>This allows remote manual real time operations over ELRS (2.4GHz and 900Mhz).</p><p class="">We ship a demo (<code>cu_elrs_bdshot_demo</code>) showing ELRS + DSHOT working together.</p>


  


  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/327354a1-a04e-428f-9022-340fcaafa288/elrs-dshot-dag.png" data-image-dimensions="1308x438" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/327354a1-a04e-428f-9022-340fcaafa288/elrs-dshot-dag.png?format=1000w" width="1308" height="438" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/327354a1-a04e-428f-9022-340fcaafa288/elrs-dshot-dag.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/327354a1-a04e-428f-9022-340fcaafa288/elrs-dshot-dag.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/327354a1-a04e-428f-9022-340fcaafa288/elrs-dshot-dag.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/327354a1-a04e-428f-9022-340fcaafa288/elrs-dshot-dag.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/327354a1-a04e-428f-9022-340fcaafa288/elrs-dshot-dag.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/327354a1-a04e-428f-9022-340fcaafa288/elrs-dshot-dag.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/327354a1-a04e-428f-9022-340fcaafa288/elrs-dshot-dag.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
          
          <figcaption class="image-caption-wrapper">
            <p data-rte-preserve-empty="true"><strong>Picture of the DAG for the elrs demo showing 2 bridges: csrf and bdshot</strong></p>
          </figcaption>
        
      
        </figure>
      

    
  


  



  
  <h2>Tooling &amp; Monitoring Upgrades</h2><h3>Bridge-Aware Monitoring</h3><p class="">The console TUI now includes:</p><ul data-rte-list="default"><li><p class="">Direct rendering of bridge nodes in the DAG</p></li><li><p class="">Matching DOT export → live graph parity</p></li><li><p class="">More compact layouts</p></li><li><p class="">Patched <code>tui-nodes</code> tuned for multi-channel connectors </p></li><li><p class="">Cleaner merged connectors and better icons</p></li></ul>


  


  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/0f66c49d-605c-40e0-a6e4-87b702f47380/new+icons.png" data-image-dimensions="1856x454" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/0f66c49d-605c-40e0-a6e4-87b702f47380/new+icons.png?format=1000w" width="1856" height="454" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/0f66c49d-605c-40e0-a6e4-87b702f47380/new+icons.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/0f66c49d-605c-40e0-a6e4-87b702f47380/new+icons.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/0f66c49d-605c-40e0-a6e4-87b702f47380/new+icons.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/0f66c49d-605c-40e0-a6e4-87b702f47380/new+icons.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/0f66c49d-605c-40e0-a6e4-87b702f47380/new+icons.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/0f66c49d-605c-40e0-a6e4-87b702f47380/new+icons.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/0f66c49d-605c-40e0-a6e4-87b702f47380/new+icons.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
          
          <figcaption class="image-caption-wrapper">
            <p data-rte-preserve-empty="true">New more compact node layout in monitoring / nicer icons. Also note the merge routing that correctly render a merging connection just before entering “merge_pids”</p>
          </figcaption>
        
      
        </figure>
      

    
  


  



  
  <h2>Enhancements &amp; Maintenance</h2><ul data-rte-list="default"><li><p class=""><strong>Optional channel routes</strong> make mission authoring less verbose.</p></li><li><p class=""><strong>Embedded CI</strong> now automatically exercises ARM-only components.</p></li><li><p class=""><strong>Dependency refresh</strong> (<code>ron 0.12</code>, <code>cudarc 0.18</code>, <code>rerun 0.27</code>).</p></li><li><p class=""><strong>Simplified structured logging backend</strong>: we removed <code>rkv</code> after Mozilla confirmed lmdb backend deprecation. Replaced with a simple lock + bincode dump for now.</p></li><li><p class=""><strong>Console state corruption fixed</strong> when exiting <code>cu_consolemon</code>.</p></li><li><p class="">Numerous QoL polish items across bridges, missions, and monitoring.</p></li></ul><h2>Bug Fixes</h2><ul data-rte-list="default"><li><p class="">Simulation generation now correctly builds Sink proxies when a task listens to two upstream tasks.</p></li></ul><h2>Looking Ahead</h2><p class="">Bridges are the long-term foundation for how Copper talks to the physical world.<br> Flight controllers are the first vertical we’re bootstrapping, but the same stack extends to ground robots, manipulators, and embedded perception.</p><p class="">Each release rotates through a new specialty, building up an open, deterministic robotics SDK in Rust—from devkits to real hardware.</p>


  


  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/4e6e5da5-0546-434e-8829-8eebc1548774/Iron+Bird+with+labels.png" data-image-dimensions="1212x914" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/4e6e5da5-0546-434e-8829-8eebc1548774/Iron+Bird+with+labels.png?format=1000w" width="1212" height="914" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/4e6e5da5-0546-434e-8829-8eebc1548774/Iron+Bird+with+labels.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/4e6e5da5-0546-434e-8829-8eebc1548774/Iron+Bird+with+labels.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/4e6e5da5-0546-434e-8829-8eebc1548774/Iron+Bird+with+labels.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/4e6e5da5-0546-434e-8829-8eebc1548774/Iron+Bird+with+labels.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/4e6e5da5-0546-434e-8829-8eebc1548774/Iron+Bird+with+labels.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/4e6e5da5-0546-434e-8829-8eebc1548774/Iron+Bird+with+labels.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/4e6e5da5-0546-434e-8829-8eebc1548774/Iron+Bird+with+labels.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
          
          <figcaption class="image-caption-wrapper">
            <p data-rte-preserve-empty="true">Next step: make that all fly !</p>
          </figcaption>
        
      
        </figure>
      

    
  


  



  
    
  
  <h3>If you like what we are doing, throw us a star on Github, it would mean the world to us! </h3><h3>⭐⭐ <span data-text-attribute-id="cd6ec6db-220a-4919-a0db-d18a65990e57" class="sqsrte-text-highlight"><a href="https://github.com/copper-project/copper-rs?tab=readme-ov-file#--copper-runtime--sdk" target="">https://github.com/copper-project/copper-rs</a></span> ⭐⭐</h3>]]></content:encoded><media:content type="image/png" url="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1764710436638-6A5VS8MM2H2WLO7YVY3H/Cunick+pilot.png?format=1500w" medium="image" isDefault="true" width="1024" height="1024"><media:title type="plain">Copper v0.11: Bridges and an MVP SDK for robotics-first flight controllers.</media:title></media:content></item><item><title>Copper now also runs on baremetal microcontrollers: same robotic runtime, no OS.</title><dc:creator>Guillaume Binet</dc:creator><pubDate>Mon, 20 Oct 2025 14:50:20 +0000</pubDate><link>https://www.copper-robotics.com/whats-new/copper-is-going-baremetal</link><guid isPermaLink="false">66a02354cb746f3329f82ce8:66a3b0efebda816b9f2d4095:68f541d1f8c75a590c7b0fb8</guid><description><![CDATA[Copper just released a new MCU deployment capabilities. This unlocks new 
deep embedded usecases and distributed copper systems.]]></description><content:encoded><![CDATA[<p class="">Copper now runs <strong>baremetal</strong>, directly on microcontrollers, without losing any of its power as a robotics runtime. Same architecture, same tooling, same determinism, whether you deploy on a CPU or a tiny embedded chip.</p>


  


  














































  

    

      <figure data-test="image-block-v2-outer-wrapper" class="
            sqs-block-image-figure
            image-block-outer-wrapper
            image-block-v2
            design-layout-card
            combination-animation-site-default
            individual-animation-site-default
            individual-text-animation-site-default
            image-position-left
            
          " data-scrolled
      >

        
          
            
            
              
              
              
              
              
              
              
              <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/fbafddb1-7b99-4070-a7ac-07ee058df182/baremetal-w-camera.jpg" data-image-dimensions="1455x1095" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/fbafddb1-7b99-4070-a7ac-07ee058df182/baremetal-w-camera.jpg?format=1000w" width="1455" height="1095" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/fbafddb1-7b99-4070-a7ac-07ee058df182/baremetal-w-camera.jpg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/fbafddb1-7b99-4070-a7ac-07ee058df182/baremetal-w-camera.jpg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/fbafddb1-7b99-4070-a7ac-07ee058df182/baremetal-w-camera.jpg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/fbafddb1-7b99-4070-a7ac-07ee058df182/baremetal-w-camera.jpg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/fbafddb1-7b99-4070-a7ac-07ee058df182/baremetal-w-camera.jpg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/fbafddb1-7b99-4070-a7ac-07ee058df182/baremetal-w-camera.jpg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/fbafddb1-7b99-4070-a7ac-07ee058df182/baremetal-w-camera.jpg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

              
            
          
            
          

        

        
          
          <figcaption data-width-ratio class="image-card-wrapper">
            

              
                <h3>Today we’re shipping our vision to microcontrollers.</h3><p data-rte-preserve-empty="true" class=""></p>
              

              

              

            
          </figcaption>
        

      </figure>

    

  



  
  <p class=""><strong>Copper’s unified vision: </strong>Robots come in all shapes and forms and we want your algorithms to compile and be deployed <strong>unchanged</strong> on Linux/macOS <em>and</em> on MCUs (or both in tandem). Train or prototype on your workstation, deploy to the edge, then <strong>replay the exact logs</strong> back on a workstation build to debug with full tooling.</p><p class=""><strong>With Copper v0.10</strong> the runtime can run on its own with no OS required! It can log straight on flash storage like an SDCard /eMMC and because Copper controls time and logs consistently, you can <strong>log</strong> <strong>replay a baremetal run on your desktop</strong> with the exact same codebase compiled as a normal Copper application.<br>By removing the OS middle man, Copper is getting closer to power <strong>safety critical applications</strong> with strict real time requirements.</p>


  


  




  
  <h4>What does this unlock?</h4><p class="">Well, an entire new class of <strong>embedded robotic systems</strong> now becomes possible with Copper.</p><ul data-rte-list="default"><li><p class=""><strong>Drones</strong><br> Run your <strong>flight controller directly on Copper: </strong>no need for a second companion computer just to run autonomy logic. Less weight, less complexity, one unified stack.</p></li><li><p class=""><strong>Vehicle ECUs</strong><br> Most vehicles run distributed <strong>MCUs with electronic control units (ECUs)</strong>. Copper now fits inside those architectures, enabling <strong>high-level functions directly on embedded control</strong>.</p></li><li><p class=""><strong>“Big Brain / Small Brain” architectures</strong><br> Mix a higher-level Linux computer with multiple MCU-based controllers <strong>without changing your development workflow</strong>. Same config, same log format, same simulation, same replay. One system, end-to-end.</p></li><li><p class=""><strong>AI at the edge</strong><br> Microcontrollers are getting <a href="https://blog.st.com/stm32n6/" target="_blank"><strong>NPUs and accelerators</strong></a>. Pair those with Copper and you can run <strong>sensor-near AI processing</strong> with zero messaging glue and full determinism.</p></li><li><p class=""><strong>Road to safety</strong><br> Copper behaves like a <strong>compiler + runtime</strong>, not a scripting layer. Combined with baremetal (no OS or kernel), this opens a credible path toward <strong>functional safety certification</strong>.</p></li></ul>


  


  




  
  <h4>Order a Copper Baremetal Reference platform &amp; kit! </h4><p class="">Hardware wise, we have selected the <strong>Pimonori Pico plus 2W</strong> as our first baremetal reference platform. It features a very well-documented RP2350B board with some beefy specs: 16 MB QSPI flash, 8 MB PSRAM, USB-C, Qwiic, and an accessible SWD debug header. It offers a great range of ready made sensors and actuators like cameras and SDCard slots. </p><p class=""><br>If you want a <strong>packaged up and tested hardware kit ready to deploy Copper on with the MCU + Plate + sdcard reader + CMSIS-DAP probe + cable)</strong>, ping us at <a href="mailto:info@copper-robotics.com?subject=RP2350%20reference%20platform" target="_blank"><strong>info@copper-robotics.com</strong></a> and we’ll get you set up.</p>


  


  








  
    
      

        

        
          
            
              <img class="thumb-image" elementtiming="system-gallery-block-slider" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1760905942980-P46364DC8LB6R0KBS2RC/ppico_plus_2_pinout_diagram.webp" data-image-dimensions="1418x1123" data-image-focal-point="0.5,0.5" alt="ppico_plus_2_pinout_diagram.webp" data-load="false" data-image-id="68f54ad69e277f2797cf94b4" data-type="image" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1760905942980-P46364DC8LB6R0KBS2RC/ppico_plus_2_pinout_diagram.webp?format=1000w" /><br>
            
          
          
        

        

      

        

        
          
            
              <img class="thumb-image" elementtiming="system-gallery-block-slider" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1760906045125-D6IVL6AM2DY6JCYYFSXT/ppp2w.jpg" data-image-dimensions="970x728" data-image-focal-point="0.5,0.5" alt="ppp2w.jpg" data-load="false" data-image-id="68f54b3d9c38816b40621d1c" data-type="image" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1760906045125-D6IVL6AM2DY6JCYYFSXT/ppp2w.jpg?format=1000w" /><br>
            
          
          
        

        

      

        

        
          
            
              <img class="thumb-image" elementtiming="system-gallery-block-slider" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1760906077599-TZD7VCACWDKY6PC4NMYN/cam.jpg" data-image-dimensions="970x728" data-image-focal-point="0.5,0.5" alt="cam.jpg" data-load="false" data-image-id="68f54b5df65157224719594c" data-type="image" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1760906077599-TZD7VCACWDKY6PC4NMYN/cam.jpg?format=1000w" /><br>
            
          
          
        

        

      

        

        
          
            
              <img class="thumb-image" elementtiming="system-gallery-block-slider" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1760905878106-X7WMBLI1OI92JNAF8S24/proto-doubler.jpg" data-image-dimensions="970x728" data-image-focal-point="0.7108843537414966,0.3834095348011364" alt="proto-doubler.jpg" data-load="false" data-image-id="68f54a95c1c19b7ac783a58f" data-type="image" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1760905878106-X7WMBLI1OI92JNAF8S24/proto-doubler.jpg?format=1000w" /><br>
            
          
          
        

        

      

        

        
          
            
              <img class="thumb-image" elementtiming="system-gallery-block-slider" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1760905876211-KP7RDAU0ORJH43UNYK5G/debugger.jpg" data-image-dimensions="1455x1095" data-image-focal-point="0.5,0.5" alt="debugger.jpg" data-load="false" data-image-id="68f54a94224815684aa5956e" data-type="image" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1760905876211-KP7RDAU0ORJH43UNYK5G/debugger.jpg?format=1000w" /><br>
            
          
          
        

        

      

        

        
          
            
              <img class="thumb-image" elementtiming="system-gallery-block-slider" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1760905877386-WZG6A1YQS93BUGF96IF5/led2.jpg" data-image-dimensions="985x1308" data-image-focal-point="0.5,0.5" alt="led2.jpg" data-load="false" data-image-id="68f54a95fa959a416319ab83" data-type="image" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1760905877386-WZG6A1YQS93BUGF96IF5/led2.jpg?format=1000w" /><br>
            
          
          
        

        

      

        

        
          
            
              <img class="thumb-image" elementtiming="system-gallery-block-slider" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1760905878592-Z1G1Y7GXUH1934JJV7C7/running-embedded-copper.png" data-image-dimensions="1893x1740" data-image-focal-point="0.5,0.5" alt="running-embedded-copper.png" data-load="false" data-image-id="68f54a96596f852d39ae232f" data-type="image" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1760905878592-Z1G1Y7GXUH1934JJV7C7/running-embedded-copper.png?format=1000w" /><br>
            
          
          
        

        

      

        

        
          
            
              <img class="thumb-image" elementtiming="system-gallery-block-slider" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1760905879436-FXI3QNWW2TGCKHFZJYRT/target-recognized.png" data-image-dimensions="1370x1284" data-image-focal-point="0.5,0.5" alt="target-recognized.png" data-load="false" data-image-id="68f54a979b8cbd259dc95672" data-type="image" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1760905879436-FXI3QNWW2TGCKHFZJYRT/target-recognized.png?format=1000w" /><br>
            
          
          
        

        

      
    
  

  








  
  


  
  <h4><strong>What’s next</strong><br></h4><p class="">We’ll keep building on <strong>Rust’s embedded ecosystem</strong>: sensor implementations, actuator implementations and algorithms adapted for MCU constraints, and of course new additional architectures as demand grows (e.g., ESP32). </p><p class="">Also, any time we have an improvement on the main stack like an improved scheduler, it will automatically translate into an improvement on the baremetal version so stay tuned!</p>]]></content:encoded><media:content type="image/png" url="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1760970320460-OJ8C0BN3K9G16ISMEDLL/closeup-spec.png?format=1500w" medium="image" isDefault="true" width="436" height="239"><media:title type="plain">Copper now also runs on baremetal microcontrollers: same robotic runtime, no OS.</media:title></media:content></item><item><title>Copper v0.9.0 is out: more Power, Precision, and Production Readiness</title><dc:creator>Guillaume Binet</dc:creator><pubDate>Fri, 01 Aug 2025 02:04:12 +0000</pubDate><link>https://www.copper-robotics.com/whats-new/copper-v090-is-out-more-power-precision-and-production-readiness</link><guid isPermaLink="false">66a02354cb746f3329f82ce8:66a3b0efebda816b9f2d4095:688c1e158fcd184072e06c74</guid><description><![CDATA[This release is primarily driven by user requests. It introduces a full 
transform library (à la tf2 for ROS), new keyframes in the logs, background 
tasks, a log checker, and a set of runtime and logging tuning parameters to 
better adapt to constrained environments.]]></description><content:encoded><![CDATA[<p class="">We’re thrilled to announce the release of <strong>Copper v0.9.0</strong>, a milestone shaped directly by our user base, and one that moves Copper closer to its vision as the foundation for real-time, product-ready robotics!</p><h2>Key Additions</h2><h3><strong>Transform Library (inspired by ROS tf2, but way faster and safer)</strong></h3><p class="">Copper now includes <code>cu_transform</code>, a spatial transform and velocity tree designed for fast, zero-allocation queries with timestamped data. It brings real-time motion reasoning into the core of the runtime.</p><h3><strong>Deterministic Background Tasks</strong></h3><p class="">Tasks can now be scheduled asynchronously in the background, enabling long streaming computations (e.g., SLAM backends, GPU pipelines) without blocking real-time execution. This unlocks complex pipelines on constrained hardware.</p><h3><strong>Keyframes + Log Checker</strong></h3><p class="">New structural keyframes and a <code>fsck</code> command for Copper logs make debugging and validation easier — with statistics and corruption checks built in. We're getting closer to full deterministic replay.</p><h3><strong>Runtime Rate Limiting &amp; Logging Controls</strong></h3><p class="">You can now cap the runtime frequency (e.g., 100Hz cap for battery savings) and toggle logging per task. That’s production flexibility built in to adapt to small and big hardware.</p><h3><strong>Task API Overhaul (Minimal Migration, Major Wins)</strong></h3><p class="">We’ve changed the task API to make lifetimes explicit on inputs and outputs. It’s a minimal adjustment but it enables safe background execution, better testability, and clearer semantics across the board.</p><h2>Why It Matters</h2><p class="">Copper is no longer just an experimental framework. It is becoming <strong>a full-stack runtime for robotics products</strong>: built in Rust, tuned for determinism, and shaped by real use in the field.</p><p class="">If you're a CTO evaluating how to scale beyond ROS or a systems engineer tired of gluing together fragile Python and C++ layers, now’s the time to take a closer look. Copper brings:</p><ul data-rte-list="default"><li><p class="">🔒 Memory safety, concurrency without fear</p></li><li><p class="">⚡ Fast logs, zero copy, everything linear both in memory and on disk. </p></li><li><p class="">🧠 A growing library of tasks, transforms, and observability tools</p></li><li><p class="">📦 Fully declarative task graphs and lifecycle management</p></li></ul><h2>Looking Ahead</h2><p class="">This release lays the foundation for what’s coming next: smarter automated tuning and scheduling, tooling built for roboticists.</p><p class="">Find the full release note <a href="https://github.com/copper-project/copper-rs/wiki/Copper-Release-Notes" target="_blank">here</a>.</p><p class="">Want to build on Copper? Feel free to reach out below and don’t forget to <a href="https://github.com/copper-project/copper-rs" target="">star us on GitHub</a>!</p><p data-rte-preserve-empty="true" class=""></p>]]></content:encoded><media:content type="image/png" url="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1754014228530-UH5UT5SYH5LES2PNN27N/copper-v0%2C9.png?format=1500w" medium="image" isDefault="true" width="1024" height="1024"><media:title type="plain">Copper v0.9.0 is out: more Power, Precision, and Production Readiness</media:title></media:content></item><item><title>Copper… on the moon?</title><dc:creator>Guillaume Binet</dc:creator><pubDate>Mon, 30 Jun 2025 18:07:06 +0000</pubDate><link>https://www.copper-robotics.com/whats-new/copper-on-the-moon</link><guid isPermaLink="false">66a02354cb746f3329f82ce8:66a3b0efebda816b9f2d4095:6862ca8796ee147e59701724</guid><description><![CDATA[A team of students from the University of Utah is porting their stack to 
Copper for their lunar rover]]></description><content:encoded><![CDATA[<figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/ca8688f2-02d4-4a77-976e-c65942b01ce5/lunabot.png" data-image-dimensions="1361x907" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/ca8688f2-02d4-4a77-976e-c65942b01ce5/lunabot.png?format=1000w" width="1361" height="907" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/ca8688f2-02d4-4a77-976e-c65942b01ce5/lunabot.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/ca8688f2-02d4-4a77-976e-c65942b01ce5/lunabot.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/ca8688f2-02d4-4a77-976e-c65942b01ce5/lunabot.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/ca8688f2-02d4-4a77-976e-c65942b01ce5/lunabot.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/ca8688f2-02d4-4a77-976e-c65942b01ce5/lunabot.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/ca8688f2-02d4-4a77-976e-c65942b01ce5/lunabot.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/ca8688f2-02d4-4a77-976e-c65942b01ce5/lunabot.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
          
          <figcaption class="image-caption-wrapper">
            <p data-rte-preserve-empty="true">2025 lunabotics price winner</p>
          </figcaption>
        
      
        </figure>
      

    
  


  



  
  <p class="">Let us share with you a cool project moving their stack over to Copper. From their own words:</p><blockquote><p class="">We are the Utah Student Robotics Club at the University of Utah, and each year we design and build a lunar berm building and excavation robot to compete in NASA’s Lunabotics competition — which we were proud to win this past May! <br><br>Our robot took a full year to design and build and for next year’s challenge, we’re building on that success with a similar overall design, upgraded hardware and electronics, and a shift in the software stack: adopting the Copper framework. <br><br>The software team’s primary goal this next year is focusing on improving autonomy by making use of smarter localization methods using LIDAR and other sensing technologies. <br><br>With the goal of more robust autonomy comes challenges involving fusing sensor outputs from multiple sources like apriltags, LIDAR cameras, IMUS, and wheel rotary encoders to increase the accuracy of the world map and robot pose. <br><br><strong>By switching to Copper I hope to leverage the determinism and re-simulation on data from real sensors and logs to be able to more easily tackle autonomy at next year's competition!</strong></p></blockquote>


  


  




  
  <p class="">Here is a little video of their trial run of a Copper pipeline running using a <a href="https://www.unitree.com/L2" target="_blank">Unitree L2</a> implementing KISS-ICP. The visualizer is <a href="https://rerun.io/" target="_blank">rerun</a>.</p>


  


  




  
  <p class="">Thank you so much to Matthew Ashton Knochel for sharing his progress with the project and if you need more info about the it, feel free to <a href="https://www.instagram.com/utahstudentrobotics/" target="_blank">contact them directly</a>!</p>]]></content:encoded><media:content type="image/jpeg" url="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1751306507372-1JTH6BGAI1AL4MCTU807/2025-Robot-768x512-1-300x200.jpg?format=1500w" medium="image" isDefault="true" width="300" height="200"><media:title type="plain">Copper… on the moon?</media:title></media:content></item><item><title>Scaling Up Your Robot Config With The New Missions And Modular Config Features</title><dc:creator>Guillaume Binet</dc:creator><pubDate>Mon, 09 Jun 2025 17:00:00 +0000</pubDate><link>https://www.copper-robotics.com/whats-new/config-system-new-missions-and-modules</link><guid isPermaLink="false">66a02354cb746f3329f82ce8:66a3b0efebda816b9f2d4095:6835fef5cf09aa1f55c305ab</guid><description><![CDATA[Copper is added 2 new features to make your robot configs scalable.]]></description><content:encoded><![CDATA[<p class=""><strong>Copper is on a mission to help you, robot creators, go from 0 to production as fast as possible.</strong><br>One of the major pain points on that journey? Config files. As your system grows, managing tasks, connections, and hardware parameters across multiple robot modes and platforms quickly becomes a mess. Here's what we’ve recently added in Copper to make config files not just manageable… but scalable!</p><h2>Missions</h2><p class="">In real-world robotics, a robot’s behavior is not unique, you often want variations of them, for example a datacollect mission or an autonomous navigation mission (you can also think of those as modes). With Copper’s new <strong>Mission Config</strong>, you can now declaratively define multiple missions that reuse the same task and connection structure but selectively activate subsets of the graph. This eliminates duplication and enables dynamic switching between modes like as another example a fallback or degraded behavior.</p><p class=""><br></p>


  


  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/f7b9b830-7151-4cdb-8100-1741d00ad422/missions.png" data-image-dimensions="591x472" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/f7b9b830-7151-4cdb-8100-1741d00ad422/missions.png?format=1000w" width="591" height="472" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/f7b9b830-7151-4cdb-8100-1741d00ad422/missions.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/f7b9b830-7151-4cdb-8100-1741d00ad422/missions.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/f7b9b830-7151-4cdb-8100-1741d00ad422/missions.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/f7b9b830-7151-4cdb-8100-1741d00ad422/missions.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/f7b9b830-7151-4cdb-8100-1741d00ad422/missions.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/f7b9b830-7151-4cdb-8100-1741d00ad422/missions.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/f7b9b830-7151-4cdb-8100-1741d00ad422/missions.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
          
          <figcaption class="image-caption-wrapper">
            <p data-rte-preserve-empty="true">Missions Dag</p>
          </figcaption>
        
      
        </figure>
      

    
  


  



  
  <p class="">Missions streamline deployment and testing by making mode-specific logic explicit and composable. See this simple example DAG and its matching configuration below. Either the green or red paths will be enabled.</p>


  


  



<pre><code class="language-Rust">(
    missions: [ (id: "autonomy"),
                (id: "datacollect"),
              ],
    tasks: [
        (
            id: "src",
            type: "tasks::ExampleSrc",
        ),
        (
            id: "autonomy_task",
            type: "tasks::AutonomyTask",
            missions: ["autonomy"],
        ),
        (
            id: "datacollect_task",
            type: "tasks::DataCollect",
            missions: ["datacollect"],
        ),
        (
            id: "sink",
            type: "tasks::ExampleSink",
        ),
     ],
    cnx: [
        (src: "src", dst: "autonomy_task", msg: "i32", missions: ["autonomy"]),
        (src: "src", dst: "datacollect_teak", msg: "i32", missions: ["datacollect"]),
        (src: "autonomy_task", dst: "sink", msg: "i32", missions: ["autonomy"]),
        (src: "datacollect_task", dst: "sink", msg: "i32", missions: ["datacollect"]),
    ],
)</code></pre>


  
  <h2>Modular config</h2><p class="">Robot configs can get messy fast. That’s why Copper now supports <strong>Modular Config</strong>: the ability to split configuration files into clean, reusable modules.</p><p class="">Each config module can define tasks, connections, logging, and hardware parameters, and can be included with parameter overrides (e.g., same motor config, different pins). This makes configs more maintainable, DRY, and easier to scale across platforms and variants.</p><p class="">Perfect for teams managing multiple robots or hardware layouts. <br><br>Here is an example:</p>


  


  



<p><code>// main_config.ron</code></p>
<pre><code class="language-Rust">(
    tasks: [],
    cnx: [],
    monitor: (
        type: "cu_consolemon::CuConsoleMon",
    ),
    logging: (
        file: "robot.copper",
        level: "debug",
    ),
    includes: [
        (
            path: "basic.ron", // see the included file below.
            params: {},
        ),
        (
            path: "motor.ron",  // see the included file below
            params: {
                "id": "left",
                "pin": 4,
                "direction": "forward",
            },
        ),
        (
            path: "motor.ron",
            params: {
                "id": "right",
                "pin": 5,
                "direction": "reverse",
            },
        ),
    ],
)</code></pre>

<p><code>// basic.ron</code></p>
<pre><code class="language-Rust">(
    tasks: [
        (
            id: "source",
            type: "FlippingSource",
            config: {
                "rate": 10,
            },
        ),
    ],
    cnx: [],
)</code></pre>

<p><code>// motor.ron</code></p>
<pre><code class="language-Rust">(
        tasks: [
            (
                id: "motor_{{id}}",
                type: "cu_rp_gpio::RPGpio",
                config: {
                    "pin": {{pin}},
                    "direction": "{{direction}}",
                },
            ),
        ],
        cnx: [
            (src: "source", dst: "motor_{{id}}", msg: "cu_rp_gpio::RPGpioPayload"),
        ],
    )</code></pre>


  
  <p class=""><strong>All those have been release as of v0.8.0.</strong></p><p class=""><strong><br>Full examples are in the </strong><a href="https://github.com/copper-project/copper-rs/tree/master/examples" target="_blank"><strong>example directory</strong></a><strong>.</strong><br><br>Any question? Join us on <a href="https://discord.gg/VkCG7Sb9Kw" target="_blank">discord</a>! <br><br>As usual, if you like what we are doing, <strong>drop a ⭐ on our </strong><a href="https://github.com/copper-project/copper-rs" target="_blank"><strong>github repo</strong></a><strong> !</strong></p>]]></content:encoded><media:content type="image/png" url="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1749247055478-G5U4TABL04Q67WP2LDY2/dag.png?format=1500w" medium="image" isDefault="true" width="906" height="647"><media:title type="plain">Scaling Up Your Robot Config With The New Missions And Modular Config Features</media:title></media:content></item><item><title>Copper v0.8: Check Out The New Zenoh and ROS2 Bridge</title><dc:creator>Guillaume Binet</dc:creator><pubDate>Tue, 27 May 2025 19:39:02 +0000</pubDate><link>https://www.copper-robotics.com/whats-new/zenoh-and-ros2-support-landed</link><guid isPermaLink="false">66a02354cb746f3329f82ce8:66a3b0efebda816b9f2d4095:6835feca56b90f68f7cbe160</guid><description><![CDATA[Copper added interoperability through Zenoh and Zenoh-ROS2]]></description><content:encoded><![CDATA[<p class="">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!</p><p class="">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?</p><h2>Don't Rip and Replace… Migrate progressively</h2><p class="">Our community built the <code>zenoh_sink_ros</code> 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.</p><h2>How It Works</h2>


  


  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/08790557-e13e-4623-ae28-a08dfc833a82/Screenshot_20250527_140506.png" data-image-dimensions="1547x876" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/08790557-e13e-4623-ae28-a08dfc833a82/Screenshot_20250527_140506.png?format=1000w" width="1547" height="876" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/08790557-e13e-4623-ae28-a08dfc833a82/Screenshot_20250527_140506.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/08790557-e13e-4623-ae28-a08dfc833a82/Screenshot_20250527_140506.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/08790557-e13e-4623-ae28-a08dfc833a82/Screenshot_20250527_140506.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/08790557-e13e-4623-ae28-a08dfc833a82/Screenshot_20250527_140506.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/08790557-e13e-4623-ae28-a08dfc833a82/Screenshot_20250527_140506.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/08790557-e13e-4623-ae28-a08dfc833a82/Screenshot_20250527_140506.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/08790557-e13e-4623-ae28-a08dfc833a82/Screenshot_20250527_140506.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  



  
  <p class="">Copper can emit ROS2-compatible topics over Zenoh, using the <code>rmw_zenoh</code> backend. No need for ROS2 builds or <code>colcon</code>. Copper sends the data, and your existing ROS2 nodes receive it like any other topic.</p><p class="">See the implementation here:<br> 🔗 <code><a href="https://github.com/copper-project/copper-rs/tree/master/components/sinks/cu_zenoh_ros_sink" target="_blank">cu_zenoh_sink_ros</a></code></p><p class="">Once connected, you can:</p><ul data-rte-list="default"><li><p class="">Port a node (e.g. sensor fusion) from ROS2 to Copper.</p></li><li><p class="">Wire its output to a ROS2 consumer over Zenoh.</p></li><li><p class="">Validate it in production.</p></li><li><p class="">Repeat with the next component.</p></li></ul><p class="">We recommend <strong>starting from the top</strong> 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 <strong>sink</strong>, not a source as it is designed to emit messages to the rest of ROS2.</p>


  


  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/41cb91d1-badf-439a-a3cb-b165f7ac6ac7/zenoh.png" data-image-dimensions="280x280" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/41cb91d1-badf-439a-a3cb-b165f7ac6ac7/zenoh.png?format=1000w" width="280" height="280" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/41cb91d1-badf-439a-a3cb-b165f7ac6ac7/zenoh.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/41cb91d1-badf-439a-a3cb-b165f7ac6ac7/zenoh.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/41cb91d1-badf-439a-a3cb-b165f7ac6ac7/zenoh.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/41cb91d1-badf-439a-a3cb-b165f7ac6ac7/zenoh.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/41cb91d1-badf-439a-a3cb-b165f7ac6ac7/zenoh.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/41cb91d1-badf-439a-a3cb-b165f7ac6ac7/zenoh.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/41cb91d1-badf-439a-a3cb-b165f7ac6ac7/zenoh.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  



  
  <h2>Beyond ROS2: Zenoh as a Universal Bridge</h2><p class="">The community also released a pure cu_<code>zenoh_sink</code> that emits messages in your choice of serialization (ie. anything supported by Rust SerDe actually). This lets you:</p><ul data-rte-list="default"><li><p class="">Connect Copper to a non-Copper Rust process (e.g. for data logging, or visualization).</p></li><li><p class="">Build a Copper-powered swarm of robots using Zenoh as the transport layer.</p></li><li><p class="">Create mixed-language architectures where Copper tasks communicate with Python or C++ over lightweight Zenoh messages.</p></li></ul><p class="">This is your escape route not only from ROS2, but from the overhead of traditional robotics middleware entirely.</p><p class=""><span class="sqsrte-text-color--custom"><strong>Special thanks to Julien Enoch from Zettascale (the creator of Zenoh) for his support!</strong></span></p><h2>Questions?</h2><p class="sqsrte-large">Join us on our <a href="https://discord.gg/VkCG7Sb9Kw" target="_blank">Discord Server</a> and <strong>if you like what we are doing at Copper don’t forget to ⭐ our </strong><a href="https://github.com/copper-project/copper-rs" target="_blank"><strong>github repo</strong></a><strong>! </strong></p>]]></content:encoded><media:content type="image/png" url="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1748371124287-5IV6QSG1B5FKGSX9TK1Z/g3.png?format=1500w" medium="image" isDefault="true" width="402" height="262"><media:title type="plain">Copper v0.8: Check Out The New Zenoh and ROS2 Bridge</media:title></media:content></item><item><title>Copper is Airborne! </title><dc:creator>Guillaume Binet</dc:creator><pubDate>Thu, 13 Mar 2025 16:01:43 +0000</pubDate><link>https://www.copper-robotics.com/whats-new/copper-is-airborne</link><guid isPermaLink="false">66a02354cb746f3329f82ce8:66a3b0efebda816b9f2d4095:67d2f81f2ef5673b6a41d946</guid><description><![CDATA[We developed a set of components for Copper to make it easier to develop 
Drone applications.]]></description><content:encoded><![CDATA[<p class="">A quick update on what we've been up to lately.</p><p class="">One of Copper's superpowers is bringing high-level, safe autonomy to really constrained environments; not just technically (power, weight), but also in practical business terms like BOM cost.</p><p class="">To show this off, we’ve been putting some time into a quadcopter demo with three goals in mind:</p><ul data-rte-list="default"><li><p class="">Create a solid, end-to-end tutorial series on <a href="https://www.youtube.com/playlist?list=PLQ5cuUFIqMOOd1d39ewMUizYaQq0IlohV" target="_blank">YouTube</a> to help you bring Copper to life in your own projects.</p></li><li><p class="">Drop half a dozen new <a href="https://github.com/copper-project/copper-rs/tree/master/components" target="_blank">components</a> in the upcoming v0.7.0 release ready for you to use. including flight controller communication, controls, and fast CV-based fiducial localization.</p></li><li><p class="">Build a working demo and reference platform to make it easier (and cheaper) to get started with these kinds of applications.</p></li></ul><p class="">Got an autonomous robotics project in mind? <a href="https://www.copper-robotics.com/contact">Reach out </a>— we're here to help!</p><p class="">More soon!</p>


  


  



<p data-rte-preserve-empty="true">Her name is “Perroquet” on her maiden flight a Radxa SBC running Copper autothrottling and fighting the wind to stay in front of the marker.</p>]]></content:encoded><media:content type="image/png" url="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1741881858768-ZMTB5DZRA66DBZFNFXMK/thumb.png?format=1500w" medium="image" isDefault="true" width="807" height="447"><media:title type="plain">Copper is Airborne!</media:title></media:content></item><item><title>Robotics Summit &amp; Expo 2025</title><dc:creator>Guillaume Binet</dc:creator><pubDate>Thu, 27 Feb 2025 17:00:00 +0000</pubDate><link>https://www.copper-robotics.com/whats-new/robotics-summit-amp-expo-in-boston</link><guid isPermaLink="false">66a02354cb746f3329f82ce8:66a3b0efebda816b9f2d4095:67ae0b94633203010c716cbd</guid><description><![CDATA[Join us in Boston on April 30-May 1!]]></description><content:encoded><![CDATA[<figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/7bf57b94-8ac2-460b-b80e-115549b0d182/Robotics+Summit" data-image-dimensions="1986x872" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/7bf57b94-8ac2-460b-b80e-115549b0d182/Robotics+Summit?format=1000w" width="1986" height="872" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/7bf57b94-8ac2-460b-b80e-115549b0d182/Robotics+Summit?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/7bf57b94-8ac2-460b-b80e-115549b0d182/Robotics+Summit?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/7bf57b94-8ac2-460b-b80e-115549b0d182/Robotics+Summit?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/7bf57b94-8ac2-460b-b80e-115549b0d182/Robotics+Summit?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/7bf57b94-8ac2-460b-b80e-115549b0d182/Robotics+Summit?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/7bf57b94-8ac2-460b-b80e-115549b0d182/Robotics+Summit?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/7bf57b94-8ac2-460b-b80e-115549b0d182/Robotics+Summit?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  



  
  <p class="">Join us at the <a href="https://www.roboticssummit.com" target="_blank">Robotics Summit &amp; Expo</a> at the Boston Convention and Exhibition Center on April 30-May 1. </p><p class="">Guillaume has a talk session: <strong>Bridging Robotics and Systems Programming: Why Rust is a Game Changer</strong> at 11:30 AM on May 1.</p>


  


  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/f9b8760b-ec3d-47fc-86be-a72ee68df6da/Bridging+Robotics+and+Systems+Programming" data-image-dimensions="1194x1212" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/f9b8760b-ec3d-47fc-86be-a72ee68df6da/Bridging+Robotics+and+Systems+Programming?format=1000w" width="1194" height="1212" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/f9b8760b-ec3d-47fc-86be-a72ee68df6da/Bridging+Robotics+and+Systems+Programming?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/f9b8760b-ec3d-47fc-86be-a72ee68df6da/Bridging+Robotics+and+Systems+Programming?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/f9b8760b-ec3d-47fc-86be-a72ee68df6da/Bridging+Robotics+and+Systems+Programming?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/f9b8760b-ec3d-47fc-86be-a72ee68df6da/Bridging+Robotics+and+Systems+Programming?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/f9b8760b-ec3d-47fc-86be-a72ee68df6da/Bridging+Robotics+and+Systems+Programming?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/f9b8760b-ec3d-47fc-86be-a72ee68df6da/Bridging+Robotics+and+Systems+Programming?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/f9b8760b-ec3d-47fc-86be-a72ee68df6da/Bridging+Robotics+and+Systems+Programming?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  



  
  <p class="">In the session, through real-world examples and Rust code snippets, we’ll explore how Rust excels in managing concurrency, writing error-free algorithms, and bridging the gap between low-level control and high-level design under the Copper framework. </p><p class="">By the end, you’ll see how Rust can streamline robotics development, making it more integrated, efficient, and reliable.</p>


  


  




  
  <p class="">You can explore the agenda and register for the event here:&nbsp;<a href="https://www.roboticssummit.com/" target="_blank">https://www.roboticssummit.com/</a></p><p class="">We are looking forward to seeing you! </p>]]></content:encoded><media:content type="image/png" url="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1740603871861-4RWKJQBPKO6R5KAUG0O4/Screenshot+2025-02-26+at+15.44.04.png?format=1500w" medium="image" isDefault="true" width="1500" height="659"><media:title type="plain">Robotics Summit &amp; Expo 2025</media:title></media:content></item><item><title>Copper on a Drone video miniseries tutorial</title><dc:creator>Guillaume Binet</dc:creator><pubDate>Tue, 28 Jan 2025 16:52:25 +0000</pubDate><link>https://www.copper-robotics.com/whats-new/copper-on-a-drone-video-miniseries-tutorial</link><guid isPermaLink="false">66a02354cb746f3329f82ce8:66a3b0efebda816b9f2d4095:679902dc35d668587d956294</guid><description><![CDATA[<p class="">With the goal of reaching a wider audience, we are starting a tutorial series in a video format!</p><p class="">The aim of the series is really to take robot creators not necessarily familiar with Rust or Copper from 0 to Flying Robot with independent episode that can serve as a reference for all the steps along the way:</p><ul data-rte-list="default"><li><p class="">Cross compiling with Rust</p></li><li><p class="">Deploying to an embedded platform</p></li><li><p class="">Generating a project with Copper </p></li><li><p class="">Testing on the target platform</p></li><li><p class="">Live monitoring</p></li><li><p class="">Data ingest and analysis</p></li><li><p class="">… And all the goofing around you can expect from a robotic project!</p></li></ul><p class="">If you want to follow along,  subscribe to our YouTube channel … here is the YouTube playlist: </p>


  


  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          <a class="
                sqs-block-image-link
                
          
        
              " href="https://www.youtube.com/playlist?list=PLQ5cuUFIqMOOd1d39ewMUizYaQq0IlohV" target="_blank"
          >
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/2d9f4e84-d9ad-446c-9983-a52c7402a587/thumbnail.png" data-image-dimensions="1600x819" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/2d9f4e84-d9ad-446c-9983-a52c7402a587/thumbnail.png?format=1000w" width="1600" height="819" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/2d9f4e84-d9ad-446c-9983-a52c7402a587/thumbnail.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/2d9f4e84-d9ad-446c-9983-a52c7402a587/thumbnail.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/2d9f4e84-d9ad-446c-9983-a52c7402a587/thumbnail.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/2d9f4e84-d9ad-446c-9983-a52c7402a587/thumbnail.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/2d9f4e84-d9ad-446c-9983-a52c7402a587/thumbnail.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/2d9f4e84-d9ad-446c-9983-a52c7402a587/thumbnail.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/2d9f4e84-d9ad-446c-9983-a52c7402a587/thumbnail.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          </a>
        

        
      
        </figure>]]></description><media:content type="image/png" url="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1739459405422-Y1YBTTPR63LLUZ2EMTLA/Build+Autonomous+Drones+%282%29.png?format=1500w" medium="image" isDefault="true" width="1280" height="720"><media:title type="plain">Copper on a Drone video miniseries tutorial</media:title></media:content></item><item><title>Copper v0.6: Video, Computer Vision, and Hardware Acceleration</title><dc:creator>Guillaume Binet</dc:creator><pubDate>Tue, 21 Jan 2025 19:59:45 +0000</pubDate><link>https://www.copper-robotics.com/whats-new/copper-v06-video-cv-and-accelerators-</link><guid isPermaLink="false">66a02354cb746f3329f82ce8:66a3b0efebda816b9f2d4095:678fd769426bd7762e1f5d58</guid><description><![CDATA[This is Copper V0.6 release announcement.]]></description><content:encoded><![CDATA[<h4>We're excited to announce the release of Copper 0.6!</h4>


  


  














































  

    

      <figure data-test="image-block-v2-outer-wrapper" class="
            sqs-block-image-figure
            image-block-outer-wrapper
            image-block-v2
            design-layout-card
            combination-animation-site-default
            individual-animation-site-default
            individual-text-animation-site-default
            image-position-left
            
          " data-scrolled
      >

        
          
            
            
              
              
              
              
              
              
              
              <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/7e410e5a-f5e9-441a-9526-25c4083768d1/low_latencies.png" data-image-dimensions="1227x236" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/7e410e5a-f5e9-441a-9526-25c4083768d1/low_latencies.png?format=1000w" width="1227" height="236" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/7e410e5a-f5e9-441a-9526-25c4083768d1/low_latencies.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/7e410e5a-f5e9-441a-9526-25c4083768d1/low_latencies.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/7e410e5a-f5e9-441a-9526-25c4083768d1/low_latencies.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/7e410e5a-f5e9-441a-9526-25c4083768d1/low_latencies.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/7e410e5a-f5e9-441a-9526-25c4083768d1/low_latencies.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/7e410e5a-f5e9-441a-9526-25c4083768d1/low_latencies.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/7e410e5a-f5e9-441a-9526-25c4083768d1/low_latencies.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

              
            
          
            
          

        

        
          
          <figcaption data-width-ratio class="image-card-wrapper">
            

              

              
                <p class="">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 <strong>nanoseconds</strong>, making Copper two orders of magnitude faster than ROS2 in its default configuration.</p>
              

              

            
          </figcaption>
        

      </figure>

    

  



  
  <h4><strong>But what about throughput</strong>? </h4><p class="">This release focuses on pushing large buffers through Copper's compute graph—such as images, matrices, and point clouds.</p><p class="">For example, here's a <strong>Video4Linux</strong> <strong>video</strong> <strong>source</strong> running at 4K 30fps, seamlessly processed through Copper and streamed to Rerun.</p>


  


  




  
  <p class="">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.</p>


  


  














































  

    

      <figure data-test="image-block-v2-outer-wrapper" class="
            sqs-block-image-figure
            image-block-outer-wrapper
            image-block-v2
            design-layout-collage
            combination-animation-site-default
            individual-animation-site-default
            individual-text-animation-site-default
            image-position-left
            
          " data-scrolled
      >

        
          
            
            
              
              
              
              
              
              
              
              <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/75716854-325c-4421-9d72-86bda1e14388/kornia.png" data-image-dimensions="1500x1431" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/75716854-325c-4421-9d72-86bda1e14388/kornia.png?format=1000w" width="1500" height="1431" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/75716854-325c-4421-9d72-86bda1e14388/kornia.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/75716854-325c-4421-9d72-86bda1e14388/kornia.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/75716854-325c-4421-9d72-86bda1e14388/kornia.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/75716854-325c-4421-9d72-86bda1e14388/kornia.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/75716854-325c-4421-9d72-86bda1e14388/kornia.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/75716854-325c-4421-9d72-86bda1e14388/kornia.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/75716854-325c-4421-9d72-86bda1e14388/kornia.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

              
            
          
            
          

        

        
          
          <figcaption data-width-ratio class="image-card-wrapper">
            

              
                <p class=""><strong>Computer Vision with</strong> <strong>Kornia-rs</strong></p>
              

              
                <p class="">We worked with the <a href="https://github.com/kornia/kornia-rs" target="_blank">kornia-rs</a> 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 &amp; filters now natively available in Copper: scaling, blur, sobel, hessian, thresholds, icp, etc etc…</p>
              

              

            
          </figcaption>
        

      </figure>

    

  



  
  <p class="">But it doesn’t stop there! Copper now supports NVIDIA® CUDA®.</p><p class="">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 <a href="https://github.com/coreylowman/cudarc" target="_blank">cudarc</a>, 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.</p><p class=""><strong>We can't wait to see what our users will create with Copper and the power of CUDA kernels at their fingertips!</strong></p><h3>Other notable highlights in this release</h3><p class="">This release has been incredibly busy! We received 10 external contributions—an exciting first for us—demonstrating the growing momentum of the Copper ecosystem.</p><ul data-rte-list="default"><li><p class="">We simplified the creation and initialization of Copper applications with a prefix and a builder pattern:</p></li></ul>


  


  



<pre><code class="language-rust">let mut application = CaterpillarApplicationBuilder::new()
        .with_context(&amp;copper_ctx)
        .build()
        .expect("Failed to create application.");</code></pre>


  
  <ul data-rte-list="default"><li><p class="">We have a new driver for the <strong>Livox Lidar Tele15</strong> that is very useful for long range applications like <strong>highway driving</strong>.</p></li><li><p class="">We also simplified the automatic generation of Copper projects by <strong>asking at creation which version of Copper the user wants to use</strong> : either local, git or the latest official release.</p></li><li><p class=""><strong>Logging</strong>: 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.</p></li><li><p class="">We now have a new Debug Output panel in the little TUI monitoring component</p></li></ul>


  


  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/a852a067-bf73-49e5-9d12-0942464e0fe0/debug.png" data-image-dimensions="1116x593" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/a852a067-bf73-49e5-9d12-0942464e0fe0/debug.png?format=1000w" width="1116" height="593" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/a852a067-bf73-49e5-9d12-0942464e0fe0/debug.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/a852a067-bf73-49e5-9d12-0942464e0fe0/debug.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/a852a067-bf73-49e5-9d12-0942464e0fe0/debug.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/a852a067-bf73-49e5-9d12-0942464e0fe0/debug.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/a852a067-bf73-49e5-9d12-0942464e0fe0/debug.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/a852a067-bf73-49e5-9d12-0942464e0fe0/debug.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/a852a067-bf73-49e5-9d12-0942464e0fe0/debug.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
          
          <figcaption class="image-caption-wrapper">
            <p data-rte-preserve-empty="true">New logging Panel</p>
          </figcaption>
        
      
        </figure>
      

    
  


  



  
  <p class=""><strong>And much more, feel free to check out the detail release note </strong><a href="https://github.com/copper-project/copper-rs/wiki/Copper-Release-Log" target="_blank"><strong>here</strong></a><strong>!</strong></p>]]></content:encoded><media:content type="image/png" url="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1737484059214-UYMJW0QFBA5BDM9WII9Q/lidar+merge.png?format=1500w" medium="image" isDefault="true" width="551" height="487"><media:title type="plain">Copper v0.6: Video, Computer Vision, and Hardware Acceleration</media:title></media:content></item><item><title>2025 SWE Internship @ Copper?</title><dc:creator>Guillaume Binet</dc:creator><pubDate>Wed, 11 Dec 2024 19:48:49 +0000</pubDate><link>https://www.copper-robotics.com/whats-new/2025-swe-internship-copper</link><guid isPermaLink="false">66a02354cb746f3329f82ce8:66a3b0efebda816b9f2d4095:6759ebae125c3824445905d1</guid><description><![CDATA[Our intern positions are open for 2025, come on and join in!]]></description><content:encoded><![CDATA[<p class="">Interested in joining a <strong>revolution in Robotics software engineering</strong>?</p><p class="">Join us for an internship at <strong>Copper Robotics</strong>!</p><p class="">We are redefining how robot software is built with our modern stack in <strong>Rust</strong>.</p><p class="">This is a chance for you to work in a professional setting on an <strong>Open Source project</strong> and build your portfolio.</p><p data-rte-preserve-empty="true" class=""></p><p class=""><strong>Responsibilities</strong></p><ul data-rte-list="default"><li><p class="">Working on <strong>meaningful improvements to the stack</strong> like improved parallelism, distributed workload, AI based scheduling etc...</p></li><li><p class=""><strong>End to End ownership</strong>. You are here to learn what it is like to be a Software Engineer. We will help of course but we believe that the best way to learn is to actually engage in meaningful work and own it.</p></li></ul><p data-rte-preserve-empty="true" class=""></p><p class=""><strong>Qualifications</strong></p><ul data-rte-list="default"><li><p class="">Be proficient in <strong>Rust</strong> is a must prior to joining.</p></li><li><p class="">Good understanding and interest in <strong>system programming</strong> and <strong>computer architecture</strong>. ie. if you need to google what "cache coherency" or "memory prefetching" means, this might not be an internship you'll enjoy...</p></li><li><p class="">Good working <strong>English</strong>.</p></li><li><p class="">Good communication skills (especially if remote)</p></li><li><p class="">A good sense of humor, we are serious about what we are doing while having a blast!</p></li></ul><p data-rte-preserve-empty="true" class=""></p><p class=""><strong>Pluses</strong></p><ul data-rte-list="default"><li><p class=""><strong>Robotics</strong>: algorithms, hands on builds, drivers, integrations, competitions etc...</p></li><li><p class=""><strong>ML</strong>: Fast inference, accelerated computing (SIMD/GPU), Q learning.</p></li><li><p class="">Contributions to APIs or development tooling.</p></li></ul><p data-rte-preserve-empty="true" class=""></p><p class=""><strong>How to Apply?</strong></p><p data-rte-preserve-empty="true" class=""></p><p class="">Our interview process is straightforward and hands-on. Instead of traditional whiteboard challenges like inverting a binary tree, we want to see you <strong>tackle a real-world task directly related to Copper.</strong> Here’s how it works:</p><ul data-rte-list="default"><li><p class=""><strong>Visit our GitHub repository</strong>: <a href="https://github.com/copper-project/copper-rs">https://github.com/copper-project/copper-rs</a></p></li></ul><p class="">Browse through the open issues and pick one that interests you and feels like in your alley.</p><p class="">Dive in, <a href="https://github.com/copper-project/copper-rs/issues" target="_blank"><strong>comment on the issue</strong></a><strong> or </strong><a href="https://discord.gg/VkCG7Sb9Kw" target="_blank"><strong>ping us on our discord server</strong></a><strong> about how you plan to solve</strong> this and work on a solution. When it is ready, post a PR! Feel free to ask questions or engage with us if you need guidance on discord!</p><p data-rte-preserve-empty="true" class=""></p><p class="">This approach helps us evaluate how you think, collaborate, and solve problems while giving you a taste of what it’s like to contribute to Copper and something to show not only to us but to any recruiter!</p><p data-rte-preserve-empty="true" class=""></p><p class="">We look forward to seeing what you can do. Let us know if you have any questions or need help getting started!</p>]]></content:encoded><media:content type="image/png" url="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1733947433117-KD0P26AEBMDQLM9JG50I/g226.png?format=1500w" medium="image" isDefault="true" width="565" height="544"><media:title type="plain">2025 SWE Internship @ Copper?</media:title></media:content></item><item><title>Copper v0.5.0 Release - Determinism landed</title><dc:creator>Guillaume Binet</dc:creator><pubDate>Mon, 02 Dec 2024 21:34:52 +0000</pubDate><link>https://www.copper-robotics.com/whats-new/copper-v050-release-determinism-landed</link><guid isPermaLink="false">66a02354cb746f3329f82ce8:66a3b0efebda816b9f2d4095:674e241453da7b3f6cec1bf4</guid><description><![CDATA[<p class=""><strong>Copper v0.5.0 Release - The deterministic replay feature is up</strong></p><p class="">We're thrilled to announce Copper v0.5.0! Here’s what’s new:</p><ul data-rte-list="default"><li><p class=""><strong>Deterministic Log Replay / ReSim:</strong> Run logs through your code with consistent results every time. Perfect for debugging complex robotic algorithms and building large datasets to test consistently your robot stack against.</p></li><li><p class=""><strong>Sensor Fusion Made Easy:</strong> Copper can generate for you a Time Alignment task based on your specifications. It allows you to align in time various sensor or data flows from different time horizons and present a coherent output of the observation as one task message.</p></li><li><p class=""><strong>Simpler Task Implementation:</strong> We’ve simplified the task creation by removing a Trait to implement.</p></li></ul><p class="">On that note, this release marks the point where <strong>we have</strong> <strong>stabilized the API</strong>. From now on, we will have a deprecation cycle if an API changes (ie. one release with a deprecation warning so the ecosystem can migrate smoothly). </p><p class="">As usual the release note is <a href="https://github.com/copper-project/copper-rs/wiki/Copper-Release-Log" target="_blank">here</a>.</p><p class="">Other highlights include improved Windows compatibility and key bug fixes for the BalanceBot demo and serialization.</p><p class="">Upgrade now and take Copper to the next level! </p>]]></description><media:content type="image/png" url="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1733175876750-0Q0IFIJWH8B6S6EZBTNQ/clocks.png?format=1500w" medium="image" isDefault="true" width="800" height="800"><media:title type="plain">Copper v0.5.0 Release - Determinism landed</media:title></media:content></item><item><title>Strategic Partnership with WAKU Robotics</title><dc:creator>Guillaume Binet</dc:creator><pubDate>Mon, 25 Nov 2024 15:58:20 +0000</pubDate><link>https://www.copper-robotics.com/whats-new/partnership-with-waku-robotics</link><guid isPermaLink="false">66a02354cb746f3329f82ce8:66a3b0efebda816b9f2d4095:673cf2c6ee9e0e6fff7515f4</guid><description><![CDATA[Excited to announce our strategic collaboration with WAKU!]]></description><content:encoded><![CDATA[<p class="">We’re thrilled to announce our strategic collaboration with <a href="https://www.waku-robotics.com/en" target="_blank"><strong>WAKU Robotics</strong></a>! This partnership offers Copper Robotics’ users enhanced robot performance with WAKU Care’s intelligent service solutions.</p>


  


  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/5caa193a-0e1b-41b9-8b72-e1d06bff8c9b/Copper+x+Waku.png" data-image-dimensions="1080x358" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/5caa193a-0e1b-41b9-8b72-e1d06bff8c9b/Copper+x+Waku.png?format=1000w" width="1080" height="358" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/5caa193a-0e1b-41b9-8b72-e1d06bff8c9b/Copper+x+Waku.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/5caa193a-0e1b-41b9-8b72-e1d06bff8c9b/Copper+x+Waku.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/5caa193a-0e1b-41b9-8b72-e1d06bff8c9b/Copper+x+Waku.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/5caa193a-0e1b-41b9-8b72-e1d06bff8c9b/Copper+x+Waku.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/5caa193a-0e1b-41b9-8b72-e1d06bff8c9b/Copper+x+Waku.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/5caa193a-0e1b-41b9-8b72-e1d06bff8c9b/Copper+x+Waku.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/5caa193a-0e1b-41b9-8b72-e1d06bff8c9b/Copper+x+Waku.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  



  
  <p class="">By leveraging WAKU Care’s automated ticket handling, data-driven maintenance insights, and proactive support strategies, Copper’s users can now achieve optimized runtime and superior service management, taking their robotics systems to new heights. </p><p class="">Check out the <a href="https://www.waku-robotics.com/en" target="_blank">WAKU Robotics website</a> to explore more their solutions!  </p><h4>Looking Ahead: More Collaborations to Come</h4><p class="">This partnership with WAKU Robotics is just the beginning. Copper Robotics is committed to continuous growth and innovation, and we are excited to explore future collaborations with other leading companies in the robotics and automation sectors. Together, we can push the boundaries of what’s possible and deliver even greater value to our users.</p><p class="">We look forward to working with more industry leaders to bring new solutions that will enhance the performance, reliability, and efficiency of robotics systems across all industries.</p>]]></content:encoded><media:content type="image/png" url="https://images.squarespace-cdn.com/content/v1/66a02354cb746f3329f82ce8/1732054386210-211P4B4EPOQGQT4OF5FQ/Copper+x+Waku.png?format=1500w" medium="image" isDefault="true" width="1080" height="358"><media:title type="plain">Strategic Partnership with WAKU Robotics</media:title></media:content></item></channel></rss>