/zenoh-proxy

Enable small microcontrollers to participate in zenoh network.

Primary LanguageC++

Robotic Backbone

A generic PubSub communication protocol that enables small microcontrollers to be part of a bigger robot structure. uC considered are 256KB flash, 32KB RAM ( STM32F103 ). The protocol should be able to be passed across serial, USB . Primary intention is to use this via USB CDC and UDP

Roadmap

  • implement CBOR serialization for protocol messages : Pub,Sub,..
  • use a reflection API via C++ templates ( See Mira project C++ approach on serialization )
  • the reflection enables reading, writing , documenting and sharing the structure
  • use TinyCBOR for minimal memory footprint
  • create generic proxy for any broker : Zenoh , Redis , Iceoryx
  • enable selective publishing to lower update rate, maybe
  • store historical data for time series

Design goals

  • the smallest possible implementation in C++ at uC side
  • very compact protocol that makes maximum use of bandwidth ( topics and message types are identified by 1 byte id's)
  • a generic PubSub protocol that enables integration of any PubSub broker at proxy side
  • arrive at minimal latency E2E : uC <- middleware-> brain , in the order of a few millisec.
  • Support wildcard matching on topics

Base messages

These messages are send as a CBOR array ( 1 byte start and 1 byte end ) The messageType is 1 byte The id is 1 byte

Publish

  • id, value , qos
  • bi-directional

Subscriber

  • id, pattern

Publisher

  • id, topic

Connect

  • client Id

Disconnect

  • error

Keep alive to proxy is implementing by listening to own 'uptime' topic, this enables also latency measurement and publishing