Synaptic & Data++

Robotics is really all about managing complexity.

No other discipline requires the orchestration of so many disparate fields and technologies, most of which are still being invented. With this in mind, every framework we introduce should be laser-focused on minimizing complexity. If a program, framework, or library instead adds layers of confusion, increases difficulty, or raises the learning curve, I would argue it falls short as a contribution to the robotics community.

With that, let me introduce two special libraries: synapse (for embodied link) and data++ (for data modeling). The advantage of using these is their ability to orchestrate highly complex data flows with just a few lines of Python. Plus, they offer automatic type validation using type hints, powered by Pydantic and Rust. These hints are actually views of the C structures used at runtime, so when you want to use an ML library that accepts arrays, you can simply hover your mouse to see dimensions, datatype, and even semantic dimension labels—all natively in Python or optimized C.

But mbLink introduces a radical new approach to communication. No serialization, addressing protocols, or send/receive commands are needed if you don't want them. Just configure the endpoints once, and then you can access or stream data, or set values, directly through simple Python objects. For example, accessing an attribute retrieves its value from memory or disk, while setting an attribute sends it to the desired destination.

Streaming and blocking are also intuitive. To stream an attribute, you simply iterate over it until you receive None, which signals the end. Blocking is as simple as using the Unix-style > symbol, while >> appends to a list. Finally, you have the option to configure QoS and DDS.