Distributed Middleware

This article was written for version 2.0.9 of Core. Click here for the most recent version of the help center.

Autonomy systems need to be able to handle a lot of data asynchronously and perform complex operations in real-time. Often a single machine becomes a bottleneck, so it’s important to be able to distribute tasks to a variety of computing hardware across a network.

In order to achieve this, PolySync utilizes a middleware layer called Data Distribution Service (DDS). Middleware is a software layer that helps distributed applications communicate seamlessly amongst themselves.

The system is configured as a series of computers called Electronic Control Units (or ECUs), all interconnected via Ethernet. The physical Ethernet network is the PolySync bus. The applications that run on each ECU─which communicate over the middleware─are called nodes. All ECUs and nodes are referred to as a PolySync runtime.

ECUs

PolySync ships with some important pre-made nodes:

  • Dynamic Driver nodes
    • Responsible for interfacing with supported hardware, and often includes support for diagnostics, parameters, record/replay, and special data types
  • For each supported sensor a Dynamic Driver interface exists
  • PolySync manager node
    • Handles interfacing with ECUs at the system level, time synchronization between ECUs, and management of all other nodes on the ECU (only one per host)
  • PolySync Studio
    • Subscribes to all data from the bus for visualization

Once the middleware is running, you can build your own application nodes and have them perform several actions, such as:

  • Sensor fusion
  • Obstacle detection
  • Path planning
  • Safety rated control systems
  • Custom sensor interface
  • Process raw sensor data