Install the TNM software - mushon/The-Normalizing-Machine GitHub Wiki
Windows
Hardware Prerequisites:
- Computer - PC
- Operating System - Windows 7+
- Sensor:
- Primesense Sensor / Asus Xtion Pro
- Microsoft Kinect
Installation:
- Make sure what camera you are using:
- For Primesense Sensor / Asus Xtion Pro camera install the OpenNI sensor drivers
- For Microsoft Kinect use the Kinect for Windows drivers (In some configurations the developer kit might also be useful, though usually the driver is enough)
- Connect the Kinect sensor and run
NiViewer.exe
to make sure everything works as expected (should see video and depth streams) - Download the TNM_Ready Windows zip file and unzip it in a Windows environment.
- Switch the projection screen orientation to portrait (like this)
- Run TNM4.exe
Calibrate the display
The Kinect sensor should be pointed at the black wall opposite to the projection wall. Here's an example from the setup in Athens:
We now need to calibrate it. Hit the g
key to bring up the GUI. You should see something like that:
Generally, try to move as little as possible, but if you need to play with calibration, this is how:
- If you can't see your mouse you can disable fullscreen mode by clicking
F
(uppercase)
The sliders describe the distance from of the screen from the sensor. The sensor is point (0,0,0) on the X,Y,Z axis. Note: The distance is set in millimeters.
- screenZ - the projection wall's distance from the Sensor (This is negative, since the screen is behind the sensor)
- screenB - the distance of the projection's Bottom edge in comparison to the sensor
- screenT - the distance of the projection's Top edge in comparison to the sensor
- screenL - the distance of the projection's Left edge in comparison to the sensor
- screenR - the distance of the projection's Right edge in comparison to the sensor
- spot Z - the distance of the user's spot from the sensor
Additional GUI parameters
- outsideScreenFactor - how far out the cursor needs to be to be invalid
- spot.z - distance from sensor [mm]
- spotRadius - (1st) radius of the spot for selection mode
- spotRadiusHysteresis - hysteresis, need to be <radius+hysteresis> far to leave state
- stepInThreshold - (2nd radius) to set state to GOTO_SPOT
- stepInThresholdHysteresis - hysteresis, need to be <threshold + hysteresis> far for spot to leave state
- idleThreshold - (3rd radius) to set state to step In
- idleThresholdHysteresis - hysteresis, need to be <threshold + hysteresis> far for spot to leave state
- selectionBufferWidth - width of center frame, where no video is selected
- handShoulderDistance - minimum hand distance from shoulder to start selection
- selectionTimeout - timeout to select video
- postSelectionTimeout - timeout between rounds
- recordingDuration - recording length
- resultTimeout - duration of RESULT state
- userMapAlpha - not used anymore. todo remove
- textAlpha - not used anymore. todo remove
- margin - frame border margin
- textY - offset of text assets from center
- lockCursorY - lock y-axis of cursor to center of screen
Start Populating new videos
The only video appearing will be our test1.oni. It is required to start the database. Record 4 sessions and then run the Data/records/replace4.py script. It will remove the test.oni from the results and would allow a fresh start.
The script takes the first 4 recording and creates a valid dataset.json file. there should be no other files in the directory apart from 4 recordings (more recordings will be ignored)
WARNING: this script overrides dataset.json
, use carefully. anyways, it makes a backup in 'dataset.json.bak', if something went wrong...
Optional (not necessary but recommended)
Change the path for record:
You can optionally save the records in a different directory (like a Dropbox dir) by:
- copy and paste the
Data/records
folder to wherever you want to put it - edit the
Data/_recDir.json
file and replaceC:/path/
with the path to yourrecords
folder - rename
_recDir.json
torecDir.json
Alternatively you can also place the whole project's folder in Dropbox, that's probably simpler…
Install TeamViewer
For troubleshooting's sake, it's not a bad idea to be able to connect to the computer remotely. So Install TeamViewer and make sure you have the access code (and share it with us)