To create a pointing device, we require a ray in space;
therefore, we need a point and a vector.
To accomplish this, we need two cricket listeners, one to give us a point in space and the other
to give position. We can also use a gyroscope. To get an accurate distance (direction and
distance would give us the vector), we use a laser rangefinder (Disto Memo by Leica Geosystems).
It has the added advantage of being able to see the dot on the target as well as get a continuous reading.
The term Software Flashlight comes from the fact
that once you have the coordinates of a
point on the wall, you can project onto the wall information about the structure.
For example, we can retrieve wiring information about a certain surface from a database given
its coordinates and actually projecting the diagram onto the surface itself, effectively
giving you "X-Ray Vision." One can use this technology for a variety of other purposes.
One can project geometric information that does not yet exist; for example, one can project
onto a wall the location of an electrical socket to be installed so that the electrician
who comes to install it does not have to measure, or at least, get a good general idea
of where it should go.
The workstation which runs Cricket3DServer actually
does all the computation. It
processes the signal to smooth out the noise, calculates the positions of the listeners,
gets a reading from the laser and plots them in 3D. To calculate position, one missing
piece of information is the location of the beacons themselves. They can be manually
Entered in the coordinate system of the building model, but once you have enough to
calculate position, the device itself can be used to enter the coordinates of nearby beacons.
The model file itself is in the easily readable UniGrafix format and beacon information is
stored in an easily human-readable file format as well.
MIT Building NE43 2nd Floor UniGrafix File
Sample Beacon Location File
The visualization has a primitive first-person type walkthrough
interface. It can render a grid of a certain
spacing - useful for buildings where there is a nice coordinate system defined by physical landmarks
and also for walking a small cursor through to enter beacon coordinates manually.
The visualization can also render spheres that represent the distance received from each beacon.
Where they intersect is the location of the listener.
Screenshot (old interface):
All of this is an intermediate step in building a software
flashlight. With some additional refinements
to position calculations, the device can be used to start populating the environment.
Mesa3D's implementation of OpenGL has been successfully compiled onto the iPAQ running Familiar Linux.
Compilation Instructions for Mesa3D + GLUT + your own programs
We recently got the HP F1252A PCMCIA VGA-Out card to work with Familiar linux on the iPAQ.
OpenGL runs on it with an acceptable level of performance considering how the iPAQ has
no FPU. Screenshots will be up soon. Wireframes (possibly textures) can be downloaded from the model database and projected onto the wall.
Theoretically, anything can be projected, so one can put onto the wall geometry that does not yet exist.