Data driven Architecture
The development platform is data-centred. Data is abstracted into properties.
A property is simply a source or destination for structured data. This might be:
- Real-time sensory data e.g. from a camera or motor commands
- Processed data e.g. particle-filtered sensory data
- Recorded data e.g. from a previous system run
- Synthetic data e.g. from a physical simulation
The platform has a multi-threaded, asynchronous architecture providing complete runtime flexibility to create,
compose and remap sets of properties. The platform's device drivers expose a device's functionality as properties to all derived systems.
Properties are contained within defined containers (hosts) and accessed through a
publish-subscribe network. Subscribing to
a property ensures that updates will be sent to the subscriber, cached and timestamped to schedule eliminating the need to wait
to access the latest available reading. Property updates are transferred locally using shared memory and communicated to network
subscribers via a lightweight UDP protocol. This offers unbeatable performance.
Network Transparency
All properties are fully and automatically network transparent. Hosts each store a
table of properties
they have cached. Hosts form a peer-to-peer publish-subscribe network which eliminates the bottlenecks of
traditional client-server architectures. Local and remote property access utilize exactly the same API
thus providing network transparency for properties. Initially a host only contains only local properties
but remote properties can be registered from remote hosts using a transparent HTTP/XML protocol.
Programming Language Support
These bindings allow controller/client applications but also allow properties to be created directly.
This enables components written in these high-level languages to be utilised within a cluster.
We believe that for most professional applications established programming languages are the right choice.
However for certain applications a simpler, more domain-specific language may be appropriate.
For this reason we are working together with various companies to provide support for more specific programming languages.
API Documentation