![[*]](foot_motif.gif)
Roy M. Turner
Jason Mailman
Department of Computer Science
University of Maine
Orono, ME 04469-5752
Voice: 207-581-3909.25in Fax: 207-581-4977
{rmt,mailman}@umcs.maine.edu
The Orca intelligent AUV mission controller, although still under development, is in daily use to support ongoing research on interagent communication, context-sensitive reasoning, and opportunistic reasoning for multi-AUV systems, such as autonomous oceanographic sampling networks. It is currently being developed and tested in a low-fidelity simulator. The plan is to transition the program, as it and its knowledge matures, to higher-fidelity simulations and ultimately to in-water testing aboard AUVs. This paper reports on recent work along these lines. Orca has been successfully interfaced to the Navy Postgraduate School's Underwater Virtual World to control a simulated Phoenix AUV, and it has been interfaced to a Pioneer land robot. The paper describes how this was done and the issues involved, as well as plans for future work.
The Orca program [Turner & Stevenson, 1991,Turner, 1994,Turner, 1998] is an intelligent mission controller for ocean science AUVs and a testbed for research on intelligent agent control. Although it is still in development, the current version of the program is in daily use to support ongoing research on interagent communication, context-sensitive reasoning [Turner, 1998], and opportunistic reasoning for multiagent systems composed of autonomous underwater vehicles (AUVs) [Lawton et al., to appear,Turner & Turner, 1998], such as autonomous oceanographic sampling networks (AOSNs) [Curtin et al., 1993].
Orca is being developed and tested in a low-fidelity multiagent simulator (SMART) developed locally [Turner et al., 1991]. The plan is to transition testing, as the program and its knowledge matures, from this simulator to higher-fidelity simulations, then finally to actual AUVs for in-water testing.
This paper reports on recent progress in this area. In particular, we report on our progress in interfacing Orca to a high-fidelity AUV simulator, the Naval Postgraduate School's Underwater Virtual World [Brutzman, 1995] and in interfacing the program to a small land robot. We discuss issues uncovered in this process, and we describe plans for interfacing Orca to a distributed, high-fidelity simulator, CADCON [Chappell et al., 1999], that is currently being built by the Autonomous Undersea Systems Institute (AUSI).
Orca is a mission controller for AUVs that has been in development for several years. The original target vehicle for Orca was the EAVE-III AUVs [Blidberg & Chappell, 1986] developed by the Marine Systems Engineering Laboratory (now AUSI). The target mission domain was oceanography. The goal was to allow the AUVs' users to specify missions to Orca in terms of high-level goals (e.g., ``take samples every two minutes while running a lawnmower pattern in area 1''), constraints, and other information, then have Orca decide how to carry out the mission and then do it. This frees the users from needing to know how to operate AUVs and allows them to concentrate on what they need from the mission. Orca is also responsible for monitoring mission execution, maintaining the health of the vehicle, and handling unanticipated events that occur.
Orca was developed based on the idea that it will interface with low-level vehicle control software that is specific to the vehicle being controlled. This low-level architecture (LLA) is expected to provide low-level control theoretic algorithms and handle hard real-time constraints. Orca sends it commands and receives sensor data from it.
In the case of the EAVE AUVs, the LLA is the EAVE layered software architecture [Blidberg & Chappell, 1986], as shown in Figure 1. This LLA is able to accept high-level commands (e.g., ``move to (x,y,z)''), to provide processed sensor data (sometimes by fusing several sensors), to handle some unanticipated events, and to control the vehicle to a limited extent should Orca malfunction or not respond quickly enough. The EAVE LLA was simulated in SMART.
Orca is a complex artificial intelligence program. Technically, it can be characterized as a reactive planner [Georgeff & Lansky, 1987, e.g.,] and also as an adaptive, schema-based reasoner [Turner, 1994]. It uses packets of procedural and contextual knowledge, called procedural schemas (p-schemas) and contextual schemas (c-schemas), respectively, to control all facets of its behavior. It is able to change its focus of attention and respond to unanticipated events as the situation demands.
Figure 2 shows a diagram of Orca's components. Event Handler (EH) is responsible for handling input from the LLA, including communication from other AUVs and users. This information is examined to detect unanticipated as well as predicted events. Processing goes on here, as well, to convert the incoming information into the appropriate knowledge in Orca's working memory. All mission-related and other tasks are represented as goals on Orca's agenda. Agenda Manager (AM) is responsible for maintaining an appropriate focus of attention--that is, for deciding which goal(s) to work on at any given time. Schema Applier (SA) is responsible for deciding which actions to take to achieve the goal in focus. It does this by retrieving appropriate procedural schemas from the long-term memory based on features of the goal and the situation, then interpreting these schemas to issue commands to the LLA and to do other, internal, actions. A communication module (not shown) handles vehicle-to-vehicle and user-to-vehicle communication.
The context manager, ECHO (Embedded Context-Handling Object) [Turner, 1998],
is responsible for maintaining Orca's sense of what its current context
is.
It
does this by retrieving contextual schemas from the long-term memory based on
features of the situation, then merging these c-schemas to form a coherent
picture of the context. Knowledge contained in the c-schemas is used to
handle unanticipated events (by sending EH context-specific knowledge about
how to detect, assess, and respond to them), maintain the focus of attention
(by sending AM information about context-specific goal priorities), decide how
to achieve goals (by sending SA suggestions for context-specific p-schemas for
goals), and interpret the situation (by providing all modules with predictions
about the world given the assessed context and by suggesting context-specific
ontology changes). ECHO also provides appropriate standing orders for
the context, that is, goals and parameter settings that should be in force due
to being in the current context. These include parameter settings for the LLA
(e.g., turn off obstacle avoidance behavior when docking, etc.).
Though Orca was developed with an eye toward controlling EAVE vehicles, we intend Orca to be a general-purpose agent controller. Consequently, in addition to testing Orca's ability to control simulated and real EAVEs, we also want to test its ability to control other kinds of agents, including other AUVs, land vehicles, and software agents. Orca was designed as a standalone reasoner, but we intend it to be useful in multiagent, cooperative distributed problem-solving systems as well. Consequently, we want to test its ability to control vehicles and other agents in a multiagent setting.
In addition to testing Orca's abilities, it is hoped that by using Orca to control several different kinds of agents, we will be able to expose inappropriate assumptions we made in the design of the program and to extend its capabilities.
To begin testing Orca's ability to control multiple kinds of agents, we selected two test platforms, one a high-fidelity simulation of an AUV, the NPS Underwater Virtual World, and another an actual robot, the Pioneer 1 land robot.
Don Brutzman's brutzman95 Underwater Virtual World is a high-fidelity simulation of the Navy Postgraduate School's Phoenix AUV [Brutzman et al., 1998] operating in a realistic environment. The version of the UVW we used runs on two Silicon Graphics computers. Figure 3 shows a screen shot of the UVW. Locally, we created a Java-based network client to help Orca, which is written in Lisp, communicate with the simulated Phoenix.
Phoenix has a layered software architecture. Ideally, Orca would replace the topmost level and communicate directly with the tactical level. This would give it control of the vehicle at roughly the same level as it expects when controlling the simulated EAVEs. However, at the time the work was done, the tactical level was not available. Consequently, we interfaced with the lowest level of the hierarchy, the execution level. This is actually a benefit, however, since this allows us to test Orca's ability to control a vehicle that does not have significant high-level control available.
The Pioneer 1 robot (see Figure 4), from ActivMedia Robotics, is a small, inexpensive land robot. It is controllable from a variety of platforms using either a serial cable or a radio modem. For our tests, we used a radio modem connected to a Sun SPARCstation.
The Pioneer robots come with a sophisticated interface and programming environment, Saphira [Konolige et al., 1997]. Locally, we created a Lisp-based interface to Saphira. Orca then communicated Saphira using that mechanism.
Our approach to interfacing Orca to the things it is controlling involves creating a low-level architecture interface to sit between Orca and the other software and hardware. This allowed Orca to be written without regard for the details of the ``body'' it would be inhabiting.
In its original incarnation in SMART, the LLA interface was very simple and relied on being embedded in a particular simulation environment. For example, communication between the simulated AUV LLA architecture and Orca was handled by simple message queues, and execution of all parts of the system was synchronous with ``clock ticks'' from the simulator controller. This obviously would not work with other simulators, much less with a real robot.
Our approach is to create an interface for each LLA Orca is to control.
At the current time, these are: the EAVE/SMART interface, for when Orca
controls a simulated EAVE in SMART; the Phoenix interface, for controlling a
Phoenix AUV in the UVW; and the Pioneer interface, for controlling a Pioneer
robot. Orca is written in Common Lisp and CLOS; the interfaces are as well.
Consequently, each interface is written as a CLOS class with associated
methods. All three classes are related and built on a common class that
provides some instance variables and methods needed by all three. When Orca
is to control a particular vehicle, simulated or otherwise, the appropriate
LLA interface is instantiated for it. Figure 5 shows a
diagram of the Phoenix interface. The Pioneer interface is similar.
Several issues arise when designing an LLA interface, ranging from prosaic to
challenging. The simplest to handle is the mechanics of communicating with
the target platform. The LLA interface can continue to communicate with Orca
via message queues, one for input to Orca and one for commands from Orca, but
now it must communicate with software it is not so tightly integrated with.
For the interface to Phoenix, we used Unix sockets. The LLA interface opens a
socket to a Java client, which communicates with the simulated Phoenix's
execution level software via another socket.
For the Pioneer interface,
communication is via subroutine calls to Saphira functions, which in turn
communicate with the robot.
Orca needs to know the current time for various reasons, and how it gets the time differs depending on what it is controlling. When controlling a simulated EAVE in SMART, it can directly access the global simulated time. For Phoenix, however, this will not work. Instead, its time needs to agree with the Phoenix's time. For Pioneer, time agreement doesn't matter; neither Saphira nor Pioneer needs to know the time. Consequently, Orca is free to use its own computer's clock.
To isolate Orca from its computational environment, we made time-keeping a function of the LLA interface in all cases. Orca always asks the interface for the time when it needs it. The EAVE/SMART interface returns SMART's simulation time, the Phoenix interface uses time information included in Phoenix's telemetry, and the Pioneer interface can just use Lisp's time function.
Much of the functionality of the LLA interface consists of ``impedance matching'': translating the representation of sensor information, vehicle status information (telemetry), and commands from one agent (e.g., Orca) to the other (e.g., Phoenix). This is handled in the Phoenix and Pioneer interfaces by a telemetry translation function.
The LLA interface has associated with it a process that is responsible for most of what the interface does. (Lisp processes are more accurately thought of as threads.) This process sleeps until there is information available on the socket or until a housekeeping timeout occurs. When there is telemetry information available, one of the things it does is to replace the stored telemetry with the new value so that the most current telemetry is always available. At periodic intervals, it translates the telemetry and delivers it to Orca via a message queue. For example, Phoenix's velocity is reported as three telemetry values, x-dot, y-dot, and z-dot; these are combined and delivered to Orca as:
At the present time, only telemetry values such as position and velocity are handled by the interfaces. Both Phoenix and Pioneer provide sensor information (e.g., sonar) as part of what we are here loosely calling ``telemetry''. In the near future, we will add functionality to the interfaces to handle this information as well.
Orca's commands must also be translated by the interface and delivered in a reasonable manner. Orca has a set of general commands it uses to control the vehicle it is a part of. These are not in principle fixed, but neither do we want to modify Orca's command set to match every vehicle or agent it is controlling. Some commands (e.g., (move-to (x y z))) are useful across a wide range of vehicles, even though the vehicle commands they correspond to may vary widely.
The problem is somewhat more complex than simply translating from one command format to another. Some of Orca's commands may, for example, have to be translated into more than one vehicle command. For example, the Orca command:
To handle this, the LLA interface process translates incoming commands into objects that are then placed on a queue of commands. These objects contain information about what LLA commands are needed to carry out the corresponding Orca command. Each time the LLA is ready to accept a command, the interface sends one of the LLA commands from the object at the head of the queue. When there are no more commands for the object, it is removed from the queue and Orca is notified that the command is done.
In some cases, commands that may be reasonable for some vehicles might not be readily translatable to a sequence of commands for another. For example, EAVE has some ability in its LLA to carry out search patterns; Pioneer does not. It may make sense for Orca to have a ``lawnmower search'' command that corresponds to one of EAVE's search patterns. However, it would be needlessly complex to make the Pioneer interface carry this out. It would make more sense in this case to have Orca, when it is controlling a Pioneer, directly control the lawnmower search by means of a procedural schema and issuing lower-level commands to Pioneer.
It is easy to determine when one of Orca's commands has been carried out: all
of the LLA commands have completed successfully.
But how do we
know when a LLA command has completed?
For some vehicles (e.g., the simulated EAVE), the LLA can tell the interface when the command is finished. For other vehicles, this is not the case. For these, the LLA interface must monitor the telemetry to decide when the command has finished. This is done in the Phoenix and Pioneer interfaces by their processes; when telemetry is received, the process checks command completion. For each LLA command, a corresponding function must be provided to be called to determine if the command is done. For example, the command to move to a particular depth is considered done when the AUV is near that depth, where what ``near'' means is settable by Orca.
Other issues have not yet been addressed in our work. For example, Orca normally checks its input only every five seconds, for two reasons: we expect it to sit atop a complex, competent LLA that will handle events requiring faster responses; and Orca's current event handling mechanism is CPU intensive and rather slow. Though this cycle time is sufficient for the EAVE/SMART interface, and seems to be for Phoenix, it definitely will not be for Pioneer. We will need to experiment with input cycle times to determine what is appropriate for each vehicle.
We have also not addressed the need to handle multiple simultaneous commands. For example, Orca may direct the AUV to move to a location a kilometer away, then take data samples as the vehicle transits. At the moment, the Phoenix and Pioneer interfaces use a queue for outgoing commands, which restricts the commands that can be executing simultaneously to one. In the near future, we will modify the interfaces to be able to handle multiple simultaneous commands. This will also allow commands that do not, by design, complete (e.g., ``move along this heading until I tell you otherwise'') not to prevent other commands from being executed.
So far, we have not modified Orca's knowledge to fit the vehicle it is controlling; Phoenix, for example, is being controlled by an Orca instance whose knowledge is designed for controlling an EAVE. This will be addressed in the near future for Phoenix, and it will be critical for Pioneer. It will entail changing not only some schemas and commands (e.g., Pioneer does not move in three dimensions, so the MOVE-TO command will need to be modified), but also Orca's basic concepts relating to who it is, that is, what ``body'' it has. By the time of the symposium, we should have made significant progress on this.
At the time of writing, Orca can control a simulated Phoenix in the UVW to a limited extent. A version of the Pioneer interface was built as a student project in late 1998. That version, which is very similar to the Phoenix interface, was able to accept commands from Orca and send them to the Pioneer robot. It was never tested with Orca interpreting schemas in normal operating mode, since that version of the interface was missing command completion code. Work is underway to upgrade the Pioneer interface to bring it up to the level of the Phoenix interface. Lessons learned while building the Phoenix interface should help speed this process along.
The ultimate goal is a set of LLA interfaces for targets of interest that will allow us to test Orca as it controls a variety of vehicles in a variety of environments. There are several areas for future work relating to this goal:
Developing the interfaces gives us experience that will be critical when interfacing Orca to real hardware. Indeed, the interfaces we are developing will most like be able to control real hardware; in the case of the Pioneer interface, it already does.
![[*]](foot_motif.gif)
This document was generated using the LaTeX2HTML translator Version 97.1 (release) (July 13th, 1997)
Copyright © 1993, 1994, 1995, 1996, 1997, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
The command line arguments were:
latex2html -split 1 -font_size 10pt -no_navigation -local_icons body.tex.
The translation was initiated by Roy Turner on 7/7/1999