Scene: Software for Map-Building and Localisation

Filter MPEG
Filter MPEG
Filter MPEG


Release 0.81, 11th June 2001. Ready-to-run demonstration programs now include:

SLAM simulator for a robot moving in 3D on non-flat terrain (see this paper on my home page).
Localisation for a single camera moving generally in 3D; simulation and REAL image implementation.
See SceneApp Tutorial for further information. Other new features include data analysis program with postscript output.


Scene is a flexible open-source C++ library for sequential localisation and map-building. Its highly modular design makes it suitable for applications in many different domains, from robots navigating in 1D, 2D or 3D with arbitrary sensing capabilities to single camera localisation (real-time structure-from-motion). As is explained in the papers on my home page, the sequential localisation and map-building problem (often referred to as SLAM) is far from solved. However, we hope that this software, already in use in combination with real robots on 3 continents (!), provides a useful platform for further research.

The Scene distribution includes a variety of pre-compiled, ready-to-run demo programs (for Linux) which give an excellent feel for map-building in different domains.

The ongoing goal of Scene is to create a general software framework for SEQUENTIAL estimation of the positions of moving bodies and the objects of which they are able to make sensor observations in the environment. Scene implements a generalised full SLAM approach, and is applicable to any problem where a moving sensor platform makes measurements of stationary feature in the world. 

Please let me know how you get on with Scene or get in touch if you have any problems: Andrew Davison,

Download and Installation

Current release version: 0.81, 11/06/2001 

Scene consists of two packages:

scenelib-0-81.tar.gz: SceneLib: the main library source files, licensed under the GNU Lesser General Public License.
sceneapp-0-81.tar.gz: SceneApp: application package and source files, including Linux executable programs, licensed under the GNU General Public License. These binaries have been tested on RedHat 7.0 and 7.1 systems and should be compatible with other current Linux distributions (though the source code is not platform-specific).

If you wish to try out the pre-compiled demo programs, you only need SceneApp. Download both packages if you want to compile or modify the source code (in this case you may also need to install other libraries as explained in the Source Code section below).

Extract the packages with:

tar xvfz scenelib*.tar.gz
tar xvfz sceneapp*.tar.gz
to produce the SceneLib/ and SceneApp/ directory structures.


The following documentation is all included within either SceneLib or SceneApp but is also viewable on the web here. Beginners should see the SceneApp Tutorial first.
SceneApp Tutorial HTML SceneApp Tutorial which explains how to use the example programs in SceneApp and gives suggestions for producing interesting behaviour. (SceneApp/sceneapp.html)
README files SceneLib README and SceneApp README  text files give detailed directory contents, installation instructions, license information, changes history, credits, etc. (SceneLib/README and SceneApp/README)
Printable Documentation The postscript document "Models and State Representation in Scene: Generalised Software for Sequential Map-Building and Localisation" gives a detailed introduction to the modelling framework in Scene. (SceneLib/Docs/
Automatically-Generated Software Documentation HTML API Documentation for the main map-building class hierarchy Scene, generated directly from header files using Doc++. This documentation is at an experimental stage and may be of little use yet. (SceneLib/Scene/autodoc/index.html)


Source Code

At this stage, the code has only been compiled under Linux. I would not expect big difficulties in compiling it under another UNIX operating system (I do not have any experience to relate regarding other platforms such as Windows). For compilation of SceneLib, you will need to install the Horatio library, and the example programs in SceneApp also currently rely on the graphical user interface library XForms. Horatio as it was developed at the University of Oxford is unofficially available under the GNU Lesser General Public License and by permission of Philip McLauchlan is mirrored on this web site at horatio.tar.gz (note that this version of Horatio is as completed by Phil when he left Oxford and differs from his later versions developed at UC Berkeley and the University of Surrey). Horatio will compile on Linux, Sun machines and possibly many others. XForms is available for many different platforms from the XForms Home Page. Note that XForms is limited to being free only for non-commercial use, unlike fully free alternatives such as GTK. You must set variables in SceneLib/make/Makefile.lib.options and to point to where you have installed these libraries.

The programs in SceneApp/ETLRobot/ and SceneApp/ETLDouble/ were designed to compile for use on a real robot as well as their simulation mode, though that requires linking with libraries for controlling robot hardware which are very specific to a particular robot system. The structure of Scene makes it very easy to write programs with the dual-compile feature, essentially replacing a Robot class with a generic Simulation module with the same interface. If you do want to use Scene with a real robot, you are welcome to contact me for help.