Laser Sensing Display for UI interfaces in the real world

Dependencies:   mbed

Fork of skinGames_forktest by Alvaro Cassinelli

Committer:
mbedalvaro
Date:
Wed Mar 28 14:40:01 2012 +0000
Revision:
0:345b3bc7a0ea
Child:
1:a4050fee11f7
This version (using rigid frame, base and child classes, etc) works, but the blob is strangely smaller. Need to check this.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbedalvaro 0:345b3bc7a0ea 1 #ifndef LSDTRAJECTORY_H
mbedalvaro 0:345b3bc7a0ea 2 #define LSDTRAJECTORY_H
mbedalvaro 0:345b3bc7a0ea 3
mbedalvaro 0:345b3bc7a0ea 4 #include <vector>
mbedalvaro 0:345b3bc7a0ea 5 using namespace std;
mbedalvaro 0:345b3bc7a0ea 6
mbedalvaro 0:345b3bc7a0ea 7 // CONTRAST RATIO to compute autoThreshold:
mbedalvaro 0:345b3bc7a0ea 8 #define MIN_CONTRAST_RATIO 1.3//2.4
mbedalvaro 0:345b3bc7a0ea 9 #define THRESHOLD_FACTOR 0.5//0.75 // 2/3 or 1/2 are good values
mbedalvaro 0:345b3bc7a0ea 10
mbedalvaro 0:345b3bc7a0ea 11 struct laserSensingPoint {
mbedalvaro 0:345b3bc7a0ea 12 // Position and color (after rendering)
mbedalvaro 0:345b3bc7a0ea 13 int x, y; // position of the point (after rendering - its integer, because it is in "laser projector pixels")
mbedalvaro 0:345b3bc7a0ea 14 char color; // laser color of the point (we will use the first three bits to set the RGB colors)
mbedalvaro 0:345b3bc7a0ea 15 // Detection:
mbedalvaro 0:345b3bc7a0ea 16 float intensity; // detected intensity
mbedalvaro 0:345b3bc7a0ea 17 int lightZone; // the thresholded light zone
mbedalvaro 0:345b3bc7a0ea 18 };
mbedalvaro 0:345b3bc7a0ea 19
mbedalvaro 0:345b3bc7a0ea 20
mbedalvaro 0:345b3bc7a0ea 21 class LaserSensingTrajectory {
mbedalvaro 0:345b3bc7a0ea 22
mbedalvaro 0:345b3bc7a0ea 23 public:
mbedalvaro 0:345b3bc7a0ea 24
mbedalvaro 0:345b3bc7a0ea 25 LaserSensingTrajectory();
mbedalvaro 0:345b3bc7a0ea 26 ~LaserSensingTrajectory();
mbedalvaro 0:345b3bc7a0ea 27
mbedalvaro 0:345b3bc7a0ea 28 // METHODS:
mbedalvaro 0:345b3bc7a0ea 29 void processSensedData();
mbedalvaro 0:345b3bc7a0ea 30
mbedalvaro 0:345b3bc7a0ea 31 // DATA:
mbedalvaro 0:345b3bc7a0ea 32 vector <laserSensingPoint> lsdTrajectory;
mbedalvaro 0:345b3bc7a0ea 33 char displayColor;
mbedalvaro 0:345b3bc7a0ea 34
mbedalvaro 0:345b3bc7a0ea 35 // parameters for thresholding:
mbedalvaro 0:345b3bc7a0ea 36 float autoThreshold;
mbedalvaro 0:345b3bc7a0ea 37
mbedalvaro 0:345b3bc7a0ea 38 // Statistics and tests:
mbedalvaro 0:345b3bc7a0ea 39 float maxI, minI; // Max and Min intensity
mbedalvaro 0:345b3bc7a0ea 40 bool lightTouched; // true if something went over the autoThreshold for the whole loop
mbedalvaro 0:345b3bc7a0ea 41 };
mbedalvaro 0:345b3bc7a0ea 42
mbedalvaro 0:345b3bc7a0ea 43 #endif
mbedalvaro 0:345b3bc7a0ea 44
mbedalvaro 0:345b3bc7a0ea 45