-
Notifications
You must be signed in to change notification settings - Fork 0
/
TouchScreen.mm
184 lines (184 loc) · 19.5 KB
/
TouchScreen.mm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
<map version="0.8.0">
<!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net -->
<node CREATED="1154959596520" ID="Freemind_Link_1899298663" MODIFIED="1154959629667" TEXT="TouchScreen">
<node CREATED="1154959832626" ID="Freemind_Link_1143625659" MODIFIED="1156185548558" POSITION="right" TEXT="My Todo">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1154960028577" ID="Freemind_Link_1864194040" MODIFIED="1154960032331" TEXT="Research OSC"/>
<node CREATED="1159557830850" ID="Freemind_Link_1819899799" MODIFIED="1159557834916" TEXT="optimize blob detection"/>
<node CREATED="1159557849999" ID="Freemind_Link_356882318" MODIFIED="1159557855427" TEXT="more example apps - claymod"/>
<node CREATED="1159557857250" ID="Freemind_Link_105241635" MODIFIED="1159557859764" TEXT="mousedriver app"/>
</node>
<node CREATED="1154959812193" HGAP="42" ID="Freemind_Link_1209522278" MODIFIED="1155303032552" POSITION="right" TEXT="Links" VSHIFT="16">
<icon BUILTIN="gohome"/>
<node CREATED="1161177596024" ID="Freemind_Link_824174246" LINK="http://publicsvn.edmstudio.com/multitouch/" MODIFIED="1161177620430" TEXT="Our Public SVN containing Touchlib Sourcode"/>
<node CREATED="1154959619365" ID="Freemind_Link_1125938638" LINK="http://www.makezine.com/blog/archive/2006/03/the_future_of_interfaces_is_mu.html" MODIFIED="1154959619365" TEXT="MAKE Blog The Future of Interfaces Is Multi-Touch"/>
<node CREATED="1155560172274" ID="Freemind_Link_1137742426" LINK="http://www.edmstudio.com/experimental/multitouch.html" MODIFIED="1156425755558" TEXT="Futnuh's screen"/>
<node CREATED="1154959619375" ID="Freemind_Link_220788579" LINK="http://opencvlibrary.sourceforge.net/" MODIFIED="1154959698535" TEXT="OpenCV Library Wiki"/>
<node CREATED="1154959619375" ID="Freemind_Link_643704184" LINK="http://www.sport4minus.de/blog/?cat=13" MODIFIED="1154959690025" TEXT="Blog about a dude making a screen"/>
<node CREATED="1154959619365" ID="Freemind_Link_820260002" LINK="http://cnmat.berkeley.edu/OpenSoundControl/" MODIFIED="1154959718978" TEXT="OSC - OpenSoundControl"/>
<node CREATED="1154959619355" ID="Freemind_Link_1878667883" LINK="http://portal.acm.org/citation.cfm?id=1095034.1095054" MODIFIED="1154959769615" TEXT="PDF - Article by Jeff Han"/>
<node CREATED="1154959619325" ID="Freemind_Link_997312197" LINK="http://coolcosmos.ipac.caltech.edu/cosmic_kids/learn_ir/index.html" MODIFIED="1154959749803" TEXT="Basic scientific IR info"/>
<node CREATED="1154959619355" ID="Freemind_Link_314459010" LINK="http://www.hoagieshouse.com/IR/" MODIFIED="1159976499767" TEXT="Infra Red Webcam hack"/>
<node CREATED="1155560050511" ID="Freemind_Link_804497633" LINK="http://www.pixelsumo.com/tags/multitouch/" MODIFIED="1155560086602" TEXT="Pixel sumo - touchscreens"/>
<node CREATED="1155560108343" ID="Freemind_Link_1859061243" LINK="http://videosift.com/story.php?id=7517" MODIFIED="1155560122954" TEXT="Minority Report Style"/>
<node CREATED="1159976512244" ID="Freemind_Link_286869493" LINK="http://www.whitenoiseaudio.com/blog/" MODIFIED="1159976539425" TEXT="My blog"/>
</node>
<node CREATED="1154960287178" FOLDED="true" HGAP="23" ID="Freemind_Link_701838577" MODIFIED="1155303069996" POSITION="right" TEXT="Application Ideas" VSHIFT="23">
<icon BUILTIN="idea"/>
<node CREATED="1154960295628" ID="Freemind_Link_1794201810" MODIFIED="1154960297522" TEXT="Genome">
<node CREATED="1154960742196" ID="Freemind_Link_47535264" MODIFIED="1154960750326" TEXT="whole program could be multi-touch"/>
</node>
<node CREATED="1154960299417" FOLDED="true" ID="Freemind_Link_604719414" MODIFIED="1154960327443" TEXT="Performance instrument - like that crazy Kyma thing, can do chords, pressure sensitive..">
<node CREATED="1154960377831" ID="Freemind_Link_1314228182" MODIFIED="1154960406399" TEXT="Could just send MIDI then I can use it with my existing gear.. but midi is a bit limited in terms of free - pitch range"/>
<node CREATED="1154960663706" ID="Freemind_Link_1741186563" MODIFIED="1154960681869" TEXT="can set up the keys however I want (could even make it editable).."/>
<node CREATED="1154960710385" ID="Freemind_Link_297736549" MODIFIED="1154960720708" TEXT="could have pitch bend on each key depending on where it's pressed"/>
</node>
<node CREATED="1154960420231" ID="Freemind_Link_1204296781" MODIFIED="1154960441752" TEXT="tr-x0x Drum machine"/>
<node CREATED="1154960471662" ID="Freemind_Link_472219999" MODIFIED="1154960475090" TEXT="Claymod - would rock"/>
<node CREATED="1154960544173" ID="Freemind_Link_1083867745" MODIFIED="1154960554788" TEXT="Multi player games - pong"/>
<node CREATED="1154960754782" ID="Freemind_Link_1547066832" MODIFIED="1154960761370" TEXT="new kind of live music making app">
<node CREATED="1158609256472" ID="Freemind_Link_1826798155" MODIFIED="1158609259759" TEXT="multi user music app"/>
</node>
</node>
<node CREATED="1155157933820" FOLDED="true" ID="Freemind_Link_458334160" MODIFIED="1155560587688" POSITION="left" TEXT="questions" VSHIFT="-4">
<icon BUILTIN="help"/>
<node CREATED="1154960049130" ID="Freemind_Link_1213539202" MODIFIED="1154960056659" TEXT="can the software be run off my laptop?"/>
<node CREATED="1155560428580" FOLDED="true" ID="Freemind_Link_4800628" MODIFIED="1155560432586" TEXT="what size to make the screen">
<node CREATED="1155560435190" ID="Freemind_Link_735946733" MODIFIED="1155560493153" TEXT="prolly a good idea to aim for a size that fits in a standard picture frame so we can pick up a cheep frame"/>
<node CREATED="1155560458523" ID="Freemind_Link_769651535" MODIFIED="1155560469258" TEXT="Projector image keeps the 11 x 14 ratio"/>
</node>
<node CREATED="1159976358727" ID="Freemind_Link_338186251" MODIFIED="1159976366429" TEXT="how to get a brighter image"/>
<node CREATED="1159976367568" ID="Freemind_Link_1463591793" MODIFIED="1159976375409" TEXT="can dragging operations be made easier">
<node CREATED="1159976376828" ID="Freemind_Link_1666528841" MODIFIED="1159976381083" TEXT="different screen material?"/>
<node CREATED="1159976382861" ID="Freemind_Link_99260035" MODIFIED="1159976384300" TEXT="coating?"/>
</node>
</node>
<node CREATED="1155560698336" ID="Freemind_Link_123815976" MODIFIED="1155560702001" POSITION="left" TEXT="Instructions">
<node CREATED="1155560704725" FOLDED="true" ID="Freemind_Link_495761772" MODIFIED="1155560708690" TEXT="acquire necessary parts">
<node CREATED="1155560710383" FOLDED="true" ID="Freemind_Link_1963871907" MODIFIED="1155560712676" TEXT="acrylic sheet">
<node CREATED="1156165285450" ID="Freemind_Link_1022274654" MODIFIED="1156165295614" TEXT="aim for a 4x3 aspect ratio which is standard"/>
<node CREATED="1156165745832" ID="Freemind_Link_160405035" MODIFIED="1156165748836" TEXT="mine is 24 x 18"/>
</node>
<node CREATED="1155560715130" FOLDED="true" ID="Freemind_Link_1227843380" MODIFIED="1158608554497" TEXT="UV glue (optional)">
<node CREATED="1156165633400" ID="Freemind_Link_1367675098" MODIFIED="1156165639148" TEXT="from ebay. ~10$"/>
<node CREATED="1156165641652" FOLDED="true" ID="Freemind_Link_1504715054" MODIFIED="1156165647280" TEXT="does cure in the sun">
<node CREATED="1156165660469" ID="Freemind_Link_885650063" MODIFIED="1156165668681" TEXT="takes a couple hours at least on a sunny day"/>
</node>
<node CREATED="1156166017152" ID="Freemind_Link_1931806727" MODIFIED="1156166025053" TEXT="only necessary if you want to glue your LED's to your screen"/>
<node CREATED="1158608537265" ID="Freemind_Link_610255798" MODIFIED="1158608543998" TEXT="I think it's better not to glue them"/>
<node CREATED="1158608556585" ID="Freemind_Link_698612225" MODIFIED="1158608564347" TEXT="could also be used for gluing together lenses or filters"/>
</node>
<node CREATED="1155560722670" FOLDED="true" ID="Freemind_Link_1690007502" MODIFIED="1155560728729" TEXT="LED's">
<node CREATED="1156165561206" ID="Freemind_Link_437654205" MODIFIED="1158608512901" TEXT="my LEDs">
<arrowlink DESTINATION="Freemind_Link_437654205" ENDARROW="Default" ENDINCLINATION="0;0;" ID="Freemind_Arrow_Link_194265636" STARTARROW="None" STARTINCLINATION="0;0;"/>
<node CREATED="1156165438229" ID="Freemind_Link_1750733739" MODIFIED="1156165444769" TEXT="forward voltage 1.5, 100 ma"/>
<node CREATED="1156165446882" ID="Freemind_Link_1145112086" MODIFIED="1156165450707" TEXT="3.0 1A ?"/>
<node CREATED="1156165483625" FOLDED="true" ID="Freemind_Link_1492983553" MODIFIED="1156165495261" TEXT="peak wavelength 880">
<node CREATED="1156165520508" ID="Freemind_Link_1448061980" MODIFIED="1156165522150" TEXT="bw: 80"/>
</node>
<node CREATED="1156165555518" ID="Freemind_Link_782067499" MODIFIED="1156165559444" TEXT="reverse voltage 5v"/>
<node CREATED="1158608517606" ID="Freemind_Link_656847317" MODIFIED="1158608529494" TEXT="16 degree angle. Larger might be better"/>
</node>
</node>
<node CREATED="1155560730762" FOLDED="true" ID="Freemind_Link_1601578480" MODIFIED="1156165728967" TEXT="Resistors">
<node CREATED="1156165730139" ID="Freemind_Link_385661015" MODIFIED="1156165731030" TEXT="(depends on the led config)"/>
</node>
<node CREATED="1155560733936" ID="Freemind_Link_864653930" MODIFIED="1155560751471" TEXT="Power supply for leds (I'm using an old pc power supply)"/>
<node CREATED="1155560763138" FOLDED="true" ID="Freemind_Link_90531316" MODIFIED="1155560764871" TEXT="projector">
<node CREATED="1156166029890" ID="Freemind_Link_1472018580" MODIFIED="1156166036960" TEXT="optional if you just want to make a touch pad"/>
</node>
<node CREATED="1156165753923" ID="Freemind_Link_1934153858" MODIFIED="1156165767383" TEXT="small torch for flame polishing the acrylic">
<node CREATED="1156165772360" ID="Freemind_Link_688899727" MODIFIED="1156165782244" TEXT="or sandpaper + buffing wheel"/>
<node CREATED="1158608114714" ID="Freemind_Link_1350220876" MODIFIED="1158608118899" TEXT="flame torch works best"/>
</node>
<node CREATED="1156165796795" FOLDED="true" ID="Freemind_Link_216598894" MODIFIED="1158607878674" TEXT="Camera">
<node CREATED="1158607838817" FOLDED="true" ID="Freemind_Link_10141081" MODIFIED="1158607941807" TEXT="If you want to use a webcam you'll need one that is high fps and res">
<node CREATED="1158607885947" FOLDED="true" ID="Freemind_Link_1548011065" MODIFIED="1158608146580" TEXT="Philips webcams can do up to 640x480 @ 60 fps (they have one for 79$-99$)">
<node CREATED="1158607912458" ID="Freemind_Link_778491889" MODIFIED="1158608106882" TEXT="but they have an impossible to remove IR filter. You'll need to buy a new lens assembly or swap the assembly with another Infrared Webcam which you can buy for about 20$ off ebay or mwave.com"/>
<node CREATED="1158607945883" ID="Freemind_Link_1761993002" MODIFIED="1158608022741" TEXT="you can buy them off ebay for 15$+shipping or another optics site. Webcams use lenses that fit the 'S' type mount (also called M12 x 0.5). I used one that says it's for IR and it's 4.3 mm"/>
</node>
</node>
<node CREATED="1158607850185" ID="Freemind_Link_899962252" MODIFIED="1158607870473" TEXT="Point grey also makes firewire oem cameras that are high res and high capture rate"/>
</node>
<node CREATED="1156165883069" FOLDED="true" ID="Freemind_Link_1993578313" MODIFIED="1158608233758" TEXT="optical filter to block out non IR light (IR Cutoff filter)">
<node CREATED="1156165898001" ID="Freemind_Link_506885943" MODIFIED="1156165906312" TEXT="can make a cheap and dirty one from photo negatives">
<node CREATED="1158608159277" ID="Freemind_Link_641214741" MODIFIED="1158608172712" TEXT="has a lot of background noise plus it still lets thru some bright visible light."/>
<node CREATED="1159557769917" ID="Freemind_Link_81030831" MODIFIED="1159557776847" TEXT="ultimately you'll need to get a real IR filter"/>
</node>
<node CREATED="1156165908025" ID="Freemind_Link_1460898645" MODIFIED="1156165920172" TEXT="alternately get a bandpass filter matched to your LED wavelength"/>
</node>
<node CREATED="1156165975842" FOLDED="true" ID="Freemind_Link_1160098167" MODIFIED="1158608280278" TEXT="misc hardware for attaching things together">
<node CREATED="1158608281237" ID="Freemind_Link_199448334" MODIFIED="1158608324801" TEXT="I used four 2' x 2" alumnimum sheets to hold the LED's and protect them"/>
</node>
<node CREATED="1158608326839" FOLDED="true" ID="Freemind_Link_472041051" MODIFIED="1158608330775" TEXT="A stand of some sort">
<node CREATED="1158608331614" ID="Freemind_Link_95349572" MODIFIED="1158608355708" TEXT="I built one out of PVC for fairly cheap (< $30)">
<node CREATED="1158608999325" ID="Freemind_Link_1419717350" MODIFIED="1158609035197" TEXT="16 x 3/4" PVC T's"/>
<node CREATED="1158609013770" ID="Freemind_Link_1951530619" MODIFIED="1158609044437" TEXT=" 3/4 " PVC pipe."/>
</node>
</node>
<node CREATED="1158608361452" ID="Freemind_Link_705696824" MODIFIED="1158608363350" TEXT="other tools">
<node CREATED="1158608365618" ID="Freemind_Link_247590067" MODIFIED="1158608382650" TEXT="Jigsaw comes in handy for cutting the PVC and big pieces of acrylic"/>
<node CREATED="1158608384528" ID="Freemind_Link_952240271" MODIFIED="1158766408612" TEXT="dremel comes in handy for sanding / polishing and also for cutting small&thin pieces of acrylic (with the saw attachment). Circular saw might be good for that too"/>
<node CREATED="1158608613944" ID="Freemind_Link_125971230" MODIFIED="1158608614653" TEXT="I also used a sander in a few instances"/>
</node>
<node CREATED="1158608450847" ID="Freemind_Link_1458265743" MODIFIED="1159557749636" TEXT="another sheet of plastic to use as a diffuser or you could use a piece of rear projection film screen as long as it's IR transparent. I used a piece from a cheap poster frame. Another option would be the desk plastic covers they sell at staples (15-30$) or tracing paper. If you use tracing paper get another sheet of acrylic to mount it on"/>
</node>
<node CREATED="1155560225591" FOLDED="true" ID="Freemind_Link_696214015" MODIFIED="1155560842171" TEXT="where to find things" VSHIFT="10">
<node CREATED="1155302358242" FOLDED="true" ID="Freemind_Link_114370953" MODIFIED="1155302360185" TEXT="Plastic">
<node CREATED="1155302375788" ID="Freemind_Link_792519321" MODIFIED="1155302385842" TEXT="can get plastic from most Window + glass stores"/>
<node CREATED="1155302271738" ID="Freemind_Link_1862429589" LINK="http://www.twistedforums.com/forums/archive/index.php/t-1354.html" MODIFIED="1155302292297" TEXT="Acrylic thread - acrylic cement?"/>
<node CREATED="1154959619375" ID="Freemind_Link_1395934603" LINK="http://www.rplastics.com/cutting.html" MODIFIED="1154959619375" TEXT="Plastic Cutting Charges start at $15"/>
<node CREATED="1154959619375" ID="Freemind_Link_1561769512" LINK="https://secure5.nexternal.com/shared/StoreFront/default.asp?CS=plastiweb&BusType=BtoC&Count1=939342677&Count2=856483101" MODIFIED="1154959619375" TEXT="StoreFront -- Modern Plastics Online Store"/>
</node>
<node CREATED="1155560273379" FOLDED="true" ID="_" MODIFIED="1155560276734" TEXT="high grit sandpaper">
<node CREATED="1155560278166" ID="Freemind_Link_561250968" MODIFIED="1155560291204" TEXT="Look in the paint section of your hardware store (NOT in the sander section)"/>
<node CREATED="1155560394291" ID="Freemind_Link_195164528" MODIFIED="1155560400450" TEXT="or possibly at walmart in the car section"/>
</node>
<node CREATED="1155560404857" ID="Freemind_Link_1669145339" MODIFIED="1155560408281" TEXT="LED's">
<node CREATED="1155560409303" ID="Freemind_Link_1257164949" MODIFIED="1155560411696" TEXT="online.. ebay?"/>
</node>
</node>
<node CREATED="1158608630626" FOLDED="true" ID="Freemind_Link_1760210321" MODIFIED="1158608632904" TEXT="step by step">
<node CREATED="1155560776878" FOLDED="true" ID="Freemind_Link_1427161638" MODIFIED="1158608652383" TEXT="cut acrylic sheet (or buy a piece which is cut for you)">
<node CREATED="1158609093006" ID="Freemind_Link_258529880" MODIFIED="1158609100028" TEXT="keep paper on the entire time"/>
</node>
<node CREATED="1155560785200" ID="Freemind_Link_1682147727" MODIFIED="1155560793071" TEXT="sand and polish edges"/>
<node CREATED="1158608656719" FOLDED="true" ID="Freemind_Link_1232624799" MODIFIED="1158608659486" TEXT="flame polish edges">
<node CREATED="1158609084685" ID="Freemind_Link_1434892986" MODIFIED="1158609088491" TEXT="keep paper on"/>
<node CREATED="1158609104663" ID="Freemind_Link_140619256" MODIFIED="1158609118399" TEXT="heat until the paper starts to burn just slightly and you can see the surface melt a little"/>
<node CREATED="1158609124003" ID="Freemind_Link_1845039606" MODIFIED="1158609164110" TEXT="move slowly and at a consistent rate of speed"/>
</node>
<node CREATED="1158608669945" FOLDED="true" ID="Freemind_Link_1078306195" MODIFIED="1158608676208" TEXT="create LED modules">
<node CREATED="1158608854958" ID="Freemind_Link_1791722199" MODIFIED="1158608860642" TEXT="cut plastic stops"/>
<node CREATED="1158608863000" ID="Freemind_Link_1672023866" MODIFIED="1158608865437" TEXT="drill LED holes">
<node CREATED="1158608869223" ID="Freemind_Link_1605113687" MODIFIED="1158608873609" TEXT="I spaced the LED's 1" apart"/>
</node>
<node CREATED="1158608883188" ID="Freemind_Link_1543089474" MODIFIED="1158608886984" TEXT="attach LED's and resistor"/>
<node CREATED="1158608888902" ID="Freemind_Link_594085232" MODIFIED="1158608890491" TEXT="attach wires"/>
<node CREATED="1158608894027" ID="Freemind_Link_958678557" MODIFIED="1158608902588" TEXT="attach wires to molex connector"/>
</node>
<node CREATED="1158608678276" ID="Freemind_Link_1538133608" MODIFIED="1158608916903" TEXT="hook up and test - take a look at it with your IR cam"/>
<node CREATED="1158608683410" ID="Freemind_Link_1998621479" MODIFIED="1158608927352" TEXT="cut aluminum frame"/>
<node CREATED="1158608695558" FOLDED="true" ID="Freemind_Link_829358931" MODIFIED="1158608704288" TEXT="drill mounting holes">
<node CREATED="1158608710622" ID="Freemind_Link_1840360477" MODIFIED="1158608729392" TEXT="make sure you have enough room for LED's but not too close to the edge either"/>
</node>
<node CREATED="1158608732209" ID="Freemind_Link_610670673" MODIFIED="1158608735665" TEXT="mount LED modules"/>
<node CREATED="1158608737853" ID="Freemind_Link_96295777" MODIFIED="1158608746603" TEXT="sand plastic sheet for diffuser">
<node CREATED="1159557718097" ID="Freemind_Link_324034453" MODIFIED="1159557721733" TEXT="or use tracing paper"/>
</node>
<node CREATED="1158608751019" ID="Freemind_Link_1109648904" MODIFIED="1158608843101" TEXT="drill holes in diffuser"/>
<node CREATED="1158608935193" ID="Freemind_Link_1255971149" MODIFIED="1158608939619" TEXT="mount everything"/>
<node CREATED="1158608951806" ID="Freemind_Link_1790578432" MODIFIED="1158608964462" TEXT="create stand"/>
</node>
</node>
<node CREATED="1156165186978" FOLDED="true" ID="Freemind_Link_73688157" MODIFIED="1156185339758" POSITION="left" TEXT="coding info">
<node CREATED="1154960012970" ID="Freemind_Link_502053853" MODIFIED="1156165197053" TEXT="blob detection">
<node CREATED="1155158036185" ID="Freemind_Link_146954205" MODIFIED="1158609525886" TEXT="Blob detection - rectify (subtract threshold ) then connected components analysis"/>
<node CREATED="1155158059781" FOLDED="true" ID="Freemind_Link_1016776980" MODIFIED="1155158066794" TEXT="tracking (ensure that blob ID's stay the same..)">
<node CREATED="1156165201629" ID="Freemind_Link_1510163433" MODIFIED="1159557571684" TEXT="find all possible tagging scenarios and choose the one that generates the least error from the last frame"/>
<node CREATED="1159557546135" ID="Freemind_Link_3021976" MODIFIED="1159557610223" TEXT="since finding ALL tagging scenarios explodes geometrically, we may limit the scenarios to just include the top N closest points. which are the most likeliest picks"/>
</node>
</node>
</node>
</node>
</map>