Quagent Client for XSB Prolog

The file quagent_client.P contains predicates that implement the action (7.1), perception (7.2), and proprioception (7.3) commands from

   Quake II as a Robotic and Multi-Agent Platform
   Chris Brown, Peter Barnum, Dave Costello, George Ferguson, Bo Hu, Mike Van Wie
   The University of Rochester
   Computer Science Department
   Rochester, New York 14627
   Technical Report 853
   November 2004

XSB Prolog code copyright (C) 2007 Simon D. Levy.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

The following predicates are supported. Note that + indicates an input parameter, - an output parameter, and ? a parameter that can be either input or output.

quagent_init(-Client)

Launches a new client in a Quagent server running on localhost at port 33333 (the likeliest defaults). Client is returned in variable Client. This is the same as quagent_init(localhost, 33333, Client).

quagent_init(+Host, +Port, -Client)

Launches a new client in a Quagent server running on host named Host at port number Port. Client is returned in variable Client.

quagent_done(+Client)

Tells server we are done.

quagent_walkby(+Client, +Distance)

Walks a certain distance.

quagent_runby(+Client, +Distance)

Runs a certain distance.

quagent_turnby(+Client, +Distance)

Turns left (right) by some number of positive (negative) degrees.

quagent_stand(+Client)

Stops any motion.

quagent_pickup(+Client, +Item)

Picks up named item.

quagent_drop(+Client, +Item)

Puts down named item.

quagent_ask_rays(+Client, +NRays, -ItemList)

Queries items surrounding bot in given number of directions. Returns a list of items, where each item is a name followed by an [X, Y, Z] location.

quagent_ask_radius(+Client, +Radius, -ItemList)

Queries items in given radius. Returns a list of items, where each item is a name followed by an [X, Y, Z] location.

quagent_cameraon(+Client)

Puts camera on bot.

quagent_cameraoff(+Client)

Puts camera on human player.

quagent_get_where(+Client, -Where)

Gets position, orientation, and velocity. Returns a list of the form [[X, Y, Z], [Roll, Pitch, Yaw], Velocity]. Velocity is currently hard-coded to 1 by Quagents server.

quagent_get_inventory(+Client, -Inventory)

Gets inventory of items. Returns a list of items.

quagent_set_energy_low_threshold(+Client, +Threshold)

Sets low-energy threshold. This should really be done in the quagent.config file.

quagent_age_high_threshold(+Client, +Threshold)

Sets high-age threshold. This should really be done in the quagent.config file.