Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsoftware.html
More file actions
Latest commit
265 lines (239 loc) · 10.8 KB
/
Copy pathsoftware.html
File metadata and controls
265 lines (239 loc) · 10.8 KB
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
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
<!--Originally the "services" page I think (twas the template for system.html)>
<!DOCTYPE html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--><htmlclass="no-js"><!--<![endif]-->
<head>
<metacharset="utf-8">
<metahttp-equiv="X-UA-Compatible" content="IE=edge">
<title>Complex Kinect — An Interdisciplinary Engineering Endeavor</title>
<metaname="viewport" content="width=device-width, initial-scale=1">
<!-- Place favicon.ico and apple-touch-icon.png in the root directory -->
<linkrel="shortcut icon" href="favicon.ico">
<linkhref='https://fonts.googleapis.com/css?family=Open+Sans:400,300,700' rel='stylesheet' type='text/css'>
<!-- Animate.css -->
<linkrel="stylesheet" href="css/animate.css">
<!-- Icomoon Icon Fonts-->
<linkrel="stylesheet" href="css/icomoon.css">
<!-- Bootstrap -->
<linkrel="stylesheet" href="css/bootstrap.css">
<!-- Owl Carousel -->
<linkrel="stylesheet" href="css/owl.carousel.min.css">
<linkrel="stylesheet" href="css/owl.theme.default.min.css">
<linkrel="stylesheet" href="css/style.css">
<!-- Modernizr JS -->
<scriptsrc="js/modernizr-2.6.2.min.js"></script>
<!-- FOR IE9 below -->
<!--[if lt IE 9]>
<script src="js/respond.min.js"></script>
<![endif]-->
</head>
<body>
<divclass="box-wrap">
<headerrole="banner" id="fh5co-header">
<divclass="container">
<navclass="navbar navbar-default">
<divclass="row">
<divclass="col-md-3">
<divclass="fh5co-navbar-brand">
<aclass="fh5co-logo" href="index.html">Complex Kinect</a>
</div>
</div>
<divclass="col-md-9 main-nav">
<ulclass="nav text-right">
<divclass='dropdown'>
<li><ahref="index.html"><span>Home</span></a></li>
</div>
<divclass="dropdown">
<liclass="active"><ahref="system_overview.html">The System</a></li>
<divclass="dropdown-content">
<ahref="mechanical.html">Mechanical</a>
<ahref="software.html">Software</a>
<ahref="electrical.html">Electrical</a>
<ahref="financial.html">Financial</a>
</div>
</div>
<divclass="dropdown">
<li><ahref="process_overview.html">An Iterative Process</a></li>
<divclass="dropdown-content">
<ahref="sprint1.html">Sprint 1</a>
<ahref="sprint2.html">Sprint 2</a>
<ahref="sprint3.html">Sprint 3</a>
<ahref="sprint4.html">Sprint 4</a>
</div>
</div>
<divclass="dropdown">
<li><ahref="growth_overview.html">Team Growth</a></li>
<divclass="dropdown-content">
<ahref="team_learning.html">Team Learning</a>
<ahref="individual_learning.html">Individual Learning</a>
</div>
</div>
<divclass="dropdown">
<li><ahref="aboutus.html">About Us</a></li>
</div>
<divclass="dropdown">
<li><ahref="blog.html">Blog</a></li>
</div>
</ul>
</div>
</div>
</nav>
</div>
</header>
<!-- END: header -->
<divid="fh5co-intro-section" class="section-overlay animate-box" data-animate-effect="fadeIn">
<divclass="fh5co-intro-cover text-center" style="background-image: url(images/artsycode.jpg); background-size: cover; margin-bottom: 30px; max-width:100%;">
<divclass="container">
<divclass="row">
<divclass="col-md-8 col-md-offset-2 float-overlay">
<h2>Software</h2>
</div>
</div>
</div>
</div>
</div>
<divid="fh5co-section">
<divclass="container">
<divclass="row">
<divclass="col-md-12 col-md-offset-0">
<divclass="col-md-4 animate-box">
<divclass="fh5co-inner fh5co-services">
<divclass="holder-section">
<h3>Webapp</h3>
<imgsrc="images/webapp.png" width="350" height="270">
</div>
</div>
</div>
<divclass="col-md-8 animate-box">
<divclass="fh5co-inner fh5co-services">
<divclass="holder-section">
<p>To add an extra layer of interactivity, our system features a web app that allows
the user to select which sensing type they want to use and how they want the system
to respond. We give them the option of using audio or vision to gather sensory data.
We also have the option for the user to choose a demo mode to demonstrate the movement
of our structure when there is no one interacting with it. The flask web application is
able to switch between modes by using Python processing, starting and stopping the processes
when different modes are selected.</p>
<p>Check out our code for the webapp
<ahref="https://github.com/ComplexKinect/software/tree/master/Webapp">here</a>.</p>
</div>
</div>
</div>
<divclass="col-md-4 animate-box">
<divclass="fh5co-inner fh5co-services">
<divclass="holder-section">
<h3>Input Option 1: Motion</h3>
<imgsrc="images/sixpanes.png" width="350" height="270">
</div>
</div>
</div>
<divclass="col-md-8 animate-box">
<divclass="fh5co-inner fh5co-services">
<divclass="holder-section">
<p>Using OpenCV and a Raspberry Pi camera, our system's video motion detection mode tracks motion within the frame. First, we take the difference of the most recent three images to determine where there has been motion. Then we divide the input image into six panes, so that we can detect which frame or frames have motion in them. The six frames correspond to the six groups of origami nodes on the sculpture, allowing us to control the motion of the structures dependent on which panels have motion in them. The system transmits the frames that detect motion to the Arduino by sending Serial messages consisting of 1s (indicating motion) and 0s (indicating no motion), which then control the position of the servos. We use threading to allow us to delay time between messages sent while still constantly tracking for motion with our camera code.</p>
<p>Check out our motion detection code
<ahref="https://github.com/ComplexKinect/software/tree/master/Webapp/computer_vision">here</a>.</p>
</div>
</div>
<divid="fh5co-section">
<divclass="container">
<divclass="row">
<divclass="fh5co-inner fh5co-services">
<divclass="holder-section">
<iframesrc="https://drive.google.com/file/d/1MYyzqjzFO0zX-m1sVPpCnOeSZ72qRdCnxg/preview" width="550" height="390" align="center"></iframe>
</div>
</div>
</div>
</div>
</div>
</div>
<divclass="col-md-4 animate-box">
<divclass="fh5co-inner fh5co-services">
<divclass="holder-section">
<h3>Input Option 2: Audio</h3>
<imgsrc="images/sound_magfreq.png" width="350" height="270">
</div>
</div>
</div>
<divclass="col-md-8 animate-box">
<divclass="fh5co-inner fh5co-services">
<divclass="holder-section">
<p>Similarly, our system's audio detection mode makes use of Allen Downey's thinkdsp library to build a wave spectrum and get the amplitudes of varying frequencies. Again, we use threading to record sound and process sound waves from the previous few seconds at the same time. We determine what the maximum magnitude of sound is within the range of frequencies that are audible to the human ear and use that to decide what message we should send to the Arduino, increasing the number of nodes moved as the noise in the environment increases.</p>
<p>Check out our sound processing code
<ahref="https://github.com/ComplexKinect/software/tree/master/Webapp/sound_processing">here</a>.</p>
</div>
</div>
</div>
<divclass="col-md-4 animate-box">
<divclass="fh5co-inner fh5co-services">
<divclass="holder-section">
<h3>Option 3: Demo Mode</h3>
<imgsrc="images/demo_code_screenshot.png" width="350" height="270">
</div>
</div>
</div>
<divclass="col-md-8 animate-box">
<divclass="fh5co-inner fh5co-services">
<divclass="holder-section">
<p></p>
<p>The demo mode (shown in the video below) on our structure sends similar messages consisting of 0's and 1's indicating which sections should have movement at which times to make for interesting and exciting patterns. These patterns can easily be adjusted by changing the messages sent in our demo program.</p>
<p>Check out our demo code
<ahref="https://github.com/ComplexKinect/software/tree/master/Webapp/demo_code">here</a>.</p>
</div>
</div>
<divid="fh5co-section">
<divclass="container">
<divclass="row">
<divclass="fh5co-inner fh5co-services">
<divclass="holder-section">
<iframesrc="https://drive.google.com/file/d/1Ix_chu927jharsiEU9WmBw8Tw7bojgPk/preview" width="550" height="390" align="center"></iframe>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<ahref="https://github.com/ComplexKinect/software">
<center>
<buttontype="button" class="btn btn-primary">See all code on GitHub</button>
</center>
</a>
<br>
<footer>
<divid="footer" class="fh5co-border-line">
<divclass="container">
<divclass="row">
<divclass="col-md-6 col-md-offset-3 text-center">
<p>© 2017 ComplexKinect. All Rights Reserved. <br>Template made with <iclass="icon-heart3 love"></i> by <ahref="http://freehtml5.co/" target="_blank">Freehtml5.co</a></p>
<pclass="fh5co-social-icons">
<ahref="https://github.com/ComplexKinect" target="_blank"><iclass="icon-github-with-circle"></i></a>
</p>
</div>
</div>
</div>
</div>
</footer>
</div>
<!-- END: box-wrap -->
<!-- jQuery -->
<scriptsrc="js/jquery.min.js"></script>
<!-- jQuery Easing -->
<scriptsrc="js/jquery.easing.1.3.js"></script>
<!-- Bootstrap -->
<scriptsrc="js/bootstrap.min.js"></script>
<!-- Owl carousel -->
<scriptsrc="js/owl.carousel.min.js"></script>
<!-- Waypoints -->
<scriptsrc="js/jquery.waypoints.min.js"></script>
<!-- Parallax Stellar -->
<scriptsrc="js/jquery.stellar.min.js"></script>
<!-- Main JS (Do not remove) -->
<scriptsrc="js/main.js"></script>
</body>
</html>