CyC inference

Lightweight Robotics Operating System

CyC inference: Lightweight Robotics Operating System

CyberCortex.AI is a lightweight robotics operating system composed of two platforms:
  • CyC inference system, located on the robots' embedded computing devices
  • CyberCortex.AI.dojo system, executed on High Performance Computers (HPC) used for training the AI algorithms
The CyberCortex.AI.inference system on each robot is a real-time implementation of a so-called DataBlock. A DataBlock is a table-like structure identified through an unique ID, where each entry is a so-called Filter. Each Filter output generates a datastream that can be used locally, as well as shared with other robots through the internet, using our CyC comm implementation.
In the diagram of CyberCortex.AI, the Filters from different DataBlocks exchange information via the internet by establishing peer-to-peer communication using a DataChannel and a set of redundant Signaling Servers. The dotted lines are used during development and training.
CyberCortex.AI Software Stack

CyberCortex DataBlocks

A DataBlock is a table-like structure specifying the structure of the processing pipeline running on a computing device that has an unique BlockID. The BlockID is equal to the device's MAC address. Each entry in the DataBlock is a so-called Filter running at a given sampling time. A filter outputs a processed datastream, while consuming datastreams provided by other filters. The output datastream is obtained either by locally processing the input datastreams, or by mapping the output of a filter computed on a remote device. In the later case, the output datastream of a filter running on a remote computer is mirrored locally, thus masking the actual location of computation.

A DataBlock and its filters are configured in a single *.conf file. Example of a DataBlock settings:


Core:
{
    ID                  = -1
    BasePath            = "/home/ubuntu/dev/src/CyberCortex.AI/CyC_GroundVehicle"
    StartupFiltersView  = []
    Filters             = "bin/filters"
    LogFile             = "logs/scout.log"
    ReplayDB            = "/home/ubuntu/data/scout"
}
                        
CyC comm implements the communication and synchronization mechanisms.
Complete DataBlock are detailed for ground and aerial End2End robotics stacks.

CyberCortex Filters

A Filter delivers the result of a specific algorithm (e.g. data acquisition, perception, sensor fusion, motion planning, etc.) at specified sampling time rates, while a robotic application is implemented by interconnecting different filters. The outputs of the filters are either computed locally on the robot, or are received from other robots through CyC comm, which is a DataChannel communication pipeline. In the above figure, the BlockID column of the DataBlock illustrated below indicates the DataBlock ID of the robot calculating the outputs of the filters on the local DataBlock i.
Each Filter output generates a datastream that can be used locally, as well as shared with other robots through the internet, using our CyC comm implementation.

The filters in a DataBlock are configured in the same *.conf file as the general DataBlock settings. Example of a Filter:


DNN:
{
    ID              = 10
    Active          = True
    Type            = "CyC_DNN_ONNX_FILTER_TYPE"
    IsPublishable   = False
    ReplayFromDB    = False
    dt              = 0.02
    dt_Sequencing   = 0.5
    InputSources    = (
                        {FilterID = 1, Description = "Input image"}
                      )
    Parameters      = (
                        {name = "dnn_conf", value = "../DNN_Segmentation/configs/module/network/EncDec.yaml"}
                      )
}
                        

Temporal Addressable Memory (TAM)

Temporal Addressable Memory (TAM)
The Temporal Addressable Memory (TAM) has been implemented in order to synchronize different datastreams, as well as to manage the data propagation process through our AI inference engine. It acts as a First-In-First-Out (FIFO) cache of size τi, which stores a finite number of filter output samples together with their timestamps. The TAM is indexed and addressed by timestamps. These timestamps can be used to synchronize data coming from two filters running at different sampling rates. The filter in the image uses datastreams i and j as input, while delivering datastream k as output. The synchronized samples are read from the TAM using the available timestamps.
Drop us an email at: contact@cybercortex.ai