OpenJAUS Tutorials
JAUS Components
JAUS Messaging
| Tutorial: Running the Node Manager |
|
|
|
| Written by Danny Kent | ||||||||||||||||||||||||||||||||
Running the OpenJAUS Node Manager3. Typical ojNodeManager behavior 4. ojNodeManager Configuration File OpenJAUS Node Manager DesignThe Node Manager is a JAUS component which provides a unique set of capabilities which are required by all JAUS nodes. These include routing of messages within and between JAUS nodes, discovery of other JAUS entities and management of local resources such as other JAUS components. Similar to the Node Manager, the Communicator provides these capabilities between JAUS subsystems, as seen in the figure below. Due to the commonality between the JAUS Node Manager and the JAUS Communicator, the OpenJAUS Node Manager implements both components and can behavior as either a JAUS Node gateway, a Subsystem gateway or both.
The OpenJAUS Node Manager's design is shown in the figure below. It is implemented in a modular fashion to more easily allow the addition and subtraction of capabilities (particularly transport interfaces) to the system. Currently the OpenJAUS Node Manager has implemented three transport interfaces. These are the OPC UDP Interface, the JUDP interface and the OpenJAUS Component Interface. The OPC transport is a legacy interface which was commonly used by the JAUS OCUs and Payloads Committee (OCU) for interoperability experiments. The OPC interface is documented here. The JUDP transport interface supersedes the ETG interface and is documented in SAE document AS-5669. The JUDP interface is recommended for future JAUS systems and should be used where legacy support is not necessary. The OpenJAUS Component Interface is an UDP-based protocol through which components local to the machine can communicate with the local Node Manager through the loopback UDP device. Traffic over the OpenJAUS Component Interface is non-JAUS and is documented in the OpenJAUS Node Manager Interface document. These interfaces can be configured and enabled or disabled in the OpenJAUS Node Manager's configuration file (more details on the configuration file is available here).
Running ojNodeManagerThe ojNodeManager project is an implementation of the OpenJAUS Node Manager. It is designed to be cross-platform and run as a console application in both Windows and Linux. Once compiled (see the tutorial on compiling the codebase here), the ojNodeManger project can be executed. Before executing ojNodeManager, the nodeManager.conf file must be properly configured properly. More information about the configuration file can be found further in this tutorial. Once run, the output from the Node Manager will appear similar to below:
This console application provides a succinct set of user inputs for user interaction. These are listed below: t - Print the JAUS System Tree Typical ojNodeManager BehaviorDuring normal use of ojNodeManager, several events may occur in the Node Manager which will result in messages being output to the console window. This section attempts to document those messages and show example output from those cases. Local component check-in / check-outWhen a component local to the node comes online and "checks in" with its local node manager, the following shall be seen in the console window: Component ADDED: PrimitiveDriver-33.1 Once a component has checked-in with a node manager, it is required to send a Report Heartbeat Pulse message to the Node Manager at least once every 3 seconds (or 1/3 Hz). If this does not occur, the component will "time out" of the Node Manager and stop receiving messages from other JAUS entities. This is done to make the node manager and the overall JAUS subsystem more robust to component which crash or otherwise shuts down improperly. If a component timeout occurs, it is noted on the console with the following message: Component TIMEOUT: pd (PrimitiveDriver)-33.1 When a local component shuts down, it is responsible for "checking out" of the node manager as well. When this occurs, the following message will be displayed on the ojNodeManager console: Component REMOVED: pd (PrimitiveDriver)-33.1 Discovery of other JAUS NodesWhen a JAUS node comes online (specifically the Node Manager on that node) it will typically start broadcasting Report Heartbeat messages to other JAUS Nodes on the node network. When another JAUS node is discovered, it jump starts the JAUS discovery process (which is documented in the JAUS RA) and the ojNodeManager will display the following message: Node ADDED: JausNode-6 After discovery, nodes must continue to send heartbeat messages to other nodes during their lifetime. If a Report Heartbeat Pulse message is not received from another node for 5 seconds, it will timeout of the system tree and routing information related to that node will be removed. When this occurs, the following message will appear on the ojNodeManager console: Node TIMEOUT: OJNode-6 When an ojNodeManager is shutdown, it informs other JAUS Node Managers that it is no longer available through the use of a Report Subsystem Configuration message. This will cause the receiving Node Manager to remove the sending Node Manager's data from the system tree. When this occurs, the following message is displayed on the ojNodeManager's console window: Node REMOVED: OJNode-6 Discovery of other JAUS SubsystemsWhen a JAUS Subsystem comes online (specifically the Communicator on that node) it will typically start broadcasting Report Heartbeat messages to other JAUS Subsystems on the subsystem network. When another JAUS subsystem is discovered, it jumpstarts the JAUS discovery process (which is documented in the JAUS RA). The ojNodeManager will display the following message: Subsystem ADDED: JausSubsystem-1 After discovery, subsystems must continue to send heartbeat messages to other subsystems during their lifetime. If a Report Heartbeat Pulse message is not received from a particular subsystem for 5 seconds, it will timeout of the system tree and routing information related to that subsystem will be removed. When this occurs, the following message will appear on the ojNodeManager console: Subsystem TIMEOUT: OJSubsystem-1 When an ojNodeManager is shutdown, it informs other JAUS Subsystems that it is no longer available through the use of a Report Subsystem Configuration message. This will cause the receiving Subsystem to remove the sending Subsystem's data from the system tree. When this occurs, the following message is displayed on the ojNodeManager's console window: Subsystem REMOVED: OJSubsystem-1 ojNodeManager Configuration FileThe OpenJAUS Node Manager supports configuration via the nodeManager.conf file. This file defines a number of options which allow the user to enable, disable and configure the runtime environment of the node manager. The OpenJAUS code base is distributed with a template for the configuration file under the name nodeManager.conf.template. This file can be found in the ojNodeManager directory. The template is shown below for reference. # This subsection defines the JAUS characteristics of the node [JAUS] SubsystemId: NodeId: Subsystem_Identification: OJSubsystem Node_Identification: OJNode # This subsection defines the interfaces and their options for component communication [Component_Communications] JAUS_OPC_UDP_Interface: true OpenJAUS_UDP_Interface: true # This subsection defines the interfaces and their options for node communication [Node_Communications] Enabled: false JUDP_Interface: true JUDP_IP_Address: #JAUS_OPC_UDP_Interface: true #JAUS_OPC_UDP_IP_Address: # This subsection defines the interfaces and their options for subsystem communication [Subsystem_Communications] Enabled: true JUDP_Interface: true JUDP_IP_Address: #JAUS_OPC_UDP_Interface: true #JAUS_OPC_UDP_IP_Address: The configuration file is organized by sections. A section within the file is designated by a section title within blocks, such as [JAUS]. The OpenJAUS Node Manager makes use of four different sections as shown above. Within each section, configuration properties are designated as key / value pairs. The known keys for each section are documented below. This file allows the inclusion of comment lines by preceding the line with a '#' character (as shown above). If the configuration file or a required field in the configuration is not found or is invalid, the ojNodeManager will output an error message to the screen and terminate itself. JAUS SectionThis section is designated by the section header [JAUS] and contains items which are relevant to the JAUS addressing and namespace of the Node Manager, it contains four key / value pairs described below.
Component CommunicationsThis section is designated by the section header [Component_Communications] and contains items which are relevant to communications between the Node Manager and components local to the node. Both JAUS and non-JAUS traffic interfaces exist, with the non-JAUS traffic used solely as described in the OpenJAUS Node Manager Interface document.
Node CommunicationsThis section is designated by the section header [Node_Communications] and contains items which are relevant to communications between the Node Manager and other JAUS nodes.
Subsystem CommunicationsThis section is designated by the section header [Subsystem_Communications] and contains items which are relevant to communications between the Node Manager and other JAUS subsystems.
|






0 Comments