<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://elinux.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://elinux.org/api.php?action=feedcontributions&amp;user=Xinyu1991&amp;feedformat=atom</id>
		<title>eLinux.org - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://elinux.org/api.php?action=feedcontributions&amp;user=Xinyu1991&amp;feedformat=atom"/>
		<link rel="alternate" type="text/html" href="http://elinux.org/Special:Contributions/Xinyu1991"/>
		<updated>2013-05-22T09:29:11Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.21alpha</generator>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Kinect</id>
		<title>ECE497 Project: Kinect</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Kinect"/>
				<updated>2012-11-14T21:40:28Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497 |Project]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Astroricks|Yue Zhang]], [[user:Xinyu1991|Xinyu Cheng]], [[user:Lix|Xia Li]].&lt;br /&gt;
&lt;br /&gt;
== Grading Template ==&lt;br /&gt;
I'm using the following template to grade.  Each slot is 10 points.&lt;br /&gt;
0 = Missing, 5=OK, 10=Wow!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
00 Executive Summary&lt;br /&gt;
00 Installation Instructions&lt;br /&gt;
00 User Instructions&lt;br /&gt;
00 Highlights&lt;br /&gt;
00 Theory of Operation&lt;br /&gt;
00 Work Breakdown&lt;br /&gt;
00 Future Work&lt;br /&gt;
00 Conclusions&lt;br /&gt;
00 Demo&lt;br /&gt;
00 Late&lt;br /&gt;
Comments:&lt;br /&gt;
&lt;br /&gt;
Score:  00/100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;(Inline Comment)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
I believe that almost every college students have played a game called &amp;quot;Greedy Snake&amp;quot; in our childhood. At that time, we played it on the cellphone, on the computer or on the PSP. However, we are always using the keyboard to control the games we played. Now, our final project could bring you something new, that is a &amp;quot;Gesture Controlled Greedy Snake&amp;quot;. It means that, using the gesture, the keyboard is never required to play the game. Amazing? Read the following wiki to know how we make it happens!&lt;br /&gt;
&lt;br /&gt;
Basically, we are using the kinect from Microsoft and the Beagle Board XM from Texas Instrument to accomplish our gesture game. The program for the game is programmed on the QT-Linux. Besides, we use the cross compiling to compile the program to make the game run on the beagle board.&lt;br /&gt;
&lt;br /&gt;
After our previous work, our &amp;quot;Gesture Greedy Snake&amp;quot; is completed, and works pretty good. The snake can be controlled by our gestures smoothly. The game reminds us a different style of childhood memory.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
1 x [http://www.microsoftstore.com/store/msstore/en_US/pd/ThemeID.27509700/Kinect-for-Xbox-360/productID.216507400 Kinect]&lt;br /&gt;
&lt;br /&gt;
1 x [http://www.digikey.com/product-highlights/us/en/texas-instruments-beagleboard/685 BeagleBoard xM]&lt;br /&gt;
&lt;br /&gt;
1 x DVI to HDMI wire&lt;br /&gt;
&lt;br /&gt;
1 x Monitor&lt;br /&gt;
&lt;br /&gt;
1 x Keyboard&lt;br /&gt;
&lt;br /&gt;
1 x Mouse&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Overview ====&lt;br /&gt;
The source files for the project can be downloaded from https://github.com/Astroricks/Snake-Game-with-Kinect-on-BeagleBoard-xM . Once you have set up the developing environment as in the following instructions, you can download the files, playing with the game or making changes.  &lt;br /&gt;
&lt;br /&gt;
We are using the drivers provided by [http://www.omekinteractive.com/ Omek]. The driver files can be found at the Beckon™ SDK 2.4 – BeagleBoard-xM Edition [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/32/11/installation installation] page, and a developer's guide is provided at the [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/34/11/documentation documentation] page. (You may need to register first.) Instructions in this [http://treyweaver.blogspot.com/2010/10/setting-up-qt-development-environment.html blog] are also very useful.&lt;br /&gt;
&lt;br /&gt;
Although the developer's guide introduces how to do the installation and configuration, we have found that it takes much longer than we originally thought, and errors came out occasionally. It seems that the developer's guide is not very well organized and not detailed enought anyway. So we arranged our instruction and configuration procedures as below:&lt;br /&gt;
&lt;br /&gt;
==== 1. Download the image package and burn it into the SD card ====&lt;br /&gt;
&lt;br /&gt;
Download the image package [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/32/11/installation Beckon-Image-2.4.19872.tar.gz] as mentioned above onto your Linux PC. Then extract it by entering&lt;br /&gt;
&lt;br /&gt;
 host$ tar -xvzf ''&amp;lt;ImageFileName&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
Run the following command to make sure you have bash installed.&lt;br /&gt;
&lt;br /&gt;
 host$ sudo apt-get install bash&lt;br /&gt;
&lt;br /&gt;
Insert your SD card using a card reader/writer. Run the following command:&lt;br /&gt;
&lt;br /&gt;
 host$ sudo bash mkcard.sh /dev/''&amp;lt;sdX&amp;gt;'' beagle-omek&lt;br /&gt;
&lt;br /&gt;
''Note: This action will wipe out and rewrite the SD card so make sure the files in it are backed up. The name of the SD card can be viewed in Disk Utility. If you mistakenly use the main OS device name this script can erase your entire OS.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 2. Run the sample application ====&lt;br /&gt;
&lt;br /&gt;
Plug the sensor into the BeagleBoard-xM USB port. Ensure the mouse and keyboard are connected to the BeagleBoard-xM USB port. Connect the BeagleBoard-xM to the monitor with an HDMI cable. Connect the BeagleBoard-xM power supply and wait for the boot process to reach the login prompt, login as user root (no password is required). Now it's ready to run the sample applications on the BeagleBoard-xM.&lt;br /&gt;
&lt;br /&gt;
''Note: Details about running the samples can be found in the developer's guide from page 9 to 11. The Kinect will react properly only if the player is within an appropriate distance (about 1m - 5m). ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: The following instruction is about how to set up the environment for developing. If you don't want to do the development, you can just skip that.&lt;br /&gt;
&lt;br /&gt;
==== 3. Setting up your Linux development PC ====&lt;br /&gt;
&lt;br /&gt;
Download [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/32/11/installation Beckon-SDK-2.4.19872.tar.gz] and extract it onto your host PC (this is the actual SDK which contains headers, libraries, documentation, makefiles, etc...) The SDK provides the tools to develop a motion-tracking and gesture-based application that can run on the BeagleBoard-xM. After developing the application, cross-compile it onto the Linux PC and then copy the image onto the BeagleBoard-xM via external USB storage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Download the Linux ARM cross toolchain:&lt;br /&gt;
&lt;br /&gt;
For 32-bit Ubuntu you will want to download this file: http://www.angstrom-distribution.org/toolchains/angstrom-2011.03-i686-linux-armv7a-linux-gnueabi-toolchain-qte-4.6.3.tar.bz2&lt;br /&gt;
&lt;br /&gt;
For 64-bit Ubuntu you will want to download this file: http://www.angstrom-distribution.org/toolchains/angstrom-2011.03-x86_64-linux-armv7a-linux-gnueabi-toolchain-qte-4.6.3.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Extract the downloaded archive into your system root directory:&lt;br /&gt;
&lt;br /&gt;
 host$ sudo tar -xvjf ''&amp;lt;ToolchainFileName&amp;gt;'' -C /&lt;br /&gt;
&lt;br /&gt;
''Note: If you extract the archive into a different directory, you should adjust the following instructions as well as the samples' makefiles accordingly.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Install the Qt embedded SDK for Angstrom/BeagleBoard:&lt;br /&gt;
&lt;br /&gt;
Now that you have your cross compiler installed, you can compile Qt with it. First thing to do is to install zlib library:&lt;br /&gt;
&lt;br /&gt;
 host$ sudo apt-get install zlib1g-dev&lt;br /&gt;
&lt;br /&gt;
Then download the Open Source LGPL version of Qt libraries 4.6.2 for Embedded Linux [http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.6.2.tar.gz here]. &lt;br /&gt;
&lt;br /&gt;
''Note: Newest version of Qt libraries can be found [http://qt-project.org/downloads/ here]. We didn't test it since the 4.6.2 version works fine.''&lt;br /&gt;
&lt;br /&gt;
Extract the file you just downloaded:&lt;br /&gt;
&lt;br /&gt;
 host$ tar -xvzf ''&amp;lt;DownloadFileName&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
You need to create a new make.conf. Run the following line to make a new mkspecs directory for the BeagleBoard Processor.&lt;br /&gt;
&lt;br /&gt;
 host$ cp -R ''&amp;lt;DownloadDirectory&amp;gt;''/mkspecs/qws/linux-arm-g++/ ''&amp;lt;DownloadDirectory&amp;gt;''/mkspecs/qws/linux-DM3730-g++/&lt;br /&gt;
&lt;br /&gt;
Edit the qmake.conf file found in ''&amp;lt;DownloadDirectory&amp;gt;''/mkspecs/qws/linux-DM3730-g++/ and overwrite it with the following lines.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# qmake configuration for building with arm-linux-g++&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
include(../../common/g++.conf)&lt;br /&gt;
include(../../common/linux.conf)&lt;br /&gt;
include(../../common/qws.conf)&lt;br /&gt;
&lt;br /&gt;
# modifications to g++.conf&lt;br /&gt;
#Toolchain&lt;br /&gt;
&lt;br /&gt;
#Compiler Flags to take advantage of the ARM architecture&lt;br /&gt;
QMAKE_CFLAGS_RELEASE =   -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp&lt;br /&gt;
QMAKE_CXXFLAGS_RELEASE = -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp&lt;br /&gt;
&lt;br /&gt;
QMAKE_CC = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/gcc&lt;br /&gt;
QMAKE_CXX = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++&lt;br /&gt;
QMAKE_LINK = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++&lt;br /&gt;
QMAKE_LINK_SHLIB = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++&lt;br /&gt;
&lt;br /&gt;
# modifications to linux.conf&lt;br /&gt;
QMAKE_AR = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/ar cqs&lt;br /&gt;
QMAKE_OBJCOPY = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/objcopy&lt;br /&gt;
QMAKE_STRIP = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/strip&lt;br /&gt;
&lt;br /&gt;
load(qt_config)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now run the configure command (see this [http://processors.wiki.ti.com/index.php/Building_Qt website] for more details if needed):&lt;br /&gt;
&lt;br /&gt;
 host$ cd ''&amp;lt;DownloadDirectory&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
For 32-bit Ubuntu:&lt;br /&gt;
&lt;br /&gt;
 host$ ./configure -opensource -confirm-license -prefix /opt/qt-arm -no-qt3support -embedded arm -little-endian -xplatform qws/linux-DM3730-g++ -qtlibinfix E&lt;br /&gt;
&lt;br /&gt;
For 64-bit Ubuntu:&lt;br /&gt;
&lt;br /&gt;
 host$ ./configure -opensource -confirm-license -prefix /opt/qt-arm -no-qt3support -embedded arm -little-endian -platform qws/linux-x86_64-g++ -xplatform qws/linux-DM3730-g++ -qtlibinfix E&lt;br /&gt;
&lt;br /&gt;
Once this is complete you can run make and make install (make may take some hours):&lt;br /&gt;
&lt;br /&gt;
 host$ make&lt;br /&gt;
 host$ sudo make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Install and set up Qt Creator:&lt;br /&gt;
&lt;br /&gt;
Go to http://qt-project.org/downloads to download Qt. Get the latest version of Qt for Linux/X11; be sure to get the appropriate 32bit or 64bit version. Once downloaded go to the download directory and execute the following using your download file name:&lt;br /&gt;
&lt;br /&gt;
 host$ chmod u+x ''&amp;lt;QtCreator.bin&amp;gt;''&lt;br /&gt;
 host$ ./''&amp;lt;QtCreator.bin&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
''Update:''The free version Qt Creator can not be used in this project since it doesn't have cross-compile option with it.&lt;br /&gt;
&lt;br /&gt;
After Qt Creator is successfully installed, start Qt Creator. Go to: Tools &amp;gt; Options &amp;gt; Build &amp;amp; Run &amp;gt; Tool Chains, select Add -&amp;gt; GCC and insert the full compiler path below:&lt;br /&gt;
&lt;br /&gt;
/usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++&lt;br /&gt;
&lt;br /&gt;
Then go to: Tools &amp;gt; Options &amp;gt; Build &amp;amp; Run &amp;gt; Qt Versions, select Add and provide the following full path to qmake&lt;br /&gt;
&lt;br /&gt;
/opt/qt-arm/bin/qmake&lt;br /&gt;
&lt;br /&gt;
Press Apply and OK.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 4. Setting up the BeagleBoard-xM ====&lt;br /&gt;
&lt;br /&gt;
All of the Qt files that you need to move to the BeagleBoard can be found in the /opt/qt-arm/lib directory on your Linux Build System. Copy all the files out of your build system's /opt/qt-arm/lib directory and put those into the BeagleBoard-xM's /opt/qt-arm/lib directory. You can get the files to the Beagleboard by either networking, using a usb drive or plug the SD card into your Linux Build System.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Building and running samples===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To build QtTracking Sample:&lt;br /&gt;
&lt;br /&gt;
1. Start Qt Creator.&lt;br /&gt;
&lt;br /&gt;
2. Go to: File &amp;gt; Open File or Project, select the QtTracking-SDK.pro project (from Beckon-SDK-{version}/samples/QtTracking) and click Open. Select Embedded Linux instead of Desktop.&lt;br /&gt;
&lt;br /&gt;
3. Click Finish.&lt;br /&gt;
&lt;br /&gt;
4. Go to Projects tab (on the left), In Qt version select Qt [4.x.x (qt-arm)]/.&lt;br /&gt;
&lt;br /&gt;
5. Run Build -&amp;gt; Build Project command.&lt;br /&gt;
&lt;br /&gt;
The result executable can be found in the Beckon-SDK-{version}/bin directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To run the QtTracking Sample:&lt;br /&gt;
&lt;br /&gt;
1. Mount or copy the bin directory to the BeagleBoard.&lt;br /&gt;
&lt;br /&gt;
''Note: Run the reset.sh script inside the &amp;quot;bin&amp;quot; folder of the SDK before each sample run, to reset the DSP.''&lt;br /&gt;
&lt;br /&gt;
Run the following:&lt;br /&gt;
&lt;br /&gt;
 beagle$ ./QtTracking-SDK –qws&lt;br /&gt;
&lt;br /&gt;
''Note: Developer's guide has more instructions on running the sample''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===The Snake Game===&lt;br /&gt;
&lt;br /&gt;
The Snake Game can be downloaded from https://github.com/Astroricks/Snake-Game-with-Kinect-on-BeagleBoard-xM. To play with it you should copy the folder to the root directory of SD card. Since what we did is combining the Snake Game source code into the Tracking Sample, running this application would be the same way as running the samples.&lt;br /&gt;
&lt;br /&gt;
We suggest playing with the following command:&lt;br /&gt;
&lt;br /&gt;
 beagle$ cd Tracking_Sanke/bin/&lt;br /&gt;
 beagle$ ./QtTracking-SDK –qws -upper&lt;br /&gt;
&lt;br /&gt;
When the application is running, we suggest pressing the &amp;quot;setting&amp;quot; button first to enable the wall-cross mode, which could make it not so easily &amp;quot;game over&amp;quot;. To start the game, you need to press Up Arrow(or Arrows of other directions) on the keyboard. And the player would get a better playing experience if he/she stands in front of the Kinect with a distance of about 1.5m - 2m. The player should control the snake with his '''right hand''' moving up and down, left and right.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Our project is about how to use Microsoft Kinect Sensor to play snake game by the motion of you right hand(You can modify the codes to change to any part of your body if you would like to). We set a score section to record the highest score. Anybody who want to break our record are welcome(Currently the record is holding by Xinyu Cheng at 260). We've created a play demo and uploaded it to YouTube:&lt;br /&gt;
&lt;br /&gt;
=== Play snake game with Kinect sensor on BeagleboardxM ===&lt;br /&gt;
{{#ev:youtube|uBW6LkVUi9I}}&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
=== The Main Idea ===&lt;br /&gt;
We are using the kinect as the sensor of our project. The provided algorithm of the kinect make it possible for us to get the coordinate of many joints of the body. In this case, we can judge the position and the motion of our hands or any other joints. Then, we can use the direction we get from the previous judgement to control the Greedy Snake. Our project is running with the idea.&lt;br /&gt;
&lt;br /&gt;
=== The Technics Used ===&lt;br /&gt;
Technically, we can use QT to design our program and then cross-complie our project to the beagle-board. The Greedy Snake is an open-source QT game, and the tracking of the joint can be accomplished from modifying the Omek SDK. We have to modify both of their codes to connect the two parts together.&lt;br /&gt;
&lt;br /&gt;
=== The Control Strategy ===&lt;br /&gt;
Judging gestures simply from the changing of coordinate is hard and may lead to mistakes commonly. To improve the playing experience, we combined two methods to guess which control direction the player wants to make.&lt;br /&gt;
&lt;br /&gt;
1. Compare the current coordinate with the last time. When the date is refreshed, we can compare the current coordinate of player's right-hand withe the last time value. If the difference between the coordinates of x or y is larger than the threshold, it is reasonable to think that the player may want the snake to make a move in this direction.&lt;br /&gt;
&lt;br /&gt;
2. See where the hand locates. After making a upward movement, it has a high possibility that the y coordinate locates in the up area. Similar situation appears in other movement directions. So by checking the current value of the x and y coordinates we can know which direction the player want to make move.&lt;br /&gt;
&lt;br /&gt;
Only when the same direction is implied by both methods, we move the snake in this direction. It seems that this control strategy works pretty well.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
=== Yue Zhang ===&lt;br /&gt;
* Researched how to Burn the correct Image to the Beagle Board.&lt;br /&gt;
* Configure the Beagle Board to control the kinect.&lt;br /&gt;
* Implemented the motion based algorithm which makes the application runs more smoothly.&lt;br /&gt;
* Programmed for the part of motion algorithm.&lt;br /&gt;
=== Xinyu Cheng ===&lt;br /&gt;
* Researched how to configure the QT programming environment. &lt;br /&gt;
* Accomplished the cross-compiling on QT.&lt;br /&gt;
* Programming for the connection between the Snake Game and the Kinect SDK.&lt;br /&gt;
* Designed and Implemented the coordinate based algorithm.&lt;br /&gt;
=== Xia Li ===&lt;br /&gt;
* Researched how to run the provided SDK demo.&lt;br /&gt;
* Speed up for the demo.&lt;br /&gt;
* Designed the motion based algorithm. &lt;br /&gt;
* Programmed to improved the accuracy and speed of the game.&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
&lt;br /&gt;
Now, our game can work pretty good and smoothly. The future work for the project will mainly about the following aspects:&lt;br /&gt;
* Improve the user interface, make the game looks more pretty. &lt;br /&gt;
* Improve the game rules, to make it more interesting. &lt;br /&gt;
* Improve our algorithm for the direction judgement, to make the game runs more smoothly.&lt;br /&gt;
* Display the motion of our hand on the window, to make the user more clear about the motion of their hands. &lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Conculsionly, our project works pretty good. Our Greedy Snake game runs very good and brings a lot of fun for us. &lt;br /&gt;
&lt;br /&gt;
During the develop process, we met lots of difficulties, we tried to solve them one by one. The first problem we met is how to build the connection between the kinect and the game. We tried very hard to debug our program step by step, then finally found the bug and fixed it.&lt;br /&gt;
&lt;br /&gt;
We can still do something more to improve our project. Like we have talked about in the &amp;quot;Future Work&amp;quot; part, we can try to improve the GUI of our game to make it looks more pretty, and improve our display inforamtion and the algorithm for the game to make it easier for users to play. So, to make the game perfect, there is still a long way to go. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{YoderFoot}}&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Kinect</id>
		<title>ECE497 Project: Kinect</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Kinect"/>
				<updated>2012-11-14T21:23:35Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497 |Project]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Astroricks|Yue Zhang]], [[user:Xinyu1991|Xinyu Cheng]], [[user:Lix|Xia Li]].&lt;br /&gt;
&lt;br /&gt;
== Grading Template ==&lt;br /&gt;
I'm using the following template to grade.  Each slot is 10 points.&lt;br /&gt;
0 = Missing, 5=OK, 10=Wow!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
00 Executive Summary&lt;br /&gt;
00 Installation Instructions&lt;br /&gt;
00 User Instructions&lt;br /&gt;
00 Highlights&lt;br /&gt;
00 Theory of Operation&lt;br /&gt;
00 Work Breakdown&lt;br /&gt;
00 Future Work&lt;br /&gt;
00 Conclusions&lt;br /&gt;
00 Demo&lt;br /&gt;
00 Late&lt;br /&gt;
Comments:&lt;br /&gt;
&lt;br /&gt;
Score:  00/100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;(Inline Comment)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
I believe that almost every college students have played a game called &amp;quot;Greedy Snake&amp;quot; in our childhood. At that time, we played it on the cellphone, on the computer or on the PSP. However, we are always using the keyboard to control the games we played. Now, our final project could bring you something new, that is a &amp;quot;Gesture Controlled Greedy Snake&amp;quot;. It means that, using the gesture, the keyboard is never required to play the game. Amazing? Read the following wiki to know how we make it happens!&lt;br /&gt;
&lt;br /&gt;
Basically, we are using the kinect from Microsoft and the Beagle Board XM from Texas Instrument to accomplish our gesture game. The program for the game is programmed on the QT-Linux. Besides, we use the cross compiling to compile the program to make the game run on the beagle board.&lt;br /&gt;
&lt;br /&gt;
After our previous work, our &amp;quot;Gesture Greedy Snake&amp;quot; is completed, and works pretty good. The snake can be controlled by our gestures smoothly. The game reminds us a different style of childhood memory.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
1 x [http://www.microsoftstore.com/store/msstore/en_US/pd/ThemeID.27509700/Kinect-for-Xbox-360/productID.216507400 Kinect]&lt;br /&gt;
&lt;br /&gt;
1 x [http://www.digikey.com/product-highlights/us/en/texas-instruments-beagleboard/685 BeagleBoard xM]&lt;br /&gt;
&lt;br /&gt;
1 x DVI to HDMI wire&lt;br /&gt;
&lt;br /&gt;
1 x Monitor&lt;br /&gt;
&lt;br /&gt;
1 x Keyboard&lt;br /&gt;
&lt;br /&gt;
1 x Mouse&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Overview ====&lt;br /&gt;
The source files for the project can be downloaded from https://github.com/Astroricks/Snake-Game-with-Kinect-on-BeagleBoard-xM . Once you have set up the developing environment as in the following instructions, you can download the files, playing with the game or making changes.  &lt;br /&gt;
&lt;br /&gt;
We are using the drivers provided by [http://www.omekinteractive.com/ Omek]. The driver files can be found at the Beckon™ SDK 2.4 – BeagleBoard-xM Edition [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/32/11/installation installation] page, and a developer's guide is provided at the [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/34/11/documentation documentation] page. (You may need to register first.) Instructions in this [http://treyweaver.blogspot.com/2010/10/setting-up-qt-development-environment.html blog] are also very useful.&lt;br /&gt;
&lt;br /&gt;
Although the developer's guide introduces how to do the installation and configuration, we have found that it takes much longer than we originally thought, and errors came out occasionally. It seems that the developer's guide is not very well organized and not detailed enought anyway. So we arranged our instruction and configuration procedures as below:&lt;br /&gt;
&lt;br /&gt;
==== 1. Download the image package and burn it into the SD card ====&lt;br /&gt;
&lt;br /&gt;
Download the image package [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/32/11/installation Beckon-Image-2.4.19872.tar.gz] as mentioned above onto your Linux PC. Then extract it by entering&lt;br /&gt;
&lt;br /&gt;
 host$ tar -xvzf ''&amp;lt;ImageFileName&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
Run the following command to make sure you have bash installed.&lt;br /&gt;
&lt;br /&gt;
 host$ sudo apt-get install bash&lt;br /&gt;
&lt;br /&gt;
Insert your SD card using a card reader/writer. Run the following command:&lt;br /&gt;
&lt;br /&gt;
 host$ sudo bash mkcard.sh /dev/''&amp;lt;sdX&amp;gt;'' beagle-omek&lt;br /&gt;
&lt;br /&gt;
''Note: This action will wipe out and rewrite the SD card so make sure the files in it are backed up. The name of the SD card can be viewed in Disk Utility. If you mistakenly use the main OS device name this script can erase your entire OS.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 2. Run the sample application ====&lt;br /&gt;
&lt;br /&gt;
Plug the sensor into the BeagleBoard-xM USB port. Ensure the mouse and keyboard are connected to the BeagleBoard-xM USB port. Connect the BeagleBoard-xM to the monitor with an HDMI cable. Connect the BeagleBoard-xM power supply and wait for the boot process to reach the login prompt, login as user root (no password is required). Now it's ready to run the sample applications on the BeagleBoard-xM.&lt;br /&gt;
&lt;br /&gt;
''Note: Details about running the samples can be found in the developer's guide from page 9 to 11. The Kinect will react properly only if the player is within an appropriate distance (about 1m - 5m). ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: The following instruction is about how to set up the environment for developing. If you don't want to do the development, you can just skip that.&lt;br /&gt;
&lt;br /&gt;
==== 3. Setting up your Linux development PC ====&lt;br /&gt;
&lt;br /&gt;
Download [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/32/11/installation Beckon-SDK-2.4.19872.tar.gz] and extract it onto your host PC (this is the actual SDK which contains headers, libraries, documentation, makefiles, etc...) The SDK provides the tools to develop a motion-tracking and gesture-based application that can run on the BeagleBoard-xM. After developing the application, cross-compile it onto the Linux PC and then copy the image onto the BeagleBoard-xM via external USB storage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Download the Linux ARM cross toolchain:&lt;br /&gt;
&lt;br /&gt;
For 32-bit Ubuntu you will want to download this file: http://www.angstrom-distribution.org/toolchains/angstrom-2011.03-i686-linux-armv7a-linux-gnueabi-toolchain-qte-4.6.3.tar.bz2&lt;br /&gt;
&lt;br /&gt;
For 64-bit Ubuntu you will want to download this file: http://www.angstrom-distribution.org/toolchains/angstrom-2011.03-x86_64-linux-armv7a-linux-gnueabi-toolchain-qte-4.6.3.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Extract the downloaded archive into your system root directory:&lt;br /&gt;
&lt;br /&gt;
 host$ sudo tar -xvjf ''&amp;lt;ToolchainFileName&amp;gt;'' -C /&lt;br /&gt;
&lt;br /&gt;
''Note: If you extract the archive into a different directory, you should adjust the following instructions as well as the samples' makefiles accordingly.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Install the Qt embedded SDK for Angstrom/BeagleBoard:&lt;br /&gt;
&lt;br /&gt;
Now that you have your cross compiler installed, you can compile Qt with it. First thing to do is to install zlib library:&lt;br /&gt;
&lt;br /&gt;
 host$ sudo apt-get install zlib1g-dev&lt;br /&gt;
&lt;br /&gt;
Then download the Open Source LGPL version of Qt libraries 4.6.2 for Embedded Linux [http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.6.2.tar.gz here]. &lt;br /&gt;
&lt;br /&gt;
''Note: Newest version of Qt libraries can be found [http://qt-project.org/downloads/ here]. We didn't test it since the 4.6.2 version works fine.''&lt;br /&gt;
&lt;br /&gt;
Extract the file you just downloaded:&lt;br /&gt;
&lt;br /&gt;
 host$ tar -xvzf ''&amp;lt;DownloadFileName&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
You need to create a new make.conf. Run the following line to make a new mkspecs directory for the BeagleBoard Processor.&lt;br /&gt;
&lt;br /&gt;
 host$ cp -R ''&amp;lt;DownloadDirectory&amp;gt;''/mkspecs/qws/linux-arm-g++/ ''&amp;lt;DownloadDirectory&amp;gt;''/mkspecs/qws/linux-DM3730-g++/&lt;br /&gt;
&lt;br /&gt;
Edit the qmake.conf file found in ''&amp;lt;DownloadDirectory&amp;gt;''/mkspecs/qws/linux-DM3730-g++/ and overwrite it with the following lines.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# qmake configuration for building with arm-linux-g++&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
include(../../common/g++.conf)&lt;br /&gt;
include(../../common/linux.conf)&lt;br /&gt;
include(../../common/qws.conf)&lt;br /&gt;
&lt;br /&gt;
# modifications to g++.conf&lt;br /&gt;
#Toolchain&lt;br /&gt;
&lt;br /&gt;
#Compiler Flags to take advantage of the ARM architecture&lt;br /&gt;
QMAKE_CFLAGS_RELEASE =   -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp&lt;br /&gt;
QMAKE_CXXFLAGS_RELEASE = -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp&lt;br /&gt;
&lt;br /&gt;
QMAKE_CC = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/gcc&lt;br /&gt;
QMAKE_CXX = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++&lt;br /&gt;
QMAKE_LINK = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++&lt;br /&gt;
QMAKE_LINK_SHLIB = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++&lt;br /&gt;
&lt;br /&gt;
# modifications to linux.conf&lt;br /&gt;
QMAKE_AR = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/ar cqs&lt;br /&gt;
QMAKE_OBJCOPY = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/objcopy&lt;br /&gt;
QMAKE_STRIP = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/strip&lt;br /&gt;
&lt;br /&gt;
load(qt_config)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now run the configure command (see this [http://processors.wiki.ti.com/index.php/Building_Qt website] for more details if needed):&lt;br /&gt;
&lt;br /&gt;
 host$ cd ''&amp;lt;DownloadDirectory&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
For 32-bit Ubuntu:&lt;br /&gt;
&lt;br /&gt;
 host$ ./configure -opensource -confirm-license -prefix /opt/qt-arm -no-qt3support -embedded arm -little-endian -xplatform qws/linux-DM3730-g++ -qtlibinfix E&lt;br /&gt;
&lt;br /&gt;
For 64-bit Ubuntu:&lt;br /&gt;
&lt;br /&gt;
 host$ ./configure -opensource -confirm-license -prefix /opt/qt-arm -no-qt3support -embedded arm -little-endian -platform qws/linux-x86_64-g++ -xplatform qws/linux-DM3730-g++ -qtlibinfix E&lt;br /&gt;
&lt;br /&gt;
Once this is complete you can run make and make install (make may take some hours):&lt;br /&gt;
&lt;br /&gt;
 host$ make&lt;br /&gt;
 host$ sudo make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Install and set up Qt Creator:&lt;br /&gt;
&lt;br /&gt;
Go to http://qt-project.org/downloads to download Qt. Get the latest version of Qt for Linux/X11; be sure to get the appropriate 32bit or 64bit version. Once downloaded go to the download directory and execute the following using your download file name:&lt;br /&gt;
&lt;br /&gt;
 host$ chmod u+x ''&amp;lt;QtCreator.bin&amp;gt;''&lt;br /&gt;
 host$ ./''&amp;lt;QtCreator.bin&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
''Update:''The free version Qt Creator can not be used in this project since it doesn't have cross-compile option with it.&lt;br /&gt;
&lt;br /&gt;
After Qt Creator is successfully installed, start Qt Creator. Go to: Tools &amp;gt; Options &amp;gt; Build &amp;amp; Run &amp;gt; Tool Chains, select Add -&amp;gt; GCC and insert the full compiler path below:&lt;br /&gt;
&lt;br /&gt;
/usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++&lt;br /&gt;
&lt;br /&gt;
Then go to: Tools &amp;gt; Options &amp;gt; Build &amp;amp; Run &amp;gt; Qt Versions, select Add and provide the following full path to qmake&lt;br /&gt;
&lt;br /&gt;
/opt/qt-arm/bin/qmake&lt;br /&gt;
&lt;br /&gt;
Press Apply and OK.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 4. Setting up the BeagleBoard-xM ====&lt;br /&gt;
&lt;br /&gt;
All of the Qt files that you need to move to the BeagleBoard can be found in the /opt/qt-arm/lib directory on your Linux Build System. Copy all the files out of your build system's /opt/qt-arm/lib directory and put those into the BeagleBoard-xM's /opt/qt-arm/lib directory. You can get the files to the Beagleboard by either networking, using a usb drive or plug the SD card into your Linux Build System.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Building and running samples===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To build QtTracking Sample:&lt;br /&gt;
&lt;br /&gt;
1. Start Qt Creator.&lt;br /&gt;
&lt;br /&gt;
2. Go to: File &amp;gt; Open File or Project, select the QtTracking-SDK.pro project (from Beckon-SDK-{version}/samples/QtTracking) and click Open. Select Embedded Linux instead of Desktop.&lt;br /&gt;
&lt;br /&gt;
3. Click Finish.&lt;br /&gt;
&lt;br /&gt;
4. Go to Projects tab (on the left), In Qt version select Qt [4.x.x (qt-arm)]/.&lt;br /&gt;
&lt;br /&gt;
5. Run Build -&amp;gt; Build Project command.&lt;br /&gt;
&lt;br /&gt;
The result executable can be found in the Beckon-SDK-{version}/bin directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To run the QtTracking Sample:&lt;br /&gt;
&lt;br /&gt;
1. Mount or copy the bin directory to the BeagleBoard.&lt;br /&gt;
&lt;br /&gt;
''Note: Run the reset.sh script inside the &amp;quot;bin&amp;quot; folder of the SDK before each sample run, to reset the DSP.''&lt;br /&gt;
&lt;br /&gt;
Run the following:&lt;br /&gt;
&lt;br /&gt;
 beagle$ ./QtTracking-SDK –qws&lt;br /&gt;
&lt;br /&gt;
''Note: Developer's guide has more instructions on running the sample''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===The Snake Game===&lt;br /&gt;
&lt;br /&gt;
The Snake Game can be downloaded from https://github.com/Astroricks/Snake-Game-with-Kinect-on-BeagleBoard-xM. To play with it you should copy the folder to the root directory of SD card. Since what we did is combining the Snake Game source code into the Tracking Sample, running this application would be the same way as running the samples.&lt;br /&gt;
&lt;br /&gt;
We suggest playing with the following command:&lt;br /&gt;
&lt;br /&gt;
 beagle$ cd Tracking_Sanke/bin/&lt;br /&gt;
 beagle$ ./QtTracking-SDK –qws -upper&lt;br /&gt;
&lt;br /&gt;
When the application is running, we suggest pressing the &amp;quot;setting&amp;quot; button first to enable the wall-cross mode, which could make it not so easily &amp;quot;game over&amp;quot;. To start the game, you need to press Up Arrow(or Arrows of other directions) on the keyboard. And the player would get a better playing experience if he/she stands in front of the Kinect with a distance of about 1.5m - 2m. The player should control the snake with his '''right hand''' moving up and down, left and right.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Our project is about how to use Microsoft Kinect Sensor to play snake game by the motion of you right hand(You can modify the codes to change to any part of your body if you would like to). We set a score section to record the highest score. Anybody who want to break our record are welcome(Currently the record is holding by Xinyu Cheng at 260). We've created a play demo and uploaded it to YouTube:&lt;br /&gt;
&lt;br /&gt;
=== Play snake game with Kinect sensor on BeagleboardxM ===&lt;br /&gt;
{{#ev:youtube|uBW6LkVUi9I}}&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
=== The Main Idea ===&lt;br /&gt;
We are using the kinect as the sensor of our project. The provided algorithm of the kinect make it possible for us to get the coordinate of many joints of the body. In this case, we can judge the position and the motion of our hands or any other joints. Then, we can use the direction we get from the previous judgement to control the Greedy Snake. Our project is running with the idea.&lt;br /&gt;
&lt;br /&gt;
=== The Technics Used ===&lt;br /&gt;
Technically, we can use QT to design our program and then cross-complie our project to the beagle-board. The Greedy Snake is an open-source QT game, and the tracking of the joint can be accomplished from modifying the Omek SDK. We have to modify both of their codes to connect the two parts together.&lt;br /&gt;
&lt;br /&gt;
=== The Control Strategy ===&lt;br /&gt;
Judging gestures simply from the changing of coordinate is hard and may lead to mistakes commonly. To improve the playing experience, we combined two methods to guess which control direction the player wants to make.&lt;br /&gt;
&lt;br /&gt;
1. Compare the current coordinate with the last time. When the date is refreshed, we can compare the current coordinate of player's right-hand withe the last time value. If the difference between the coordinates of x or y is larger than the threshold, it is reasonable to think that the player may want the snake to make a move in this direction.&lt;br /&gt;
&lt;br /&gt;
2. See where the hand locates. After making a upward movement, it has a high possibility that the y coordinate locates in the up area. Similar situation appears in other movement directions. So by checking the current value of the x and y coordinates we can know which direction the player want to make move.&lt;br /&gt;
&lt;br /&gt;
Only when the same direction is implied by both methods, we move the snake in this direction. It seems that this control strategy works pretty well.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
=== Yue Zhang ===&lt;br /&gt;
* Researched how to Burn the correct Image to the Beagle Board.&lt;br /&gt;
* Configure the Beagle Board to control the kinect.&lt;br /&gt;
* Implemented the motion based algorithm which makes the application runs more smoothly.&lt;br /&gt;
* Programmed for the part of motion algorithm.&lt;br /&gt;
=== Xinyu Cheng ===&lt;br /&gt;
* Researched how to configure the QT programming environment. &lt;br /&gt;
* Accomplished the cross-compiling on QT.&lt;br /&gt;
* Programming for the connection between the Snake Game and the Kinect SDK.&lt;br /&gt;
* Designed and Implemented the coordinate based algorithm.&lt;br /&gt;
=== Xia Li ===&lt;br /&gt;
* Researched how to run the provided SDK demo.&lt;br /&gt;
* Speed up for the demo.&lt;br /&gt;
* Designed the motion based algorithm. &lt;br /&gt;
* Programmed to improved the accuracy and speed of the game.&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
&lt;br /&gt;
Now, our game can work pretty good and smoothly. The future work for the project will mainly about the following aspects:&lt;br /&gt;
* Improve the user interface, make the game looks more pretty. &lt;br /&gt;
* Improve the game rules, to make it more interesting. &lt;br /&gt;
* Improve our algorithm for the direction judgement, to make the game runs more smoothly.&lt;br /&gt;
* Display the motion of our hand on the window, to make the user more clear about the motion of their hands. &lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Conculsionly, our project works pretty good. Our Greedy Snake game runs very good and brings a lot of fun for us. During the develop process, we met lots of difficulties, we tried to solve them one by one. Finally, we solved almost all the problems and end up with a nice project.&lt;br /&gt;
&lt;br /&gt;
{{YoderFoot}}&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Kinect</id>
		<title>ECE497 Project: Kinect</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Kinect"/>
				<updated>2012-11-14T05:02:58Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497 |Project]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Astroricks|Yue Zhang]], [[user:Xinyu1991|Xinyu Cheng]], [[user:Lix|Xia Li]].&lt;br /&gt;
&lt;br /&gt;
== Grading Template ==&lt;br /&gt;
I'm using the following template to grade.  Each slot is 10 points.&lt;br /&gt;
0 = Missing, 5=OK, 10=Wow!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
00 Executive Summary&lt;br /&gt;
00 Installation Instructions&lt;br /&gt;
00 User Instructions&lt;br /&gt;
00 Highlights&lt;br /&gt;
00 Theory of Operation&lt;br /&gt;
00 Work Breakdown&lt;br /&gt;
00 Future Work&lt;br /&gt;
00 Conclusions&lt;br /&gt;
00 Demo&lt;br /&gt;
00 Late&lt;br /&gt;
Comments:&lt;br /&gt;
&lt;br /&gt;
Score:  00/100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;(Inline Comment)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
I believe that almost every college students have played a game called &amp;quot;Greedy Snake&amp;quot; in our childhood. At that time, we played it on the cellphone, on the computer or on the PSP. However, we are always using the keyboard to control the games we played. Now, our final project could bring you something new, that is a &amp;quot;Gesture Controlled Greedy Snake&amp;quot;. It means that, using the gesture, the keyboard is never required to play the game. Amazing? Read the following wiki to know how we make it happens!&lt;br /&gt;
&lt;br /&gt;
Basically, we are using the kinect from Microsoft and the Beagle Board XM from Texas Instrument to accomplish our gesture game. The program for the game is programmed on the QT-Linux. Besides, we use the cross compiling to compile the program to make the game run on the beagle board.&lt;br /&gt;
&lt;br /&gt;
After our previous work, our &amp;quot;Gesture Greedy Snake&amp;quot; is completed, and works pretty good. The snake can be controlled by our gestures smoothly. The game reminds us a different style of childhood memory.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
1 x [http://www.microsoftstore.com/store/msstore/en_US/pd/ThemeID.27509700/Kinect-for-Xbox-360/productID.216507400 Kinect]&lt;br /&gt;
&lt;br /&gt;
1 x [http://www.digikey.com/product-highlights/us/en/texas-instruments-beagleboard/685 BeagleBoard xM]&lt;br /&gt;
&lt;br /&gt;
1 x DVI to HDMI wire&lt;br /&gt;
&lt;br /&gt;
1 x Monitor&lt;br /&gt;
&lt;br /&gt;
1 x Keyboard&lt;br /&gt;
&lt;br /&gt;
1 x Mouse&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Overview ====&lt;br /&gt;
The source files for the project can be downloaded from https://github.com/Astroricks/Snake-Game-with-Kinect-on-BeagleBoard-xM . Once you have set up the developing environment as in the following instructions, you can download the files, playing with the game or making changes.  &lt;br /&gt;
&lt;br /&gt;
We are using the drivers provided by [http://www.omekinteractive.com/ Omek]. The driver files can be found at the Beckon™ SDK 2.4 – BeagleBoard-xM Edition [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/32/11/installation installation] page, and a developer's guide is provided at the [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/34/11/documentation documentation] page. (You may need to register first.) Instructions in this [http://treyweaver.blogspot.com/2010/10/setting-up-qt-development-environment.html blog] are also very useful.&lt;br /&gt;
&lt;br /&gt;
Although the developer's guide introduces how to do the installation and configuration, we have found that it takes much longer than we originally thought, and errors came out occasionally. It seems that the developer's guide is not very well organized and not detailed enought anyway. So we arranged our instruction and configuration procedures as below:&lt;br /&gt;
&lt;br /&gt;
==== 1. Download the image package and burn it into the SD card ====&lt;br /&gt;
&lt;br /&gt;
Download the image package [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/32/11/installation Beckon-Image-2.4.19872.tar.gz] as mentioned above onto your Linux PC. Then extract it by entering&lt;br /&gt;
&lt;br /&gt;
 host$ tar -xvzf ''&amp;lt;ImageFileName&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
Run the following command to make sure you have bash installed.&lt;br /&gt;
&lt;br /&gt;
 host$ sudo apt-get install bash&lt;br /&gt;
&lt;br /&gt;
Insert your SD card using a card reader/writer. Run the following command:&lt;br /&gt;
&lt;br /&gt;
 host$ sudo bash mkcard.sh /dev/''&amp;lt;sdX&amp;gt;'' beagle-omek&lt;br /&gt;
&lt;br /&gt;
''Note: This action will wipe out and rewrite the SD card so make sure the files in it are backed up. The name of the SD card can be viewed in Disk Utility. If you mistakenly use the main OS device name this script can erase your entire OS.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 2. Run the sample application ====&lt;br /&gt;
&lt;br /&gt;
Plug the sensor into the BeagleBoard-xM USB port. Ensure the mouse and keyboard are connected to the BeagleBoard-xM USB port. Connect the BeagleBoard-xM to the monitor with an HDMI cable. Connect the BeagleBoard-xM power supply and wait for the boot process to reach the login prompt, login as user root (no password is required). Now it's ready to run the sample applications on the BeagleBoard-xM.&lt;br /&gt;
&lt;br /&gt;
''Note: Details about running the samples can be found in the developer's guide from page 9 to 11. The Kinect will react properly only if the player is within an appropriate distance (about 1m - 5m). ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: The following instruction is about how to set up the environment for developing. If you don't want to do the development, you can just skip that.&lt;br /&gt;
&lt;br /&gt;
==== 3. Setting up your Linux development PC ====&lt;br /&gt;
&lt;br /&gt;
Download [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/32/11/installation Beckon-SDK-2.4.19872.tar.gz] and extract it onto your host PC (this is the actual SDK which contains headers, libraries, documentation, makefiles, etc...) The SDK provides the tools to develop a motion-tracking and gesture-based application that can run on the BeagleBoard-xM. After developing the application, cross-compile it onto the Linux PC and then copy the image onto the BeagleBoard-xM via external USB storage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Download the Linux ARM cross toolchain:&lt;br /&gt;
&lt;br /&gt;
For 32-bit Ubuntu you will want to download this file: http://www.angstrom-distribution.org/toolchains/angstrom-2011.03-i686-linux-armv7a-linux-gnueabi-toolchain-qte-4.6.3.tar.bz2&lt;br /&gt;
&lt;br /&gt;
For 64-bit Ubuntu you will want to download this file: http://www.angstrom-distribution.org/toolchains/angstrom-2011.03-x86_64-linux-armv7a-linux-gnueabi-toolchain-qte-4.6.3.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Extract the downloaded archive into your system root directory:&lt;br /&gt;
&lt;br /&gt;
 host$ sudo tar -xvjf ''&amp;lt;ToolchainFileName&amp;gt;'' -C /&lt;br /&gt;
&lt;br /&gt;
''Note: If you extract the archive into a different directory, you should adjust the following instructions as well as the samples' makefiles accordingly.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Install the Qt embedded SDK for Angstrom/BeagleBoard:&lt;br /&gt;
&lt;br /&gt;
Now that you have your cross compiler installed, you can compile Qt with it. First thing to do is to install zlib library:&lt;br /&gt;
&lt;br /&gt;
 host$ sudo apt-get install zlib1g-dev&lt;br /&gt;
&lt;br /&gt;
Then download the Open Source LGPL version of Qt libraries 4.6.2 for Embedded Linux [http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.6.2.tar.gz here]. &lt;br /&gt;
&lt;br /&gt;
''Note: Newest version of Qt libraries can be found [http://qt-project.org/downloads/ here]. We didn't test it since the 4.6.2 version works fine.''&lt;br /&gt;
&lt;br /&gt;
Extract the file you just downloaded:&lt;br /&gt;
&lt;br /&gt;
 host$ tar -xvzf ''&amp;lt;DownloadFileName&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
You need to create a new make.conf. Run the following line to make a new mkspecs directory for the BeagleBoard Processor.&lt;br /&gt;
&lt;br /&gt;
 host$ cp -R ''&amp;lt;DownloadDirectory&amp;gt;''/mkspecs/qws/linux-arm-g++/ ''&amp;lt;DownloadDirectory&amp;gt;''/mkspecs/qws/linux-DM3730-g++/&lt;br /&gt;
&lt;br /&gt;
Edit the qmake.conf file found in ''&amp;lt;DownloadDirectory&amp;gt;''/mkspecs/qws/linux-DM3730-g++/ and overwrite it with the following lines.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# qmake configuration for building with arm-linux-g++&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
include(../../common/g++.conf)&lt;br /&gt;
include(../../common/linux.conf)&lt;br /&gt;
include(../../common/qws.conf)&lt;br /&gt;
&lt;br /&gt;
# modifications to g++.conf&lt;br /&gt;
#Toolchain&lt;br /&gt;
&lt;br /&gt;
#Compiler Flags to take advantage of the ARM architecture&lt;br /&gt;
QMAKE_CFLAGS_RELEASE =   -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp&lt;br /&gt;
QMAKE_CXXFLAGS_RELEASE = -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp&lt;br /&gt;
&lt;br /&gt;
QMAKE_CC = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/gcc&lt;br /&gt;
QMAKE_CXX = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++&lt;br /&gt;
QMAKE_LINK = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++&lt;br /&gt;
QMAKE_LINK_SHLIB = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++&lt;br /&gt;
&lt;br /&gt;
# modifications to linux.conf&lt;br /&gt;
QMAKE_AR = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/ar cqs&lt;br /&gt;
QMAKE_OBJCOPY = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/objcopy&lt;br /&gt;
QMAKE_STRIP = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/strip&lt;br /&gt;
&lt;br /&gt;
load(qt_config)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now run the configure command (see this [http://processors.wiki.ti.com/index.php/Building_Qt website] for more details if needed):&lt;br /&gt;
&lt;br /&gt;
 host$ cd ''&amp;lt;DownloadDirectory&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
For 32-bit Ubuntu:&lt;br /&gt;
&lt;br /&gt;
 host$ ./configure -opensource -confirm-license -prefix /opt/qt-arm -no-qt3support -embedded arm -little-endian -xplatform qws/linux-DM3730-g++ -qtlibinfix E&lt;br /&gt;
&lt;br /&gt;
For 64-bit Ubuntu:&lt;br /&gt;
&lt;br /&gt;
 host$ ./configure -opensource -confirm-license -prefix /opt/qt-arm -no-qt3support -embedded arm -little-endian -platform qws/linux-x86_64-g++ -xplatform qws/linux-DM3730-g++ -qtlibinfix E&lt;br /&gt;
&lt;br /&gt;
Once this is complete you can run make and make install (make may take some hours):&lt;br /&gt;
&lt;br /&gt;
 host$ make&lt;br /&gt;
 host$ sudo make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Install and set up Qt Creator:&lt;br /&gt;
&lt;br /&gt;
Go to http://qt-project.org/downloads to download Qt. Get the latest version of Qt for Linux/X11; be sure to get the appropriate 32bit or 64bit version. Once downloaded go to the download directory and execute the following using your download file name:&lt;br /&gt;
&lt;br /&gt;
 host$ chmod u+x ''&amp;lt;QtCreator.bin&amp;gt;''&lt;br /&gt;
 host$ ./''&amp;lt;QtCreator.bin&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
''Update:''The free version Qt Creator can not be used in this project since it doesn't have cross-compile option with it.&lt;br /&gt;
&lt;br /&gt;
After Qt Creator is successfully installed, start Qt Creator. Go to: Tools &amp;gt; Options &amp;gt; Build &amp;amp; Run &amp;gt; Tool Chains, select Add -&amp;gt; GCC and insert the full compiler path below:&lt;br /&gt;
&lt;br /&gt;
/usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++&lt;br /&gt;
&lt;br /&gt;
Then go to: Tools &amp;gt; Options &amp;gt; Build &amp;amp; Run &amp;gt; Qt Versions, select Add and provide the following full path to qmake&lt;br /&gt;
&lt;br /&gt;
/opt/qt-arm/bin/qmake&lt;br /&gt;
&lt;br /&gt;
Press Apply and OK.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 4. Setting up the BeagleBoard-xM ====&lt;br /&gt;
&lt;br /&gt;
All of the Qt files that you need to move to the BeagleBoard can be found in the /opt/qt-arm/lib directory on your Linux Build System. Copy all the files out of your build system's /opt/qt-arm/lib directory and put those into the BeagleBoard-xM's /opt/qt-arm/lib directory. You can get the files to the Beagleboard by either networking, using a usb drive or plug the SD card into your Linux Build System.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
To build QtTracking Sample:&lt;br /&gt;
&lt;br /&gt;
1. Start Qt Creator.&lt;br /&gt;
&lt;br /&gt;
2. Go to: File &amp;gt; Open File or Project, select the QtTracking-SDK.pro project (from Beckon-SDK-{version}/samples/QtTracking) and click Open. Select Embedded Linux instead of Desktop.&lt;br /&gt;
&lt;br /&gt;
3. Click Finish.&lt;br /&gt;
&lt;br /&gt;
4. Go to Projects tab (on the left), In Qt version select Qt [4.x.x (qt-arm)]/.&lt;br /&gt;
&lt;br /&gt;
5. Run Build -&amp;gt; Build Project command.&lt;br /&gt;
&lt;br /&gt;
The result executable can be found in the Beckon-SDK-{version}/bin directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To run the QtTracking Sample:&lt;br /&gt;
&lt;br /&gt;
1. Mount or copy the bin directory to the BeagleBoard.&lt;br /&gt;
&lt;br /&gt;
''Note: Run the reset.sh script inside the &amp;quot;bin&amp;quot; folder of the SDK before each sample run, to reset the DSP.''&lt;br /&gt;
&lt;br /&gt;
Run the following:&lt;br /&gt;
&lt;br /&gt;
 beagle$ ./QtTracking-SDK –qws&lt;br /&gt;
&lt;br /&gt;
''Note: Developer's guide has more instructions on running the sample''&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Our project is about how to use Microsoft Kinect Sensor to play snake game by the motion of you right hand(You can change to any part of your body if you would like to). We set a score section to record the highest score. Anybody who want to break our record are welcome(Currently the record is holding by Xinyu Cheng at 260). We've created a play demo and uploaded it to YouTube:&lt;br /&gt;
&lt;br /&gt;
=== Play snake game with Kinect sensor on BeagleboardxM ===&lt;br /&gt;
{{#ev:youtube|uBW6LkVUi9I}}&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
=== The Main Idea ===&lt;br /&gt;
We are using the kinect as the sensor of our project. The provided algorithm of the kinect make it possible for us to get the coordinate of many joints of the body. In this case, we can judge the position and the motion of our hands or any other joints. Then, we can use the direction we get from the previous judgement to control the Greedy Snake. Our project is running with the idea.&lt;br /&gt;
&lt;br /&gt;
=== The Technics Used ===&lt;br /&gt;
Technically, we can use QT to design our program and then cross-complie our project to the beagle-board. The Greedy Snake is an open-source QT game, and the tracking of the joint can be accomplished from modifying the Omek SDK. We have to modify both of their codes to connect the two parts together. &lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
=== Yue Zhang ===&lt;br /&gt;
* Researched how to Burn the correct Image to the Beagle Board.&lt;br /&gt;
* Configure the Beagle Board to control the kinect.&lt;br /&gt;
* Implemented the motion based algorithm which makes the application runs more smoothly.&lt;br /&gt;
* Programmed for the part of motion algorithm.&lt;br /&gt;
=== Xinyu Cheng ===&lt;br /&gt;
* Researched how to configure the QT programming environment. &lt;br /&gt;
* Accomplished the cross-compiling on QT.&lt;br /&gt;
* Programming for the connection between the Snake Game and the Kinect SDK.&lt;br /&gt;
* Designed and Implemented the coordinate based algorithm.&lt;br /&gt;
=== Xia Li ===&lt;br /&gt;
* Researched how to run the provided SDK demo.&lt;br /&gt;
* Speed up for the demo.&lt;br /&gt;
* Designed the motion based algorithm. &lt;br /&gt;
* Programmed to improved the accuracy and speed of the game.&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
&lt;br /&gt;
Now, our game can work pretty good and smoothly. The future work for the project will mainly about how to improve the user interface and the game rules. We can also improve our algorithm for the direction judgement.&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Conculsionly, our project works pretty good. Our Greedy Snake game runs very good and brings a lot of fun for us. During the develop process, we met lots of difficulties, we tried to solve them one by one. Finally, we solved almost all the problems and end up with a nice project.&lt;br /&gt;
&lt;br /&gt;
{{YoderFoot}}&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Kinect</id>
		<title>ECE497 Project: Kinect</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Kinect"/>
				<updated>2012-11-14T05:00:15Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497 |Project]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Astroricks|Yue Zhang]], [[user:Xinyu1991|Xinyu Cheng]], [[user:Lix|Xia Li]].&lt;br /&gt;
&lt;br /&gt;
== Grading Template ==&lt;br /&gt;
I'm using the following template to grade.  Each slot is 10 points.&lt;br /&gt;
0 = Missing, 5=OK, 10=Wow!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
00 Executive Summary&lt;br /&gt;
00 Installation Instructions&lt;br /&gt;
00 User Instructions&lt;br /&gt;
00 Highlights&lt;br /&gt;
00 Theory of Operation&lt;br /&gt;
00 Work Breakdown&lt;br /&gt;
00 Future Work&lt;br /&gt;
00 Conclusions&lt;br /&gt;
00 Demo&lt;br /&gt;
00 Late&lt;br /&gt;
Comments:&lt;br /&gt;
&lt;br /&gt;
Score:  00/100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;(Inline Comment)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
I believe that almost every college students have played a game called &amp;quot;Greedy Snake&amp;quot; in our childhood. At that time, we played it on the cellphone, on the computer or on the PSP. However, we are always using the keyboard to control the games we played. Now, our final project could bring you something new, that is a &amp;quot;Gesture Controlled Greedy Snake&amp;quot;. It means that, using the gesture, the keyboard is never required to play the game. Amazing? Read the following wiki to know how we make it happens!&lt;br /&gt;
&lt;br /&gt;
Basically, we are using the kinect from Microsoft and the Beagle Board XM from Texas Instrument to accomplish our gesture game. The program for the game is programmed on the QT-Linux. Besides, we use the cross compiling to compile the program to make the game run on the beagle board.&lt;br /&gt;
&lt;br /&gt;
After our previous work, our &amp;quot;Gesture Greedy Snake&amp;quot; is completed, and works pretty good. The snake can be controlled by our gestures smoothly. The game reminds us a different style of childhood memory.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
1 x [http://www.microsoftstore.com/store/msstore/en_US/pd/ThemeID.27509700/Kinect-for-Xbox-360/productID.216507400 Kinect]&lt;br /&gt;
&lt;br /&gt;
1 x [http://www.digikey.com/product-highlights/us/en/texas-instruments-beagleboard/685 BeagleBoard xM]&lt;br /&gt;
&lt;br /&gt;
1 x DVI to HDMI wire&lt;br /&gt;
&lt;br /&gt;
1 x Monitor&lt;br /&gt;
&lt;br /&gt;
1 x Keyboard&lt;br /&gt;
&lt;br /&gt;
1 x Mouse&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Overview ====&lt;br /&gt;
The source files for the project can be downloaded from https://github.com/Astroricks/Snake-Game-with-Kinect-on-BeagleBoard-xM . Once you have set up the developing environment as in the following instructions, you can download the files, playing with the game or making changes.  &lt;br /&gt;
&lt;br /&gt;
We are using the drivers provided by [http://www.omekinteractive.com/ Omek]. The driver files can be found at the Beckon™ SDK 2.4 – BeagleBoard-xM Edition [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/32/11/installation installation] page, and a developer's guide is provided at the [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/34/11/documentation documentation] page. (You may need to register first.) Instructions in this [http://treyweaver.blogspot.com/2010/10/setting-up-qt-development-environment.html blog] are also very useful.&lt;br /&gt;
&lt;br /&gt;
Although the developer's guide introduces how to do the installation and configuration, we have found that it takes much longer than we originally thought, and errors came out occasionally. It seems that the developer's guide is not very well organized and not detailed enought anyway. So we arranged our instruction and configuration procedures as below:&lt;br /&gt;
&lt;br /&gt;
==== 1. Download the image package and burn it into the SD card ====&lt;br /&gt;
&lt;br /&gt;
Download the image package [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/32/11/installation Beckon-Image-2.4.19872.tar.gz] as mentioned above onto your Linux PC. Then extract it by entering&lt;br /&gt;
&lt;br /&gt;
 host$ tar -xvzf ''&amp;lt;ImageFileName&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
Run the following command to make sure you have bash installed.&lt;br /&gt;
&lt;br /&gt;
 host$ sudo apt-get install bash&lt;br /&gt;
&lt;br /&gt;
Insert your SD card using a card reader/writer. Run the following command:&lt;br /&gt;
&lt;br /&gt;
 host$ sudo bash mkcard.sh /dev/''&amp;lt;sdX&amp;gt;'' beagle-omek&lt;br /&gt;
&lt;br /&gt;
''Note: This action will wipe out and rewrite the SD card so make sure the files in it are backed up. The name of the SD card can be viewed in Disk Utility. If you mistakenly use the main OS device name this script can erase your entire OS.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 2. Run the sample application ====&lt;br /&gt;
&lt;br /&gt;
Plug the sensor into the BeagleBoard-xM USB port. Ensure the mouse and keyboard are connected to the BeagleBoard-xM USB port. Connect the BeagleBoard-xM to the monitor with an HDMI cable. Connect the BeagleBoard-xM power supply and wait for the boot process to reach the login prompt, login as user root (no password is required). Now it's ready to run the sample applications on the BeagleBoard-xM.&lt;br /&gt;
&lt;br /&gt;
''Note: Details about running the samples can be found in the developer's guide from page 9 to 11. The Kinect will react properly only if the player is within an appropriate distance (about 1m - 5m). ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: The following instruction is about how to set up the environment for developing. If you don't want to do the development, you can just skip that.&lt;br /&gt;
&lt;br /&gt;
==== 3. Setting up your Linux development PC ====&lt;br /&gt;
&lt;br /&gt;
Download [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/32/11/installation Beckon-SDK-2.4.19872.tar.gz] and extract it onto your host PC (this is the actual SDK which contains headers, libraries, documentation, makefiles, etc...) The SDK provides the tools to develop a motion-tracking and gesture-based application that can run on the BeagleBoard-xM. After developing the application, cross-compile it onto the Linux PC and then copy the image onto the BeagleBoard-xM via external USB storage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Download the Linux ARM cross toolchain:&lt;br /&gt;
&lt;br /&gt;
For 32-bit Ubuntu you will want to download this file: http://www.angstrom-distribution.org/toolchains/angstrom-2011.03-i686-linux-armv7a-linux-gnueabi-toolchain-qte-4.6.3.tar.bz2&lt;br /&gt;
&lt;br /&gt;
For 64-bit Ubuntu you will want to download this file: http://www.angstrom-distribution.org/toolchains/angstrom-2011.03-x86_64-linux-armv7a-linux-gnueabi-toolchain-qte-4.6.3.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Extract the downloaded archive into your system root directory:&lt;br /&gt;
&lt;br /&gt;
 host$ sudo tar -xvjf ''&amp;lt;ToolchainFileName&amp;gt;'' -C /&lt;br /&gt;
&lt;br /&gt;
''Note: If you extract the archive into a different directory, you should adjust the following instructions as well as the samples' makefiles accordingly.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Install the Qt embedded SDK for Angstrom/BeagleBoard:&lt;br /&gt;
&lt;br /&gt;
Now that you have your cross compiler installed, you can compile Qt with it. First thing to do is to install zlib library:&lt;br /&gt;
&lt;br /&gt;
 host$ sudo apt-get install zlib1g-dev&lt;br /&gt;
&lt;br /&gt;
Then download the Open Source LGPL version of Qt libraries 4.6.2 for Embedded Linux [http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.6.2.tar.gz here]. &lt;br /&gt;
&lt;br /&gt;
''Note: Newest version of Qt libraries can be found [http://qt-project.org/downloads/ here]. We didn't test it since the 4.6.2 version works fine.''&lt;br /&gt;
&lt;br /&gt;
Extract the file you just downloaded:&lt;br /&gt;
&lt;br /&gt;
 host$ tar -xvzf ''&amp;lt;DownloadFileName&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
You need to create a new make.conf. Run the following line to make a new mkspecs directory for the BeagleBoard Processor.&lt;br /&gt;
&lt;br /&gt;
 host$ cp -R ''&amp;lt;DownloadDirectory&amp;gt;''/mkspecs/qws/linux-arm-g++/ ''&amp;lt;DownloadDirectory&amp;gt;''/mkspecs/qws/linux-DM3730-g++/&lt;br /&gt;
&lt;br /&gt;
Edit the qmake.conf file found in ''&amp;lt;DownloadDirectory&amp;gt;''/mkspecs/qws/linux-DM3730-g++/ and overwrite it with the following lines.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# qmake configuration for building with arm-linux-g++&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
include(../../common/g++.conf)&lt;br /&gt;
include(../../common/linux.conf)&lt;br /&gt;
include(../../common/qws.conf)&lt;br /&gt;
&lt;br /&gt;
# modifications to g++.conf&lt;br /&gt;
#Toolchain&lt;br /&gt;
&lt;br /&gt;
#Compiler Flags to take advantage of the ARM architecture&lt;br /&gt;
QMAKE_CFLAGS_RELEASE =   -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp&lt;br /&gt;
QMAKE_CXXFLAGS_RELEASE = -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp&lt;br /&gt;
&lt;br /&gt;
QMAKE_CC = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/gcc&lt;br /&gt;
QMAKE_CXX = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++&lt;br /&gt;
QMAKE_LINK = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++&lt;br /&gt;
QMAKE_LINK_SHLIB = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++&lt;br /&gt;
&lt;br /&gt;
# modifications to linux.conf&lt;br /&gt;
QMAKE_AR = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/ar cqs&lt;br /&gt;
QMAKE_OBJCOPY = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/objcopy&lt;br /&gt;
QMAKE_STRIP = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/strip&lt;br /&gt;
&lt;br /&gt;
load(qt_config)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now run the configure command (see this [http://processors.wiki.ti.com/index.php/Building_Qt website] for more details if needed):&lt;br /&gt;
&lt;br /&gt;
 host$ cd ''&amp;lt;DownloadDirectory&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
For 32-bit Ubuntu:&lt;br /&gt;
&lt;br /&gt;
 host$ ./configure -opensource -confirm-license -prefix /opt/qt-arm -no-qt3support -embedded arm -little-endian -xplatform qws/linux-DM3730-g++ -qtlibinfix E&lt;br /&gt;
&lt;br /&gt;
For 64-bit Ubuntu:&lt;br /&gt;
&lt;br /&gt;
 host$ ./configure -opensource -confirm-license -prefix /opt/qt-arm -no-qt3support -embedded arm -little-endian -platform qws/linux-x86_64-g++ -xplatform qws/linux-DM3730-g++ -qtlibinfix E&lt;br /&gt;
&lt;br /&gt;
Once this is complete you can run make and make install (make may take some hours):&lt;br /&gt;
&lt;br /&gt;
 host$ make&lt;br /&gt;
 host$ sudo make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Install and set up Qt Creator:&lt;br /&gt;
&lt;br /&gt;
Go to http://qt-project.org/downloads to download Qt. Get the latest version of Qt for Linux/X11; be sure to get the appropriate 32bit or 64bit version. Once downloaded go to the download directory and execute the following using your download file name:&lt;br /&gt;
&lt;br /&gt;
 host$ chmod u+x ''&amp;lt;QtCreator.bin&amp;gt;''&lt;br /&gt;
 host$ ./''&amp;lt;QtCreator.bin&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
''Update:''The free version Qt Creator can not be used in this project since it doesn't have cross-compile option with it.&lt;br /&gt;
&lt;br /&gt;
After Qt Creator is successfully installed, start Qt Creator. Go to: Tools &amp;gt; Options &amp;gt; Build &amp;amp; Run &amp;gt; Tool Chains, select Add -&amp;gt; GCC and insert the full compiler path below:&lt;br /&gt;
&lt;br /&gt;
/usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++&lt;br /&gt;
&lt;br /&gt;
Then go to: Tools &amp;gt; Options &amp;gt; Build &amp;amp; Run &amp;gt; Qt Versions, select Add and provide the following full path to qmake&lt;br /&gt;
&lt;br /&gt;
/opt/qt-arm/bin/qmake&lt;br /&gt;
&lt;br /&gt;
Press Apply and OK.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 4. Setting up the BeagleBoard-xM ====&lt;br /&gt;
&lt;br /&gt;
All of the Qt files that you need to move to the BeagleBoard can be found in the /opt/qt-arm/lib directory on your Linux Build System. Copy all the files out of your build system's /opt/qt-arm/lib directory and put those into the BeagleBoard-xM's /opt/qt-arm/lib directory. You can get the files to the Beagleboard by either networking, using a usb drive or plug the SD card into your Linux Build System.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Include your [https://github.com/ github] path as a link like this:  [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn].  &lt;br /&gt;
* Include any additional packages installed via '''opkg'''.&lt;br /&gt;
* Include kernel mods.&lt;br /&gt;
* If there is extra hardware needed, include links to where it can be obtained.&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
To build QtTracking Sample:&lt;br /&gt;
&lt;br /&gt;
1. Start Qt Creator.&lt;br /&gt;
&lt;br /&gt;
2. Go to: File &amp;gt; Open File or Project, select the QtTracking-SDK.pro project (from Beckon-SDK-{version}/samples/QtTracking) and click Open. Select Embedded Linux instead of Desktop.&lt;br /&gt;
&lt;br /&gt;
3. Click Finish.&lt;br /&gt;
&lt;br /&gt;
4. Go to Projects tab (on the left), In Qt version select Qt [4.x.x (qt-arm)]/.&lt;br /&gt;
&lt;br /&gt;
5. Run Build -&amp;gt; Build Project command.&lt;br /&gt;
&lt;br /&gt;
The result executable can be found in the Beckon-SDK-{version}/bin directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To run the QtTracking Sample:&lt;br /&gt;
&lt;br /&gt;
1. Mount or copy the bin directory to the BeagleBoard.&lt;br /&gt;
&lt;br /&gt;
''Note: Run the reset.sh script inside the &amp;quot;bin&amp;quot; folder of the SDK before each sample run, to reset the DSP.''&lt;br /&gt;
&lt;br /&gt;
Run the following:&lt;br /&gt;
&lt;br /&gt;
 beagle$ ./QtTracking-SDK –qws&lt;br /&gt;
&lt;br /&gt;
''Note: Developer's guide has more instructions on running the sample''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Others are coming soon.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Our project is about how to use Microsoft Kinect Sensor to play snake game by the motion of you right hand(You can change to any part of your body if you would like to). We set a score section to record the highest score. Anybody who want to break our record are welcome(Currently the record is holding by Xinyu Cheng at 260). We've created a play demo and uploaded it to YouTube:&lt;br /&gt;
&lt;br /&gt;
=== Play snake game with Kinect sensor on BeagleboardxM ===&lt;br /&gt;
{{#ev:youtube|uBW6LkVUi9I}}&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
=== The Main Idea ===&lt;br /&gt;
We are using the kinect as the sensor of our project. The provided algorithm of the kinect make it possible for us to get the coordinate of many joints of the body. In this case, we can judge the position and the motion of our hands or any other joints. Then, we can use the direction we get from the previous judgement to control the Greedy Snake. Our project is running with the idea.&lt;br /&gt;
&lt;br /&gt;
=== The Technics Used ===&lt;br /&gt;
Technically, we can use QT to design our program and then cross-complie our project to the beagle-board. The Greedy Snake is an open-source QT game, and the tracking of the joint can be accomplished from modifying the Omek SDK. We have to modify both of their codes to connect the two parts together. &lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
=== Yue Zhang ===&lt;br /&gt;
* Researched how to Burn the correct Image to the Beagle Board.&lt;br /&gt;
* Configure the Beagle Board to control the kinect.&lt;br /&gt;
* Implemented the motion based algorithm which makes the application runs more smoothly.&lt;br /&gt;
* Programmed for the part of motion algorithm.&lt;br /&gt;
=== Xinyu Cheng ===&lt;br /&gt;
* Researched how to configure the QT programming environment. &lt;br /&gt;
* Accomplished the cross-compiling on QT.&lt;br /&gt;
* Programming for the connection between the Snake Game and the Kinect SDK.&lt;br /&gt;
* Designed and Implemented the coordinate based algorithm.&lt;br /&gt;
=== Xia Li ===&lt;br /&gt;
* Researched how to run the provided SDK demo.&lt;br /&gt;
* Speed up for the demo.&lt;br /&gt;
* Designed the motion based algorithm. &lt;br /&gt;
* Programmed to improved the accuracy and speed of the game.&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
&lt;br /&gt;
Now, our game can work pretty good and smoothly. The future work for the project will mainly about how to improve the user interface and the game rules. We can also improve our algorithm for the direction judgement.&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Conculsionly, our project works pretty good. Our Greedy Snake game runs very good and brings a lot of fun for us. During the develop process, we met lots of difficulties, we tried to solve them one by one. Finally, we solved almost all the problems and end up with a nice project.&lt;br /&gt;
&lt;br /&gt;
{{YoderFoot}}&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Kinect</id>
		<title>ECE497 Project: Kinect</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Kinect"/>
				<updated>2012-11-14T04:55:03Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497 |Project]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Astroricks|Yue Zhang]], [[user:Xinyu1991|Xinyu Cheng]], [[user:Lix|Xia Li]].&lt;br /&gt;
&lt;br /&gt;
== Grading Template ==&lt;br /&gt;
I'm using the following template to grade.  Each slot is 10 points.&lt;br /&gt;
0 = Missing, 5=OK, 10=Wow!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
00 Executive Summary&lt;br /&gt;
00 Installation Instructions&lt;br /&gt;
00 User Instructions&lt;br /&gt;
00 Highlights&lt;br /&gt;
00 Theory of Operation&lt;br /&gt;
00 Work Breakdown&lt;br /&gt;
00 Future Work&lt;br /&gt;
00 Conclusions&lt;br /&gt;
00 Demo&lt;br /&gt;
00 Late&lt;br /&gt;
Comments:&lt;br /&gt;
&lt;br /&gt;
Score:  00/100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;(Inline Comment)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
I believe that almost every college students have played a game called &amp;quot;Greedy Snake&amp;quot; in our childhood. At that time, we played it on the cellphone, on the computer or on the PSP. However, we are always using the keyboard to control the games we played. Now, our final project could bring you something new, that is a &amp;quot;Gesture Controlled Greedy Snake&amp;quot;. It means that, using the gesture, the keyboard is never required to play the game. Amazing? Read the following wiki to know how we make it happens!&lt;br /&gt;
&lt;br /&gt;
Basically, we are using the kinect from Microsoft and the Beagle Board XM from Texas Instrument to accomplish our gesture game. The program for the game is programmed on the QT-Linux. Besides, we use the cross compiling to compile the program to make the game run on the beagle board.&lt;br /&gt;
&lt;br /&gt;
After our previous work, our &amp;quot;Gesture Greedy Snake&amp;quot; is completed, and works pretty good. The snake can be controlled by our gestures smoothly. The game reminds us a different style of childhood memory.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
1 x [http://www.microsoftstore.com/store/msstore/en_US/pd/ThemeID.27509700/Kinect-for-Xbox-360/productID.216507400 Kinect]&lt;br /&gt;
&lt;br /&gt;
1 x [http://www.digikey.com/product-highlights/us/en/texas-instruments-beagleboard/685 BeagleBoard xM]&lt;br /&gt;
&lt;br /&gt;
1 x DVI to HDMI wire&lt;br /&gt;
&lt;br /&gt;
1 x Monitor&lt;br /&gt;
&lt;br /&gt;
1 x Keyboard&lt;br /&gt;
&lt;br /&gt;
1 x Mouse&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
The source files for the project can be downloaded from [https://github.com/Astroricks/Snake-Game-with-Kinect-on-BeagleBoard-xM/tree/master/Tracking_Snake github]. Once you have set up the developing environment as in the following instructions, you can download the files, playing with the game or making changes.  &lt;br /&gt;
&lt;br /&gt;
We are using the drivers provided by [http://www.omekinteractive.com/ Omek]. The driver files can be found at the Beckon™ SDK 2.4 – BeagleBoard-xM Edition [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/32/11/installation installation] page, and a developer's guide is provided at the [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/34/11/documentation documentation] page. (You may need to register first.) Instructions in this [http://treyweaver.blogspot.com/2010/10/setting-up-qt-development-environment.html blog] are also very useful.&lt;br /&gt;
&lt;br /&gt;
Although the developer's guide introduces how to do the installation and configuration, we have found that it takes much longer than we originally thought, and errors came out occasionally. It seems that the developer's guide is not very well organized and not detailed enought anyway. So we arranged our instruction and configuration procedures as below:&lt;br /&gt;
&lt;br /&gt;
1. Download the image package and burn it into the SD card&lt;br /&gt;
&lt;br /&gt;
Download the image package [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/32/11/installation Beckon-Image-2.4.19872.tar.gz] as mentioned above onto your Linux PC. Then extract it by entering&lt;br /&gt;
&lt;br /&gt;
 host$ tar -xvzf ''&amp;lt;ImageFileName&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
Run the following command to make sure you have bash installed.&lt;br /&gt;
&lt;br /&gt;
 host$ sudo apt-get install bash&lt;br /&gt;
&lt;br /&gt;
Insert your SD card using a card reader/writer. Run the following command:&lt;br /&gt;
&lt;br /&gt;
 host$ sudo bash mkcard.sh /dev/''&amp;lt;sdX&amp;gt;'' beagle-omek&lt;br /&gt;
&lt;br /&gt;
''Note: This action will wipe out and rewrite the SD card so make sure the files in it are backed up. The name of the SD card can be viewed in Disk Utility. If you mistakenly use the main OS device name this script can erase your entire OS.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Run the sample application&lt;br /&gt;
&lt;br /&gt;
Plug the sensor into the BeagleBoard-xM USB port. Ensure the mouse and keyboard are connected to the BeagleBoard-xM USB port. Connect the BeagleBoard-xM to the monitor with an HDMI cable. Connect the BeagleBoard-xM power supply and wait for the boot process to reach the login prompt, login as user root (no password is required). Now it's ready to run the sample applications on the BeagleBoard-xM.&lt;br /&gt;
&lt;br /&gt;
''Note: Details about running the samples can be found in the developer's guide from page 9 to 11. The Kinect will react properly only if the player is within an appropriate distance (about 1m - 5m). ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: The following instruction is about how to set up the environment for developing. If you don't want to do the development, you can just skip that.&lt;br /&gt;
&lt;br /&gt;
3. Setting up your Linux development PC&lt;br /&gt;
&lt;br /&gt;
Download [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/32/11/installation Beckon-SDK-2.4.19872.tar.gz] and extract it onto your host PC (this is the actual SDK which contains headers, libraries, documentation, makefiles, etc...) The SDK provides the tools to develop a motion-tracking and gesture-based application that can run on the BeagleBoard-xM. After developing the application, cross-compile it onto the Linux PC and then copy the image onto the BeagleBoard-xM via external USB storage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Download the Linux ARM cross toolchain:&lt;br /&gt;
&lt;br /&gt;
For 32-bit Ubuntu you will want to download this file: http://www.angstrom-distribution.org/toolchains/angstrom-2011.03-i686-linux-armv7a-linux-gnueabi-toolchain-qte-4.6.3.tar.bz2&lt;br /&gt;
&lt;br /&gt;
For 64-bit Ubuntu you will want to download this file: http://www.angstrom-distribution.org/toolchains/angstrom-2011.03-x86_64-linux-armv7a-linux-gnueabi-toolchain-qte-4.6.3.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Extract the downloaded archive into your system root directory:&lt;br /&gt;
&lt;br /&gt;
 host$ sudo tar -xvjf ''&amp;lt;ToolchainFileName&amp;gt;'' -C /&lt;br /&gt;
&lt;br /&gt;
''Note: If you extract the archive into a different directory, you should adjust the following instructions as well as the samples' makefiles accordingly.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Install the Qt embedded SDK for Angstrom/BeagleBoard:&lt;br /&gt;
&lt;br /&gt;
Now that you have your cross compiler installed, you can compile Qt with it. First thing to do is to install zlib library:&lt;br /&gt;
&lt;br /&gt;
 host$ sudo apt-get install zlib1g-dev&lt;br /&gt;
&lt;br /&gt;
Then download the Open Source LGPL version of Qt libraries 4.6.2 for Embedded Linux [http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.6.2.tar.gz here]. &lt;br /&gt;
&lt;br /&gt;
''Note: Newest version of Qt libraries can be found [http://qt-project.org/downloads/ here]. We didn't test it since the 4.6.2 version works fine.''&lt;br /&gt;
&lt;br /&gt;
Extract the file you just downloaded:&lt;br /&gt;
&lt;br /&gt;
 host$ tar -xvzf ''&amp;lt;DownloadFileName&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
You need to create a new make.conf. Run the following line to make a new mkspecs directory for the BeagleBoard Processor.&lt;br /&gt;
&lt;br /&gt;
 host$ cp -R ''&amp;lt;DownloadDirectory&amp;gt;''/mkspecs/qws/linux-arm-g++/ ''&amp;lt;DownloadDirectory&amp;gt;''/mkspecs/qws/linux-DM3730-g++/&lt;br /&gt;
&lt;br /&gt;
Edit the qmake.conf file found in ''&amp;lt;DownloadDirectory&amp;gt;''/mkspecs/qws/linux-DM3730-g++/ and overwrite it with the following lines.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# qmake configuration for building with arm-linux-g++&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
include(../../common/g++.conf)&lt;br /&gt;
include(../../common/linux.conf)&lt;br /&gt;
include(../../common/qws.conf)&lt;br /&gt;
&lt;br /&gt;
# modifications to g++.conf&lt;br /&gt;
#Toolchain&lt;br /&gt;
&lt;br /&gt;
#Compiler Flags to take advantage of the ARM architecture&lt;br /&gt;
QMAKE_CFLAGS_RELEASE =   -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp&lt;br /&gt;
QMAKE_CXXFLAGS_RELEASE = -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp&lt;br /&gt;
&lt;br /&gt;
QMAKE_CC = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/gcc&lt;br /&gt;
QMAKE_CXX = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++&lt;br /&gt;
QMAKE_LINK = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++&lt;br /&gt;
QMAKE_LINK_SHLIB = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++&lt;br /&gt;
&lt;br /&gt;
# modifications to linux.conf&lt;br /&gt;
QMAKE_AR = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/ar cqs&lt;br /&gt;
QMAKE_OBJCOPY = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/objcopy&lt;br /&gt;
QMAKE_STRIP = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/strip&lt;br /&gt;
&lt;br /&gt;
load(qt_config)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now run the configure command (see this [http://processors.wiki.ti.com/index.php/Building_Qt website] for more details if needed):&lt;br /&gt;
&lt;br /&gt;
 host$ cd ''&amp;lt;DownloadDirectory&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
For 32-bit Ubuntu:&lt;br /&gt;
&lt;br /&gt;
 host$ ./configure -opensource -confirm-license -prefix /opt/qt-arm -no-qt3support -embedded arm -little-endian -xplatform qws/linux-DM3730-g++ -qtlibinfix E&lt;br /&gt;
&lt;br /&gt;
For 64-bit Ubuntu:&lt;br /&gt;
&lt;br /&gt;
 host$ ./configure -opensource -confirm-license -prefix /opt/qt-arm -no-qt3support -embedded arm -little-endian -platform qws/linux-x86_64-g++ -xplatform qws/linux-DM3730-g++ -qtlibinfix E&lt;br /&gt;
&lt;br /&gt;
Once this is complete you can run make and make install (make may take some hours):&lt;br /&gt;
&lt;br /&gt;
 host$ make&lt;br /&gt;
 host$ sudo make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Install and set up Qt Creator:&lt;br /&gt;
&lt;br /&gt;
Go to http://qt-project.org/downloads to download Qt. Get the latest version of Qt for Linux/X11; be sure to get the appropriate 32bit or 64bit version. Once downloaded go to the download directory and execute the following using your download file name:&lt;br /&gt;
&lt;br /&gt;
 host$ chmod u+x ''&amp;lt;QtCreator.bin&amp;gt;''&lt;br /&gt;
 host$ ./''&amp;lt;QtCreator.bin&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
''Update:''The free version Qt Creator can not be used in this project since it doesn't have cross-compile option with it.&lt;br /&gt;
&lt;br /&gt;
After Qt Creator is successfully installed, start Qt Creator. Go to: Tools &amp;gt; Options &amp;gt; Build &amp;amp; Run &amp;gt; Tool Chains, select Add -&amp;gt; GCC and insert the full compiler path below:&lt;br /&gt;
&lt;br /&gt;
/usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++&lt;br /&gt;
&lt;br /&gt;
Then go to: Tools &amp;gt; Options &amp;gt; Build &amp;amp; Run &amp;gt; Qt Versions, select Add and provide the following full path to qmake&lt;br /&gt;
&lt;br /&gt;
/opt/qt-arm/bin/qmake&lt;br /&gt;
&lt;br /&gt;
Press Apply and OK.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Setting up the BeagleBoard-xM &lt;br /&gt;
&lt;br /&gt;
All of the Qt files that you need to move to the BeagleBoard can be found in the /opt/qt-arm/lib directory on your Linux Build System. Copy all the files out of your build system's /opt/qt-arm/lib directory and put those into the BeagleBoard-xM's /opt/qt-arm/lib directory. You can get the files to the Beagleboard by either networking, using a usb drive or plug the SD card into your Linux Build System.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Include your [https://github.com/ github] path as a link like this:  [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn].  &lt;br /&gt;
* Include any additional packages installed via '''opkg'''.&lt;br /&gt;
* Include kernel mods.&lt;br /&gt;
* If there is extra hardware needed, include links to where it can be obtained.&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
To build QtTracking Sample:&lt;br /&gt;
&lt;br /&gt;
1. Start Qt Creator.&lt;br /&gt;
&lt;br /&gt;
2. Go to: File &amp;gt; Open File or Project, select the QtTracking-SDK.pro project (from Beckon-SDK-{version}/samples/QtTracking) and click Open. Select Embedded Linux instead of Desktop.&lt;br /&gt;
&lt;br /&gt;
3. Click Finish.&lt;br /&gt;
&lt;br /&gt;
4. Go to Projects tab (on the left), In Qt version select Qt [4.x.x (qt-arm)]/.&lt;br /&gt;
&lt;br /&gt;
5. Run Build -&amp;gt; Build Project command.&lt;br /&gt;
&lt;br /&gt;
The result executable can be found in the Beckon-SDK-{version}/bin directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To run the QtTracking Sample:&lt;br /&gt;
&lt;br /&gt;
1. Mount or copy the bin directory to the BeagleBoard.&lt;br /&gt;
&lt;br /&gt;
''Note: Run the reset.sh script inside the &amp;quot;bin&amp;quot; folder of the SDK before each sample run, to reset the DSP.''&lt;br /&gt;
&lt;br /&gt;
Run the following:&lt;br /&gt;
&lt;br /&gt;
 beagle$ ./QtTracking-SDK –qws&lt;br /&gt;
&lt;br /&gt;
''Note: Developer's guide has more instructions on running the sample''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Others are coming soon.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Our project is about how to use Microsoft Kinect Sensor to play snake game by the motion of you right hand(You can change to any part of your body if you would like to). We set a score section to record the highest score. Anybody who want to break our record are welcome(Currently the record is holding by Xinyu Cheng at 260). We've created a play demo and uploaded it to YouTube:&lt;br /&gt;
&lt;br /&gt;
=== Play snake game with Kinect sensor on BeagleboardxM ===&lt;br /&gt;
{{#ev:youtube|uBW6LkVUi9I}}&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
=== The Main Idea ===&lt;br /&gt;
We are using the kinect as the sensor of our project. The provided algorithm of the kinect make it possible for us to get the coordinate of many joints of the body. In this case, we can judge the position and the motion of our hands or any other joints. Then, we can use the direction we get from the previous judgement to control the Greedy Snake. Our project is running with the idea.&lt;br /&gt;
&lt;br /&gt;
=== The Technics Used ===&lt;br /&gt;
Technically, we can use QT to design our program and then cross-complie our project to the beagle-board. The Greedy Snake is an open-source QT game, and the tracking of the joint can be accomplished from modifying the Omek SDK. We have to modify both of their codes to connect the two parts together. &lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
=== Yue Zhang ===&lt;br /&gt;
* Researched how to Burn the correct Image to the Beagle Board.&lt;br /&gt;
* Configure the Beagle Board to control the kinect.&lt;br /&gt;
* Implemented the motion based algorithm which makes the application runs more smoothly.&lt;br /&gt;
* Programmed for the part of motion algorithm.&lt;br /&gt;
=== Xinyu Cheng ===&lt;br /&gt;
* Researched how to configure the QT programming environment. &lt;br /&gt;
* Accomplished the cross-compiling on QT.&lt;br /&gt;
* Programming for the connection between the Snake Game and the Kinect SDK.&lt;br /&gt;
* Designed and Implemented the coordinate based algorithm.&lt;br /&gt;
=== Xia Li ===&lt;br /&gt;
* Researched how to run the provided SDK demo.&lt;br /&gt;
* Speed up for the demo.&lt;br /&gt;
* Designed the motion based algorithm. &lt;br /&gt;
* Programmed to improved the accuracy and speed of the game.&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
&lt;br /&gt;
Now, our game can work pretty good and smoothly. The future work for the project will mainly about how to improve the user interface and the game rules. We can also improve our algorithm for the direction judgement.&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Conculsionly, our project works pretty good. Our Greedy Snake game runs very good and brings a lot of fun for us. During the develop process, we met lots of difficulties, we tried to solve them one by one. Finally, we solved almost all the problems and end up with a nice project.&lt;br /&gt;
&lt;br /&gt;
{{YoderFoot}}&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Kinect</id>
		<title>ECE497 Project: Kinect</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Kinect"/>
				<updated>2012-11-14T03:17:15Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497 |Project]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Astroricks|Yue Zhang]], [[user:Xinyu1991|Xinyu Cheng]], [[user:Lix|Xia Li]].&lt;br /&gt;
&lt;br /&gt;
== Grading Template ==&lt;br /&gt;
I'm using the following template to grade.  Each slot is 10 points.&lt;br /&gt;
0 = Missing, 5=OK, 10=Wow!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
00 Executive Summary&lt;br /&gt;
00 Installation Instructions&lt;br /&gt;
00 User Instructions&lt;br /&gt;
00 Highlights&lt;br /&gt;
00 Theory of Operation&lt;br /&gt;
00 Work Breakdown&lt;br /&gt;
00 Future Work&lt;br /&gt;
00 Conclusions&lt;br /&gt;
00 Demo&lt;br /&gt;
00 Late&lt;br /&gt;
Comments:&lt;br /&gt;
&lt;br /&gt;
Score:  00/100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;(Inline Comment)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
I believe that almost every college students have played a game called &amp;quot;Greedy Snake&amp;quot; in our childhood. At that time, we played it on the cellphone, on the computer or on the PSP. However, we are always using the keyboard to control the games we played. Now, our final project could bring you something new, that is a &amp;quot;Gesture Controlled Greedy Snake&amp;quot;. It means that, using the gesture, the keyboard is never required to play the game. Amazing? Read the following wiki to know how we make it happens!&lt;br /&gt;
&lt;br /&gt;
Basically, we are using the kinect from Microsoft and the Beagle Board XM from Texas Instrument to accomplish our gesture game. The program for the game is programmed on the QT-Linux. Besides, we use the cross compiling to compile the program to make the game run on the beagle board.&lt;br /&gt;
&lt;br /&gt;
After our previous work, our &amp;quot;Gesture Greedy Snake&amp;quot; is completed, and works pretty good. The snake can be controlled by our gestures smoothly. The game reminds us a different style of childhood memory.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
&lt;br /&gt;
We are using the drivers provided by [http://www.omekinteractive.com/ Omek]. The driver files can be found at the Beckon™ SDK 2.4 – BeagleBoard-xM Edition [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/32/11/installation installation] page, and a developer's guide is provided at the [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/34/11/documentation documentation] page. (You may need to register first.) Instructions in this [http://treyweaver.blogspot.com/2010/10/setting-up-qt-development-environment.html blog] are also very useful.&lt;br /&gt;
&lt;br /&gt;
Although the developer's guide introduces how to do the installation and configuration, we have found that it takes much longer than we originally thought and errors came out occationally. It seems that the developer's guide is not very well organized and not detailed enought anyway. So we arranged our instruction and configuration procedures as below:&lt;br /&gt;
&lt;br /&gt;
1. Download the image package and burn it into the SD card&lt;br /&gt;
&lt;br /&gt;
Download the image package [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/32/11/installation Beckon-Image-2.4.19872.tar.gz] as mentioned above onto your Linux PC. Then extract it by entering&lt;br /&gt;
&lt;br /&gt;
 host$ tar -xvzf ''&amp;lt;ImageFileName&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
Run the following command to make sure you have bash installed.&lt;br /&gt;
&lt;br /&gt;
 host$ sudo apt-get install bash&lt;br /&gt;
&lt;br /&gt;
Insert your SD card using a card reader/writer. Run the following command:&lt;br /&gt;
&lt;br /&gt;
 host$ sudo bash mkcard.sh /dev/''&amp;lt;sdX&amp;gt;'' beagle-omek&lt;br /&gt;
&lt;br /&gt;
''Note: This action will wipe out and rewrite the SD card so make sure the files in it are backed up. The name of the SD card can be viewed in Disk Utility. If you mistakenly use the main OS device name this script can erase your entire OS.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Run the sample application&lt;br /&gt;
&lt;br /&gt;
Plug the sensor into the BeagleBoard-xM USB port. Ensure the mouse and keyboard are connected to the BeagleBoard-xM USB port. Connect the BeagleBoard-xM to the monitor with an HDMI cable. Connect the BeagleBoard-xM power supply and wait for the boot process to reach the login prompt, login as user root (no password is required). Now it's ready to run the sample applications on the BeagleBoard-xM.&lt;br /&gt;
&lt;br /&gt;
''Note: Details about running the samples can be found in the developer's guide from page 9 to 11. The Kinect will react properly only if the player is within an appropriate distance (about 1m - 5m). ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Setting up your Linux development PC&lt;br /&gt;
&lt;br /&gt;
Download [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/32/11/installation Beckon-SDK-2.4.19872.tar.gz] and extract it onto your host PC (this is the actual SDK which contains headers, libraries, documentation, makefiles, etc...) The SDK provides the tools to develop a motion-tracking and gesture-based application that can run on the BeagleBoard-xM. After developing the application, cross-compile it onto the Linux PC and then copy the image onto the BeagleBoard-xM via external USB storage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Download the Linux ARM cross toolchain:&lt;br /&gt;
&lt;br /&gt;
For 32-bit Ubuntu you will want to download this file: http://www.angstrom-distribution.org/toolchains/angstrom-2011.03-i686-linux-armv7a-linux-gnueabi-toolchain-qte-4.6.3.tar.bz2&lt;br /&gt;
&lt;br /&gt;
For 64-bit Ubuntu you will want to download this file: http://www.angstrom-distribution.org/toolchains/angstrom-2011.03-x86_64-linux-armv7a-linux-gnueabi-toolchain-qte-4.6.3.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Extract the downloaded archive into your system root directory:&lt;br /&gt;
&lt;br /&gt;
 host$ sudo tar -xvjf ''&amp;lt;ToolchainFileName&amp;gt;'' -C /&lt;br /&gt;
&lt;br /&gt;
''Note: If you extract the archive into a different directory, you should adjust the following instructions as well as the samples' makefiles accordingly.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Install the Qt embedded SDK for Angstrom/BeagleBoard:&lt;br /&gt;
&lt;br /&gt;
Now that you have your cross compiler installed, you can compile Qt with it. First thing to do is to install zlib library:&lt;br /&gt;
&lt;br /&gt;
 host$ sudo apt-get install zlib1g-dev&lt;br /&gt;
&lt;br /&gt;
Then download the Open Source LGPL version of Qt libraries 4.6.2 for Embedded Linux [http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.6.2.tar.gz here]. &lt;br /&gt;
&lt;br /&gt;
''Note: Newest version of Qt libraries can be found [http://qt-project.org/downloads/ here]. We didn't test it since the 4.6.2 version works fine.''&lt;br /&gt;
&lt;br /&gt;
Extract the file you just downloaded:&lt;br /&gt;
&lt;br /&gt;
 host$ tar -xvzf ''&amp;lt;DownloadFileName&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
You need to create a new make.conf. Run the following line to make a new mkspecs directory for the BeagleBoard Processor.&lt;br /&gt;
&lt;br /&gt;
 host$ cp -R ''&amp;lt;DownloadDirectory&amp;gt;''/mkspecs/qws/linux-arm-g++/ ''&amp;lt;DownloadDirectory&amp;gt;''/mkspecs/qws/linux-DM3730-g++/&lt;br /&gt;
&lt;br /&gt;
Edit the qmake.conf file found in ''&amp;lt;DownloadDirectory&amp;gt;''/mkspecs/qws/linux-DM3730-g++/ and overwrite it with the following lines.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# qmake configuration for building with arm-linux-g++&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
include(../../common/g++.conf)&lt;br /&gt;
include(../../common/linux.conf)&lt;br /&gt;
include(../../common/qws.conf)&lt;br /&gt;
&lt;br /&gt;
# modifications to g++.conf&lt;br /&gt;
#Toolchain&lt;br /&gt;
&lt;br /&gt;
#Compiler Flags to take advantage of the ARM architecture&lt;br /&gt;
QMAKE_CFLAGS_RELEASE =   -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp&lt;br /&gt;
QMAKE_CXXFLAGS_RELEASE = -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp&lt;br /&gt;
&lt;br /&gt;
QMAKE_CC = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/gcc&lt;br /&gt;
QMAKE_CXX = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++&lt;br /&gt;
QMAKE_LINK = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++&lt;br /&gt;
QMAKE_LINK_SHLIB = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++&lt;br /&gt;
&lt;br /&gt;
# modifications to linux.conf&lt;br /&gt;
QMAKE_AR = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/ar cqs&lt;br /&gt;
QMAKE_OBJCOPY = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/objcopy&lt;br /&gt;
QMAKE_STRIP = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/strip&lt;br /&gt;
&lt;br /&gt;
load(qt_config)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now run the configure command (see this [http://processors.wiki.ti.com/index.php/Building_Qt website] for more details if needed):&lt;br /&gt;
&lt;br /&gt;
 host$ cd ''&amp;lt;DownloadDirectory&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
For 32-bit Ubuntu:&lt;br /&gt;
&lt;br /&gt;
 host$ ./configure -opensource -confirm-license -prefix /opt/qt-arm -no-qt3support -embedded arm -little-endian -xplatform qws/linux-DM3730-g++ -qtlibinfix E&lt;br /&gt;
&lt;br /&gt;
For 64-bit Ubuntu:&lt;br /&gt;
&lt;br /&gt;
 host$ ./configure -opensource -confirm-license -prefix /opt/qt-arm -no-qt3support -embedded arm -little-endian -platform qws/linux-x86_64-g++ -xplatform qws/linux-DM3730-g++ -qtlibinfix E&lt;br /&gt;
&lt;br /&gt;
Once this is complete you can run make and make install (make may take some hours):&lt;br /&gt;
&lt;br /&gt;
 host$ make&lt;br /&gt;
 host$ sudo make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Install and set up Qt Creator:&lt;br /&gt;
&lt;br /&gt;
Go to http://qt-project.org/downloads to download Qt. Get the latest version of Qt for Linux/X11; be sure to get the appropriate 32bit or 64bit version. Once downloaded go to the download directory and execute the following using your download file name:&lt;br /&gt;
&lt;br /&gt;
 host$ chmod u+x ''&amp;lt;QtCreator.bin&amp;gt;''&lt;br /&gt;
 host$ ./''&amp;lt;QtCreator.bin&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
''Update:''The free version Qt Creator can not be used in this project since it doesn't have cross-compile option with it.&lt;br /&gt;
&lt;br /&gt;
After Qt Creator is successfully installed, start Qt Creator. Go to: Tools &amp;gt; Options &amp;gt; Build &amp;amp; Run &amp;gt; Tool Chains, select Add -&amp;gt; GCC and insert the full compiler path below:&lt;br /&gt;
&lt;br /&gt;
/usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++&lt;br /&gt;
&lt;br /&gt;
Then go to: Tools &amp;gt; Options &amp;gt; Build &amp;amp; Run &amp;gt; Qt Versions, select Add and provide the following full path to qmake&lt;br /&gt;
&lt;br /&gt;
/opt/qt-arm/bin/qmake&lt;br /&gt;
&lt;br /&gt;
Press Apply and OK.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Setting up the BeagleBoard-xM &lt;br /&gt;
&lt;br /&gt;
All of the Qt files that you need to move to the BeagleBoard can be found in the /opt/qt-arm/lib directory on your Linux Build System. Copy all the files out of your build system's /opt/qt-arm/lib directory and put those into the BeagleBoard-xM's /opt/qt-arm/lib directory. You can get the files to the Beagleboard by either networking, using a usb drive or plug the SD card into your Linux Build System.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Include your [https://github.com/ github] path as a link like this:  [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn].  &lt;br /&gt;
* Include any additional packages installed via '''opkg'''.&lt;br /&gt;
* Include kernel mods.&lt;br /&gt;
* If there is extra hardware needed, include links to where it can be obtained.&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
To build QtTracking Sample:&lt;br /&gt;
&lt;br /&gt;
1. Start Qt Creator.&lt;br /&gt;
&lt;br /&gt;
2. Go to: File &amp;gt; Open File or Project, select the QtTracking-SDK.pro project (from Beckon-SDK-{version}/samples/QtTracking) and click Open. Select Embedded Linux instead of Desktop.&lt;br /&gt;
&lt;br /&gt;
3. Click Finish.&lt;br /&gt;
&lt;br /&gt;
4. Go to Projects tab (on the left), In Qt version select Qt [4.x.x (qt-arm)]/.&lt;br /&gt;
&lt;br /&gt;
5. Run Build -&amp;gt; Build Project command.&lt;br /&gt;
&lt;br /&gt;
The result executable can be found in the Beckon-SDK-{version}/bin directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To run the QtTracking Sample:&lt;br /&gt;
&lt;br /&gt;
1. Mount or copy the bin directory to the BeagleBoard.&lt;br /&gt;
&lt;br /&gt;
''Note: Run the reset.sh script inside the &amp;quot;bin&amp;quot; folder of the SDK before each sample run, to reset the DSP.''&lt;br /&gt;
&lt;br /&gt;
Run the following:&lt;br /&gt;
&lt;br /&gt;
 beagle$ ./QtTracking-SDK –qws&lt;br /&gt;
&lt;br /&gt;
''Note: Developer's guide has more instructions on running the sample''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Others are coming soon.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Coming soon.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
We are using the kinect as the sensor of our project. The provided algorithm of the kinect make it possible for us to get the coordinate of many joints of the body. In this case, we can judge the position and the motion of our hands or any other joints. Then, we can use the direction we get from the previous judgement to control the Greedy Snake. Our project is running with the idea.&lt;br /&gt;
&lt;br /&gt;
Tenically, we can use QT to design our program and then cross-complie our project to the beagle-board. The Greedy Snake is an open-source QT game, and the tracking of the joint can be accomplished from modifying the Omek SDK. We have to modify both of their codes to connect the two parts together. &lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
* '''Previous Work Breakdown:'''&lt;br /&gt;
''' Yue Zhang '''&lt;br /&gt;
* Researched how to Burn the correct Image to the Beagle Board.&lt;br /&gt;
* Configure the Beagle Board to control the kinect.&lt;br /&gt;
* Implemented the motion based algorithm which makes the application runs more smoothly.&lt;br /&gt;
* Programmed for the part of motion algorithm.&lt;br /&gt;
''' Xinyu Cheng '''&lt;br /&gt;
* Researched how to configure the QT programming environment. &lt;br /&gt;
* Accomplished the cross-compiling on QT.&lt;br /&gt;
* Programming for the connection between the Snake Game and the Kinect SDK.&lt;br /&gt;
* Designed and Implemented the coordinate based algorithm.&lt;br /&gt;
''' Xia Li '''&lt;br /&gt;
* Researched how to run the provided SDK demo.&lt;br /&gt;
* Speed up for the demo.&lt;br /&gt;
* Designed the motion based algorithm. &lt;br /&gt;
* Programmed to improved the accuracy and speed of the game.&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
&lt;br /&gt;
Now, our game can work pretty good and smoothly. The future work for the project will mainly about how to improve the user interface and the game rules. We can also improve our algorithm for the direction judgement.&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Conculsionly, our project works pretty good. Our Greedy Snake game runs very good and brings a lot of fun for us. During the develop process, we met lots of difficulties, we tried to solve them one by one. Finally, we solved almost all the problems and end up with a nice project.&lt;br /&gt;
&lt;br /&gt;
{{YoderFoot}}&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Kinect</id>
		<title>ECE497 Project: Kinect</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Kinect"/>
				<updated>2012-11-14T02:40:56Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497 |Project]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Astroricks|Yue Zhang]], [[user:Xinyu1991|Xinyu Cheng]], [[user:Lix|Xia Li]].&lt;br /&gt;
&lt;br /&gt;
== Grading Template ==&lt;br /&gt;
I'm using the following template to grade.  Each slot is 10 points.&lt;br /&gt;
0 = Missing, 5=OK, 10=Wow!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
00 Executive Summary&lt;br /&gt;
00 Installation Instructions&lt;br /&gt;
00 User Instructions&lt;br /&gt;
00 Highlights&lt;br /&gt;
00 Theory of Operation&lt;br /&gt;
00 Work Breakdown&lt;br /&gt;
00 Future Work&lt;br /&gt;
00 Conclusions&lt;br /&gt;
00 Demo&lt;br /&gt;
00 Late&lt;br /&gt;
Comments:&lt;br /&gt;
&lt;br /&gt;
Score:  00/100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;(Inline Comment)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
I believe that almost every college students have played a game called &amp;quot;Greedy Snake&amp;quot; in our childhood. At that time, we play it on the cellphone, on the computer or on the PSP. However, we are always using the keyboard to control the games we played. Now, our final project could bring you something new, that is a &amp;quot;Gesture Controlled Greedy Snake&amp;quot;. It means that, using the gesture, the keyboard is never required to play the game. Amazing? Read the following wiki to know how we make it happens!&lt;br /&gt;
&lt;br /&gt;
Basically, we are using the kinect from Microsoft and the Beagle Board XM from Texas Instrument to accomplish our gesture game. The program for the game is programmed on the QT-Linux. Besides, we use the cross compiling to compile the program to make the game can be run on the beagle board.&lt;br /&gt;
&lt;br /&gt;
After our previous work, our &amp;quot;Gesture Greedy Snake&amp;quot; is completed, and works pretty good. The snake can be controlled by our gestures smoothly. The game reminds us a different style of childhood memory.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
&lt;br /&gt;
We are using the drivers provided by [http://www.omekinteractive.com/ Omek]. The driver files can be found at the Beckon™ SDK 2.4 – BeagleBoard-xM Edition [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/32/11/installation installation] page, and a developer's guide is provided at the [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/34/11/documentation documentation] page. (You may need to register first.) Instructions in this [http://treyweaver.blogspot.com/2010/10/setting-up-qt-development-environment.html blog] are also very useful.&lt;br /&gt;
&lt;br /&gt;
Although the developer's guide introduces how to do the installation and configuration, we have found that it takes much longer than we originally thought and errors came out occationally. It seems that the developer's guide is not very well organized and not detailed enought anyway. So we arranged our instruction and configuration procedures as below:&lt;br /&gt;
&lt;br /&gt;
1. Download the image package and burn it into the SD card&lt;br /&gt;
&lt;br /&gt;
Download the image package [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/32/11/installation Beckon-Image-2.4.19872.tar.gz] as mentioned above onto your Linux PC. Then extract it by entering&lt;br /&gt;
&lt;br /&gt;
 host$ tar -xvzf ''&amp;lt;ImageFileName&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
Run the following command to make sure you have bash installed.&lt;br /&gt;
&lt;br /&gt;
 host$ sudo apt-get install bash&lt;br /&gt;
&lt;br /&gt;
Insert your SD card using a card reader/writer. Run the following command:&lt;br /&gt;
&lt;br /&gt;
 host$ sudo bash mkcard.sh /dev/''&amp;lt;sdX&amp;gt;'' beagle-omek&lt;br /&gt;
&lt;br /&gt;
''Note: This action will wipe out and rewrite the SD card so make sure the files in it are backed up. The name of the SD card can be viewed in Disk Utility. If you mistakenly use the main OS device name this script can erase your entire OS.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Run the sample application&lt;br /&gt;
&lt;br /&gt;
Plug the sensor into the BeagleBoard-xM USB port. Ensure the mouse and keyboard are connected to the BeagleBoard-xM USB port. Connect the BeagleBoard-xM to the monitor with an HDMI cable. Connect the BeagleBoard-xM power supply and wait for the boot process to reach the login prompt, login as user root (no password is required). Now it's ready to run the sample applications on the BeagleBoard-xM.&lt;br /&gt;
&lt;br /&gt;
''Note: Details about running the samples can be found in the developer's guide from page 9 to 11. The Kinect will react properly only if the player is within an appropriate distance (about 1m - 5m). ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Setting up your Linux development PC&lt;br /&gt;
&lt;br /&gt;
Download [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/32/11/installation Beckon-SDK-2.4.19872.tar.gz] and extract it onto your host PC (this is the actual SDK which contains headers, libraries, documentation, makefiles, etc...) The SDK provides the tools to develop a motion-tracking and gesture-based application that can run on the BeagleBoard-xM. After developing the application, cross-compile it onto the Linux PC and then copy the image onto the BeagleBoard-xM via external USB storage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Download the Linux ARM cross toolchain:&lt;br /&gt;
&lt;br /&gt;
For 32-bit Ubuntu you will want to download this file: http://www.angstrom-distribution.org/toolchains/angstrom-2011.03-i686-linux-armv7a-linux-gnueabi-toolchain-qte-4.6.3.tar.bz2&lt;br /&gt;
&lt;br /&gt;
For 64-bit Ubuntu you will want to download this file: http://www.angstrom-distribution.org/toolchains/angstrom-2011.03-x86_64-linux-armv7a-linux-gnueabi-toolchain-qte-4.6.3.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Extract the downloaded archive into your system root directory:&lt;br /&gt;
&lt;br /&gt;
 host$ sudo tar -xvjf ''&amp;lt;ToolchainFileName&amp;gt;'' -C /&lt;br /&gt;
&lt;br /&gt;
''Note: If you extract the archive into a different directory, you should adjust the following instructions as well as the samples' makefiles accordingly.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Install the Qt embedded SDK for Angstrom/BeagleBoard:&lt;br /&gt;
&lt;br /&gt;
Now that you have your cross compiler installed, you can compile Qt with it. First thing to do is to install zlib library:&lt;br /&gt;
&lt;br /&gt;
 host$ sudo apt-get install zlib1g-dev&lt;br /&gt;
&lt;br /&gt;
Then download the Open Source LGPL version of Qt libraries 4.6.2 for Embedded Linux [http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.6.2.tar.gz here]. &lt;br /&gt;
&lt;br /&gt;
''Note: Newest version of Qt libraries can be found [http://qt-project.org/downloads/ here]. We didn't test it since the 4.6.2 version works fine.''&lt;br /&gt;
&lt;br /&gt;
Extract the file you just downloaded:&lt;br /&gt;
&lt;br /&gt;
 host$ tar -xvzf ''&amp;lt;DownloadFileName&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
You need to create a new make.conf. Run the following line to make a new mkspecs directory for the BeagleBoard Processor.&lt;br /&gt;
&lt;br /&gt;
 host$ cp -R ''&amp;lt;DownloadDirectory&amp;gt;''/mkspecs/qws/linux-arm-g++/ ''&amp;lt;DownloadDirectory&amp;gt;''/mkspecs/qws/linux-DM3730-g++/&lt;br /&gt;
&lt;br /&gt;
Edit the qmake.conf file found in ''&amp;lt;DownloadDirectory&amp;gt;''/mkspecs/qws/linux-DM3730-g++/ and overwrite it with the following lines.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# qmake configuration for building with arm-linux-g++&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
include(../../common/g++.conf)&lt;br /&gt;
include(../../common/linux.conf)&lt;br /&gt;
include(../../common/qws.conf)&lt;br /&gt;
&lt;br /&gt;
# modifications to g++.conf&lt;br /&gt;
#Toolchain&lt;br /&gt;
&lt;br /&gt;
#Compiler Flags to take advantage of the ARM architecture&lt;br /&gt;
QMAKE_CFLAGS_RELEASE =   -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp&lt;br /&gt;
QMAKE_CXXFLAGS_RELEASE = -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp&lt;br /&gt;
&lt;br /&gt;
QMAKE_CC = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/gcc&lt;br /&gt;
QMAKE_CXX = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++&lt;br /&gt;
QMAKE_LINK = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++&lt;br /&gt;
QMAKE_LINK_SHLIB = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++&lt;br /&gt;
&lt;br /&gt;
# modifications to linux.conf&lt;br /&gt;
QMAKE_AR = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/ar cqs&lt;br /&gt;
QMAKE_OBJCOPY = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/objcopy&lt;br /&gt;
QMAKE_STRIP = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/strip&lt;br /&gt;
&lt;br /&gt;
load(qt_config)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now run the configure command (see this [http://processors.wiki.ti.com/index.php/Building_Qt website] for more details if needed):&lt;br /&gt;
&lt;br /&gt;
 host$ cd ''&amp;lt;DownloadDirectory&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
For 32-bit Ubuntu:&lt;br /&gt;
&lt;br /&gt;
 host$ ./configure -opensource -confirm-license -prefix /opt/qt-arm -no-qt3support -embedded arm -little-endian -xplatform qws/linux-DM3730-g++ -qtlibinfix E&lt;br /&gt;
&lt;br /&gt;
For 64-bit Ubuntu:&lt;br /&gt;
&lt;br /&gt;
 host$ ./configure -opensource -confirm-license -prefix /opt/qt-arm -no-qt3support -embedded arm -little-endian -platform qws/linux-x86_64-g++ -xplatform qws/linux-DM3730-g++ -qtlibinfix E&lt;br /&gt;
&lt;br /&gt;
Once this is complete you can run make and make install (make may take some hours):&lt;br /&gt;
&lt;br /&gt;
 host$ make&lt;br /&gt;
 host$ sudo make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Install and set up Qt Creator:&lt;br /&gt;
&lt;br /&gt;
Go to http://qt-project.org/downloads to download Qt. Get the latest version of Qt for Linux/X11; be sure to get the appropriate 32bit or 64bit version. Once downloaded go to the download directory and execute the following using your download file name:&lt;br /&gt;
&lt;br /&gt;
 host$ chmod u+x ''&amp;lt;QtCreator.bin&amp;gt;''&lt;br /&gt;
 host$ ./''&amp;lt;QtCreator.bin&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
''Update:''The free version Qt Creator can not be used in this project since it doesn't have cross-compile option with it.&lt;br /&gt;
&lt;br /&gt;
After Qt Creator is successfully installed, start Qt Creator. Go to: Tools &amp;gt; Options &amp;gt; Build &amp;amp; Run &amp;gt; Tool Chains, select Add -&amp;gt; GCC and insert the full compiler path below:&lt;br /&gt;
&lt;br /&gt;
/usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++&lt;br /&gt;
&lt;br /&gt;
Then go to: Tools &amp;gt; Options &amp;gt; Build &amp;amp; Run &amp;gt; Qt Versions, select Add and provide the following full path to qmake&lt;br /&gt;
&lt;br /&gt;
/opt/qt-arm/bin/qmake&lt;br /&gt;
&lt;br /&gt;
Press Apply and OK.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Setting up the BeagleBoard-xM &lt;br /&gt;
&lt;br /&gt;
All of the Qt files that you need to move to the BeagleBoard can be found in the /opt/qt-arm/lib directory on your Linux Build System. Copy all the files out of your build system's /opt/qt-arm/lib directory and put those into the BeagleBoard-xM's /opt/qt-arm/lib directory. You can get the files to the Beagleboard by either networking, using a usb drive or plug the SD card into your Linux Build System.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Include your [https://github.com/ github] path as a link like this:  [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn].  &lt;br /&gt;
* Include any additional packages installed via '''opkg'''.&lt;br /&gt;
* Include kernel mods.&lt;br /&gt;
* If there is extra hardware needed, include links to where it can be obtained.&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
To build QtTracking Sample:&lt;br /&gt;
&lt;br /&gt;
1. Start Qt Creator.&lt;br /&gt;
&lt;br /&gt;
2. Go to: File &amp;gt; Open File or Project, select the QtTracking-SDK.pro project (from Beckon-SDK-{version}/samples/QtTracking) and click Open. Select Embedded Linux instead of Desktop.&lt;br /&gt;
&lt;br /&gt;
3. Click Finish.&lt;br /&gt;
&lt;br /&gt;
4. Go to Projects tab (on the left), In Qt version select Qt [4.x.x (qt-arm)]/.&lt;br /&gt;
&lt;br /&gt;
5. Run Build -&amp;gt; Build Project command.&lt;br /&gt;
&lt;br /&gt;
The result executable can be found in the Beckon-SDK-{version}/bin directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To run the QtTracking Sample:&lt;br /&gt;
&lt;br /&gt;
1. Mount or copy the bin directory to the BeagleBoard.&lt;br /&gt;
&lt;br /&gt;
''Note: Run the reset.sh script inside the &amp;quot;bin&amp;quot; folder of the SDK before each sample run, to reset the DSP.''&lt;br /&gt;
&lt;br /&gt;
Run the following:&lt;br /&gt;
&lt;br /&gt;
 beagle$ ./QtTracking-SDK –qws&lt;br /&gt;
&lt;br /&gt;
''Note: Developer's guide has more instructions on running the sample''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Others are coming soon.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Coming soon.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
We are using the kinect as the sensor of our project. The provided algorithm of the kinect make it possible for us to get the coordinate of many joints of the body. In this case, we can judge the position and the motivation of our hands or any other joints. Then, we can use the direction we get from the previous judgement to control the Greedy Snake. Our project is running with the idea.&lt;br /&gt;
&lt;br /&gt;
Tenically, we can use QT to design our program and then cross-complie our project to the beagle-board. The Greedy Snake is an open-source QT game, and the tracking of the joint can be accomplished from modifying the Omek SDK. We have to modify both of their codes to connect the two parts together. &lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
* '''Previous Work Breakdown:'''&lt;br /&gt;
''' Yue Zhang '''&lt;br /&gt;
* Researched how to Burn the correct Image to the Beagle Board.&lt;br /&gt;
* Configure the Beagle Board to control the kinect.&lt;br /&gt;
* Implemented the motivation based algorithm which makes the application runs more smoothly.&lt;br /&gt;
* Programmed for the part of motivation algorithm.&lt;br /&gt;
''' Xinyu Cheng '''&lt;br /&gt;
* Researched how to configure the QT programming environment. &lt;br /&gt;
* Accomplished the cross-compiling on QT.&lt;br /&gt;
* Programming for the connection between the Snake Game and the Kinect SDK.&lt;br /&gt;
* Designed and Implemented the coordinate based algorithm.&lt;br /&gt;
''' Xia Li '''&lt;br /&gt;
* Researched how to run the provided SDK demo.&lt;br /&gt;
* Speed up for the demo.&lt;br /&gt;
* Designed the motivation based algorithm. &lt;br /&gt;
* Programmed to improved the accuracy and speed of the game.&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
&lt;br /&gt;
Now, our game can work pretty good and smoothly. The future work for the project will mainly about how to improve the user interface and the game rules. We can also improve our algorithm for the direction judgement.&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Conculsionly, our project works pretty good. Our Greedy Snake game runs very good and brings a lot of fun for us. During the develop process, we met lots of difficulties, we tried to solve them one by one. Finally, we solved almost all the problems and end up with a nice project.&lt;br /&gt;
&lt;br /&gt;
{{YoderFoot}}&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Kinect</id>
		<title>ECE497 Project: Kinect</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Kinect"/>
				<updated>2012-11-14T00:14:53Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497 |Project]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Astroricks|Yue Zhang]], [[user:Xinyu1991|Xinyu Cheng]], [[user:Lix|Xia Li]].&lt;br /&gt;
&lt;br /&gt;
== Grading Template ==&lt;br /&gt;
I'm using the following template to grade.  Each slot is 10 points.&lt;br /&gt;
0 = Missing, 5=OK, 10=Wow!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
00 Executive Summary&lt;br /&gt;
00 Installation Instructions&lt;br /&gt;
00 User Instructions&lt;br /&gt;
00 Highlights&lt;br /&gt;
00 Theory of Operation&lt;br /&gt;
00 Work Breakdown&lt;br /&gt;
00 Future Work&lt;br /&gt;
00 Conclusions&lt;br /&gt;
00 Demo&lt;br /&gt;
00 Late&lt;br /&gt;
Comments:&lt;br /&gt;
&lt;br /&gt;
Score:  00/100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;(Inline Comment)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
I believe that almost every college students have played a game called &amp;quot;Greedy Snake&amp;quot; in our childhood. At that time, we play it on the cellphone, on the computer or on the PSP. However, we are always using the keyboard to control the games we played. Now, our final project could bring you something new, that is a &amp;quot;Gesture Controlled Greedy Snake&amp;quot;. It means that, using the gesture, the keyboard is never required to play the game. Amazing? Read the following wiki to know how we make it happens!&lt;br /&gt;
&lt;br /&gt;
Basically, we are using the kinect from Microsoft and the Beagle Board XM from Texas Instrument to accomplish our gesture game. The program for the game is programmed on the QT-Linux. Besides, we use the cross compiling to compile the program to make the game can be run on the beagle board.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Until now, we have a good begining with the demos runs succefully. We still need some time to finish the following work.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
&lt;br /&gt;
We are using the drivers provided by [http://www.omekinteractive.com/ Omek]. The driver files can be found at the Beckon™ SDK 2.4 – BeagleBoard-xM Edition [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/32/11/installation installation] page, and a developer's guide is provided at the [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/34/11/documentation documentation] page. (You may need to register first.) Instructions in this [http://treyweaver.blogspot.com/2010/10/setting-up-qt-development-environment.html blog] are also very useful.&lt;br /&gt;
&lt;br /&gt;
Although the developer's guide introduces how to do the installation and configuration, we have found that it takes much longer than we originally thought and errors came out occationally. It seems that the developer's guide is not very well organized and not detailed enought anyway. So we arranged our instruction and configuration procedures as below:&lt;br /&gt;
&lt;br /&gt;
1. Download the image package and burn it into the SD card&lt;br /&gt;
&lt;br /&gt;
Download the image package [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/32/11/installation Beckon-Image-2.4.19872.tar.gz] as mentioned above onto your Linux PC. Then extract it by entering&lt;br /&gt;
&lt;br /&gt;
 host$ tar -xvzf ''&amp;lt;ImageFileName&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
Run the following command to make sure you have bash installed.&lt;br /&gt;
&lt;br /&gt;
 host$ sudo apt-get install bash&lt;br /&gt;
&lt;br /&gt;
Insert your SD card using a card reader/writer. Run the following command:&lt;br /&gt;
&lt;br /&gt;
 host$ sudo bash mkcard.sh /dev/''&amp;lt;sdX&amp;gt;'' beagle-omek&lt;br /&gt;
&lt;br /&gt;
''Note: This action will wipe out and rewrite the SD card so make sure the files in it are backed up. The name of the SD card can be viewed in Disk Utility. If you mistakenly use the main OS device name this script can erase your entire OS.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Run the sample application&lt;br /&gt;
&lt;br /&gt;
Plug the sensor into the BeagleBoard-xM USB port. Ensure the mouse and keyboard are connected to the BeagleBoard-xM USB port. Connect the BeagleBoard-xM to the monitor with an HDMI cable. Connect the BeagleBoard-xM power supply and wait for the boot process to reach the login prompt, login as user root (no password is required). Now it's ready to run the sample applications on the BeagleBoard-xM.&lt;br /&gt;
&lt;br /&gt;
''Note: Details about running the samples can be found in the developer's guide from page 9 to 11. The Kinect will react properly only if the player is within an appropriate distance (about 1m - 5m). ''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Setting up your Linux development PC&lt;br /&gt;
&lt;br /&gt;
Download [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/32/11/installation Beckon-SDK-2.4.19872.tar.gz] and extract it onto your host PC (this is the actual SDK which contains headers, libraries, documentation, makefiles, etc...) The SDK provides the tools to develop a motion-tracking and gesture-based application that can run on the BeagleBoard-xM. After developing the application, cross-compile it onto the Linux PC and then copy the image onto the BeagleBoard-xM via external USB storage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Download the Linux ARM cross toolchain:&lt;br /&gt;
&lt;br /&gt;
For 32-bit Ubuntu you will want to download this file: http://www.angstrom-distribution.org/toolchains/angstrom-2011.03-i686-linux-armv7a-linux-gnueabi-toolchain-qte-4.6.3.tar.bz2&lt;br /&gt;
&lt;br /&gt;
For 64-bit Ubuntu you will want to download this file: http://www.angstrom-distribution.org/toolchains/angstrom-2011.03-x86_64-linux-armv7a-linux-gnueabi-toolchain-qte-4.6.3.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Extract the downloaded archive into your system root directory:&lt;br /&gt;
&lt;br /&gt;
 host$ sudo tar -xvjf ''&amp;lt;ToolchainFileName&amp;gt;'' -C /&lt;br /&gt;
&lt;br /&gt;
''Note: If you extract the archive into a different directory, you should adjust the following instructions as well as the samples' makefiles accordingly.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Install the Qt embedded SDK for Angstrom/BeagleBoard:&lt;br /&gt;
&lt;br /&gt;
Now that you have your cross compiler installed, you can compile Qt with it. First thing to do is to install zlib library:&lt;br /&gt;
&lt;br /&gt;
 host$ sudo apt-get install zlib1g-dev&lt;br /&gt;
&lt;br /&gt;
Then download the Open Source LGPL version of Qt libraries 4.6.2 for Embedded Linux [http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.6.2.tar.gz here]. &lt;br /&gt;
&lt;br /&gt;
''Note: Newest version of Qt libraries can be found [http://qt-project.org/downloads/ here]. We didn't test it since the 4.6.2 version works fine.''&lt;br /&gt;
&lt;br /&gt;
Extract the file you just downloaded:&lt;br /&gt;
&lt;br /&gt;
 host$ tar -xvzf ''&amp;lt;DownloadFileName&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
You need to create a new make.conf. Run the following line to make a new mkspecs directory for the BeagleBoard Processor.&lt;br /&gt;
&lt;br /&gt;
 host$ cp -R ''&amp;lt;DownloadDirectory&amp;gt;''/mkspecs/qws/linux-arm-g++/ ''&amp;lt;DownloadDirectory&amp;gt;''/mkspecs/qws/linux-DM3730-g++/&lt;br /&gt;
&lt;br /&gt;
Edit the qmake.conf file found in ''&amp;lt;DownloadDirectory&amp;gt;''/mkspecs/qws/linux-DM3730-g++/ and overwrite it with the following lines.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# qmake configuration for building with arm-linux-g++&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
include(../../common/g++.conf)&lt;br /&gt;
include(../../common/linux.conf)&lt;br /&gt;
include(../../common/qws.conf)&lt;br /&gt;
&lt;br /&gt;
# modifications to g++.conf&lt;br /&gt;
#Toolchain&lt;br /&gt;
&lt;br /&gt;
#Compiler Flags to take advantage of the ARM architecture&lt;br /&gt;
QMAKE_CFLAGS_RELEASE =   -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp&lt;br /&gt;
QMAKE_CXXFLAGS_RELEASE = -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp&lt;br /&gt;
&lt;br /&gt;
QMAKE_CC = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/gcc&lt;br /&gt;
QMAKE_CXX = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++&lt;br /&gt;
QMAKE_LINK = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++&lt;br /&gt;
QMAKE_LINK_SHLIB = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++&lt;br /&gt;
&lt;br /&gt;
# modifications to linux.conf&lt;br /&gt;
QMAKE_AR = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/ar cqs&lt;br /&gt;
QMAKE_OBJCOPY = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/objcopy&lt;br /&gt;
QMAKE_STRIP = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/strip&lt;br /&gt;
&lt;br /&gt;
load(qt_config)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now run the configure command (see this [http://processors.wiki.ti.com/index.php/Building_Qt website] for more details if needed):&lt;br /&gt;
&lt;br /&gt;
 host$ cd ''&amp;lt;DownloadDirectory&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
For 32-bit Ubuntu:&lt;br /&gt;
&lt;br /&gt;
 host$ ./configure -opensource -confirm-license -prefix /opt/qt-arm -no-qt3support -embedded arm -little-endian -xplatform qws/linux-DM3730-g++ -qtlibinfix E&lt;br /&gt;
&lt;br /&gt;
For 64-bit Ubuntu:&lt;br /&gt;
&lt;br /&gt;
 host$ ./configure -opensource -confirm-license -prefix /opt/qt-arm -no-qt3support -embedded arm -little-endian -platform qws/linux-x86_64-g++ -xplatform qws/linux-DM3730-g++ -qtlibinfix E&lt;br /&gt;
&lt;br /&gt;
Once this is complete you can run make and make install (make may take some hours):&lt;br /&gt;
&lt;br /&gt;
 host$ make&lt;br /&gt;
 host$ sudo make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Install and set up Qt Creator:&lt;br /&gt;
&lt;br /&gt;
Go to http://qt-project.org/downloads to download Qt. Get the latest version of Qt for Linux/X11; be sure to get the appropriate 32bit or 64bit version. Once downloaded go to the download directory and execute the following using your download file name:&lt;br /&gt;
&lt;br /&gt;
 host$ chmod u+x ''&amp;lt;QtCreator.bin&amp;gt;''&lt;br /&gt;
 host$ ./''&amp;lt;QtCreator.bin&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
''Update:''The free version Qt Creator can not be used in this project since it doesn't have cross-compile option with it.&lt;br /&gt;
&lt;br /&gt;
After Qt Creator is successfully installed, start Qt Creator. Go to: Tools &amp;gt; Options &amp;gt; Build &amp;amp; Run &amp;gt; Tool Chains, select Add -&amp;gt; GCC and insert the full compiler path below:&lt;br /&gt;
&lt;br /&gt;
/usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/bin/g++&lt;br /&gt;
&lt;br /&gt;
Then go to: Tools &amp;gt; Options &amp;gt; Build &amp;amp; Run &amp;gt; Qt Versions, select Add and provide the following full path to qmake&lt;br /&gt;
&lt;br /&gt;
/opt/qt-arm/bin/qmake&lt;br /&gt;
&lt;br /&gt;
Press Apply and OK.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Setting up the BeagleBoard-xM &lt;br /&gt;
&lt;br /&gt;
All of the Qt files that you need to move to the BeagleBoard can be found in the /opt/qt-arm/lib directory on your Linux Build System. Copy all the files out of your build system's /opt/qt-arm/lib directory and put those into the BeagleBoard-xM's /opt/qt-arm/lib directory. You can get the files to the Beagleboard by either networking, using a usb drive or plug the SD card into your Linux Build System.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Include your [https://github.com/ github] path as a link like this:  [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn].  &lt;br /&gt;
* Include any additional packages installed via '''opkg'''.&lt;br /&gt;
* Include kernel mods.&lt;br /&gt;
* If there is extra hardware needed, include links to where it can be obtained.&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
To build QtTracking Sample:&lt;br /&gt;
&lt;br /&gt;
1. Start Qt Creator.&lt;br /&gt;
&lt;br /&gt;
2. Go to: File &amp;gt; Open File or Project, select the QtTracking-SDK.pro project (from Beckon-SDK-{version}/samples/QtTracking) and click Open. Select Embedded Linux instead of Desktop.&lt;br /&gt;
&lt;br /&gt;
3. Click Finish.&lt;br /&gt;
&lt;br /&gt;
4. Go to Projects tab (on the left), In Qt version select Qt [4.x.x (qt-arm)]/.&lt;br /&gt;
&lt;br /&gt;
5. Run Build -&amp;gt; Build Project command.&lt;br /&gt;
&lt;br /&gt;
The result executable can be found in the Beckon-SDK-{version}/bin directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To run the QtTracking Sample:&lt;br /&gt;
&lt;br /&gt;
1. Mount or copy the bin directory to the BeagleBoard.&lt;br /&gt;
&lt;br /&gt;
''Note: Run the reset.sh script inside the &amp;quot;bin&amp;quot; folder of the SDK before each sample run, to reset the DSP.''&lt;br /&gt;
&lt;br /&gt;
Run the following:&lt;br /&gt;
&lt;br /&gt;
 beagle$ ./QtTracking-SDK –qws&lt;br /&gt;
&lt;br /&gt;
''Note: Developer's guide has more instructions on running the sample''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Others are coming soon.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Coming soon.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
We are using the kinect as the sensor of our project. The provided algorithm of the kinect make it possible to recognize our gesture and motion. In this case, the gesture and motion can take the place of the mouse. Our project is running with the idea.&lt;br /&gt;
&lt;br /&gt;
We can use QT to design our program and then cross-complie our project to the beagle-board. According to the cross-compiling of the sample project: Tracking-SDK, we have got a pretty good demo. Hence, it is possible for us to design an interesting gesture game on the QT platform and then run it on the beagle board with the kinect.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
* '''Previous Work Breakdown:'''&lt;br /&gt;
''' Yue Zhang '''&lt;br /&gt;
* Researched how to Burn the correct Image to the Beagle Board.&lt;br /&gt;
* Configure the Beagle Board to control the kinect.&lt;br /&gt;
''' Xinyu Cheng '''&lt;br /&gt;
* Researched how to configure the QT programming environment. &lt;br /&gt;
* Realize the cross-compiling on QT.&lt;br /&gt;
''' Xia Li '''&lt;br /&gt;
* Researched how to run the provided demo.&lt;br /&gt;
* How to speed up the demo.&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
&lt;br /&gt;
Our future work is to design an interactive game which can be controlled through our gestures.&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;br /&gt;
&lt;br /&gt;
{{YoderFoot}}&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Contributions_and_Project_Status</id>
		<title>ECE497 Contributions and Project Status</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Contributions_and_Project_Status"/>
				<updated>2012-11-05T20:56:49Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497 |Contributions]]&lt;br /&gt;
{{YoderHead}}&lt;br /&gt;
&lt;br /&gt;
== Fall 2012 ==&lt;br /&gt;
&lt;br /&gt;
=== Project Status ===&lt;br /&gt;
&lt;br /&gt;
Please edit this page and add your project to this list. Copy my [[ECE497 Project Template]] to your own eLinux page and include the title of your project in the name of the page.  &lt;br /&gt;
&lt;br /&gt;
Please make the list alphabetical by family name.&lt;br /&gt;
&lt;br /&gt;
Take a look at what you and others have contributed.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
! Name&lt;br /&gt;
! Contributions&lt;br /&gt;
! Project&lt;br /&gt;
! git repository&lt;br /&gt;
|-&lt;br /&gt;
| [[User:atniptw | Tom Atnip]]&lt;br /&gt;
| &lt;br /&gt;
| [[ECE497 Beagle VNS | Beagle VNS]]&lt;br /&gt;
| [https://github.com/atniptw/ atniptw]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:larmorgs | Greg Larmore]]&lt;br /&gt;
| &lt;br /&gt;
| [[ECE497 Project Template | My Beagle Project]]&lt;br /&gt;
| [https://github.com/larmorgs/ larmorgs]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:jessebrannon | Jesse Brannon]]&lt;br /&gt;
| &lt;br /&gt;
| [[ECE497 Project Rover | Rover]]&lt;br /&gt;
| [https://github.com/brannojs/ brannojs]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Xinyu1991 | Xinyu Cheng]]&lt;br /&gt;
| [[Special:Contributions/Xinyu1991|contrib]]&lt;br /&gt;
| [[ECE497_Project:_Kinect | Kinect]]&lt;br /&gt;
| [https://github.com/xinyu1991/ Xinyu Cheng]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:correlbn | Bryan Correll]]&lt;br /&gt;
| [[Special:Contributions/correlbn|contrib]]&lt;br /&gt;
| [[BeagleBone PRU | BeagleBone PRU]]&lt;br /&gt;
| [https://github.com/correlbn/My-Beagle-Project/ Correlbn]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:draneaw | Alex Drane]]&lt;br /&gt;
| &lt;br /&gt;
| [[ECE497 draneaw Project | My Beagle Project]]&lt;br /&gt;
| [https://github.com/draneaw/My-Beagle-Project draneaw]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:duganje | Josh Dugan]]&lt;br /&gt;
| &lt;br /&gt;
| [[ECE497 Project: XBee|XBee]]&lt;br /&gt;
| [https://github.com/duganje/ duganje]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Geislekj | Kevin Geisler]]&lt;br /&gt;
| &lt;br /&gt;
| [[ECE497 Beagle VNS | Beagle VNS]]&lt;br /&gt;
| [https://github.com/geislekj/ geislekj]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[User:chris.good | Christopher A Good]]&lt;br /&gt;
| [[Special:Contributions/Chris.good|contrib]]&lt;br /&gt;
| [[ECE497 Project RoverGUI | RoverGUI]]&lt;br /&gt;
| [https://github.com/goodca/ goodca]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[User:hansenrl | Ross Hansen]]&lt;br /&gt;
| [[Special:Contributions/hansenrl|contrib]]&lt;br /&gt;
| [[ECE497 Project Rover | Rover]]&lt;br /&gt;
| [https://github.com/hansenrl/ Hansenrl]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[User:jungeml | Michael Junge]]&lt;br /&gt;
| [[Special:Contributions/jungeml|contrib]]&lt;br /&gt;
| [[ECE497 Project Rover | Rover]]&lt;br /&gt;
| [https://github.com/jungeml/ Jungeml]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Lix | Xia Li]]&lt;br /&gt;
| [[Special:Contributions/Lix|contrib]]&lt;br /&gt;
| [[ECE497 Lix Project | My Beagle Project]]&lt;br /&gt;
| [https://github.com/1984xiali/ xiali]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:mmoravec | Matthew Moravec]]&lt;br /&gt;
| [[Special:Contributions/mmoravec|contrib]]&lt;br /&gt;
| [[ECE497 Project: XBee|XBee]]&lt;br /&gt;
| [https://github.com/mmoravec/ mmoravec]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:ngop | Peter Ngo]]&lt;br /&gt;
| &lt;br /&gt;
| [[ECE497 ngop Project: Beaglebone PRU|Beaglebone PRU]]&lt;br /&gt;
| [https://github.com/ngop/ ngop]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[User:shinnsm|Stephen Shinn]]&lt;br /&gt;
| [[Special:Contributions/shinnsm|contrib]]&lt;br /&gt;
| [[ECE497 Project: XBee|XBee]]&lt;br /&gt;
| [https://github.com/shinnsm shinnsm]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Yoder | Mark A. Yoder]]&lt;br /&gt;
| [[Special:Contributions/Yoder | contrib]]&lt;br /&gt;
| [[ECE497 Project Template | My Beagle Project]]&lt;br /&gt;
| [https://github.com/MarkAYoder MarkAYoder]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Popenhjc | James Popenhagen]]&lt;br /&gt;
| &lt;br /&gt;
| [[BeagleBone PRU | BeagleBone PRU]]&lt;br /&gt;
| [https://github.com/popenhjc/ popenhjc]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Whiteer | Elias White]]&lt;br /&gt;
| &lt;br /&gt;
| [[ECE497 SLAM via ROS | My Beagle Project]]&lt;br /&gt;
| [https://github.com/whiteer whiteer]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:ruff | Ruffin White]]&lt;br /&gt;
| &lt;br /&gt;
| [[ECE497 Beagle VNS | Beagle VNS]]&lt;br /&gt;
| [https://github.com/ruffsl/ ruffsl]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Richarsm | Sean Richardson]]&lt;br /&gt;
| &lt;br /&gt;
| [[ECE497 richarsm Project | My Beagle Project]]&lt;br /&gt;
| [https://github.com/seanrich Sean Richardson]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Millerap | Andrew Miller]]&lt;br /&gt;
|&lt;br /&gt;
| [[ECE 497 millerap Project | My Beagle Project]]&lt;br /&gt;
| [https://github.com/millerap millerap]&lt;br /&gt;
|-| &lt;br /&gt;
| [[User:Astroricks | Yue Zhang]]&lt;br /&gt;
| &lt;br /&gt;
| [[ECE497 Yue Zhang Project | My Beagle Project]]&lt;br /&gt;
| [https://github.com/Astroricks/Beagle-Project Yue Zhang]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Lobdeljt | John Lobdell]]&lt;br /&gt;
| &lt;br /&gt;
| [[ECE 497 lobdeljt Project | My Beagle Project]]&lt;br /&gt;
| [https://github.com/jtlobdell jtlobdell]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Winter 2011-2012 ==&lt;br /&gt;
&lt;br /&gt;
=== Contributions ===&lt;br /&gt;
&lt;br /&gt;
# [[Special:Contributions/Yuming | Yuming Cao]]&lt;br /&gt;
# [[Special:Contributions/Yifei | Yifei Li]]&lt;br /&gt;
# [[Special:Contributions/Harrisgw | Greg Harrison]]&lt;br /&gt;
# [[Special:Contributions/mac | Jack Ma]]&lt;br /&gt;
# [[Special:Contributions/Gemini91 | Guanqun Wang]]&lt;br /&gt;
# [[Special:Contributions/Yanj | Mona Yan]]&lt;br /&gt;
# [[Special:Contributions/Yoder | Mark A. Yoder]]&lt;br /&gt;
# [[Special:Contributions/Yuhasmj | Michael Yuhas]]&lt;br /&gt;
# [[Special:Contributions/Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
# [[Special:Contributions/Zitnikdj | David Zitnik]]&lt;br /&gt;
# [[Special:Contributions/Zitnikdj | Alex Drane]]&lt;br /&gt;
# [[Special:Contributions/jessebrannon | Jesse Brannon]]&lt;br /&gt;
# [[Special:Contributions/larmorgs | Greg Larmore]]&lt;br /&gt;
# [[Special:Contributions/jungeml | Michael Junge]]&lt;br /&gt;
# [[Special:Contributions/millerap | Andrew Miller]]&lt;br /&gt;
# [[Special:Contributions/correlbn | Bryan Correll]]&lt;br /&gt;
&lt;br /&gt;
=== Project Status ===&lt;br /&gt;
&lt;br /&gt;
# [[User:Yoder | Mark A. Yoder]], [[ECE497 Project Template | My Beagle Project]]&lt;br /&gt;
# [[user:Yanj|Mona Yan]] and [[user:Harrisgw| Greg Harrison]], [[PS EYE QT PROJECT | Playstation Eye Audio with Qt]]&lt;br /&gt;
# [[user:Caogecym | Yuming Cao]] and [[user:Ziyi Zhang | Ziyi Zhang]], [[Node.js Weather Station]]&lt;br /&gt;
# [[user:Yifei| Yifei Li]] and [[user:Gemini91| Guanqun Wang]], [[ Kinect Project | Play games using Kinect on Beagleboard]]&lt;br /&gt;
# [[user:Yuhasmj| Michael J. Yuhas]] and [[user:mac | Jack Ma]], [[ Multiple Partitions via U-boot | Multiple Partitions via U-boot ]]&lt;br /&gt;
# [[user:Zitnikdj| David Zitnik]], [[ ECE497 Project: Twitter Java Application | Twitter Java Application ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{YoderFoot}}&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Kinect</id>
		<title>ECE497 Project: Kinect</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Kinect"/>
				<updated>2012-11-05T06:49:42Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497 |Project]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Astroricks|Yue Zhang]], [[user:Xinyu1991|Xinyu Cheng]], [[user:Lix|Xia Li]].&lt;br /&gt;
&lt;br /&gt;
== Grading Template ==&lt;br /&gt;
I'm using the following template to grade.  Each slot is 10 points.&lt;br /&gt;
0 = Missing, 5=OK, 10=Wow!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
00 Executive Summary&lt;br /&gt;
00 Installation Instructions&lt;br /&gt;
00 User Instructions&lt;br /&gt;
00 Highlights&lt;br /&gt;
00 Theory of Operation&lt;br /&gt;
00 Work Breakdown&lt;br /&gt;
00 Future Work&lt;br /&gt;
00 Conclusions&lt;br /&gt;
00 Demo&lt;br /&gt;
00 Late&lt;br /&gt;
Comments:&lt;br /&gt;
&lt;br /&gt;
Score:  00/100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;(Inline Comment)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
Our project is using kinect to accomplish a kind of &amp;quot;Gesture Game&amp;quot;, which is operated through our gestures and motions. Compared to the traditional games, the gesture game can provide better interactive enjoy without the complex operation from the keyboard and mouse.&lt;br /&gt;
&lt;br /&gt;
Through our previous work, we have alread completed the configuration of our project successfully. The configuration work includes the configure of the Beagle Board and the configure of the QT IDE. Now, we can run the Tracking Demo and the Gesture Demo on the Beagle Board. We can also download our projects to the Beagle Board through cross-compiling.&lt;br /&gt;
&lt;br /&gt;
Our work ahead is looking for an interative game, and transplant the game to the QT platform. Then, download the game to the Beagle Board. In that case, the game can be played on the Kinect.&lt;br /&gt;
&lt;br /&gt;
Until now, we have a good begining with the demos runs succefully. We still need some time to finish the following work.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
&lt;br /&gt;
We are using the drivers provided by [http://www.omekinteractive.com/ Omek]. The driver files can be found at the Beckon™ SDK 2.4 – BeagleBoard-xM Edition [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/32/11/installation installation] page and a developer's guide is provided at the [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/34/11/documentation documentation] page. (You may need to register first.)&lt;br /&gt;
&lt;br /&gt;
Although the developer's guide introduces how to do the installation and configuration, we have found that it takes much longer than we originally thought and errors came out occationally. It seems that the developer's guide is not very well organized and detailed enought anyway. So we arranged our instruction and configuration procedures as below:&lt;br /&gt;
&lt;br /&gt;
1. Download the image package and burn it into the SD card&lt;br /&gt;
Download the [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/32/11/installation image package] as mentioned above onto your Linux PC. Then extract it by entering&lt;br /&gt;
&lt;br /&gt;
 host$ tar -xvzf ''imagefilename''&lt;br /&gt;
&lt;br /&gt;
Run the following command to make sure you have bash installed.&lt;br /&gt;
&lt;br /&gt;
 host$ sudo apt-get install bash&lt;br /&gt;
&lt;br /&gt;
Insert your SD card using a card reader/writer. Run the following command:&lt;br /&gt;
&lt;br /&gt;
 host$ sudo bash mkcard.sh /dev/''sdX'' beagle-omek&lt;br /&gt;
&lt;br /&gt;
''Warning: This move will wipe out and rewrite the SD card so make sure the files in it are backed up. The name of the SD card can be viewed in Disk Utility. If you mistakenly use the main OS device name this script can erase your entire OS.''  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Include your [https://github.com/ github] path as a link like this:  [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn].  &lt;br /&gt;
* Include any additional packages installed via '''opkg'''.&lt;br /&gt;
* Include kernel mods.&lt;br /&gt;
* If there is extra hardware needed, include links to where it can be obtained.&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Coming soon.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Coming soon.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
We are using the kinect as the sensor of our project. The provided algorithm of the kinect make it possible to recognize our gesture and motion. In this case, the gesture and motion can take the place of the mouse. Our project is running with the idea.&lt;br /&gt;
&lt;br /&gt;
We can use QT to design our program and then cross-complie our project to the beagle-board. According to the cross-compiling of the sample project: Tracking-SDK, we have got a pretty good demo. Hence, it is possible for us to design an interesting gesture game on the QT platform and then run it on the beagle board with the kinect.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
* '''Previous Work Breakdown:'''&lt;br /&gt;
''' Yue Zhang '''&lt;br /&gt;
* Researched how to Burn the correct Image to the Beagle Board.&lt;br /&gt;
* Configure the Beagle Board to control the kinect.&lt;br /&gt;
''' Xinyu Cheng '''&lt;br /&gt;
* Researched how to configure the QT programming environment. &lt;br /&gt;
* Realize the cross-compiling on QT.&lt;br /&gt;
''' Xia Li '''&lt;br /&gt;
* Researched how to run the provided demo.&lt;br /&gt;
* How to speed up the demo.&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
&lt;br /&gt;
Our future work is to design an interactive game which can be controlled through our gestures.&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;br /&gt;
&lt;br /&gt;
{{YoderFoot}}&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Kinect</id>
		<title>ECE497 Project: Kinect</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Kinect"/>
				<updated>2012-11-05T06:33:51Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497 |Project]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Astroricks|Yue Zhang]], [[user:Xinyu1991|Xinyu Cheng]], [[user:Lix|Xia Li]].&lt;br /&gt;
&lt;br /&gt;
== Grading Template ==&lt;br /&gt;
I'm using the following template to grade.  Each slot is 10 points.&lt;br /&gt;
0 = Missing, 5=OK, 10=Wow!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
00 Executive Summary&lt;br /&gt;
00 Installation Instructions&lt;br /&gt;
00 User Instructions&lt;br /&gt;
00 Highlights&lt;br /&gt;
00 Theory of Operation&lt;br /&gt;
00 Work Breakdown&lt;br /&gt;
00 Future Work&lt;br /&gt;
00 Conclusions&lt;br /&gt;
00 Demo&lt;br /&gt;
00 Late&lt;br /&gt;
Comments:&lt;br /&gt;
&lt;br /&gt;
Score:  00/100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;(Inline Comment)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
Our project aims to accomplish a kind of &amp;quot;Gesture Game&amp;quot;, which is operated through our gestures and motions. Compared to the traditional games, the gesture game can provide better interactive enjoy without the complex operation from the keyboard and mouse.&lt;br /&gt;
&lt;br /&gt;
Through our previous work, we have alread completed the configuration of our project successfully. The configuration work includes the configure of the Beagle Board and the configure of the QT IDE. Now, we can run the Tracking Demo and the Gesture Demo on the Beagle Board. We can also download our projects to the Beagle Board through cross-compiling.&lt;br /&gt;
&lt;br /&gt;
Our work ahead is looking for an interative game, and transplant the game to the QT platform. Then, download the game to the Beagle Board. In that case, the game can be played on the Kinect.&lt;br /&gt;
&lt;br /&gt;
Until now, we have a good begining with the demos runs succefully. We still need some time to finish the following work.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
&lt;br /&gt;
We are using the drivers provided by [http://www.omekinteractive.com/ Omek]. The driver files can be found at the Beckon™ SDK 2.4 – BeagleBoard-xM Edition [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/32/11/installation installation] page and a developer's guide is provided at the [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/34/11/documentation documentation] page. (You may need to register first.)&lt;br /&gt;
&lt;br /&gt;
Although the developer's guide introduces how to do the installation and configuration, we have found that it takes much longer than we originally thought and errors came out occationally. It seems that the developer's guide is not very well organized and detailed enought anyway. So we arranged our instruction and configuration procedures as below:&lt;br /&gt;
&lt;br /&gt;
1. Download the image package and burn it into the SD card&lt;br /&gt;
Download the [http://support.omekinteractive.com/index.php?/TI/managedownloads/Download/View/32/11/installation image package] as mentioned above onto your Linux PC. Then extract it by entering&lt;br /&gt;
&lt;br /&gt;
 host$ tar -xvzf ''imagefilename''&lt;br /&gt;
&lt;br /&gt;
Run the following command to make sure you have bash installed.&lt;br /&gt;
&lt;br /&gt;
 host$ sudo apt-get install bash&lt;br /&gt;
&lt;br /&gt;
Insert your SD card using a card reader/writer. Run the following command:&lt;br /&gt;
&lt;br /&gt;
 host$ sudo bash mkcard.sh /dev/''sdX'' beagle-omek&lt;br /&gt;
&lt;br /&gt;
''Warning: This move will wipe out and rewrite the SD card so make sure the files in it are backed up. The name of the SD card can be viewed in Disk Utility. If you mistakenly use the main OS device name this script can erase your entire OS.''  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Include your [https://github.com/ github] path as a link like this:  [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn].  &lt;br /&gt;
* Include any additional packages installed via '''opkg'''.&lt;br /&gt;
* Include kernel mods.&lt;br /&gt;
* If there is extra hardware needed, include links to where it can be obtained.&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Include a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
* Previous Work Breakdown:&lt;br /&gt;
''' Yue Zhang '''&lt;br /&gt;
* Researched how to Burn the correct Image to the Beagle Board.&lt;br /&gt;
* Configure the Beagle Board to control the kinect.&lt;br /&gt;
''' Xinyu Cheng '''&lt;br /&gt;
* Researched how to configure the QT programming environment. &lt;br /&gt;
* Realize the cross-compiling on QT.&lt;br /&gt;
''' Xia Li '''&lt;br /&gt;
* Researched how to run the provided demo.&lt;br /&gt;
* How to speed up the demo.&lt;br /&gt;
&lt;br /&gt;
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
&lt;br /&gt;
Our future work is to design an interactive game which can be controlled through our gestures.&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;br /&gt;
&lt;br /&gt;
{{YoderFoot}}&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Kinect</id>
		<title>ECE497 Project: Kinect</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Kinect"/>
				<updated>2012-11-05T05:00:37Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497 |Project]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Astroricks|Yue Zhang]], [[user:Xinyu1991|Xinyu Cheng]], [[user:Lix|Xia Li]].&lt;br /&gt;
&lt;br /&gt;
== Grading Template ==&lt;br /&gt;
I'm using the following template to grade.  Each slot is 10 points.&lt;br /&gt;
0 = Missing, 5=OK, 10=Wow!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
00 Executive Summary&lt;br /&gt;
00 Installation Instructions&lt;br /&gt;
00 User Instructions&lt;br /&gt;
00 Highlights&lt;br /&gt;
00 Theory of Operation&lt;br /&gt;
00 Work Breakdown&lt;br /&gt;
00 Future Work&lt;br /&gt;
00 Conclusions&lt;br /&gt;
00 Demo&lt;br /&gt;
00 Late&lt;br /&gt;
Comments:&lt;br /&gt;
&lt;br /&gt;
Score:  00/100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;(Inline Comment)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
Our project aims to accomplish a kind of &amp;quot;Gesture Game&amp;quot;, which is operated through our gestures and motions. Compared to the traditional games, the gesture game can provide better interactive enjoy without the complex operation from the keyboard and mouse.&lt;br /&gt;
&lt;br /&gt;
Through our previous work, we have alread completed the configuration of our project successfully. The configuration work includes the configure of the Beagle Board and the configure of the QT IDE. Now, we can run the Tracking Demo and the Gesture Demo on the Beagle Board. We can also download our projects to the Beagle Board through cross-compiling.&lt;br /&gt;
&lt;br /&gt;
Our work ahead is looking for an interative game, and transplant the game to the QT platform. Then, download the game to the Beagle Board. In that case, the game can be played on the Kinect.&lt;br /&gt;
&lt;br /&gt;
Until now, we have a good begining with the demos runs succefully. We still need some time to finish the following work.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
&lt;br /&gt;
Give step by step instructions on how to install your project on the SPEd2 image.  &lt;br /&gt;
&lt;br /&gt;
* Include your [https://github.com/ github] path as a link like this:  [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn].  &lt;br /&gt;
* Include any additional packages installed via '''opkg'''.&lt;br /&gt;
* Include kernel mods.&lt;br /&gt;
* If there is extra hardware needed, include links to where it can be obtained.&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Include a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
List the major tasks in your project and who did what.&lt;br /&gt;
&lt;br /&gt;
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
&lt;br /&gt;
Our future work is to design an interactive game which can be controlled through our gestures.&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;br /&gt;
&lt;br /&gt;
{{YoderFoot}}&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Kinect</id>
		<title>ECE497 Project: Kinect</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Kinect"/>
				<updated>2012-11-05T04:54:08Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497 |Project]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Astroricks|Yue Zhang]], [[user:Xinyu1991|Xinyu Cheng]], [[user:Lix|Xia Li]].&lt;br /&gt;
&lt;br /&gt;
== Grading Template ==&lt;br /&gt;
I'm using the following template to grade.  Each slot is 10 points.&lt;br /&gt;
0 = Missing, 5=OK, 10=Wow!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
00 Executive Summary&lt;br /&gt;
00 Installation Instructions&lt;br /&gt;
00 User Instructions&lt;br /&gt;
00 Highlights&lt;br /&gt;
00 Theory of Operation&lt;br /&gt;
00 Work Breakdown&lt;br /&gt;
00 Future Work&lt;br /&gt;
00 Conclusions&lt;br /&gt;
00 Demo&lt;br /&gt;
00 Late&lt;br /&gt;
Comments:&lt;br /&gt;
&lt;br /&gt;
Score:  00/100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;(Inline Comment)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
Our project aims to accomplish a kind of &amp;quot;Gesture Game&amp;quot;, which is operated through our gestures and motions. Compared to the traditional games, the gesture game can provide better interactive enjoy without the complex operation from the keyboard and mouse.&lt;br /&gt;
&lt;br /&gt;
Through our previous work, we have alread completed the configuration of our project successfully. The configuration work includes the configure of the Beagle Board and the configure of the QT IDE. Now, we can run the Tracking Demo and the Gesture Demo on the Beagle Board. We can also download our projects to the Beagle Board through cross-compiling.&lt;br /&gt;
&lt;br /&gt;
Our work ahead is looking for an interative game, and transplant the game to the QT platform. Then, download the game to the Beagle Board. In that case, the game can be played on the Kinect.&lt;br /&gt;
&lt;br /&gt;
Until now, we have a good begining with the demos runs succefully. We still need some time to finish the following work.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
&lt;br /&gt;
Give step by step instructions on how to install your project on the SPEd2 image.  &lt;br /&gt;
&lt;br /&gt;
* Include your [https://github.com/ github] path as a link like this:  [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn].  &lt;br /&gt;
* Include any additional packages installed via '''opkg'''.&lt;br /&gt;
* Include kernel mods.&lt;br /&gt;
* If there is extra hardware needed, include links to where it can be obtained.&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Include a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
List the major tasks in your project and who did what.&lt;br /&gt;
&lt;br /&gt;
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
&lt;br /&gt;
Suggest addition things that could be done with this project.&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;br /&gt;
&lt;br /&gt;
{{YoderFoot}}&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Category:ECE497</id>
		<title>Category:ECE497</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Category:ECE497"/>
				<updated>2012-10-19T15:52:30Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Adafruit:_8x8_Yellow_LED_Matrix_Panel</id>
		<title>Adafruit: 8x8 Yellow LED Matrix Panel</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Adafruit:_8x8_Yellow_LED_Matrix_Panel"/>
				<updated>2012-10-16T03:22:21Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]][[Category:Adafruit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The adafriut 8*8 yellow Led matrix has been used in my mini project 2. I'm using it to display some simple pattern, Chinese characters and even some simple animation.&lt;br /&gt;
&lt;br /&gt;
The code of the project is modified from the sample code provided by Dr. Yoder. And my code has been commited to my github: [https://github.com/xinyu1991/Mini-Project-2 The github repository of Xinyu Cheng].&lt;br /&gt;
&lt;br /&gt;
Here is a display sample of the Led Matrix:&lt;br /&gt;
&lt;br /&gt;
[[File:Display Sample.JPG|500px]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Connection ==&lt;br /&gt;
&lt;br /&gt;
To ensure the matrix works properly, we need to connect the four pins in the device to the Beagle Bone. Here is a picture for the connection:&lt;br /&gt;
&lt;br /&gt;
[[File:Hardware Connection.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
As we can see in the picture, the VCC and GND are connected to the VCC and GND in the Bone. And the data pin is connected Pin D18, which is I2C2_SDA. Connect the clock pin to Pin D17, which is I2C2_SCL. After the above connection, the hardware part is done.&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
&lt;br /&gt;
The mainly work of the software here is to display the correct pattern. And the pattern can be depicted through write a correct value (1 or 0) to each LED in the matrix. 1 means the LED is on and 0 means the LED is off. &lt;br /&gt;
&lt;br /&gt;
For example, the pattern of ❤ can be displayed through the array:&lt;br /&gt;
&lt;br /&gt;
Heart_bmp[]={0x0C, 0x1E, 0x3E, 0x7C, 0x3E, 0x1E, 0x0C, 0x00};&lt;br /&gt;
&lt;br /&gt;
I have write a function to implement the display:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//The Function to Display a BMP.&lt;br /&gt;
int display(__u16 bmp[], int res, int daddress, int file)&lt;br /&gt;
{     &lt;br /&gt;
    int i;     &lt;br /&gt;
    for(i=0; i&amp;lt;8; i++)      &lt;br /&gt;
    {	block[i] = (bmp[i]&amp;amp;0xfe) &amp;gt;&amp;gt;1 |  &lt;br /&gt;
        (bmp[i]&amp;amp;0x01) &amp;lt;&amp;lt; 7;     &lt;br /&gt;
    }     &lt;br /&gt;
&lt;br /&gt;
    res = i2c_smbus_write_i2c_block_data(file, daddress, 16, 	   &lt;br /&gt;
    (__u8 *)block);     &lt;br /&gt;
&lt;br /&gt;
    usleep(400000);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The codes for the whole project can be found in my github: [https://github.com/xinyu1991/Mini-Project-2 Codes for Mini Project 2].&lt;br /&gt;
&lt;br /&gt;
== Demo Pictures of Display ==&lt;br /&gt;
&lt;br /&gt;
I desired to upload a video here. However the file type is prohibited. So, the only method I can show my work here is through the pictures:&lt;br /&gt;
&lt;br /&gt;
[[File:The Matrix Display I.JPG]]&lt;br /&gt;
&lt;br /&gt;
[[File:The Matrix Display Love.JPG]]&lt;br /&gt;
&lt;br /&gt;
[[File:The Martix Display U.JPG]]&lt;br /&gt;
&lt;br /&gt;
That's my introduce to the Led Matrix. Hope you can have an enjoy experience while using the device.&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Adafruit:_8x8_Yellow_LED_Matrix_Panel</id>
		<title>Adafruit: 8x8 Yellow LED Matrix Panel</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Adafruit:_8x8_Yellow_LED_Matrix_Panel"/>
				<updated>2012-10-16T03:18:23Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]][[Category:Adafruit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The adafriut 8*8 yellow Led matrix has been used in my mini project 2. I'm using it to display some simple pattern, Chinese characters and even some simple animation.&lt;br /&gt;
&lt;br /&gt;
The code of the project is modified from the sample code provided by Dr. Yoder. And my code has been commited to my github: [https://github.com/xinyu1991/Mini-Project-2 The github repository of Xinyu Cheng].&lt;br /&gt;
&lt;br /&gt;
Here is a display sample of the Led Matrix:&lt;br /&gt;
&lt;br /&gt;
[[File:Display Sample.JPG|500px]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Connection ==&lt;br /&gt;
&lt;br /&gt;
To ensure the matrix works properly, we need to connect the four pins in the device to the Beagle Bone. Here is a picture for the connection:&lt;br /&gt;
&lt;br /&gt;
[[File:Hardware Connection.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
As we can see in the picture, the VCC and GND are connected to the VCC and GND in the Bone. And the data pin is connected Pin D18, which is I2C2_SDA. Connect the clock pin to Pin D17, which is I2C2_SCL. After the above connection, the hardware part is done.&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
&lt;br /&gt;
The mainly work of the software here is to display the correct pattern. And the pattern can be depicted through write a correct value (1 or 0) to each LED in the matrix. 1 means the LED is on and 0 means the LED is off. &lt;br /&gt;
&lt;br /&gt;
For example, the pattern of ❤ can be displayed through the array:&lt;br /&gt;
&lt;br /&gt;
Heart_bmp[]={0x0C, 0x1E, 0x3E, 0x7C, 0x3E, 0x1E, 0x0C, 0x00};&lt;br /&gt;
&lt;br /&gt;
I have write a function to implement the display:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//The Function to Display a BMP.&lt;br /&gt;
int display(__u16 bmp[], int res, int daddress, int file)&lt;br /&gt;
{     &lt;br /&gt;
    int i;     &lt;br /&gt;
    for(i=0; i&amp;lt;8; i++)      &lt;br /&gt;
    {	block[i] = (bmp[i]&amp;amp;0xfe) &amp;gt;&amp;gt;1 |  &lt;br /&gt;
        (bmp[i]&amp;amp;0x01) &amp;lt;&amp;lt; 7;     &lt;br /&gt;
    }     &lt;br /&gt;
&lt;br /&gt;
    res = i2c_smbus_write_i2c_block_data(file, daddress, 16, 	   &lt;br /&gt;
    (__u8 *)block);     &lt;br /&gt;
&lt;br /&gt;
    usleep(400000);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The codes for the whole project can be found in my github: [https://github.com/xinyu1991/Mini-Project-2 Codes for Mini Project].&lt;br /&gt;
&lt;br /&gt;
== Demo Pictures of Display ==&lt;br /&gt;
&lt;br /&gt;
I desired to upload a video here. However the file type is prohibited. So, the only method I can show my work here is through the pictures:&lt;br /&gt;
&lt;br /&gt;
[[File:The Matrix Display I.JPG]]&lt;br /&gt;
&lt;br /&gt;
[[File:The Matrix Display Love.JPG]]&lt;br /&gt;
&lt;br /&gt;
[[File:The Martix Display U.JPG]]&lt;br /&gt;
&lt;br /&gt;
That's my introduce to the Led Matrix. Hope you can have an enjoy experience while using the device.&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Adafruit:_8x8_Yellow_LED_Matrix_Panel</id>
		<title>Adafruit: 8x8 Yellow LED Matrix Panel</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Adafruit:_8x8_Yellow_LED_Matrix_Panel"/>
				<updated>2012-10-16T03:16:59Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]][[Category:Adafruit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The adafriut 8*8 yellow Led matrix has been used in my mini project 2. I'm using it to display some simple pattern, Chinese characters and even some simple animation.&lt;br /&gt;
&lt;br /&gt;
The code of the project is modified from the sample code provided by Dr. Yoder. And my code has been commited to my github: [https://github.com/xinyu1991/Mini-Project-2 The github repository of Xinyu Cheng].&lt;br /&gt;
&lt;br /&gt;
Here is a display sample of the Led Matrix:&lt;br /&gt;
&lt;br /&gt;
[[File:Display Sample.JPG|500px]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Connection ==&lt;br /&gt;
&lt;br /&gt;
To ensure the matrix works properly, we need to connect the four pins in the device to the Beagle Bone. Here is a picture for the connection:&lt;br /&gt;
&lt;br /&gt;
[[File:Hardware Connection.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
As we can see in the picture, the VCC and GND are connected to the VCC and GND in the Bone. And the data pin is connected Pin D18, which is I2C2_SDA. Connect the clock pin to Pin D17, which is I2C2_SCL. After the above connection, the hardware part is done.&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
&lt;br /&gt;
The mainly work of the software here is to display the correct pattern. And the pattern can be depicted through write a correct value (1 or 0) to each LED in the matrix. 1 means the LED is on and 0 means the LED is off. &lt;br /&gt;
&lt;br /&gt;
For example, the pattern of ❤ can be displayed through the array:&lt;br /&gt;
&lt;br /&gt;
Heart_bmp[]={0x0C, 0x1E, 0x3E, 0x7C, 0x3E, 0x1E, 0x0C, 0x00};&lt;br /&gt;
&lt;br /&gt;
I have write a function to implement the display:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//The Function to Display a BMP.&lt;br /&gt;
int display(__u16 bmp[], int res, int daddress, int file)&lt;br /&gt;
{     &lt;br /&gt;
    int i;     &lt;br /&gt;
    for(i=0; i&amp;lt;8; i++)      &lt;br /&gt;
    {	block[i] = (bmp[i]&amp;amp;0xfe) &amp;gt;&amp;gt;1 |  &lt;br /&gt;
        (bmp[i]&amp;amp;0x01) &amp;lt;&amp;lt; 7;     &lt;br /&gt;
    }     &lt;br /&gt;
&lt;br /&gt;
    res = i2c_smbus_write_i2c_block_data(file, daddress, 16, 	   &lt;br /&gt;
    (__u8 *)block);     &lt;br /&gt;
&lt;br /&gt;
    usleep(400000);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The codes for the whole project can be found in my github: [https://github.com/xinyu1991/Mini-Project-2 Codes for Mini Project].&lt;br /&gt;
&lt;br /&gt;
== Demo Pictures of Display ==&lt;br /&gt;
&lt;br /&gt;
I desired to upload a video here. However the file type is prohibited. So, the only method I can show my work here is through the pictures:&lt;br /&gt;
&lt;br /&gt;
[[File:The Matrix Display I.JPG]]&lt;br /&gt;
&lt;br /&gt;
[[File:The Matrix Display Love.JPG]]&lt;br /&gt;
&lt;br /&gt;
[[File:The Martix Display U.JPG]]&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Adafruit:_8x8_Yellow_LED_Matrix_Panel</id>
		<title>Adafruit: 8x8 Yellow LED Matrix Panel</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Adafruit:_8x8_Yellow_LED_Matrix_Panel"/>
				<updated>2012-10-16T03:16:29Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]][[Category:Adafruit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The adafriut 8*8 yellow Led matrix has been used in my mini project 2. I'm using it to display some simple pattern, Chinese characters and even some simple animation.&lt;br /&gt;
&lt;br /&gt;
The code of the project is modified from the sample code provided by Dr. Yoder. And my code has been commited to my github: [https://github.com/xinyu1991/Mini-Project-2 The github repository of Xinyu Cheng].&lt;br /&gt;
&lt;br /&gt;
Here is a display sample of the Led Matrix:&lt;br /&gt;
&lt;br /&gt;
[[File:Display Sample.JPG|500px]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Connection ==&lt;br /&gt;
&lt;br /&gt;
To ensure the matrix works properly, we need to connect the four pins in the device to the Beagle Bone. Here is a picture for the connection:&lt;br /&gt;
&lt;br /&gt;
[[File:Hardware Connection.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
As we can see in the picture, the VCC and GND are connected to the VCC and GND in the Bone. And the data pin is connected Pin D18, which is I2C2_SDA. Connect the clock pin to Pin D17, which is I2C2_SCL. After the above connection, the hardware part is done.&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
&lt;br /&gt;
The mainly work of the software here is to display the correct pattern. And the pattern can be depicted through write a correct value (1 or 0) to each LED in the matrix. 1 means the LED is on and 0 means the LED is off. &lt;br /&gt;
&lt;br /&gt;
For example, the pattern of ❤ can be displayed through the array:&lt;br /&gt;
&lt;br /&gt;
Heart_bmp[]={0x0C, 0x1E, 0x3E, 0x7C, 0x3E, 0x1E, 0x0C, 0x00};&lt;br /&gt;
&lt;br /&gt;
I have write a function to implement the display:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//The Function to Display a BMP.&lt;br /&gt;
int display(__u16 bmp[], int res, int daddress, int file)&lt;br /&gt;
{     &lt;br /&gt;
    int i;     &lt;br /&gt;
    for(i=0; i&amp;lt;8; i++)      &lt;br /&gt;
    {	block[i] = (bmp[i]&amp;amp;0xfe) &amp;gt;&amp;gt;1 |  &lt;br /&gt;
        (bmp[i]&amp;amp;0x01) &amp;lt;&amp;lt; 7;     &lt;br /&gt;
    }     &lt;br /&gt;
&lt;br /&gt;
    res = i2c_smbus_write_i2c_block_data(file, daddress, 16, 	   &lt;br /&gt;
    (__u8 *)block);     &lt;br /&gt;
&lt;br /&gt;
    usleep(400000);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The codes for the whole project can be found in my github: [https://github.com/xinyu1991/Mini-Project-2 Codes for Mini Project].&lt;br /&gt;
&lt;br /&gt;
== Demo Pictures of Display ==&lt;br /&gt;
&lt;br /&gt;
I desired to upload a video here. However the file type is prohibited. So, the only method I can show my work here is through the pictures:&lt;br /&gt;
&lt;br /&gt;
[[File:The Matrix Display I.JPG]]&lt;br /&gt;
&lt;br /&gt;
[[File:The Matrix Display Love.JPG]]&lt;br /&gt;
&lt;br /&gt;
[[File:The Matrix Display U.JPG]]&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/File:The_Martix_Display_U.JPG</id>
		<title>File:The Martix Display U.JPG</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/File:The_Martix_Display_U.JPG"/>
				<updated>2012-10-16T03:16:02Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: The Martix Display U.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Martix Display U.&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/File:The_Matrix_Display_Love.JPG</id>
		<title>File:The Matrix Display Love.JPG</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/File:The_Matrix_Display_Love.JPG"/>
				<updated>2012-10-16T03:15:34Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: The Matrix Display Love.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Matrix Display Love.&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/File:The_Matrix_Display_I.JPG</id>
		<title>File:The Matrix Display I.JPG</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/File:The_Matrix_Display_I.JPG"/>
				<updated>2012-10-16T03:14:33Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: The Matrix Display I.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Matrix Display I.&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/File:Matrix_Display_of_I.JPG</id>
		<title>File:Matrix Display of I.JPG</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/File:Matrix_Display_of_I.JPG"/>
				<updated>2012-10-16T03:13:06Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: Matrix Display of I.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Matrix Display of I.&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Adafruit:_8x8_Yellow_LED_Matrix_Panel</id>
		<title>Adafruit: 8x8 Yellow LED Matrix Panel</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Adafruit:_8x8_Yellow_LED_Matrix_Panel"/>
				<updated>2012-10-16T03:05:39Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]][[Category:Adafruit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The adafriut 8*8 yellow Led matrix has been used in my mini project 2. I'm using it to display some simple pattern, Chinese characters and even some simple animation.&lt;br /&gt;
&lt;br /&gt;
The code of the project is modified from the sample code provided by Dr. Yoder. And my code has been commited to my github: [https://github.com/xinyu1991/Mini-Project-2 The github repository of Xinyu Cheng].&lt;br /&gt;
&lt;br /&gt;
Here is a display sample of the Led Matrix:&lt;br /&gt;
&lt;br /&gt;
[[File:Display Sample.JPG|500px]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Connection ==&lt;br /&gt;
&lt;br /&gt;
To ensure the matrix works properly, we need to connect the four pins in the device to the Beagle Bone. Here is a picture for the connection:&lt;br /&gt;
&lt;br /&gt;
[[File:Hardware Connection.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
As we can see in the picture, the VCC and GND are connected to the VCC and GND in the Bone. And the data pin is connected Pin D18, which is I2C2_SDA. Connect the clock pin to Pin D17, which is I2C2_SCL. After the above connection, the hardware part is done.&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
&lt;br /&gt;
The mainly work of the software here is to display the correct pattern. And the pattern can be depicted through write a correct value (1 or 0) to each LED in the matrix. 1 means the LED is on and 0 means the LED is off. &lt;br /&gt;
&lt;br /&gt;
For example, the pattern of ❤ can be displayed through the array:&lt;br /&gt;
&lt;br /&gt;
Heart_bmp[]={0x0C, 0x1E, 0x3E, 0x7C, 0x3E, 0x1E, 0x0C, 0x00};&lt;br /&gt;
&lt;br /&gt;
I have write a function to implement the display:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//The Function to Display a BMP.&lt;br /&gt;
int display(__u16 bmp[], int res, int daddress, int file)&lt;br /&gt;
{     &lt;br /&gt;
    int i;     &lt;br /&gt;
    for(i=0; i&amp;lt;8; i++)      &lt;br /&gt;
    {	block[i] = (bmp[i]&amp;amp;0xfe) &amp;gt;&amp;gt;1 |  &lt;br /&gt;
        (bmp[i]&amp;amp;0x01) &amp;lt;&amp;lt; 7;     &lt;br /&gt;
    }     &lt;br /&gt;
&lt;br /&gt;
    res = i2c_smbus_write_i2c_block_data(file, daddress, 16, 	   &lt;br /&gt;
    (__u8 *)block);     &lt;br /&gt;
&lt;br /&gt;
    usleep(400000);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The codes for the whole project can be found in my github: [https://github.com/xinyu1991/Mini-Project-2 Codes for Mini Project].&lt;br /&gt;
&lt;br /&gt;
== Demo Video ==&lt;br /&gt;
[[File:Matrix Display Demo Vedio.jpg]]&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/File:Matrix_Display_Demo_Vedio.jpg</id>
		<title>File:Matrix Display Demo Vedio.jpg</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/File:Matrix_Display_Demo_Vedio.jpg"/>
				<updated>2012-10-16T03:04:59Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: The Matrix Display Demo Vedio&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Matrix Display Demo Vedio&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Adafruit:_8x8_Yellow_LED_Matrix_Panel</id>
		<title>Adafruit: 8x8 Yellow LED Matrix Panel</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Adafruit:_8x8_Yellow_LED_Matrix_Panel"/>
				<updated>2012-10-16T03:00:35Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]][[Category:Adafruit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The adafriut 8*8 yellow Led matrix has been used in my mini project 2. I'm using it to display some simple pattern, Chinese characters and even some simple animation.&lt;br /&gt;
&lt;br /&gt;
The code of the project is modified from the sample code provided by Dr. Yoder. And my code has been commited to my github: [https://github.com/xinyu1991/Mini-Project-2 The github repository of Xinyu Cheng].&lt;br /&gt;
&lt;br /&gt;
Here is a display sample of the Led Matrix:&lt;br /&gt;
&lt;br /&gt;
[[File:Display Sample.JPG|500px]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Connection ==&lt;br /&gt;
&lt;br /&gt;
To ensure the matrix works properly, we need to connect the four pins in the device to the Beagle Bone. Here is a picture for the connection:&lt;br /&gt;
&lt;br /&gt;
[[File:Hardware Connection.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
As we can see in the picture, the VCC and GND are connected to the VCC and GND in the Bone. And the data pin is connected Pin D18, which is I2C2_SDA. Connect the clock pin to Pin D17, which is I2C2_SCL. After the above connection, the hardware part is done.&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
&lt;br /&gt;
The mainly work of the software here is to display the correct pattern. And the pattern can be depicted through write a correct value (1 or 0) to each LED in the matrix. 1 means the LED is on and 0 means the LED is off. &lt;br /&gt;
&lt;br /&gt;
For example, the pattern of ❤ can be displayed through the array:&lt;br /&gt;
&lt;br /&gt;
Heart_bmp[]={0x0C, 0x1E, 0x3E, 0x7C, 0x3E, 0x1E, 0x0C, 0x00};&lt;br /&gt;
&lt;br /&gt;
I have write a function to implement the display:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//The Function to Display a BMP.&lt;br /&gt;
int display(__u16 bmp[], int res, int daddress, int file)&lt;br /&gt;
{     &lt;br /&gt;
    int i;     &lt;br /&gt;
    for(i=0; i&amp;lt;8; i++)      &lt;br /&gt;
    {	block[i] = (bmp[i]&amp;amp;0xfe) &amp;gt;&amp;gt;1 |  &lt;br /&gt;
        (bmp[i]&amp;amp;0x01) &amp;lt;&amp;lt; 7;     &lt;br /&gt;
    }     &lt;br /&gt;
&lt;br /&gt;
    res = i2c_smbus_write_i2c_block_data(file, daddress, 16, 	   &lt;br /&gt;
    (__u8 *)block);     &lt;br /&gt;
&lt;br /&gt;
    usleep(400000);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The codes for the whole project can be found in my github: [https://github.com/xinyu1991/Mini-Project-2 Codes for Mini Project].&lt;br /&gt;
&lt;br /&gt;
== Demo Video ==&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Adafruit:_8x8_Yellow_LED_Matrix_Panel</id>
		<title>Adafruit: 8x8 Yellow LED Matrix Panel</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Adafruit:_8x8_Yellow_LED_Matrix_Panel"/>
				<updated>2012-10-16T02:58:06Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]][[Category:Adafruit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The adafriut 8*8 yellow Led matrix has been used in my mini project 2. I'm using it to display some simple pattern, Chinese characters and even some simple animation.&lt;br /&gt;
&lt;br /&gt;
The code of the project is modified from the sample code provided by Dr. Yoder. And my code has been commited to my github: [https://github.com/xinyu1991/Mini-Project-2 The github repository of Xinyu Cheng].&lt;br /&gt;
&lt;br /&gt;
Here is a display sample of the Led Matrix:&lt;br /&gt;
&lt;br /&gt;
[[File:Display Sample.JPG|500px]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Connection ==&lt;br /&gt;
&lt;br /&gt;
To ensure the matrix works properly, we need to connect the four pins in the device to the Beagle Bone. Here is a picture for the connection:&lt;br /&gt;
&lt;br /&gt;
[[File:Hardware Connection.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
As we can see in the picture, the VCC and GND are connected to the VCC and GND in the Bone. And the data pin is connected Pin D18, which is I2C2_SDA. Connect the clock pin to Pin D17, which is I2C2_SCL. After the above connection, the hardware part is done.&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
&lt;br /&gt;
The mainly work of the software here is to display the correct pattern. And the pattern can be depicted through write a correct value (1 or 0) to each LED in the matrix. 1 means the LED is on and 0 means the LED is off. &lt;br /&gt;
&lt;br /&gt;
For example, the pattern of ❤ can be displayed through the array:&lt;br /&gt;
&lt;br /&gt;
Heart_bmp[]={0x0C, 0x1E, 0x3E, 0x7C, 0x3E, 0x1E, 0x0C, 0x00};&lt;br /&gt;
&lt;br /&gt;
I have write a function to implement the display:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//The Function to Display a BMP.&lt;br /&gt;
int display(__u16 bmp[], int res, int daddress, int file)&lt;br /&gt;
{     &lt;br /&gt;
    int i;     &lt;br /&gt;
    for(i=0; i&amp;lt;8; i++)      &lt;br /&gt;
    {	block[i] = (bmp[i]&amp;amp;0xfe) &amp;gt;&amp;gt;1 |  &lt;br /&gt;
        (bmp[i]&amp;amp;0x01) &amp;lt;&amp;lt; 7;     &lt;br /&gt;
    }     &lt;br /&gt;
&lt;br /&gt;
    res = i2c_smbus_write_i2c_block_data(file, daddress, 16, 	   &lt;br /&gt;
    (__u8 *)block);     &lt;br /&gt;
&lt;br /&gt;
    usleep(400000);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is the codes in file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;errno.h&amp;gt;#include &amp;lt;string.h&amp;gt;#include &amp;lt;stdio.h&amp;gt;#include &amp;lt;stdlib.h&amp;gt;#include &amp;lt;unistd.h&amp;gt;#include &amp;quot;i2c-dev.h&amp;quot;#include &amp;quot;i2cbusses.h&amp;quot;#include &amp;quot;MatrixLed.h&amp;quot;int main(int argc, char *argv[]){	int res, i2cbus, address, size, file;	int value, daddress;	char filename[20];	int force = 0, readback = 1;	int len;	i2cbus = lookup_i2c_bus(&amp;quot;3&amp;quot;);	printf(&amp;quot;i2cbus = %d\n&amp;quot;, i2cbus);	if (i2cbus &amp;lt; 0)		help();	address = parse_i2c_address(&amp;quot;0x70&amp;quot;);	printf(&amp;quot;address = 0x%2x\n&amp;quot;, address);	if (address &amp;lt; 0)		help();	size = I2C_SMBUS_BYTE;	daddress = 0x21;	if (daddress &amp;lt; 0 || daddress &amp;gt; 0xff) {		fprintf(stderr, &amp;quot;Error: Data address invalid!\n&amp;quot;);		help();	}	file = open_i2c_dev(i2cbus, filename, sizeof(filename), 0);	printf(&amp;quot;file = %d\n&amp;quot;, file);	if (file &amp;lt; 0	 || check_funcs(file, size)	 || set_slave_addr(file, address, force))		exit(1);	switch (size) {	case I2C_SMBUS_BYTE:		daddress = 0x21;	// Start oscillator (page 10)		printf(&amp;quot;writing: 0x%02x\n&amp;quot;, daddress);		res = i2c_smbus_write_byte(file, daddress);		daddress = 0x81;	// Display on, blinking off (page 11)		printf(&amp;quot;writing: 0x%02x\n&amp;quot;, daddress);		res = i2c_smbus_write_byte(file, daddress);		daddress = 0xe7;	// Full brightness (page 15)		printf(&amp;quot;writing: 0x%02x\n&amp;quot;, daddress);		res = i2c_smbus_write_byte(file, daddress);		daddress = 0x00;	// Start writing to address 0 (page 13)		printf(&amp;quot;writing: 0x%02x\n&amp;quot;, daddress);		res = i2c_smbus_write_byte(file, daddress);		int i;                while(1)                {                     //Display the Square.                         display(Square1_bmp,res,daddress,file);                   display(Square2_bmp,res,daddress,file);                   display(Square3_bmp,res,daddress,file);                   display(Square4_bmp,res,daddress,file);                   display(Square5_bmp,res,daddress,file);                   display(Square6_bmp,res,daddress,file);                   display(Square7_bmp,res,daddress,file);                   //Display Love Heart.                   display(Love1_bmp,res,daddress,file);                   display(Love2_bmp,res,daddress,file);                   display(Love1_bmp,res,daddress,file);                   //Display I love U.                   display(I_bmp,res,daddress,file);                   display(Love1_bmp,res,daddress,file);                                     display(U_bmp,res,daddress,file);                                     //Display the Square.                   display(Square7_bmp,res,daddress,file);                   display(Square6_bmp,res,daddress,file);                   display(Square5_bmp,res,daddress,file);                   display(Square4_bmp,res,daddress,file);                   display(Square3_bmp,res,daddress,file);                   display(Square2_bmp,res,daddress,file);                   display(Square1_bmp,res,daddress,file);                                      //Display Love Heart.                   display(Love1_bmp,res,daddress,file);                   display(Love2_bmp,res,daddress,file);                   display(Love1_bmp,res,daddress,file);                          }		break;	case I2C_SMBUS_WORD_DATA:		res = i2c_smbus_write_word_data(file, daddress, value);		break;	case I2C_SMBUS_BLOCK_DATA:		res = i2c_smbus_write_block_data(file, daddress, len, (const __u8 *)block);		break;	case I2C_SMBUS_I2C_BLOCK_DATA:		res = i2c_smbus_write_i2c_block_data(file, daddress, len, (const __u8 *)block);		break;	default: /* I2C_SMBUS_BYTE_DATA */		res = i2c_smbus_write_byte_data(file, daddress, value);		break;	}	if (res &amp;lt; 0) {		fprintf(stderr, &amp;quot;Error: Write failed\n&amp;quot;);		close(file);		exit(1);	}	if (!readback) { /* We're done */		close(file);		exit(0);	}	switch (size) {	case I2C_SMBUS_BYTE:		res = i2c_smbus_read_byte(file);		value = daddress;		break;	case I2C_SMBUS_WORD_DATA:		res = i2c_smbus_read_word_data(file, daddress);		break;	default: /* I2C_SMBUS_BYTE_DATA */		res = i2c_smbus_read_byte_data(file, daddress);	}	close(file);	if (res &amp;lt; 0) {		printf(&amp;quot;Warning - readback failed\n&amp;quot;);	} else	if (res != value) {		printf(&amp;quot;Warning - data mismatch - wrote &amp;quot;		       &amp;quot;0x%0*x, read back 0x%0*x\n&amp;quot;,		       size == I2C_SMBUS_WORD_DATA ? 4 : 2, value,		       size == I2C_SMBUS_WORD_DATA ? 4 : 2, res);	} else {		printf(&amp;quot;Value 0x%0*x written, readback matched\n&amp;quot;,		       size == I2C_SMBUS_WORD_DATA ? 4 : 2, value);	}	exit(0);}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Adafruit:_8x8_Yellow_LED_Matrix_Panel</id>
		<title>Adafruit: 8x8 Yellow LED Matrix Panel</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Adafruit:_8x8_Yellow_LED_Matrix_Panel"/>
				<updated>2012-10-16T02:57:09Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]][[Category:Adafruit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The adafriut 8*8 yellow Led matrix has been used in my mini project 2. I'm using it to display some simple pattern, Chinese characters and even some simple animation.&lt;br /&gt;
&lt;br /&gt;
The code of the project is modified from the sample code provided by Dr. Yoder. And my code has been commited to my github: [https://github.com/xinyu1991/Mini-Project-2 The github repository of Xinyu Cheng].&lt;br /&gt;
&lt;br /&gt;
Here is a display sample of the Led Matrix:&lt;br /&gt;
&lt;br /&gt;
[[File:Display Sample.JPG|500px]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Connection ==&lt;br /&gt;
&lt;br /&gt;
To ensure the matrix works properly, we need to connect the four pins in the device to the Beagle Bone. Here is a picture for the connection:&lt;br /&gt;
&lt;br /&gt;
[[File:Hardware Connection.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
As we can see in the picture, the VCC and GND are connected to the VCC and GND in the Bone. And the data pin is connected Pin D18, which is I2C2_SDA. Connect the clock pin to Pin D17, which is I2C2_SCL. After the above connection, the hardware part is done.&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
&lt;br /&gt;
The mainly work of the software here is to display the correct pattern. And the pattern can be depicted through write a correct value (1 or 0) to each LED in the matrix. 1 means the LED is on and 0 means the LED is off. &lt;br /&gt;
&lt;br /&gt;
For example, the pattern of ❤ can be displayed through the array:&lt;br /&gt;
&lt;br /&gt;
Heart_bmp[]={0x0C, 0x1E, 0x3E, 0x7C, 0x3E, 0x1E, 0x0C, 0x00};&lt;br /&gt;
&lt;br /&gt;
I have write a function to implement the display:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//The Function to Display a BMP.&lt;br /&gt;
int display(__u16 bmp[], int res, int daddress, int file)&lt;br /&gt;
{     &lt;br /&gt;
    int i;     &lt;br /&gt;
    for(i=0; i&amp;lt;8; i++)      &lt;br /&gt;
    {	block[i] = (bmp[i]&amp;amp;0xfe) &amp;gt;&amp;gt;1 |  &lt;br /&gt;
        (bmp[i]&amp;amp;0x01) &amp;lt;&amp;lt; 7;     &lt;br /&gt;
    }     &lt;br /&gt;
&lt;br /&gt;
    res = i2c_smbus_write_i2c_block_data(file, daddress, 16, 	   &lt;br /&gt;
    (__u8 *)block);     &lt;br /&gt;
&lt;br /&gt;
    usleep(400000);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is the codes in file:&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Adafruit:_8x8_Yellow_LED_Matrix_Panel</id>
		<title>Adafruit: 8x8 Yellow LED Matrix Panel</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Adafruit:_8x8_Yellow_LED_Matrix_Panel"/>
				<updated>2012-10-16T02:55:18Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]][[Category:Adafruit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The adafriut 8*8 yellow Led matrix has been used in my mini project 2. I'm using it to display some simple pattern, Chinese characters and even some simple animation.&lt;br /&gt;
&lt;br /&gt;
The code of the project is modified from the sample code provided by Dr. Yoder. And my code has been commited to my github: [https://github.com/xinyu1991/Mini-Project-2 The github repository of Xinyu Cheng].&lt;br /&gt;
&lt;br /&gt;
Here is a display sample of the Led Matrix:&lt;br /&gt;
&lt;br /&gt;
[[File:Display Sample.JPG|500px]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Connection ==&lt;br /&gt;
&lt;br /&gt;
To ensure the matrix works properly, we need to connect the four pins in the device to the Beagle Bone. Here is a picture for the connection:&lt;br /&gt;
&lt;br /&gt;
[[File:Hardware Connection.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
As we can see in the picture, the VCC and GND are connected to the VCC and GND in the Bone. And the data pin is connected Pin D18, which is I2C2_SDA. Connect the clock pin to Pin D17, which is I2C2_SCL. After the above connection, the hardware part is done.&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
&lt;br /&gt;
The mainly work of the software here is to display the correct pattern. And the pattern can be depicted through write a correct value (1 or 0) to each LED in the matrix. 1 means the LED is on and 0 means the LED is off. &lt;br /&gt;
&lt;br /&gt;
For example, the pattern of ❤ can be displayed through the array:&lt;br /&gt;
&lt;br /&gt;
Heart_bmp[]={0x0C, 0x1E, 0x3E, 0x7C, 0x3E, 0x1E, 0x0C, 0x00};&lt;br /&gt;
&lt;br /&gt;
I have write a function to implement the display:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//The Function to Display a BMP.&lt;br /&gt;
int display(__u16 bmp[], int res, int daddress, int file)&lt;br /&gt;
{     &lt;br /&gt;
    int i;     &lt;br /&gt;
    for(i=0; i&amp;lt;8; i++)      &lt;br /&gt;
    {	block[i] = (bmp[i]&amp;amp;0xfe) &amp;gt;&amp;gt;1 |  &lt;br /&gt;
        (bmp[i]&amp;amp;0x01) &amp;lt;&amp;lt; 7;     &lt;br /&gt;
    }     &lt;br /&gt;
&lt;br /&gt;
    res = i2c_smbus_write_i2c_block_data(file, daddress, 16, 	   &lt;br /&gt;
    (__u8 *)block);     &lt;br /&gt;
&lt;br /&gt;
    usleep(400000);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Adafruit:_8x8_Yellow_LED_Matrix_Panel</id>
		<title>Adafruit: 8x8 Yellow LED Matrix Panel</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Adafruit:_8x8_Yellow_LED_Matrix_Panel"/>
				<updated>2012-10-16T02:35:33Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]][[Category:Adafruit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The adafriut 8*8 yellow Led matrix has been used in my mini project 2. I'm using it to display some simple pattern, Chinese characters and even some simple animation.&lt;br /&gt;
&lt;br /&gt;
The code of the project is modified from the sample code provided by Dr. Yoder. And my code has been commited to my github: [https://github.com/xinyu1991/Mini-Project-2 The github repository of Xinyu Cheng].&lt;br /&gt;
&lt;br /&gt;
Here is a display sample of the Led Matrix:&lt;br /&gt;
&lt;br /&gt;
[[File:Display Sample.JPG|500px]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Connection ==&lt;br /&gt;
&lt;br /&gt;
To ensure the matrix works properly, we need to connect the four pins in the device to the Beagle Bone. Here is a picture for the connection:&lt;br /&gt;
&lt;br /&gt;
[[File:Hardware Connection.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
As we can see in the picture, the VCC and GND are connected to the VCC and GND in the Bone. And the data pin is connected Pin D18, which is I2C2_SDA. Connect the clock pin to Pin D17, which is I2C2_SCL.&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/File:Hardware_Connection.jpg</id>
		<title>File:Hardware Connection.jpg</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/File:Hardware_Connection.jpg"/>
				<updated>2012-10-16T02:25:43Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: This is the hardware connection for the Beagle Bone and the Led Matrix.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the hardware connection for the Beagle Bone and the Led Matrix.&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Adafruit:_8x8_Yellow_LED_Matrix_Panel</id>
		<title>Adafruit: 8x8 Yellow LED Matrix Panel</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Adafruit:_8x8_Yellow_LED_Matrix_Panel"/>
				<updated>2012-10-16T02:15:17Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]][[Category:Adafruit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The adafriut 8*8 yellow Led matrix has been used in my mini project 2. I'm using it to display some simple pattern, Chinese characters and even some simple animation.&lt;br /&gt;
&lt;br /&gt;
The code of the project is modified from the sample code provided by Dr. Yoder. And my code has been commited to my github: [https://github.com/xinyu1991/Mini-Project-2 The github repository of Xinyu Cheng].&lt;br /&gt;
&lt;br /&gt;
Here is a display sample of the Led Matrix:&lt;br /&gt;
&lt;br /&gt;
[[File:Display Sample.JPG|500px]]&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Adafruit:_8x8_Yellow_LED_Matrix_Panel</id>
		<title>Adafruit: 8x8 Yellow LED Matrix Panel</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Adafruit:_8x8_Yellow_LED_Matrix_Panel"/>
				<updated>2012-10-16T02:13:26Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]][[Category:Adafruit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The adafriut 8*8 yellow Led matrix has been used in my mini project 2. I'm using it to display some simple pattern, Chinese characters and even some simple animation.&lt;br /&gt;
&lt;br /&gt;
The code of the project is modified from the sample code provided by Dr. Yoder. And my code has been commited to my github: [https://github.com/xinyu1991/Mini-Project-2 The github repository of Xinyu Cheng].&lt;br /&gt;
&lt;br /&gt;
Here is a display sample of the Led Matrix:&lt;br /&gt;
&lt;br /&gt;
[[File:Display Sample.JPG|300px]]&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Adafruit:_8x8_Yellow_LED_Matrix_Panel</id>
		<title>Adafruit: 8x8 Yellow LED Matrix Panel</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Adafruit:_8x8_Yellow_LED_Matrix_Panel"/>
				<updated>2012-10-16T02:12:54Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]][[Category:Adafruit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The adafriut 8*8 yellow Led matrix has been used in my mini project 2. I'm using it to display some simple pattern, Chinese characters and even some simple animation.&lt;br /&gt;
&lt;br /&gt;
The code of the project is modified from the sample code provided by Dr. Yoder. And my code has been commited to my github: [https://github.com/xinyu1991/Mini-Project-2 The github repository of Xinyu Cheng].&lt;br /&gt;
&lt;br /&gt;
Here is a display sample of the Led Matrix:&lt;br /&gt;
[[File:Display Sample.JPG|300px]]&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Adafruit:_8x8_Yellow_LED_Matrix_Panel</id>
		<title>Adafruit: 8x8 Yellow LED Matrix Panel</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Adafruit:_8x8_Yellow_LED_Matrix_Panel"/>
				<updated>2012-10-16T02:12:15Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]][[Category:Adafruit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The adafriut 8*8 yellow Led matrix has been used in my mini project 2. I'm using it to display some simple pattern, Chinese characters and even some simple animation.&lt;br /&gt;
&lt;br /&gt;
The code of the project is modified from the sample code provided by Dr. Yoder. And my code has been commited to my github: [https://github.com/xinyu1991/Mini-Project-2 The github repository of Xinyu Cheng].&lt;br /&gt;
&lt;br /&gt;
Here is a display sample of the Led Matrix:&lt;br /&gt;
[[File:Display Sample.JPG]|300px]&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/File:Display_Sample.JPG</id>
		<title>File:Display Sample.JPG</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/File:Display_Sample.JPG"/>
				<updated>2012-10-16T02:10:28Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: A display sample picture of the 8*8 Led Matrix.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A display sample picture of the 8*8 Led Matrix.&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Adafruit:_8x8_Yellow_LED_Matrix_Panel</id>
		<title>Adafruit: 8x8 Yellow LED Matrix Panel</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Adafruit:_8x8_Yellow_LED_Matrix_Panel"/>
				<updated>2012-10-16T02:04:22Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]][[Category:Adafruit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The adafriut 8*8 yellow Led matrix has been used in my mini project 2. I'm using it to display some simple pattern, Chinese characters and even some simple animation.&lt;br /&gt;
&lt;br /&gt;
The code of the project is modified from the sample code provided by Dr. Yoder. And my code has been commited to my github: [https://github.com/xinyu1991/Mini-Project-2 The github repository of Xinyu Cheng]&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Adafruit:_8x8_Yellow_LED_Matrix_Panel</id>
		<title>Adafruit: 8x8 Yellow LED Matrix Panel</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Adafruit:_8x8_Yellow_LED_Matrix_Panel"/>
				<updated>2012-10-16T02:03:29Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]][[Category:Adafruit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The adafriut 8*8 yellow Led matrix has been used in my mini project 2. I'm using it to display some simple pattern, Chinese characters and even some simple animation.&lt;br /&gt;
&lt;br /&gt;
The code of the project is modified from the sample code provided by Dr. Yoder. And my code has been commited to my github: [https://github.com/xinyu1991/Mini-Project-2]&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Adafruit:_8x8_Yellow_LED_Matrix_Panel</id>
		<title>Adafruit: 8x8 Yellow LED Matrix Panel</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Adafruit:_8x8_Yellow_LED_Matrix_Panel"/>
				<updated>2012-10-16T01:57:57Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: Created page with &amp;quot;Category:ECE497Category:Adafruit   == Overview ==  The adafriut 8*8 yellow Led matrix has been used in my mini project 2. I'm using it to display some simple pattern, Chi...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]][[Category:Adafruit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The adafriut 8*8 yellow Led matrix has been used in my mini project 2. I'm using it to display some simple pattern, Chinese characters and even some simple animation.&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Category:ECE497</id>
		<title>Category:ECE497</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Category:ECE497"/>
				<updated>2012-10-05T15:52:44Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Categories]]&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/EBC_Mini_Project_02</id>
		<title>EBC Mini Project 02</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/EBC_Mini_Project_02"/>
				<updated>2012-09-13T16:57:41Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497 |Mini02]]&lt;br /&gt;
{{YoderHead}}&lt;br /&gt;
&lt;br /&gt;
Pick one of the senors from the [https://www.sparkfun.com/products/11016 SparkFun Sensor Kit] or from [http://adafruit.com Adafruit] and interface it to the Bone. Create a wiki page describing how to use the sensor.&lt;br /&gt;
&lt;br /&gt;
Add your name next to the sensor/display you want to use and pick it up from me.&lt;br /&gt;
&lt;br /&gt;
== Sparkfun ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Name&lt;br /&gt;
! Sensor&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| HMC5883L - Triple-Axis Magnetometer Breakout Board&lt;br /&gt;
| An accurate, simple-to-use digital magnetometer with an I2C interface.&lt;br /&gt;
|-&lt;br /&gt;
| Ross Hansen&lt;br /&gt;
| ADXL335 - Triple-Axis Accelerometer Breakout Board&lt;br /&gt;
| Senses acceleration along all three axes, with a range of up to ±3g. Fully analog interface.&lt;br /&gt;
ITG-3200&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Triple-Axis Gyro Breakout Board&lt;br /&gt;
| Senses angular velocity along three axes of rotation. Fully digital interface with a range of up to ±2000°/s.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Large Piezo Vibration Sensor - With Mass&lt;br /&gt;
| A flexible film able to sense for vibration, touch, shock, etc. When the film moves back and forth an AC wave is created, with a voltage of up to ±90.&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Reed Switch&lt;br /&gt;
| Senses magnetic fields, makes for a great non-contact switch.&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| 0.25&amp;quot; Magnet Square&lt;br /&gt;
| Plays nicely with the reed switch. Embed the magnet into stuffed animals or inside a box to create a hidden actuator to the reed switch.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| 0.5&amp;quot; Force Sensitive Resistor&lt;br /&gt;
| A force sensing resistor with a 0.5&amp;quot; diameter sensing area. Great for sensing pressure (i.e. if it's being squeezed).&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| PIR Motion Sensor&lt;br /&gt;
| Easy-to-use motion detector with an analog interface. Power it with 5-12VDC, and you'll be alerted of any movement.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Ultrasonic Rangefinder - Maxbotix LV-EZ1&lt;br /&gt;
| Distance sensor with both analog and RS-232 interfaces, providing sonar range information from 6 to 254 inches.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| HIH-4030 Humidity Sensor&lt;br /&gt;
| A high precision humidity sensor with an analog output.&lt;br /&gt;
|-&lt;br /&gt;
| Andrew Miller&lt;br /&gt;
| IR Receiver Breakout Board&lt;br /&gt;
| An analog interfaced IR receiver, sensitive to a wide range of IR waves. Great for 'listening' to TV remotes.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Mini Photocell&lt;br /&gt;
| The photocell will vary its resistance based on how much light it's exposed to. Will vary from 1kΩ in the light to 10kΩ in the dark.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Optical Detector/Phototransistor&lt;br /&gt;
| An all-in-one infrared emitter and detector. Ideal for sensing black-to-white transitions or can be used to detect nearby objects.&lt;br /&gt;
|-&lt;br /&gt;
| Jesse Brannon&lt;br /&gt;
| BMP085 Barometric Pressure Sensor&lt;br /&gt;
| Low power, high precision barometric pressure sensor with I2C output.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Flex Sensor&lt;br /&gt;
| As the sensor is flexed, the resistance across the sensor increases. Useful for sensing motion or positioning&lt;br /&gt;
|-&lt;br /&gt;
| Chris Good&lt;br /&gt;
| SoftPot&lt;br /&gt;
| These are very thin variable potentiometers. By pressing on various positions along the strip, you vary the resistance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Adafruit ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Name&lt;br /&gt;
! Device&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| Matthew Moravec&lt;br /&gt;
| [https://www.adafruit.com/products/512 Analog 2-axis Thumb Joystick]&lt;br /&gt;
| Analog 2-axis Thumb Joystick with Select Button + Breakout Board&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| [https://www.adafruit.com/products/377 Rotary Encoder]&lt;br /&gt;
| This rotary encoder is a high quality 24-pulse encoder, with detents and a nice feel. This encoder also has a push-button built into it so you can press onto the knob to close a separate switch. One side has a 3 pin connector (ground and two coding pins) and the other side has two pins for a normally-open switch.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| [https://www.adafruit.com/products/333 Touch screen (Nintendo DSL digitizer)]&lt;br /&gt;
| This resistive touch screen can be used with a stylus or fingertip and is easy to use with a microcontroller. &lt;br /&gt;
600 ohms across X pins, 300 ohms across Y pins&lt;br /&gt;
4 wire resistive display, on a 0.5mm FPC connector&lt;br /&gt;
|-&lt;br /&gt;
|Xinyu Cheng &lt;br /&gt;
| [https://www.adafruit.com/products/871 Mini 8x8 LED Matrix w/I2C - Yellow]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Mike Junge&lt;br /&gt;
|[https://www.adafruit.com/products/959 Mini 8x8 LED Matrix w/I2C - Blue]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Yue Zhang&lt;br /&gt;
|[https://www.adafruit.com/products/870 Mini 8x8 LED Matrix w/I2C - Red]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Alex Drane&lt;br /&gt;
|[https://www.adafruit.com/products/902 Bicolor LED Square Pixel Matrix]&lt;br /&gt;
| The matrices use a driver chip that does all the heavy lifting for you: They have a built in clock so they multiplex the display. They use constant-current drivers for ultra-bright, consistent color, 1/16 step display dimming, all via a simple I2C interface.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| [https://www.adafruit.com/products/812 Green 7-segment clock display]&lt;br /&gt;
| These displays are multiplexed, common-cathode. What that means it that you can use a 74HC595.  Sorry, I didn't order the version with i2c.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| [https://www.adafruit.com/products/306 Digital Addressable RGB LED]&lt;br /&gt;
| These LED strips are fun and glowy. There are 32 RGB LEDs per meter, and you can control each LED individually! We have 5 meters worth!&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|Xia Li&lt;br /&gt;
| [https://www.adafruit.com/products/555 16x24 Red LED Matrix Panel]&lt;br /&gt;
| These LED panels take care of all the work of making a big matrix display. Each panel has six 8x8 red matrix modules, for a 16x24 matrix. The panel has a HT1632C chip on the back with does all the multiplexing work for you and has a 3-pin SPI-like serial interface to talk to it and set LEDs on or off (you cannot set the LED to be individually dimmed, as in 'grayscale'). There's a few extras as well, such as being able to change the brightness of the entire display, or blink the entire display at 1 Hz.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{YoderFoot}}&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/EBC_Mini_Project_02</id>
		<title>EBC Mini Project 02</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/EBC_Mini_Project_02"/>
				<updated>2012-09-13T16:55:14Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497 |Mini02]]&lt;br /&gt;
{{YoderHead}}&lt;br /&gt;
&lt;br /&gt;
Pick one of the senors from the [https://www.sparkfun.com/products/11016 SparkFun Sensor Kit] or from [http://adafruit.com Adafruit] and interface it to the Bone. Create a wiki page describing how to use the sensor.&lt;br /&gt;
&lt;br /&gt;
Add your name next to the sensor/display you want to use and pick it up from me.&lt;br /&gt;
&lt;br /&gt;
== Sparkfun ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Name&lt;br /&gt;
! Sensor&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| HMC5883L - Triple-Axis Magnetometer Breakout Board&lt;br /&gt;
| An accurate, simple-to-use digital magnetometer with an I2C interface.&lt;br /&gt;
|-&lt;br /&gt;
| Ross Hansen&lt;br /&gt;
| ADXL335 - Triple-Axis Accelerometer Breakout Board&lt;br /&gt;
| Senses acceleration along all three axes, with a range of up to ±3g. Fully analog interface.&lt;br /&gt;
ITG-3200&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Triple-Axis Gyro Breakout Board&lt;br /&gt;
| Senses angular velocity along three axes of rotation. Fully digital interface with a range of up to ±2000°/s.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Large Piezo Vibration Sensor - With Mass&lt;br /&gt;
| A flexible film able to sense for vibration, touch, shock, etc. When the film moves back and forth an AC wave is created, with a voltage of up to ±90.&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Reed Switch&lt;br /&gt;
| Senses magnetic fields, makes for a great non-contact switch.&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| 0.25&amp;quot; Magnet Square&lt;br /&gt;
| Plays nicely with the reed switch. Embed the magnet into stuffed animals or inside a box to create a hidden actuator to the reed switch.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| 0.5&amp;quot; Force Sensitive Resistor&lt;br /&gt;
| A force sensing resistor with a 0.5&amp;quot; diameter sensing area. Great for sensing pressure (i.e. if it's being squeezed).&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| PIR Motion Sensor&lt;br /&gt;
| Easy-to-use motion detector with an analog interface. Power it with 5-12VDC, and you'll be alerted of any movement.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Ultrasonic Rangefinder - Maxbotix LV-EZ1&lt;br /&gt;
| Distance sensor with both analog and RS-232 interfaces, providing sonar range information from 6 to 254 inches.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| HIH-4030 Humidity Sensor&lt;br /&gt;
| A high precision humidity sensor with an analog output.&lt;br /&gt;
|-&lt;br /&gt;
| Andrew Miller&lt;br /&gt;
| IR Receiver Breakout Board&lt;br /&gt;
| An analog interfaced IR receiver, sensitive to a wide range of IR waves. Great for 'listening' to TV remotes.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Mini Photocell&lt;br /&gt;
| The photocell will vary its resistance based on how much light it's exposed to. Will vary from 1kΩ in the light to 10kΩ in the dark.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Optical Detector/Phototransistor&lt;br /&gt;
| An all-in-one infrared emitter and detector. Ideal for sensing black-to-white transitions or can be used to detect nearby objects.&lt;br /&gt;
|-&lt;br /&gt;
| Jesse Brannon&lt;br /&gt;
| BMP085 Barometric Pressure Sensor&lt;br /&gt;
| Low power, high precision barometric pressure sensor with I2C output.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Flex Sensor&lt;br /&gt;
| As the sensor is flexed, the resistance across the sensor increases. Useful for sensing motion or positioning&lt;br /&gt;
|-&lt;br /&gt;
| Chris Good&lt;br /&gt;
| SoftPot&lt;br /&gt;
| These are very thin variable potentiometers. By pressing on various positions along the strip, you vary the resistance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Adafruit ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Name&lt;br /&gt;
! Device&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| Matthew Moravec&lt;br /&gt;
| [https://www.adafruit.com/products/512 Analog 2-axis Thumb Joystick]&lt;br /&gt;
| Analog 2-axis Thumb Joystick with Select Button + Breakout Board&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| [https://www.adafruit.com/products/377 Rotary Encoder]&lt;br /&gt;
| This rotary encoder is a high quality 24-pulse encoder, with detents and a nice feel. This encoder also has a push-button built into it so you can press onto the knob to close a separate switch. One side has a 3 pin connector (ground and two coding pins) and the other side has two pins for a normally-open switch.&lt;br /&gt;
|-&lt;br /&gt;
|Yue Zhang &lt;br /&gt;
| [https://www.adafruit.com/products/333 Touch screen (Nintendo DSL digitizer)]&lt;br /&gt;
| This resistive touch screen can be used with a stylus or fingertip and is easy to use with a microcontroller. &lt;br /&gt;
600 ohms across X pins, 300 ohms across Y pins&lt;br /&gt;
4 wire resistive display, on a 0.5mm FPC connector&lt;br /&gt;
|-&lt;br /&gt;
|Xinyu Cheng &lt;br /&gt;
| [https://www.adafruit.com/products/871 Mini 8x8 LED Matrix w/I2C - Yellow]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Mike Junge&lt;br /&gt;
|[https://www.adafruit.com/products/959 Mini 8x8 LED Matrix w/I2C - Blue]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|[https://www.adafruit.com/products/870 Mini 8x8 LED Matrix w/I2C - Red]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Alex Drane&lt;br /&gt;
|[https://www.adafruit.com/products/902 Bicolor LED Square Pixel Matrix]&lt;br /&gt;
| The matrices use a driver chip that does all the heavy lifting for you: They have a built in clock so they multiplex the display. They use constant-current drivers for ultra-bright, consistent color, 1/16 step display dimming, all via a simple I2C interface.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| [https://www.adafruit.com/products/812 Green 7-segment clock display]&lt;br /&gt;
| These displays are multiplexed, common-cathode. What that means it that you can use a 74HC595.  Sorry, I didn't order the version with i2c.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| [https://www.adafruit.com/products/306 Digital Addressable RGB LED]&lt;br /&gt;
| These LED strips are fun and glowy. There are 32 RGB LEDs per meter, and you can control each LED individually! We have 5 meters worth!&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|Xia Li&lt;br /&gt;
| [https://www.adafruit.com/products/555 16x24 Red LED Matrix Panel]&lt;br /&gt;
| These LED panels take care of all the work of making a big matrix display. Each panel has six 8x8 red matrix modules, for a 16x24 matrix. The panel has a HT1632C chip on the back with does all the multiplexing work for you and has a 3-pin SPI-like serial interface to talk to it and set LEDs on or off (you cannot set the LED to be individually dimmed, as in 'grayscale'). There's a few extras as well, such as being able to change the brightness of the entire display, or blink the entire display at 1 Hz.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{YoderFoot}}&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/EBC_Mini_Project_02</id>
		<title>EBC Mini Project 02</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/EBC_Mini_Project_02"/>
				<updated>2012-09-13T16:49:40Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497 |Mini02]]&lt;br /&gt;
{{YoderHead}}&lt;br /&gt;
&lt;br /&gt;
Pick one of the senors from the [https://www.sparkfun.com/products/11016 SparkFun Sensor Kit] or from [http://adafruit.com Adafruit] and interface it to the Bone. Create a wiki page describing how to use the sensor.&lt;br /&gt;
&lt;br /&gt;
Add your name next to the sensor/display you want to use and pick it up from me.&lt;br /&gt;
&lt;br /&gt;
== Sparkfun ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Name&lt;br /&gt;
! Sensor&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| HMC5883L - Triple-Axis Magnetometer Breakout Board&lt;br /&gt;
| An accurate, simple-to-use digital magnetometer with an I2C interface.&lt;br /&gt;
|-&lt;br /&gt;
| Ross Hansen&lt;br /&gt;
| ADXL335 - Triple-Axis Accelerometer Breakout Board&lt;br /&gt;
| Senses acceleration along all three axes, with a range of up to ±3g. Fully analog interface.&lt;br /&gt;
ITG-3200&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Triple-Axis Gyro Breakout Board&lt;br /&gt;
| Senses angular velocity along three axes of rotation. Fully digital interface with a range of up to ±2000°/s.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Large Piezo Vibration Sensor - With Mass&lt;br /&gt;
| A flexible film able to sense for vibration, touch, shock, etc. When the film moves back and forth an AC wave is created, with a voltage of up to ±90.&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Reed Switch&lt;br /&gt;
| Senses magnetic fields, makes for a great non-contact switch.&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| 0.25&amp;quot; Magnet Square&lt;br /&gt;
| Plays nicely with the reed switch. Embed the magnet into stuffed animals or inside a box to create a hidden actuator to the reed switch.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| 0.5&amp;quot; Force Sensitive Resistor&lt;br /&gt;
| A force sensing resistor with a 0.5&amp;quot; diameter sensing area. Great for sensing pressure (i.e. if it's being squeezed).&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| PIR Motion Sensor&lt;br /&gt;
| Easy-to-use motion detector with an analog interface. Power it with 5-12VDC, and you'll be alerted of any movement.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Ultrasonic Rangefinder - Maxbotix LV-EZ1&lt;br /&gt;
| Distance sensor with both analog and RS-232 interfaces, providing sonar range information from 6 to 254 inches.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| HIH-4030 Humidity Sensor&lt;br /&gt;
| A high precision humidity sensor with an analog output.&lt;br /&gt;
|-&lt;br /&gt;
| Andrew Miller&lt;br /&gt;
| IR Receiver Breakout Board&lt;br /&gt;
| An analog interfaced IR receiver, sensitive to a wide range of IR waves. Great for 'listening' to TV remotes.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Mini Photocell&lt;br /&gt;
| The photocell will vary its resistance based on how much light it's exposed to. Will vary from 1kΩ in the light to 10kΩ in the dark.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Optical Detector/Phototransistor&lt;br /&gt;
| An all-in-one infrared emitter and detector. Ideal for sensing black-to-white transitions or can be used to detect nearby objects.&lt;br /&gt;
|-&lt;br /&gt;
| Jesse Brannon&lt;br /&gt;
| BMP085 Barometric Pressure Sensor&lt;br /&gt;
| Low power, high precision barometric pressure sensor with I2C output.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Flex Sensor&lt;br /&gt;
| As the sensor is flexed, the resistance across the sensor increases. Useful for sensing motion or positioning&lt;br /&gt;
|-&lt;br /&gt;
| Chris Good&lt;br /&gt;
| SoftPot&lt;br /&gt;
| These are very thin variable potentiometers. By pressing on various positions along the strip, you vary the resistance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Adafruit ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Name&lt;br /&gt;
! Device&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| Matthew Moravec&lt;br /&gt;
| [https://www.adafruit.com/products/512 Analog 2-axis Thumb Joystick]&lt;br /&gt;
| Analog 2-axis Thumb Joystick with Select Button + Breakout Board&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| [https://www.adafruit.com/products/377 Rotary Encoder]&lt;br /&gt;
| This rotary encoder is a high quality 24-pulse encoder, with detents and a nice feel. This encoder also has a push-button built into it so you can press onto the knob to close a separate switch. One side has a 3 pin connector (ground and two coding pins) and the other side has two pins for a normally-open switch.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| [https://www.adafruit.com/products/333 Touch screen (Nintendo DSL digitizer)]&lt;br /&gt;
| This resistive touch screen can be used with a stylus or fingertip and is easy to use with a microcontroller. &lt;br /&gt;
600 ohms across X pins, 300 ohms across Y pins&lt;br /&gt;
4 wire resistive display, on a 0.5mm FPC connector&lt;br /&gt;
|-&lt;br /&gt;
|Xinyu Cheng &lt;br /&gt;
| [https://www.adafruit.com/products/871 Mini 8x8 LED Matrix w/I2C - Yellow]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Mike Junge&lt;br /&gt;
|[https://www.adafruit.com/products/959 Mini 8x8 LED Matrix w/I2C - Blue]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|[https://www.adafruit.com/products/870 Mini 8x8 LED Matrix w/I2C - Red]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Alex Drane&lt;br /&gt;
|[https://www.adafruit.com/products/902 Bicolor LED Square Pixel Matrix]&lt;br /&gt;
| The matrices use a driver chip that does all the heavy lifting for you: They have a built in clock so they multiplex the display. They use constant-current drivers for ultra-bright, consistent color, 1/16 step display dimming, all via a simple I2C interface.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| [https://www.adafruit.com/products/812 Green 7-segment clock display]&lt;br /&gt;
| These displays are multiplexed, common-cathode. What that means it that you can use a 74HC595.  Sorry, I didn't order the version with i2c.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| [https://www.adafruit.com/products/306 Digital Addressable RGB LED]&lt;br /&gt;
| These LED strips are fun and glowy. There are 32 RGB LEDs per meter, and you can control each LED individually! We have 5 meters worth!&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|Xia Li&lt;br /&gt;
| [https://www.adafruit.com/products/555 16x24 Red LED Matrix Panel]&lt;br /&gt;
| These LED panels take care of all the work of making a big matrix display. Each panel has six 8x8 red matrix modules, for a 16x24 matrix. The panel has a HT1632C chip on the back with does all the multiplexing work for you and has a 3-pin SPI-like serial interface to talk to it and set LEDs on or off (you cannot set the LED to be individually dimmed, as in 'grayscale'). There's a few extras as well, such as being able to change the brightness of the entire display, or blink the entire display at 1 Hz.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{YoderFoot}}&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Category:ECE497</id>
		<title>Category:ECE497</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Category:ECE497"/>
				<updated>2012-09-11T15:53:57Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Contributions_and_Project_Status</id>
		<title>ECE497 Contributions and Project Status</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Contributions_and_Project_Status"/>
				<updated>2012-09-06T01:22:01Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497 |Contributions]]&lt;br /&gt;
{{YoderHead}}&lt;br /&gt;
&lt;br /&gt;
== Fall 2012 ==&lt;br /&gt;
&lt;br /&gt;
=== Project Status ===&lt;br /&gt;
&lt;br /&gt;
Please edit this page and add your project to this list. Copy my [[ECE497 Project Template]] to your own eLinux page and include the title of your project in the name of the page.  &lt;br /&gt;
&lt;br /&gt;
Please make the list alphabetical by family name.&lt;br /&gt;
&lt;br /&gt;
Take a look at what you and others have contributed.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
! Name&lt;br /&gt;
! Contributions&lt;br /&gt;
! Project&lt;br /&gt;
! git repository&lt;br /&gt;
|-&lt;br /&gt;
| [[User:atniptw | Tom Atnip]]&lt;br /&gt;
| &lt;br /&gt;
| [[ECE497 Project Template | My Beagle Project]]&lt;br /&gt;
| [https://github.com/atniptw/ atniptw]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:larmorgs | Greg Larmore]]&lt;br /&gt;
| &lt;br /&gt;
| [[ECE497 Project Template | My Beagle Project]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[User:jessebrannon | Jesse Brannon]]&lt;br /&gt;
| &lt;br /&gt;
| [[ECE497 Project Template | My Beagle Project]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[User:Xinyu1991 | Xinyu Cheng]]&lt;br /&gt;
| &lt;br /&gt;
| [[ECE497 Project Template | My Beagle Project]]&lt;br /&gt;
| [https://github.com/xinyu1991]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:duganje | Josh Dugan]]&lt;br /&gt;
| &lt;br /&gt;
| [[ECE497 duganje Project | My Beagle Project]]&lt;br /&gt;
| [https://github.com/duganje/ duganje]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Geislekj | Kevin Geisler]]&lt;br /&gt;
| &lt;br /&gt;
| [[ECE497 Project Template | My Beagle Project]]&lt;br /&gt;
| [https://github.com/geislekj/ geislekj]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[User:chris.good | Christopher A Good]]&lt;br /&gt;
| &lt;br /&gt;
| [[ECE497 Project Template | My Beagle Project]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[User:hansenrl | Ross Hansen]]&lt;br /&gt;
| [[Special:Contributions/hansenrl|contrib]]&lt;br /&gt;
| [[ECE497 hansenrl Project | My Beagle Project]]&lt;br /&gt;
| [https://github.com/hansenrl/ Hansenrl]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[User:jungeml | Michael Junge]]&lt;br /&gt;
| &lt;br /&gt;
| [[ECE497 jungeml Project | My Beagle Project]]&lt;br /&gt;
| [https://github.com/jungeml/ Jungeml]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:mmoravec | Matthew Moravec]]&lt;br /&gt;
| &lt;br /&gt;
| [[ECE497 mmoravec Project | My Beagle Project]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[User:ngop | Peter Ngo]]&lt;br /&gt;
| &lt;br /&gt;
| [[ECE497 ngop Project | My Beagle Project]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[User:shinnsm|Stephen Shinn]]&lt;br /&gt;
| [[Special:Contributions/shinnsm|contrib]]&lt;br /&gt;
| Project TBD&lt;br /&gt;
| [https://github.com/shinnsm shinnsm]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:ruff | Ruffin White]]&lt;br /&gt;
| &lt;br /&gt;
| [[ECE497 ruff Project | My Beagle Project]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Yoder | Mark A. Yoder]]&lt;br /&gt;
| [[Special:Contributions/Yoder | contrib]]&lt;br /&gt;
| [[ECE497 Project Template | My Beagle Project]]&lt;br /&gt;
| [https://github.com/MarkAYoder MarkAYoder]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Popenhjc | James Popenhagen]]&lt;br /&gt;
| &lt;br /&gt;
| [[ECE497 popenhjc Project | My Beagle Project]]&lt;br /&gt;
| [https://github.com/popenhjc/ popenhjc]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Whiteer | Elias White]]&lt;br /&gt;
| &lt;br /&gt;
| [[ECE497 whiteer Project | My Beagle Project]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[User:Richarsm | Sean Richardson]]&lt;br /&gt;
| &lt;br /&gt;
| [[ECE497 richarsm Project | My Beagle Project]]&lt;br /&gt;
| [https://github.com/seanrich Sean Richardson]&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Millerap | Andrew Miller]]&lt;br /&gt;
|&lt;br /&gt;
| [[ECE 497 millerap Project | My Beagle Project]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Winter 2011-2012 ==&lt;br /&gt;
&lt;br /&gt;
=== Contributions ===&lt;br /&gt;
&lt;br /&gt;
# [[Special:Contributions/Yuming | Yuming Cao]]&lt;br /&gt;
# [[Special:Contributions/Yifei | Yifei Li]]&lt;br /&gt;
# [[Special:Contributions/Harrisgw | Greg Harrison]]&lt;br /&gt;
# [[Special:Contributions/mac | Jack Ma]]&lt;br /&gt;
# [[Special:Contributions/Gemini91 | Guanqun Wang]]&lt;br /&gt;
# [[Special:Contributions/Yanj | Mona Yan]]&lt;br /&gt;
# [[Special:Contributions/Yoder | Mark A. Yoder]]&lt;br /&gt;
# [[Special:Contributions/Yuhasmj | Michael Yuhas]]&lt;br /&gt;
# [[Special:Contributions/Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
# [[Special:Contributions/Zitnikdj | David Zitnik]]&lt;br /&gt;
# [[Special:Contributions/Zitnikdj | Alex Drane]]&lt;br /&gt;
# [[Special:Contributions/jessebrannon | Jesse Brannon]]&lt;br /&gt;
&lt;br /&gt;
=== Project Status ===&lt;br /&gt;
&lt;br /&gt;
# [[User:Yoder | Mark A. Yoder]], [[ECE497 Project Template | My Beagle Project]]&lt;br /&gt;
# [[user:Yanj|Mona Yan]] and [[user:Harrisgw| Greg Harrison]], [[PS EYE QT PROJECT | Playstation Eye Audio with Qt]]&lt;br /&gt;
# [[user:Caogecym | Yuming Cao]] and [[user:Ziyi Zhang | Ziyi Zhang]], [[Node.js Weather Station]]&lt;br /&gt;
# [[user:Yifei| Yifei Li]] and [[user:Gemini91| Guanqun Wang]], [[ Kinect Project | Play games using Kinect on Beagleboard]]&lt;br /&gt;
# [[user:Yuhasmj| Michael J. Yuhas]] and [[user:mac | Jack Ma]], [[ Multiple Partitions via U-boot | Multiple Partitions via U-boot ]]&lt;br /&gt;
# [[user:Zitnikdj| David Zitnik]], [[ ECE497 Project: Twitter Java Application | Twitter Java Application ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{YoderFoot}}&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/User:Xinyu1991</id>
		<title>User:Xinyu1991</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Xinyu1991"/>
				<updated>2012-08-31T20:22:41Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: Redirected page to Category:ECE497&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Category: ECE497]]&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/User:Xinyu1991</id>
		<title>User:Xinyu1991</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Xinyu1991"/>
				<updated>2012-08-31T20:21:45Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Category]];&lt;br /&gt;
#REDIRECT [[ECE497]];&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/User:Xinyu1991</id>
		<title>User:Xinyu1991</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Xinyu1991"/>
				<updated>2012-08-31T20:21:28Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Category]]&lt;br /&gt;
#REDIRECT [[ECE497]]&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/User:Xinyu1991</id>
		<title>User:Xinyu1991</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Xinyu1991"/>
				<updated>2012-08-31T20:21:11Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Category]] #REDIRECT [[ECE497]]&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/User:Xinyu1991</id>
		<title>User:Xinyu1991</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Xinyu1991"/>
				<updated>2012-08-31T20:20:35Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: Redirected page to Category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Category]]: ECE497&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/User:Xinyu1991</id>
		<title>User:Xinyu1991</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Xinyu1991"/>
				<updated>2012-08-31T20:18:16Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: Created page with &amp;quot;Category: ECE497&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Category: ECE497&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Editing_a_Wiki</id>
		<title>ECE497 Editing a Wiki</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Editing_a_Wiki"/>
				<updated>2012-08-31T20:16:37Z</updated>
		
		<summary type="html">&lt;p&gt;Xinyu1991: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
{{YoderHead}}&lt;br /&gt;
&lt;br /&gt;
Here is a wiki you can practice editing.  Before you can edit it you will have to create an login.  Pick something that will make it easy for me to identify you as part of my class.  Then just add your name and date on the end of the table.&lt;br /&gt;
&lt;br /&gt;
You can get help here: [[Help:Contents]].&lt;br /&gt;
&lt;br /&gt;
If you need help with syntax check out the [[Editing Quickstart Guide|eLinux guide]] or the [http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet Wikipedia Cheatsheet].&lt;br /&gt;
&lt;br /&gt;
== Fall 2012 ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yoder | Mark A. Yoder]]&lt;br /&gt;
| 18-July-2012&lt;br /&gt;
|-&lt;br /&gt;
| [[user:atniptw | Tom Atnip]]&lt;br /&gt;
| 20-July-2012&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Xinyu1991 | Xinyu Cheng]]&lt;br /&gt;
| 31-August-2012&lt;br /&gt;
|-&lt;br /&gt;
| [[user:bssachin45 | B S Sachin]]&lt;br /&gt;
| 25-July-2012&lt;br /&gt;
|-&lt;br /&gt;
| [[user:ruff | Ruffin White]]&lt;br /&gt;
| 16-August-2012&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Popenhjc | James Popenhagen]]&lt;br /&gt;
| 30-August-2012&lt;br /&gt;
|-&lt;br /&gt;
| [[user:mmoravec | Matthew Moravec]]&lt;br /&gt;
| 30-August-2012&lt;br /&gt;
|-&lt;br /&gt;
| [[user:ngop | Peter Ngo]]&lt;br /&gt;
| 30-August-2012&lt;br /&gt;
|-&lt;br /&gt;
| [[user:duganje | Josh Dugan]]&lt;br /&gt;
| 30-August-2012&lt;br /&gt;
|-&lt;br /&gt;
| [[user:hansenrl | Ross Hansen]]&lt;br /&gt;
| 30-August-2012&lt;br /&gt;
|-&lt;br /&gt;
| [[User:shinnsm|Stephen Shinn]]&lt;br /&gt;
| 30-August-2012&lt;br /&gt;
|-&lt;br /&gt;
| [[User:draneaw|Alex Drane]]&lt;br /&gt;
| 30-August-2012&lt;br /&gt;
|-&lt;br /&gt;
| [[User:larmorgs|Greg Larmore]]&lt;br /&gt;
| 31-August-2012&lt;br /&gt;
|-&lt;br /&gt;
| [[User:jessebrannon|Jesse Brannon]]&lt;br /&gt;
| 31-August-2012&lt;br /&gt;
|-&lt;br /&gt;
| [[User:lix|Xia Li]]&lt;br /&gt;
| 31-August-2012&lt;br /&gt;
|-&lt;br /&gt;
| [[User:whiteer|Elias White]]&lt;br /&gt;
| 31-August-2012&lt;br /&gt;
|-&lt;br /&gt;
| [[User:Astroricks|Yue Zhang]]&lt;br /&gt;
| 31-August-2012&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Winter 2011-2012 ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yoder | Mark A. Yoder]]&lt;br /&gt;
| 21-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yuming | Yuming Cao]]&lt;br /&gt;
| 21-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yuhasmj | Michael Yuhas]]&lt;br /&gt;
| 21-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yifei | Yifei Li]]&lt;br /&gt;
| 22-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
| 24-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
|[[user: mac | Jack Ma]]&lt;br /&gt;
| 28-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Zitnikdj | David Zitnik]]&lt;br /&gt;
| 25-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Harrisgw | Greg Harrison]]&lt;br /&gt;
| 26-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yanj | Mona J Yan]]&lt;br /&gt;
| 27-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Gemini91 | Guanqun Wang]]&lt;br /&gt;
| 28-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:vsn1985 | Narayanan VS]]&lt;br /&gt;
| 28-Nov-2011&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{YoderFoot}}&lt;/div&gt;</summary>
		<author><name>Xinyu1991</name></author>	</entry>

	</feed>