Lightfield Camera Array Usage Instructions
There are four machines that run the camera array: Nerdup, Wordup, Allthat, and Abagofchips. Each one runs one block of cameras in the array (one big blue box of controller cards, essentially.) For the most part, they are identical, except for Nerdup. Nerdup has a special card that has been programmed to generate a timing signal that gets sent to the rest of the array for synchronization. This means that any demo must include Nerdup.
The machines are running special wacky kernels that won't play nicely with Linux updates. This means that these machines _should not_ be connected to the real Stanford network. Right now they are connected to each other in some mini network, don't mess with it.
All of the controller cards are connected to their respective machines through a tree of firewire connections. Strung between the controller cards is a network of ethernet cables that deliver timing signals (not internet traffic.)
There is a KVM switch with keyboard and monitor sitting on the desk behind the camera array. For actual demos you'll want to borrow a projector from the admins to use instead of the monitor portion.
Nerdup - Something wrong with the graphics card, so it shouldn't be used for displaying the demo. It is required for the running demo, however, so deal with it.
Wordup - At startup it complains about a previous fan failure. Just hit F1 (or whatever it prompts you for) to finish the boot up.
Allthat - Presumably working fine? Have not booted it in years.
Bagofchips - Presumably working fine? Have not booted it in years.
Starting up the demo
- Power up Nerdup and Wordup by pressing the power buttons on their cases.
- Check their status on the KVM switch, make sure they are booting properly and dismiss any warnings. Note that these machines haven't booted for a while, so they'll likely want to do a filesystem check. This can take some time, so plan ahead for it.
- Login using username "bonzo" and password "ieee1394".
- Once the terminal is up on each machine, enter the following commands:
Nerdup's graphics card sometimes causes the default X windows resolution to be too high for the monitor to sync to, so the screen can go blank. If this happens, you can fix it by hitting CTRL-ALT-MINUS (that's control, alt, and minus key) a couple times.
- When X is launched, open up a terminal window and type the following commands:
nerdup]$ cd lfca_warp/src/camctrl
wordup]$ cd lfca_warp/src/camctrl
This initializes the firewire driver. You can ignore the warnings it gives.
- Now it's time to start up the actual camera controller application. Do the following commands:
wordup]$ ./camctrl -pseudoclient
The pseudoclient thing tells the wordup machine to be a slave to the timing signals from nerdup.
- Turn on the power strips for the camera array.
- Check that the boards show up in the GUI on wordup. In the main window hit the "Startup Boards" button for each machine (both nerdup and wordup). All boards should acquire some board ID numbers and such, and now have three colored lights next to their names (red, green, and blue). Check both nerdup and wordup for this bit too.
This step programs the boards for the array operations. Apparently they only have a tiny bootloader burned in, so we must program every time we turn on the array.
- Calibrate the cameras on your display machine (wordup). Open up the image display window (should be minimized or hidden behind the main window.) Open the "Tools" menu and select "Edit SAP Parameters." Now hit the button labelled "Load Homographies and Shifts." This loads up the pre-baked calibration matrices stored on the hard drive.
- Wait. Keep an eye on the terminal window, when the calibration loading is done, it'll say so.
- Almost done. Hit the button labelled "Grab Multi-MPEG" on wordup. The terminal should say something along the lines of "waiting for master signal." Now go back to nerdup and hit "Grab Multi-MPEG".
- The video should be streaming at this point on wordup--Nerdup will also be streaming video at this point, but it will be garbage because we didn't calibrate it... don't worry about it. The image display window can be moved off screen if you click on it and use the arrow keys. The top image is the synthetic aperture image, while the bottom is the view of a single camera somewhere near the middle. You can change the focus using the SAP Parameters window we opened earlier (Tools->Edit SAP Parameters.) SAP Focal depth controls the focus. Depth factor controls the range of focal distances reachable in the slider. For our lab setup, this should be set to 0.1.
- Yank the KVM's output video cable out and connect it up to the projector (collected from the admins).
- Adjust the lighting in the room if necessary.
- Impress the visiting people.
What to do when stuff breaks
- If it's just too dark, you can mess with the exposure and gain using direct I2C transactions. Main Window -> Transactions->Write I2C Register.
Destination ID: 63 for broadcast
Register: 0 for exposure, 0x10 for gain
Exposure is strange and non-linear. 0x0 is dark but not black. 0x30 is default. 0xFF is brighter, but not as bright as lower numbers. Strange.
Gain is more straight-forward. 0x0 is black. 0xFF is default and bright.
- Close the camctrl application on both machines. Turn off the array power strips, re-run redo1394 and continue from step 6 above.
- Turn everything off completely (nerdup and wordup included) and start again.
What to show during the demo
Only one row of cameras is used in the demo as set up above. Typical things to show are focusing through people, showing the difference between horizontal and vertical occluders, and commenting on vignetting. Play around, find neat things to do.
- Hit "Grab Multi-MPEG" to stop the streaming on both machines.
- Close out the camctrl app on both machines.
- Power down the array using the plug strips.
- Shutdown both nerdup and wordup through the normal OS logout stuff (right click, log out, shut down, wait patiently).
- When the terminals say "Power Down", it's safe to hit the power buttons on the machine cases. Do so and wait until the next demo day.