Communication Architecture

Components

amino

General utilities, ie linear algebra, memory management, kinematics

ach

Publish-Subscribe IPC. Sends byte-array messages between process on the same or separate machines. Independent of other packages. Status: Core routines formally verified. Initial support for duplicating channels over the network.

somatic

Message definitions and routines that layer protobuf over ach. Daemon-management startup, logging, and debugging support.

Protocol Buffers

An Interface Description Language (IDL) with code generator for converting native types to/from byte arrays. More pages:

Drivers

The userspace component for hardware drivers may be implemented using achmsg. A driver should define the messages that it would like to send and receive, then provide a daemon program that will communicate those message on ach channels and perform the appropriate actions on the hardware device.

What this is Not

  • A Build System (already have make)
  • A Package Manager (already have apt)
  • A scripting language (already have sh, python, and lisp)
  • A portable runtime (already have POSIX)
  • An Operating System (that would just be silly)

Glossary

  • package: a collection of software that is a somewhat independent module. Same as in linux/bsd package managers.
  • channel: grouping unit for frames in ach. Kind of like a unix pipe or message queue with multiple senders and receivers.
  • ach frame: the byte arrays that ach will send as an individual unit
  • daemon: same as in unix
  • process: same as in unix

See Also