Jump to main content | Jump to Primary Navigation | Jump to Sub Navigation


 

Architecture

The development platform is data-centred with our core abstraction being the property. A property is simply a source or destination for structured data. This might be:

  1. live sensory data e.g. from a camera, GPS, motor commands;
  2. processed data e.g. particle-filtered sensory data, computed odometry information;
  3. recorded data e.g. from a previous system run; or
  4. synthetic data e.g. from a physical simulation.

Many architectures are patterned after traditional, heavyweight object-oriented architectures. DevBot is different, rather than specifying complex hierarchies of classes and interfaces at compile time, DevBot affords complete runtime flexibility to create, compose and remap sets of properties.

system_diagram.png

Properties are contained within hosts which form a peer-to-peer publish-subscribe network. DevBot hosts publish a set of local (or bridged) properties. Subscribing to a property ensures that updates will be sent to the subscriber, cached and time-stamped to schedule. This means that code never has to wait to access the latest available reading. Local and remote property access utilize exactly the same API. For this reason we say that properties are Network transparent.

DevBot has an aggressively multi-threaded, asynchronous architecture. Two subsystems the scheduler and the dispatcher ensure that device service and event handler routines respectively are run to deadline. Such routines are typically executed concurrently to maximize throughput.

Property updates are transferred locally using shared memory and communicated to network subscribers via a lightweight UDP protocol. Multicast can be used where appropriate offering significant performance benefits over TCP-based schemes.