Ubiquitous Tracking Simulation Environment
I have rapidly developed the basics of a simulation environment. At the moment this is more a Visualisation, but it will form the basis of something that will allow further work to be done.
The program is called "pyubitracksim.py" and has the following components:
- Parsing of a BAUML (http://www.studierstube.org/projects/mobile/ocar/baumldoc.html) geometry file
- 2D Qt view of floor geometry (rather than walls, ceilings and other structures)
- Control points can be dropped onto the plan to define the path of a figure following a spline
- The splines are implemented using the SciPy (http://www.scipy.org/) library of scientific tools for Python
- A 3D view from the point of view of the figure in the plan implemented in Pivy.
The program currently has the following limitations which should be addressed:
- The control points do not have a 3D component. At the moment the path of the figure moves around at a constant y-value of 1.0 metres. A variable y-component should be introduced, so that the spline becomes 3D and the path of the figure moves at a constant height above the floor. This should probably be implemented by specifying which room each control point is in. The y-value of the floor of the room in the region of the figure can then be used to determine the position of the user's head.
- The double-buffering in the Qt viewer could be improved by using a separate
QPixmap for the background of the floor, as this should not change very frequently (only when there is a zoom in/out or rotation)
- The speed of the figure at the moment depends on a member variable
speed, the length of the spline and the number of the control points. A
QSlider should be used to specify the figure's absolute speed in
m/s. Another possibility is to specify the speed between individual control points.
- We need to accomodate multiple and interacting figures. This is partly a UI problem.
- The Pivy viewer is currently based on the bauml viewer which used various blending and opacities to produce a visually pleasing effect for external viewing. The opacity should be turned off (except for windows?) and more natural colours and textures should be used.
- The orientation of the ARToolkit markers as described in the BAUML file should be properly interpreted.
- The ARToolkit markers should be represented by the appropriate textures as currently they are just represented by cones.
QDialog should provide an interface to introduce deviations and abberations into the viewing direction of the figure. That is, he should look to right and left, up and down. He should not rigidly follow his spline - introduce some randomness (see UbitrackSimorient).
- The BAUML schema should be extended to take into account a
SpatialContainer, which groups together rooms on the same level i.e. the
- The numerical routines for converting matrices to quaternions, etc. should use SciPy or Numarray.
- The scene generated using Pivy should be manipulated so that they can be sent to some ARToolkit component, perhaps adding some noise or motion blur.
- pyubitracksim.py should become a DWARF service capable of talking to other Ubitrack components.
- Different tracking resources should be simulated, some within pyubitracksim.py, and others as separate DWARF services.
baumlGUIwidget widget is a left-over from a previous version of the bauml viewer. It should either be reimplemented or simplified.
These limitations form a natural TODO list, however, I will summarise the more imminent action points which you should distribute among yourselves:
- Represent ARToolkit markers correctly:
- correct textures (jfn)
- correct orientation, both in Qt view and Pivy view (jfn)
- Choose an appropriate colour scheme and lighting model for the 3D view (?)
- Make the splines 3D, currently they are 2D (?)
- turn pyubitracksim.py into a DWARF service (?)
- control the speed of the figure (?)
- 04 Feb 2004