tag:blogger.com,1999:blog-20489700510598277322011-12-07T21:05:02.483-05:00KinecthesiaThis project was developed by two students at the University of Pennsylvania in ESE 350.Eric Berdinishttp://www.blogger.com/profile/11821089973072442741noreply@blogger.comBlogger20125tag:blogger.com,1999:blog-2048970051059827732.post-22135761035489556222011-12-05T23:45:00.001-05:002011-12-06T00:44:20.730-05:00LiPo Batteries and more!Today, we finished our experimentation and verification of our new power supply. <a href="http://www.kinecthesia.com/2011/04/power-supply-issues.html">Previously</a> we were using 16AA batteries to power the system. 8AA (8*1.5V = 12V) were for the Kinect, and 8AA going through a <a href="http://www.sparkfun.com/datasheets/Components/LM7805.pdf">LM7805</a>&nbsp;voltage regulator which stepped the voltage down to 5V for the BeagleBoard xM and mbed.&nbsp;&nbsp;We had to use this set up since the LM7805s were readily available and we could not get 5V from AA batteries. Unfortunately, this set up had many setbacks:<br /><br /><ul><li>added a lot of unnecessary weight</li><li>required the use of a very large and dangerous heatsink -- the LM7805 could handle 1.5A and our system used up to 2A</li><li>required us to fiddle with two power supplies to when powering and shutting down the device</li><li>AA batteries are expensive for the amount of time they lasted (approximately 30 mins)</li></ul><div><br /></div><div>So motivated by these issues, we decided to switch to a slim <a href="http://www.hobbyking.com/hobbyking/store/uh_viewItem.asp?idProduct=17284">2000mAh, 3 cell LiPo battery</a> that fits within the profile of the <a href="http://www.kinecthesia.com/2011/10/kinecthesia-20-here-we-come.html">stripped down Kinect</a>.</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-5xwtxZq2c-8/Tt2hYwbyLAI/AAAAAAAAJGo/vlXs3Y_SZDw/s1600/2000mAh+lipo.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="234" src="http://4.bp.blogspot.com/-5xwtxZq2c-8/Tt2hYwbyLAI/AAAAAAAAJGo/vlXs3Y_SZDw/s320/2000mAh+lipo.jpg" width="320" /></a></div><div><br /></div><div>A&nbsp;2000mAh,&nbsp;3 cell LiPo battery delivers 11.V (3 * 3.7V) and can run at 2A continuously for an hour. Since our system averages less than 2A, it will last for over an hour on a single charge. Also, from our <a href="http://www.kinecthesia.com/2011/04/kinect-minimum-voltage.html">previous tests</a>, we have verified that the Kinect -- which is rated to work at 12V -- will function as low as 8.5V. Not everything is perfect, however. We still need a voltage regulator to get 5V for the BeagleBoard and LiPo batteries require much more care to ensure they do not get overcharged or over-depleted.</div><div><br /></div><div>For our new voltage regulator, we are using a <a href="http://www.dpcav.com/xcart/product.php?productid=16488&amp;cat=0&amp;page=1">more robust component</a> that can take from 6-23V and output 5V at a maximum of 3A. This will allow us to eliminate the heatsink and use power directly from the LiPo instead of having a second power supply.</div><div><br /></div><div>The final circuit we need for this system to work is a voltage cutoff circuit. Since LiPo cells lose their ability to accept a full charge if they are discharged beyond 3.0V, we need a circuit that cuts off power to the system when the 3 cell LiPo discharges to 9.0V (3 * 3.0V). Since this is the absolute limit, we built our circuit, <a href="http://www.rcgroups.com/forums/showthread.php?t=725572">with the help of Dan B.</a>, to cutoff at 9.5V. Dan's circuit is operated by a single momentary switch that turns the device on, but no switch to turn it off. With our modifications, we will be able to operate the belt with a single (ON)-OFF switch -- 'ON' in parenthesis indicates that the switch is momentary ON, static OFF. The circuit is shown below in schematic and PCB form:</div><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-zCBiEndeQMI/Tt2nJukyAeI/AAAAAAAAJG0/VS_YkZ1ue10/s1600/cutoff+%2528ON%2529-OFF.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="295" src="http://4.bp.blogspot.com/-zCBiEndeQMI/Tt2nJukyAeI/AAAAAAAAJG0/VS_YkZ1ue10/s400/cutoff+%2528ON%2529-OFF.png" width="400" /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-zWpZhyz3OjA/Tt2oGYVtdWI/AAAAAAAAJHA/YtpKUYKCIDE/s1600/Voltage+Cutoff+Circuit.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="191" src="http://3.bp.blogspot.com/-zWpZhyz3OjA/Tt2oGYVtdWI/AAAAAAAAJHA/YtpKUYKCIDE/s320/Voltage+Cutoff+Circuit.jpg" width="320" /></a></div><div><br /></div><div>Below is a video demonstrating proper function of these components, using a power supply instead of a LiPo to show the voltage cutoff.</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://3.gvt0.com/vi/wJEsHbZPVFc/0.jpg" height="266" width="320"><param name="movie" value="http://www.youtube.com/v/wJEsHbZPVFc&fs=1&source=uds" /><param name="bgcolor" value="#FFFFFF" /><embed width="320" height="266" src="http://www.youtube.com/v/wJEsHbZPVFc&fs=1&source=uds" type="application/x-shockwave-flash"></embed></object></div><div><br /></div><div>PARTS LIST:</div><div><u>Battery</u></div><div><ul><li><a href="http://www.hobbyking.com/hobbyking/store/uh_viewItem.asp?idProduct=17284">2000mah 3S LiPo battery 15-25C</a>&nbsp;-- LiPo battery</li><li><a href="http://www.hobbypartz.com/thac6smbachw.html">Thunder-AC6-Charger-Power</a>&nbsp;-- charging station</li><li><a href="http://www.hobbypartz.com/83p-lipo-guard-25x33cm-bag.html">LiPo guard charging bag</a>&nbsp;-- safety charging bag</li><li><a href="http://www.rcdude.com/servlet/the-405/Deans--Ultra-Connector/Detail">Deans Ultra Connector Set</a>&nbsp;-- charging leads connectors</li></ul><div><u>Voltage Regulator</u></div></div><div><ul><li><a href="http://www.dpcav.com/xcart/product.php?productid=16488&amp;cat=0&amp;page=1">5VDC Voltage Regulator (BEC), Switch-Mode Type</a>&nbsp;-- 5V voltage regulator</li></ul><div><u>Voltage Cutoff</u></div></div><div><ul><li><a href="http://www.mouser.com/Search/ProductDetail.aspx?R=STP55NF06Lvirtualkey51120000virtualkey511-STP55NF06L">STP55NF06L</a>&nbsp;-- power transistor</li><li><a href="http://www.mouser.com/Search/ProductDetail.aspx?R=TL431ACZvirtualkey51120000virtualkey511-TL431ACZ">TL431ACZ</a>&nbsp;-- shunt regulator</li><li><a href="http://www.mouser.com/ProductDetail/ON-Semiconductor/2N3906G/?qs=sGAEpiMZZMutXGli8Ay4kK9j4DXGMKW%252bO90CUS4ZnBA%3d">2N3906</a>&nbsp;-- bipolar junction transistor, pnp</li><li><a href="http://www.mouser.com/Search/ProductDetail.aspx?R=TIGC5B-6S-BL-NBLvirtualkey69100000virtualkey691-TIGC5B6SBLNBL">TIGC5B-6S-BL-NBL</a>&nbsp;-- switch option 1</li><li><a href="http://www.mouser.com/Search/ProductDetail.aspx?R=SRN91-15BBvirtualkey67810000virtualkey785-SRN91-15BB">SRN91-15BB</a>&nbsp;-- switch option 2</li></ul></div><div><u><br /></u></div><div><br /></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2048970051059827732-2213576103548955622?l=www.kinecthesia.com' alt='' /></div>Eric Berdinishttp://www.blogger.com/profile/11821089973072442741noreply@blogger.com0tag:blogger.com,1999:blog-2048970051059827732.post-89038699719216070902011-11-29T23:25:00.000-05:002011-12-05T23:44:48.922-05:00Team viSparshWe're almost ready to share some project updates, but in the meantime we wanted to share the final result of a group that we have been working with to replicate the Kinecthesia belt in India. Called <a href="http://www.visparsh.blogspot.com/">viSparsh</a> (a loose combination of 'vision' and 'touch' in Hindi), their team worked with us as part of the <a href="http://www.youngindiafellowship.com/">Young India Fellowship</a>&nbsp;with UPenn. They successfully followed our blog to replicate our results, and with the help of a PandaBoard (instead of our BeagleBoard xM), they got it to work!<br /><div><br /></div><div>See their video demonstration below:</div><div class="separator" style="clear: both; text-align: center;"><object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://2.gvt0.com/vi/eFDh_MJYiU4/0.jpg" height="266" width="320"><param name="movie" value="http://www.youtube.com/v/eFDh_MJYiU4&fs=1&source=uds" /><param name="bgcolor" value="#FFFFFF" /><embed width="320" height="266" src="http://www.youtube.com/v/eFDh_MJYiU4&fs=1&source=uds" type="application/x-shockwave-flash"></embed></object></div><div><br /></div><div>Great work guys!</div><div><br /></div><div>viSparsh project blog:&nbsp;<a href="http://www.visparsh.blogspot.com/">http://www.visparsh.blogspot.com/</a></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2048970051059827732-8903869971921607090?l=www.kinecthesia.com' alt='' /></div>Eric Berdinishttp://www.blogger.com/profile/11821089973072442741noreply@blogger.com0tag:blogger.com,1999:blog-2048970051059827732.post-14638050685610288602011-10-19T18:17:00.000-04:002011-10-26T14:19:23.511-04:00Kinecthesia 2.0, Here We ComeFirst post in a while with a real project update!<br /><br /><u>BeagleBoard</u><br />For Kinecthesia 2.0, we will be using the BeagleBoard. "<i>But you already are using the BeagleBoard!</i>", you say. Yes, but before, we were using the BeagleBoard XM, and now we will be <strike>down</strike>upgrading to the plain BeagleBoard. The BeagleBoard has multiple advantages for our project, but most importantly is its size. The BeagleBoard is 3" x 3" while the XM is 3.25" x 3.25". While this might not seem like a lot, it is actually a 15% reduction in area which, for a portable device, is not too shabby. This reduction comes with a reduction in processor speed, however. The BeagleBoard runs at 600 MHz compared to the XM's 1 GHz. This should still be enough for the purposes of our device, while consuming less power!<br /><br /><u>Smaller Kinect</u><br />We also want to trim down the size of the Kinect because as you can see in the picture below, the Kinect is gigantic -- too big for our device. Fortunately, there are plenty of how-to guides on how to tear down a Kinect. We borrowed a naked Kinect from Professor Mangharam's lab and sure enough, it works great.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-LgqTQOKyYh0/Tp4m1UYaMxI/AAAAAAAAFjM/P6zrZ0B3lX0/s1600/Kinect+and+naked+Kinect.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="237" src="http://1.bp.blogspot.com/-LgqTQOKyYh0/Tp4m1UYaMxI/AAAAAAAAFjM/P6zrZ0B3lX0/s400/Kinect+and+naked+Kinect.jpg" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"></div><br />Building our own casing for the Kinect's sensors will allow us have greater control of the design of the device while dramatically reducing weight and size. One option we have considered is to mount the processor and battery pack on the metal frame of the naked Kinect so that there are not bulky components all around the belt. The entire system (besides the vibrations motors which will still be around the waist) will all be enclosed in one case.<br /><br /><i>Update:</i><br /><i>Stripped down Kinect specs:</i><br /><i>length (without wings): 7 3/16 in</i><br /><i>length (with wings): 9 1/2 in</i><br /><i>height: 1 1/4 in</i><br /><i>depth (without cameras): 1 3/16 in</i><br /><i>depth (with cameras): 1 7/8</i><br /><i>depth (with cameras and heatsink): 2 1/16 in</i><br /><i>weight: 148 g</i><br /><i><br /></i><br /><i>Kinect specs:</i><br /><i>length (front): 11 1/8 in</i><br /><i>length (back): 8 7/16 in</i><br /><i>height (without base): 1 1/2 in</i><br /><i>height (with base): 2 7/8 in</i><br /><i>depth: 2 5/16 in</i><br /><i>weight: 433 g</i><br /><i><br /></i><br /><i>Kinecthesia version 1.0 weight: 1349 g (981 g without 16 AA batteries)</i><br /><br /><br /><u>Better Vibration Motors</u><br />Our current system uses six vibration motors, however, we only have three vibration zones. Each zone has two vibrations motors working in parallel in order to increase the vibration sensation. We would like to replace these six buzzers with three stronger buzzers in order to reduce the complexity of the hardware. We would also like to change how the buzzers are mounted. Currently, the buzzers are mounted firmly to the rigid belt. This counteracts the forces of vibration and reduces the overall sensation. For increased sensation, the buzzers have to be able to move. We are experimenting with different ways to mount the buzzers, but one idea we are considering is mounting the buzzer on a wire or string (which is mounted to the belt) so it can rotate left and right around the axis of wire.<br /><br />There are more updates to come, so stay tuned! Topics to look forward to: PWM on BeagleBoard, better obstacle detection, and reducing system delay.<br /><br /><br /><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2048970051059827732-1463805068561028860?l=www.kinecthesia.com' alt='' /></div>Eric Berdinishttp://www.blogger.com/profile/11821089973072442741noreply@blogger.com3tag:blogger.com,1999:blog-2048970051059827732.post-27971377199224130572011-10-14T13:51:00.003-04:002011-10-17T11:32:49.555-04:00New Video OverviewBelow is the latest overview of the Kinecthesia project. Enjoy!<br /><br /><div class="separator" style="clear: both; text-align: center;"><object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/wTselBnHPhA/0.jpg" height="266" width="320"><param name="movie" value="http://www.youtube.com/v/wTselBnHPhA?version=3&f=user_uploads&c=google-webdrive-0&app=youtube_gdata" /><param name="bgcolor" value="#FFFFFF" /><embed width="320" height="266" src="http://www.youtube.com/v/wTselBnHPhA?version=3&f=user_uploads&c=google-webdrive-0&app=youtube_gdata" type="application/x-shockwave-flash"></embed></object></div><br />Download the video <a href="http://www.seas.upenn.edu/~jkiske/Kinecthesia.mp4">here</a>.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2048970051059827732-2797137719922413057?l=www.kinecthesia.com' alt='' /></div>Eric Berdinishttp://www.blogger.com/profile/11821089973072442741noreply@blogger.com0tag:blogger.com,1999:blog-2048970051059827732.post-48771705543969544342011-10-05T23:09:00.001-04:002011-10-05T23:09:38.105-04:00Kinecthesia at Zeitgeist Americas 2011I'm proud to announce that our project was chosen for Google Zeitgeist <a href="http://zeitgeistyoungminds.com/">Young Minds</a>! On top of that, I got to speak with Chelsea Clinton about Kinecthesia on the second day of the two-day <a href="http://www.zeitgeistminds.com/">conference</a> which lasted from September 26-27, 2011. Here is the video:<br /><br /><div class="separator" style="clear: both; text-align: center;"><object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://3.gvt0.com/vi/JhPIvC7Hjs8/0.jpg" height="266" width="320"><param name="movie" value="http://www.youtube.com/v/JhPIvC7Hjs8&fs=1&source=uds" /><param name="bgcolor" value="#FFFFFF" /><embed width="320" height="266" src="http://www.youtube.com/v/JhPIvC7Hjs8&fs=1&source=uds" type="application/x-shockwave-flash"></embed></object></div><br />Stay tuned for more Kinecthesia updates in the coming months...<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2048970051059827732-4877170554396954434?l=www.kinecthesia.com' alt='' /></div>Eric Berdinishttp://www.blogger.com/profile/11821089973072442741noreply@blogger.com0tag:blogger.com,1999:blog-2048970051059827732.post-77004450103619676052011-05-09T19:54:00.000-04:002011-05-09T20:06:40.447-04:00New Name: Kinecthesia<div style="text-align: left;">Project Files, source code, and installation instructions are located <a href="http://www.seas.upenn.edu/~jkiske/Kinecthesia.zip">here</a></div><div><br /></div><div><div>Parts List</div><div><ul><li>16x AA Batteries</li><li>2x 8 AA Battery Holder</li><li>LM7805 Voltage Regulator</li><li>3x Heat Sink</li><li>Microsoft Kinect</li><li>Kinect USB Adaptor</li><li>BeagleBoard XM</li><li>mbed NXP LPC1768</li><li>Small circuit board</li><li>Logic Level Converter (BOB-08745)</li><li>3x 1kΩ Resistor</li><li>3x 2N3904 transistors</li><li>6x Vibration Motors (buzzers) (ROB-08449)</li><li>Belt</li></ul><div>System Schematic</div><div><a href="http://3.bp.blogspot.com/-C90Uwe8LaNQ/Tch_gNfQgeI/AAAAAAAAAPE/HS0vRNM3dSU/s1600/System%2BSchematic.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img src="http://3.bp.blogspot.com/-C90Uwe8LaNQ/Tch_gNfQgeI/AAAAAAAAAPE/HS0vRNM3dSU/s400/System%2BSchematic.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5604869927615889890" style="text-align: left;display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; cursor: pointer; width: 400px; height: 192px; " /></a></div></div></div><div>Final Version</div><div><a href="http://3.bp.blogspot.com/-0lBG0At35Hs/TciAiE6go4I/AAAAAAAAAPM/47pIBeeNcbE/s1600/model2.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img src="http://3.bp.blogspot.com/-0lBG0At35Hs/TciAiE6go4I/AAAAAAAAAPM/47pIBeeNcbE/s400/model2.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5604871059185640322" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 273px; height: 400px; " /></a></div><div><br /></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2048970051059827732-7700445010361967605?l=www.kinecthesia.com' alt='' /></div>Jeff Kiskehttp://www.blogger.com/profile/15215655371609547086noreply@blogger.com0tag:blogger.com,1999:blog-2048970051059827732.post-16562463594031946632011-05-09T18:49:00.000-04:002011-10-05T23:21:11.171-04:00Demonstration Video<div class="separator" style="clear: both; text-align: center;"><object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/eaa6YxhsePU/0.jpg"><param name="movie" value="http://www.youtube.com/v/eaa6YxhsePU?version=3&f=user_uploads&c=google-webdrive-0&app=youtube_gdata" /><param name="bgcolor" value="#FFFFFF" /><embed width="320" height="266" src="http://www.youtube.com/v/eaa6YxhsePU?version=3&f=user_uploads&c=google-webdrive-0&app=youtube_gdata" type="application/x-shockwave-flash"></embed></object></div><br /><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2048970051059827732-1656246359403194663?l=www.kinecthesia.com' alt='' /></div>Jeff Kiskehttp://www.blogger.com/profile/15215655371609547086noreply@blogger.com0tag:blogger.com,1999:blog-2048970051059827732.post-29874837461876692632011-04-30T16:52:00.000-04:002011-05-01T20:33:25.433-04:00All Done!<div style="text-align: center;"><a href="http://2.bp.blogspot.com/-P5PGOct3hV0/Tb3ymhrwO6I/AAAAAAAAAOU/4icwj0v8IRs/s1600/IMAG0229.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img src="http://2.bp.blogspot.com/-P5PGOct3hV0/Tb3ymhrwO6I/AAAAAAAAAOU/4icwj0v8IRs/s400/IMAG0229.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5601900255209601954" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 239px; " /></a></div><div>After all night of working in the lab which included spending an hour debugging a disconnected microsd card, a broken kinect cable which led to an emergency run to Gamestop on 11th and Market, putting batteries in backwards, wires coming unplugged, putting -12V into our Kinect, shorting a 12V supply, and two broken mbeds, we are all done and it works surprisingly well.</div><div><br /></div><div>We tested our setup with three different buzzer intensity conversions. Two of our algorithms were linear, with one mapping our max depth from 0 to 63 and the other from 15 (~25% duty cycle, approximately the smallest pwm needed to feel a buzz) and our final one (the one we ended up using) was exponentially decaying.</div><div><br /></div><div><a href="http://2.bp.blogspot.com/-z5h4WtxFs-s/Tb33FbMB2zI/AAAAAAAAAOc/-GkTdamWdjs/s1600/buzzer%2Bgraph%2Bcropped.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img src="http://2.bp.blogspot.com/-z5h4WtxFs-s/Tb33FbMB2zI/AAAAAAAAAOc/-GkTdamWdjs/s320/buzzer%2Bgraph%2Bcropped.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5601905184088382258" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 137px; " /></a></div><div>We did this to give more emphasis to closer objects.</div><div><br /></div><div>Our final demo consisted of our professor (Prof. Mangharam) navigating a room crowded with people with his eyes closed without touching anyone or anything. </div><div><br /></div><div>tl;dr: Everything went better than expected.</div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2048970051059827732-2987483746187669263?l=www.kinecthesia.com' alt='' /></div>Jeff Kiskehttp://www.blogger.com/profile/15215655371609547086noreply@blogger.com1tag:blogger.com,1999:blog-2048970051059827732.post-15606886220098642342011-04-30T00:17:00.000-04:002011-05-01T15:59:24.326-04:00Power Supply IssuesUp until this point, we have been powering our project from wall outlets. Our final project will be wearable and portable so battery power is a huge concern. We <a href="http://kinectovision.blogspot.com/2011/04/buzzers-batteries-and-beagleboard-oh-my.html">initially thought</a> we could use a&nbsp;11.1V LiPo 3000mAh battery, but we realized this might be overkill. If all we need is 12V, we can use a battery holder that can house 8 AA batteries. Since AA battery are 1.5V each, our total voltage will be exactly 12V (or close to it).<br /><br />With this setup, our system worked but it wasn't usable. Our 12V to 5V regulator made the heat sink feel like a stove, and the program ran for only 6 minutes before the voltage output hit 8.3V (the operating limit of the Kinect). Adding another 12V AA battery pack in parallel would increase how long it lasted but it would help our heat issues. Additionally, this method wastes batteries because the BeagleBoard, and mbed can still run after the battery hit the 8.3V mark.<br /><br />To fix this issue, we first tried separating our power supply into two battery packs, 12V and 6V. The 12V pack worked well with the Kinect, but the 6V pack had too low of a voltage for our voltage regulator to work. Instead, we considered using a diode to to drop the 6V supply to 5.3V which would have worked for the BeagleBoard and mbed, but we didn't have diodes that could handle the ~1.5A that the BeagleBoard and mbed needed.<br /><br />For our final solution, we used two 12V AA battery packs. One was connected to the Kinect, and the other was connected to the BeagleBoard and mbed through the 12V to 5V regulator.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2048970051059827732-1560688622009864234?l=www.kinecthesia.com' alt='' /></div>Eric Berdinishttp://www.blogger.com/profile/11821089973072442741noreply@blogger.com2tag:blogger.com,1999:blog-2048970051059827732.post-66803585752354380262011-04-29T03:07:00.000-04:002011-05-01T20:25:53.528-04:00It's Friday... Gotta have my bowl, gotta have Serial<div style="text-align: left;">We decided earlier in the week that we were going to use serial communication to send data from the Beagleboard to the mbed. We finally got that working today.</div><div><br /></div><div>We transmitted the serial data using the UART_TX (pin 6) on Beagleboard's expansion header. Serial works on the Beagleboard by alternating voltage from 1.8V to 0V with each voltage corresponding to a 1 or a 0, respectively. The mbed's UART_RX pin accepts voltages between 3.3V which represents a 1 and 0V which represents a 0. So, we had to amplify the voltage coming out of the Beagleboard to 3.3V otherwise, the mbed might not recognize 1.8V as a high signal.</div><div><br /></div><div>We first made a test program in bash on the Beagleboard to see if serial data was even coming out of pin 6. </div><div><br /></div><div>while true</div><div>do</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>echo t &gt; /dev/ttyO1</div><div>done</div><div><br /></div><div>Generally, computers use /dev/ttyS* for serial communication, but Ubuntu on the Beagleboard uses the device ttyO* for serial communication. We did not know this for a while so we were looking into other options for communication.</div><div><br /></div><div>When we ran this program, connected the Beagleboard's TX pin to its RX pin (pin 8), and polled the /dev/ttyO1 device we saw that it was, in fact, printing a 't'.</div><div><br /></div><div>In order to send the signal to the mbed we first had to amplify to voltage. To do this, we used a logic level converter to shift the output voltage from 1.8V to 3.3V so that the mbed could recognize the data.</div><div style="text-align: left;"><br /></div><div><a href="http://2.bp.blogspot.com/-lky3dL7cIVE/Tb25R06b4nI/AAAAAAAAAN8/oriAENQzGx4/s1600/had_ttl.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img src="http://2.bp.blogspot.com/-lky3dL7cIVE/Tb25R06b4nI/AAAAAAAAAN8/oriAENQzGx4/s200/had_ttl.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5601837227431420530" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 200px; height: 132px; " /></a></div><div>We then connected the TX signal out of the Beagleboard to the RX of the mbed (pin 10) to see if we could send data. We initially thought that the baud rate for the data was 115200 because that was the data speed for the RS-232 output of the Beagleboard. When we tested this, the mbed did not recognize the serial data sent in. We then switched the baud rate on the mbed to 9600 (the other most common baud rate) and it worked. We received a 't' and were able to print the data sent from the Beagleboard to the mbed on a computer.</div><div><br /></div><div>We then hooked up our Kinect to the Beagleboard, ran our program that parsed the depth data and converted the data into 3 bytes, sent that data out the TX pin of the Beagleboard, received that data on the RX pin of the mbed, printed it to the terminal, and had all of our buzzers buzzing at different levels. </div><div><br /></div><div><a href="http://4.bp.blogspot.com/-VNJkFfpS-xo/Tb351Ad4Y9I/AAAAAAAAAOk/NNqIveIQC8s/s1600/photo.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img src="http://4.bp.blogspot.com/-VNJkFfpS-xo/Tb351Ad4Y9I/AAAAAAAAAOk/NNqIveIQC8s/s320/photo.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5601908200572478418" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 225px; " /></a></div><div><div><div>We-we-we so excited </div><div>We so excited</div></div></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2048970051059827732-6680358575235438026?l=www.kinecthesia.com' alt='' /></div>Jeff Kiskehttp://www.blogger.com/profile/15215655371609547086noreply@blogger.com0tag:blogger.com,1999:blog-2048970051059827732.post-31862875526636881432011-04-27T04:40:00.000-04:002011-04-27T01:41:34.929-04:00Soldering the buzzersBefore we can put together the entire Kinect-O-Vision 2000, we have to do something about the tiny wire ends that came on the buzzers. See the image below to get an idea of what I was talking about:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-BpCuqYp3X5o/TbesE8wsDdI/AAAAAAAAClg/n8ZY2jawV90/s1600/Capture.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="236" src="http://4.bp.blogspot.com/-BpCuqYp3X5o/TbesE8wsDdI/AAAAAAAAClg/n8ZY2jawV90/s320/Capture.JPG" width="320" /></a></div><br /><br />In the following two pictures, you can see the buzzers in the soldering process as well as the final product:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-eKCBoYfOAvo/TbesOezpe0I/AAAAAAAAClk/wAOXKSU1pRo/s1600/IMAG0221.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="191" src="http://1.bp.blogspot.com/-eKCBoYfOAvo/TbesOezpe0I/AAAAAAAAClk/wAOXKSU1pRo/s320/IMAG0221.jpg" width="320" /></a></div><br /><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-tufkEshCSFs/TbesSJS4ZuI/AAAAAAAAClo/Il-KE7GTSec/s1600/IMAG0222.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://2.bp.blogspot.com/-tufkEshCSFs/TbesSJS4ZuI/AAAAAAAAClo/Il-KE7GTSec/s320/IMAG0222.jpg" width="191" /></a></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2048970051059827732-3186287552663688143?l=www.kinecthesia.com' alt='' /></div>Eric Berdinishttp://www.blogger.com/profile/11821089973072442741noreply@blogger.com0tag:blogger.com,1999:blog-2048970051059827732.post-22703922132206147522011-04-24T17:16:00.000-04:002011-05-01T22:52:25.048-04:00Kinect On Battery PowerWe did some experiments with the Kinect after we split open it's power cable. We hooked up the positive end to a variable power supply and the negative end to ground. We found that at 12V the Kinect operates and draws about 0.35A. We kept decreasing the voltage and we found that the minimum operating voltage for the Kinect is about 8.5V. At this level it drew about 0.42A. For all you Kinect hackers, the Kinect operates at under 9V!<br /><br />If you want to power your Kinect wirelessly, just hook it up directly to 8 AA batteries and it will work just fine. The amount of time you get out of the AAs will vary with your use, but don't expect something in the hours range.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2048970051059827732-2270392213220614752?l=www.kinecthesia.com' alt='' /></div>Eric Berdinishttp://www.blogger.com/profile/11821089973072442741noreply@blogger.com0tag:blogger.com,1999:blog-2048970051059827732.post-7853842480614527102011-04-23T02:45:00.000-04:002011-04-23T03:04:24.768-04:00Working late night at Kevin's<div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-3lowRh3aC3o/TbJ5XoChvAI/AAAAAAAAClY/poihkdQSSAM/s1600/IMAG0215.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="237" src="http://1.bp.blogspot.com/-3lowRh3aC3o/TbJ5XoChvAI/AAAAAAAAClY/poihkdQSSAM/s400/IMAG0215.jpg" width="400" /></a></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2048970051059827732-785384248061452710?l=www.kinecthesia.com' alt='' /></div>Eric Berdinishttp://www.blogger.com/profile/11821089973072442741noreply@blogger.com0tag:blogger.com,1999:blog-2048970051059827732.post-37601081377785053452011-04-22T22:07:00.000-04:002011-04-22T23:07:18.091-04:00Buzzers, Batteries, and BeagleBoard oh my! (also bigger microSDs)<div style="text-align: left;">Today, we decided on how we are going to implement each of the buzzers that lie on the waist of the user. We are going to write three bytes to the serial output of BeagleBoard (/dev/ttyS0) and read these values in the serial in of the mbed board (pins 9 and 10). The first two bits of each of these bytes will correspond to each of three buzzers and the other six bits will correspond to an intensity. This gives each buzzer 64(!) levels of granularity ranging from a 0% to 100% duty cycle. The mbed will read each of the values and adjust the pwm signal for each buzzer. Each buzzer operates at a max of 3.6V, but we have tested them up to 5V. The mbed has 5V and 3.3V outputs, so we will have to decide which pin to use in the future.</div><div style="text-align: left;"><span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "><br /></span></div><div><div style="text-align: left;"><span class="Apple-style-span" ><span class="Apple-style-span" style="color: rgb(0, 0, 0); "><a href="http://4.bp.blogspot.com/-i30seV5O5OE/TbJAcQs6E4I/AAAAAAAAANs/zFDL9UC7mao/s1600/BuzzermbedSchematic%2B%25281%2529.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img src="http://4.bp.blogspot.com/-i30seV5O5OE/TbJAcQs6E4I/AAAAAAAAANs/zFDL9UC7mao/s320/BuzzermbedSchematic%2B%25281%2529.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5598608141038785410" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 107px; " /></a></span></span></div><div>We also decided that we are going to use a 11.1V LiPo 3000mAh battery to power our entire system. We will use this to power the kinect and use 5V regulator with a heat sink to reduce this voltage to 5V for the beagleboard and mbed. LiPo batteries are lightweight and will power our entire system for a few hours before needing recharging.</div></div><div><br /></div><div>Today we also upgraded our Beagleboard to run on a 16 GB MicroSD card which will make installing packages and compiling much easier.</div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2048970051059827732-3760108137778505345?l=www.kinecthesia.com' alt='' /></div>Jeff Kiskehttp://www.blogger.com/profile/15215655371609547086noreply@blogger.com0tag:blogger.com,1999:blog-2048970051059827732.post-57513534183739198842011-04-19T16:34:00.001-04:002011-04-19T17:38:08.248-04:00Getting the Kinect to Play Nice with the BeagleBoardWe were a little skeptical at first about getting the Kinect to work with the BeagleBoard because we are working with ARM. Everything up till now was compiled for x86 for everything on the Kinect. Luckily the Kinect uses the standard USB library, so once we had the driver installed all the data could be read with relative ease.<br /><br />We found another <a href="http://tirokartblog.wordpress.com/2011/01/21/kinect-working-on-ubuntu-10-10/">blog </a>that outlined the steps we needed to follow in order to get the Kinect to work with Ubuntu 10.10. On the same blog in a <a href="http://tirokartblog.wordpress.com/2011/01/22/kinect-on-the-beagleboard-xm-not-working-yet/">post </a>a few days later, we found instructions on how to install Kinect on the BeagleBoard.<br /><br />Steps we took:<br /><br />1. In the terminal install the required packages for Kinect<br /><br /><span class="Apple-tab-span" style="white-space:pre"> </span>sudo apt-get install git-core cmake libglut3-dev pkg-config gcc g++ build-essential libxmu-dev libxi-dev libusb-1.0-0-dev doxygen graphviz git<br /><br />2. Create a new dir for Kinect files<br /><br /><span class="Apple-tab-span" style="white-space:pre"> </span>mkdir ~/kinect cd ~/kinect<br /><br />3. Download and OpenNI from the git repo<br /><br /><span class="Apple-tab-span" style="white-space:pre"> </span>git clone https://github.com/OpenNI/OpenNI.git<br /><br />4. Edit the make file in ~/kinect/OpenNI/Platform/Linux-x86/Build:<br /><br />Comment out the lines:<br /><br /><span class="Apple-tab-span" style="white-space:pre"> </span>CFLAGS += -malign-double<br /><br /><span class="Apple-tab-span" style="white-space:pre"> </span>and<br /><br /><span class="Apple-tab-span" style="white-space:pre"> </span>ifeq ($(SSE_GENERATION), 2)<br /><span class="Apple-tab-span" style="white-space:pre"> </span>CFLAGS += -msse2<br /><span class="Apple-tab-span" style="white-space:pre"> </span>else<br /><span class="Apple-tab-span" style="white-space:pre"> </span>ifeq ($(SSE_GENERATION), 3)<br /><span class="Apple-tab-span" style="white-space:pre"> </span>CFLAGS += -msse3<br /><span class="Apple-tab-span" style="white-space:pre"> </span>else<br /><span class="Apple-tab-span" style="white-space:pre"> </span>($error "Only SSE2 and SSE3 are supported")<br /><span class="Apple-tab-span" style="white-space:pre"> </span>endif<br /><span class="Apple-tab-span" style="white-space:pre"> </span>endif<br /><br />The -malign-double and -msse3 flags are only for x86 and will not work for gcc on ARM<br /><br />5. Next install OpenNI<br /><br /><span class="Apple-tab-span" style="white-space:pre"> </span>cd OpenNI/Platform/Linux-x86/Build<br /><span class="Apple-tab-span" style="white-space:pre"> </span>make &amp;&amp; sudo make install<br /><br />6. After this is done install the Kinect driver by giting (sp?) the sensor and Kinect driver git repo<br /><br /><span class="Apple-tab-span" style="white-space:pre"> </span>cd ~/kinect/<br /><span class="Apple-tab-span" style="white-space:pre"> </span>git clone https://github.com/boilerbots/Sensor.git<br /><span class="Apple-tab-span" style="white-space:pre"> </span>cd Sensor<br /><span class="Apple-tab-span" style="white-space:pre"> </span>git checkout kinect<br /><br />7. Finally install the sensor and Kinect driver<br /><br /><span class="Apple-tab-span" style="white-space:pre"> <span class="Apple-tab-span" style="white-space:pre"> </span></span>cd Platform/Linux-x86/Build<br /><span class="Apple-tab-span" style="white-space:pre"> <span class="Apple-tab-span" style="white-space:pre"> </span></span>make &amp;&amp; sudo make install<br /><br />8. We did not have to install NITE, the middleware that allows for skeleton and gesture detection, because we are only processing raw depth data. If you want to install NITE see <a href="http://tirokartblog.wordpress.com/2011/01/21/kinect-working-on-ubuntu-10-10/">this blog</a>.<div><br /></div><div>All of the non-graphical examples will run, but any example with glut (an OpenGL command for displaying images on the screen) will seg fault. We have yet to find a way around this, but for our project, it is not necessary to see what the Kinect is seeing.</div><div><br /></div><div>We only have around 86MB left on our 2GB MicroSD card after installing everything. In the middle of the Kinect installation we had to uninstall things in Gnome like the screensaver and audio applications so that the files could compile. Hopefully we do not need to transfer our information to a larger SD card...</div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2048970051059827732-5751353418373919884?l=www.kinecthesia.com' alt='' /></div>Jeff Kiskehttp://www.blogger.com/profile/15215655371609547086noreply@blogger.com0tag:blogger.com,1999:blog-2048970051059827732.post-69851489251830876242011-04-18T05:16:00.000-04:002011-04-19T17:35:45.290-04:00Great Success!We just got the Kinect to work with the BeagleBoard-xM at 30 FPS! Details coming after I wake up.<br /><div><br /></div><div><span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; color: #0000ee;"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5597409981578531330" src="http://2.bp.blogspot.com/-xXiRNdb3rik/Ta3-uM420gI/AAAAAAAAANc/ypz4hLvkt00/s320/IMAG0211.jpg" style="cursor: pointer; display: block; height: 191px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; text-align: center; width: 320px;" /></span></div><div><span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; color: #0000ee;"><br /></span></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2048970051059827732-6985148925183087624?l=www.kinecthesia.com' alt='' /></div>Jeff Kiskehttp://www.blogger.com/profile/15215655371609547086noreply@blogger.com0tag:blogger.com,1999:blog-2048970051059827732.post-40175971826678483682011-04-18T02:31:00.000-04:002011-04-19T17:23:51.068-04:00Ubuntu 10.10 on BeagleBoard XMThe next step in our project was getting our BeagleBoard XM to run Ubuntu. We chose Ubuntu because it is the most lightweight operating system that we are familiar with that <i>we think</i> can interface with the Kinect. There is also a decent amount of documentation we found <a href="http://elinux.org/BeagleBoardUbuntu">here</a> that we used to give us a starting point.<br /><br />To start things off, we installed the pre-built image of the <a href="http://elinux.org/BeagleBoardUbuntu#Maverick_10.10_2">Maverick</a> flavor of Ubuntu (10.10). We used Kevin's Linux laptop which has an SD card reader to partition our 2GB microSD card, which the BeagleBoard uses to run the OS. We then unpacked the image, popped out the SD card and plugged it into the board. Hooking up the BeagleBoard to a TV via its HDMI port allowed us to use the terminal-based OS. Here is a picture of the BeagleBoard hooked up with wireless keyboard/mouse, ethernet, power, and HDMI:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-Jw3gXnupQeE/Ta37xQIpyvI/AAAAAAAACkw/Rs0rUKGZUis/s1600/bbxm.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="191" src="http://1.bp.blogspot.com/-Jw3gXnupQeE/Ta37xQIpyvI/AAAAAAAACkw/Rs0rUKGZUis/s320/bbxm.jpg" width="320" /></a></div><br /><br />The terminal got boring pretty quickly, so we decided to install <a href="http://www.gnome.org/">GNOME</a> which is a windows-based OS. Unfortunately, we needed an internet connection -- this is where we ran into some trouble. Since the BeagleBoard XM does not have built in Wi-Fi, it couldn't detect AirPennNet (but we realized it would be near impossible to authenticate it with AirPennNet via terminal anyway). We hooked up an&nbsp;Ethernet cable, but that didn't work right away either. Finally, we decided to use my router as an intermediary between Penn's closed internet system so that we wouldn't have to both with registering a new device.<br /><br />We figured out that before the BeagleBoard could access the Internet, we needed to manually enable network access which we found instructions for <a href="http://elinux.org/BeagleBoardUbuntu#Enable_Network_Access">here</a>.&nbsp;One weird thing we found after a few hours of tinkering is that the BeagleBoard XM calls its Ethernet port "usb1" and not "eth0" like we thought. Once we made this edit we could access the Internet. Here is a picture of the HDMI output of the BeagleBoard on my TV as we installed GNOME:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-ovPWQucp8KY/Ta364IsBX3I/AAAAAAAACks/dvHCYltnM8s/s1600/gnome.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="191" src="http://3.bp.blogspot.com/-ovPWQucp8KY/Ta364IsBX3I/AAAAAAAACks/dvHCYltnM8s/s320/gnome.jpg" width="320" /></a></div><br /><br />Next we installed a lightweight Internet browser, <a href="http://en.wikipedia.org/wiki/Midori_(web_browser)">Midoro</a>, and a text editor, <a href="http://projects.gnome.org/gedit/">gedit</a>. Here is a picture of the GNOME desktop:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-psaHXeda8Hg/Ta38yvJddFI/AAAAAAAACk0/UDrKbYfTF5Y/s1600/gnome+desktop.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="191" src="http://2.bp.blogspot.com/-psaHXeda8Hg/Ta38yvJddFI/AAAAAAAACk0/UDrKbYfTF5Y/s320/gnome+desktop.jpg" width="320" /></a></div><br /><br />Our next step is to install the Kinect drivers!<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2048970051059827732-4017597182667848368?l=www.kinecthesia.com' alt='' /></div>Eric Berdinishttp://www.blogger.com/profile/11821089973072442741noreply@blogger.com0tag:blogger.com,1999:blog-2048970051059827732.post-71495453891072356022011-04-12T17:03:00.002-04:002011-04-12T17:30:58.983-04:00Editing Sample Code<div style="text-align: left;">While testing the Kinect we came across a sample code segment called NiSimpleRead. This program took in the data from the Kinect and printed out the depth in the middle of the sensor. By editing the C# source file, we made a modified version that found the closest and furthest point in the Kinect's view.</div><div><br /></div><div>The next thing we did was try to figure out how to alert the user to a nearby object. We first thought about having the camera identify the closest object and buzz the respective buzzer based on the objects x-position. We then thought about dividing the vision into three segments for each buzzer. We could then find three of the closest points in each section and vibrate each buzzer based on the distance.</div><div><br /></div><div><span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "><img src="http://1.bp.blogspot.com/-wovuyhhw8aM/TaTBcUbhzYI/AAAAAAAAANM/PE12Vae76Tw/s320/3%2Bzones.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5594809329365667202" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 169px; " /></span></div><div><span class="Apple-style-span"><span class="Apple-style-span" style="color: rgb(0, 0, 0); "><br /></span></span></div><div><span class="Apple-style-span"><span class="Apple-style-span" style="color: rgb(0, 0, 0); ">But, this would cause problems when an item was in between two zones. We eventually decided that the best way to determine which buzzer to buzz was by having the three zones overlap. Each buzzer would correspond to 1/2 of the Kinect''s view and each frame would correspond to a buzzer. </span></span>We would then average the z-distance of each pixel in each of the buzzers frame and adjust the buzzers based on this average.</div><div><span class="Apple-style-span"><span class="Apple-style-span" style="color: rgb(0, 0, 0); "><br /></span></span></div><div><span class="Apple-style-span"><span class="Apple-style-span" style="color: rgb(0, 0, 0); "><span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "><img src="http://1.bp.blogspot.com/-Etg0P2etI2w/TaTC9GVGckI/AAAAAAAAANU/PwCKzDYw08I/s320/Zone%2BAverage.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5594810992027923010" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 171px; " /></span></span></span></div><div><span class="Apple-style-span"><div style="color: rgb(0, 0, 0); -webkit-text-decorations-in-effect: underline; "><br /></div><div><span class="Apple-style-span"><span class="Apple-style-span">We programed the Kinect to report the average distance of each zone, but we cannot determine if this is the best method yet. We may have to weight the average if the object is closer to the middle of the screen, or if the object is lower. We will not know the best method of doing this until we have the entire system rigged up.</span></span></div><div style="color: rgb(0, 0, 0); -webkit-text-decorations-in-effect: underline; "><span class="Apple-style-span"><span class="Apple-style-span" style="color: rgb(0, 0, 0); "><br /></span></span></div></span></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2048970051059827732-7149545389107235602?l=www.kinecthesia.com' alt='' /></div>Jeff Kiskehttp://www.blogger.com/profile/15215655371609547086noreply@blogger.com0tag:blogger.com,1999:blog-2048970051059827732.post-51253474162865970942011-04-09T22:12:00.000-04:002011-05-09T03:06:22.849-04:00First tests with Kinect and PC<span class="Apple-style-span" style="color: #666666; font-family: 'Trebuchet MS', Trebuchet, sans-serif;"><span class="Apple-style-span" style="line-height: 18px;">Before we started on the Kinect Belt, we wanted to mess around with the Kinect on our PCs. We found the instructions to install the driver from <a href="http://www.imaginativeuniversal.com/blog/post/2011/03/29/e2809cKe2809d-is-for-Hacking.aspx">this website</a>. While the set up was pretty easy, there were some kinks when it came to transferring files around to different folders like they instruct. Once Microsoft comes out with its <a href="http://news.cnet.com/8301-10797_3-20034534-235.html">official SDK</a>, this should be a lot easier.</span></span><br /><span class="Apple-style-span" style="color: #666666; font-family: 'Trebuchet MS', Trebuchet, sans-serif;"><span class="Apple-style-span" style="line-height: 18px;"><br /></span></span><br /><span class="Apple-style-span" style="color: #666666; font-family: 'Trebuchet MS', Trebuchet, sans-serif;"><span class="Apple-style-span" style="line-height: 18px;">We were able to run all of the demos, but our favorite was the Ogre demo. The program maps points on your body to a stick figure around which is the body of a dual-sword-bearing ogre. C</span></span><span class="Apple-style-span" style="color: #666666; font-family: 'Trebuchet MS', Trebuchet, sans-serif; line-height: 18px;">heck out the video below:</span><br /><span class="Apple-style-span" style="color: #666666; font-family: 'Trebuchet MS', Trebuchet, sans-serif;"><span class="Apple-style-span" style="line-height: 18px;"><br /></span></span><br /><div class="separator" style="clear: both; text-align: center;"><object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://1.gvt0.com/vi/AYByIGT-2QU/0.jpg" height="266" width="320"><param name="movie" value="http://www.youtube.com/v/AYByIGT-2QU&fs=1&source=uds" /><param name="bgcolor" value="#FFFFFF" /><embed width="320" height="266" src="http://www.youtube.com/v/AYByIGT-2QU&fs=1&source=uds" type="application/x-shockwave-flash"></embed></object></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;"><span class="Apple-style-span" style="color: #666666; font-family: 'Trebuchet MS', Trebuchet, sans-serif; line-height: 18px;">As we wait for our parts to come in, we will continue testing and modifying code with the Kinect, and start to program the Kinect Belt.</span></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2048970051059827732-5125347416286597094?l=www.kinecthesia.com' alt='' /></div>Eric Berdinishttp://www.blogger.com/profile/11821089973072442741noreply@blogger.com0tag:blogger.com,1999:blog-2048970051059827732.post-16207842608212427032011-04-09T00:29:00.000-04:002011-05-09T03:05:44.528-04:00Kinect Belt<span class="Apple-style-span" style="color: #666666; font-family: 'Trebuchet MS', sans-serif;">Our medical-themed project idea is called the Kinect-operated Vibro-tactile Belt for Aiding the Visually Impaired. As the name suggests, our product will use a Kinect to aid one's vision. Our product will be aimed towards blind users.</span><br /><span class="Apple-style-span" style="color: #666666; font-family: 'Trebuchet MS', sans-serif;"><br /></span><br /><span class="Apple-style-span" style="color: #666666; font-family: 'Trebuchet MS', sans-serif;">Our plan is to mount a Kinect on a belt or waistband along with 3-6 vibration motors and a BeagleBoard. The Kinect will detect objects in the blind user's path and vibrate the motors to warn him or her of the obstacles. For example, if there is an obstacle on the left, the left most motors will vibrate.</span><br /><span class="Apple-style-span" style="color: #666666; font-family: 'Trebuchet MS', sans-serif;"><br /></span><br /><span class="Apple-style-span" style="color: #666666; font-family: 'Trebuchet MS', sans-serif;">The BeagleBoard will take input from the Kinect and output which motors to vibrate. We are still figuring out how to power it wirelessly, but this <a href="http://hci.uni-konstanz.de/blog/2011/03/15/navi/?lang=en">similar project</a> should help us out.</span><br /><span class="Apple-style-span" style="color: #666666; font-family: 'Trebuchet MS', sans-serif;"><br /></span><br /><span class="Apple-style-span" style="color: #666666; font-family: 'Trebuchet MS', sans-serif;">Here is a diagram of our project which includes the headphones/voice guidance project expansion:</span><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-LyoskdMxI5g/TaPhFC2yR1I/AAAAAAAACj0/uLvJbmG7VPk/s1600/jeff+diagram.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://2.bp.blogspot.com/-LyoskdMxI5g/TaPhFC2yR1I/AAAAAAAACj0/uLvJbmG7VPk/s320/jeff+diagram.jpg" width="320" /></a></div><span class="Apple-style-span" style="color: #666666; font-family: 'Trebuchet MS', sans-serif;"><br /></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2048970051059827732-1620784260821242703?l=www.kinecthesia.com' alt='' /></div>Eric Berdinishttp://www.blogger.com/profile/11821089973072442741noreply@blogger.com0