Hardware / LightDemo

The idea to build this experimentation prototype came to me after a heated discussion with a colleague at UCLA regarding whether or not light sensor information can be used to reliably localize light sources in 3D. So what does it do?

Briefly speaking, the experimentation prototype here:

  • Collects data from light sensors
  • Computes the position and intensity of a light in 3D space
  • Graphically displays the results in real time
  • Computes the position of a light compass given the position of a light source(s).
  • Can determine faulty and/or obstructed sensors
  • Provides a means to check the accuracy of the computed results in real-time.

The set up is fairly straight forward. I wired 8 photovoltaic sensors directly to a simple ADC module which I read through bit-banging the parallel port on a standard PC. The hardware is able to reliably achieve more than 10Hz sampling per sensor which was more than enough for my needs.

Each sample consists of one byte of voltage read from each sensor. The sensors produce roughly in the range of 100mV to 400mV in a typical indoor setting. As you can see in the picture below, I have arranged the 8 photovoltaic sensors in a "random" arrangement on a 2D plane (standard 8.5"x11" sheet of paper). The location of each sensor and the surface normal (in this case all perpendicular to the plane of the paper) are input to the light modeling program that I wrote.

Below is a screen-shot of what I display on the PC screen through the C++ application (MFC/OpenGL). The software communicates with the data collection subsystem using standard sockets (UDP). On the right, the raw data received from all the sensors is displayed both in text and bar-graph forms. I then programmed a simple conjugate-gradient based non-linear solver to take the readings from the sensors, combined with their positions and surface normal information to compute the position and intensity of a point light source <x,y,z,I>. The graphical result is then displayed in 3D on the left with the size of the sphere corresponding to the light source indicating the computed intensity of the light.

The pictures above show the light compass prototypes that we designed while pondering the details of this problem. The idea here is to mount multiple sensors on the surfaces of a rigid body with different surface normals and use the additional information obtained by these sensors to compute more things about the object and the environment. For example, as can be seen in the second video link below, the data collected by such a light compass can be used to determine the position of the object in 3D (assuming the orientation and the position of light sources is known). On the right, you can also see the ADC hardware used here.

For further details on the design of the light compass, please refer to:

Video Demos

  • The first video is of a moving light source. The sensor data is used to determine the <x,y,z> position and the intensity of the light in real time.

Click to view video (760 KB avi - xvid format)

  • The second video is of a stationary light source that has already been localized using the sensor data and a moving cubic light compass. The data from the light compass is used to determine its <x,y,z> position in 3D space, assuming a given orientation (as held by me).

Click to view video (860 KB avi - xvid format)

Note: You may have to right-click and save the video files first.