Getting Started with OpenJAUS
OpenJAUS is a complete C/C++ platform for robotic applications. Many robotics
developers can benefit from OpenJAUS as both an educational tool and a platform
for the development of their robotic applications. The latest release of
OpenJAUS is version 3.3.0 and is based on version 3.3 of the Joint Architecture
for Unmanned Systems' (JAUS) Reference Architecture document. It is
highly recommended that new JAUS developers
obtain a copy of the
Reference Architecture and familiarize themselves with it. OpenJAUS is
designed to be cross-platform and has been tested on both Windows and Linux and
on a variety of computing platforms including x86 and ARM9 processors. The OpenJAUS
code base is split into four major packages: libjaus,
libopenJaus, ojNodeManager
and ojVehicleSim.
Libjaus is a library which contains all
the defined JAUS data types, messages and entities. This library is written
entirely in ANSI standard C99 to more easily facilitate the ability to compile
the library for a large variety of targets and operating systems, including
embedded systems. Most of the data structures an OpenJAUS developer uses will be
found inside libjaus. More details on using JAUS messages from this library can
be found in the Sending & Receiving Messages
tutorial and in the Creating an
Experimental Message tutorial.
LibopenJaus is a compilation of advanced JAUS functionality. It is also
divided into subsections of code:
nodeManager - The Node Manager is a special JAUS
component (with component ID 1) which provides three primary services:
message routing and JAUS entity discovery, and Node management. The OpenJAUS
node manager is a collection of C++ classes which provide a well-defined
interface through with a variety of transports are implemented and node
and/or subsystem management is handled.
nodeManagerInterface - The OpenJAUS Node Manager Interface provides a
set of functionality associated with JAUS components and the communication
between a JAUS component and it's local Node Manager. This includes the
inter-process communication interface, service connection management (see
the Service Connection tutorials for more details on Service Connections [1,
2]) and large message
management. The Node Manager interface is written in C.
componentLibrary - The OpenJAUS Component Library is a collection of
functionality which comprises a framework for creating, maintaining and
using JAUS components with the OpenJAUS code base. The Component Library
accelerates development of components by abstracting operating level
specific functionality. More details on the component library can be found
in later tutorials including
Creating a Component and Sending &
Receiving Messages. The ojVehicleSim is built on using the component
library and provided in the code base as an example.
ojNodeManager is an implementation of the OpenJAUS Node
Manager class. ojNodeManager provides a console-based interface to the node
manager. More details on using ojNodeManager can be found in the tutorial
Running ojNodeManager.
The ojVehicleSim is a complete simulated JAUS-compliant
vehicle. It consists of the following JAUS components: Primitive Driver, Global
Waypoint Driver, Global Position Sensor and Velocity State Sensor. These
components are implemented using the OpenJAUS component library and communicate
with each other by passing JAUS messages through the Node Manager. More details
about running the ojVehicleSim can be found in the tutorial
Running the ojVehicleSim.