SubSim Overview


The motivation for development of an autonomous underwater vehicle (AUV) simulator is to allow researchers to develop autonomous software without the need for a physical AUV. Application design, controller tuning, mission simulation, and fault-tolerance can all be tested with the simulator. This relieves requirements for on-board data collection, scenario construction and underwater recovery of an AUV.

The primary audience is universities, schools and other educational institutions interested in competing in the Australian Autonomous Underwater Vehicle (AUV) competition. The SubSim program was developed for the 1st International Autonomous Underwater Vehicle Competition, to be held in Perth, Western Australia, in Dec. 2005.  It is hoped that the availability of a simulation platform will increase the interest in AUV research and boost participation in AUV competitions.

For instructions on getting started with SubSim refer to the SubSim quick start guide.  The full SubSim User Manual is available online and as part of the SubSDim distribution.



Research on AUV design begin in the 1970 and has continued to the present time. AUVs have been constructed to perform a variety of tasks that are impossible for human divers to perform, due either to extreme conditions (i.e. water depth or temperature) or duration under water. AUV hardware components are usually encased in one or more pressure vessels. If multiple vessels are used, these are fixed to one another with a rigid frame. Shapes for AUVs range from spherical to cylindrical to prismatic (i.e. rectangular). AUVs may be as small as 1 meter in length, or as large as 4 meters in length. Weights range from approximately 70 pounds to more than 2 tons. Missions are anywhere from 1 hour to 36 hours in duration with target depths of 30 meters to 6000 metres. The range of an AUV may be up to 1000 kilometers. Typical operating speeds for AUVs range from 1 knot to 5 knots.

Applications of AUVs are:

World Simulation

The objective of SubSim is to realistically simulate an autonomous robot in an underwater environment.  The underwater environment will be referred to in this document as the World, and three-dimensional objects in the environment are referred to as World Objects, or simply Objects. In order to realistically simulate the underwater world, the objects must act, and interact, with their environment in a similar manner to the physical reactions of real objects.  This includes motion and visual appearance.  Virtual sensors must also act like their real counterparts, so that any processing unit using information from a virtual sensor would not be able to differentiate the simulated signal from the real signal. 

Physical Model

In order to accurately model the motion of objects under the influence of forces and collisions, a 3rd party physics engine called Newton was used.  More information about Newton can be found at

Sensors, motor, and liquid effects were modeled using the Physics Abstraction Layer (PAL) library. More information about PAL can be found at

Graphical Model

OpenGL along with a custom high-level interface were used to render the objects on the computer screen.  SubSim currently only supports Milkshape 3D models.

Controller Simulation

A requirement for the SubSim project is to simulate the execution of compiled code on an embedded system. For SubSim, the embedded controller is used to autonomously control a unmanned underwater vehicle. This requires that the SubSim application accept compiled code from source that has little or no changes from that for the actual embedded system.

Eyebot Controller

The Eyebot microcontroller is a 32-bit microcontroller that has a variety of I/O capabilities. The Eyebot API was implemented as a set of plugins. This provides a high-level interface to the sensors on the submarine, as well as driving commands. More information about the Eyebot microcontroller can be found at The Eyebot API is documented here.

Customizing SubSim

Creating a Custom AUV

This section covers how to create a custom autonomous underwater vehicle that can be simulated with SubSim.

  1. Create a directory to hold all the information about your AUV.
  2. Create the XML configuration file.  The configuration file determines everything about your AUV.  The configuration file should be stored in the custom AUV directory you created.
    The XML specifications are described in the Physics XML Guide
  3. Create the graphical model.  Use Milkshape 3D to create a visual representation of your AUV.  The graphical model should also be stored in the custom AUV directory you created.
  4. Write your program (or use an existing sample program). You can use either the:
  5. Try it out!  Write an Simulation File as described in the Simulation File Guide and experiment with your AUV.

Extending SubSim

SubSim was designed to be extendable through the use of Plugins.  See the Plugins HOWTO for more information on writing and compiling your own Plugin.

A low-level API interface that can be used to implement other microcontroller APIs is available. 
See the Low-level HOWTO for more information on using the low-level API.

Installation and System Requirements

SubSim has been tested on the Windows XP and Windows 98 Second Edition operating systems, on both Intel Pentium and AMD Athlon processors.

An OpenGL 1.3 compliant graphics card must be present for the SubSim to display graphics. The graphics card must support:

SubSim has been tested with the following graphics cards:

The following compilers are supported by subsim:

The minimum recommended CPU requirements are a Pentium/Athlon 1500 or above with 128mb RAM and at least 150 MB of free hard drive space

SubSim supports the following input file formats for its resources:

Licensing and Legal Use

The following is a description of licensing and legal use of SubSim.

Obtaining SubSim

SubSim can be downloaded, free of charge from

Using SubSim

SubSim is intended as a test platform for academic institutions and private industry.  No guarantees are made to the accuracy of the simulation in SubSim.  Use SubSim at your own risk.  The authors and distributors of SubSim are not responsible for any harm to persons, hardware or data, direct or indirect, that results from using SubSim.

You may install and use SubSim, free of charge, on an unlimited number of computers.  You may not sell or redistribute SubSim as stand-alone software or as part of commercial software.  You may not use SubSim for commercial purposes.

3rd Party Libraries

The following are non-commercial libraries used in SubSim:

The wxWidgets (previously wxWindows) library was used for an application framework, graphical windows, and event handling.  More information about wxWidgets can be found at  A copy of the licence can be found in the subsim/doc/ folder.

Dynamic simulation for SubSim is performed by the Newton Game Dynamics engine.  More information about Newton can be found at A copy of the license can be found in the subsim/doc/ folder.

XML parsing was performed by the TinyXML library.  More information about TinyXML can be found at A copy of the readme and license can be found in the subsim/doc/ folder.

Sensor and Actuator simulation for SubSim is performed by the Physics Abstraction Layer. More information about PAL can be found at


SubSim was implemented by (in alphebetical order):

Project supervision was done by Thomas Braunl.  The Eyebot API, Mako and USAL AUV models was provided by the Centre for Intelligent Information Processing Systems (CIIPS) at the University of Western Australia. The SubSim logo was produced by Martin Sawtell. The SubSim project was sponsored by Raytheon Australia.