copper-rs 1.2: Live Telemetry Twins

Copper is firmly anchored into the reality of our users: networks can be unreliable, the robot might not come back, you might want or have a return link broadcasting your ground equipment position etc… With v1.2 we implemented a state of the art telemetry function fully leveraging the determinism of your favorite robot stack, read on!

In a nutshell copper-rs is now able to live clone itself over unreliable one way links. This magic is possible with Forward Error Correction to recover packet losses and of course the unique deterministic property of the copper stack so its Twin can reconstruct the entire state of your robot remotely!

Overall log streaming architecture

Let’s follow step by step how this magic happens:


(1)‍ ‍This is your normal copper stack

(2) This is your normal .copper onboard logging system. This becomes optional if you rely fully on this log streaming feature.

(3) You can set the series of minimal inputs to deterministically anything coming downstream of those input.

(4) Copper will stream its copperlists with FEC, it is done by sending after the fact error packet corrections for the past packets.

(5) Twin Copper decode, fix, reorder the stream from the lossy connection based on the redundancy in the protocol

(6) What if really we miss too much? No worries your stack can send recovery points (that are themselves self healing) to jump restart at any point your twin.

(7) Twin Copper stack is now exactly what is running your robot!

(8) You can log a standard .copper deterministic log

(9) You can build a full Telemetry display to expose exactly what is interesting for you operationally to watch: could be messages, task states, error states, even tasks fields or structured logging exactly like any locally running copper!


TUI example in the tree but you have a full API to be able to build a GU

Check out full demo application here: https://github.com/copper-project/copper-rs/tree/master/examples/cu_logstream_demo with a minimal remote telemetry console, simulated packed losses etc.

Other notable improvements in v1.2

To make the streaming possible the copperlist got a serious encoding optimization: for example our Flight Controller logging entropy improved from 5.9816 to 7.0975 bits/byte, indicating substantially less remaining waste. In actual bytes it is 52.31% smaller. This is expected for robots light in logging, ie no images etc as the metadata dominates.

new cu-anynet stereo 3d reconstruction for copper-rs

We also added an AI/ML based Anytime algorithm to give you another component you can directly use or inspire yourself to build similar ones. This one is cu-anynet that reconstruct quicky depth from stereo images.

And a bunch of ROS2 compatibilty improvements!

The full release note is here https://github.com/copper-project/copper-rs/wiki/Copper-Release-Notes

If you have any question, ping us at info@copper-robotics.com

Next
Next

Anytime Algorithms Support landed in v1.1.0