The JAUS System
A JAUS System is broken up into a 3-tiered logical hierarchy consisting of:
- Subsystems
- Nodes
- Components
A JAUS System must contain at least one Subsystem, with at least one Node, with at least one Component that supports at least one Service.
Subsystems
A JAUS System consists of one or more Subsystems. Usually a Subsystem is a vehicle, robot, or operator control unit (OCU).
Nodes
A JAUS Subsystem consists of one or more Nodes. A Node is usually a single computing resource such as a PC or embedded processor. If a robot has 2 computers which are both JAUS-compliant, then the Subsystem usually has 2 Nodes.
Components
A JAUS Node consists of one or more Components. A Component is a software element that can communicate with other JAUS Components in the JAUS System, and is required to access and utilize any JAUS Services. A Component that provides one or more Services is a server, while a component that uses one or more Services is a client. A Component can be acts as both a server and a client, even for the same service.
A JAUS Component is the only addressable entity within the JAUS System and is uniquely identified using a dotted address consisting of SubsystemID.NodeID.ComponentID
. For example, a JAUS Component with address 100.1.25
is a JAUS Component with ID = 25
, running on a Node with ID = 1
, which is part of a Subsystem with ID = 100
.
Services
A JAUS Service is the mechanism by which capabilities are exposed and made available on the Subsystem. For example, if a Component supports the PrimitiveDriver Service, that Component is capable of moving the robot using a simple, open-loop control mechanism. If a Components supports the GlobalPoseSensor service, then that Component is capable of providing the robot's position relative to a global reference point.
Services function in a server-client relationship such that a Component can act as a server for a service, as a client of a service, or both a server and a client.
The JAUS Standard document primarily defines server side behavior, and leaves the client side behavior mostly up to the implementer, as such when the term "JAUS Service" is used, it is most commonly referring to the server side of the interaction.
Learn more about JAUS Services here.