<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://gcat.davidson.edu/GcatWiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Copoff</id>
		<title>GcatWiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://gcat.davidson.edu/GcatWiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Copoff"/>
		<link rel="alternate" type="text/html" href="http://gcat.davidson.edu/GcatWiki/index.php?title=Special:Contributions/Copoff"/>
		<updated>2026-05-20T05:39:28Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.28.2</generator>

	<entry>
		<id>http://gcat.davidson.edu/GcatWiki/index.php?title=R2D2_Tutorial&amp;diff=14510</id>
		<title>R2D2 Tutorial</title>
		<link rel="alternate" type="text/html" href="http://gcat.davidson.edu/GcatWiki/index.php?title=R2D2_Tutorial&amp;diff=14510"/>
				<updated>2012-05-10T04:09:59Z</updated>
		
		<summary type="html">&lt;p&gt;Copoff: /* Set up iRobot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Part of the college’s Climate Action Plan is the reduction of energy used in the heating and cooling of campus buildings. Our class has identified an innovative way of further increasing the energy efficiency of the Chambers academic building. In the warmer months of the year, students and professors frequently open classroom windows to let in fresh air. The problem is that they then neglect to close the windows, leaving them open all through the afternoon and night. Since the temperature and air filtration systems of the rooms and building in general are self-regulating, much energy is wasted when the systems tries to regulate a room with open windows. A large amount of energy could be saved if it was ensured that these windows were closed after the last class leaves the room each day.&lt;br /&gt;
&lt;br /&gt;
==Proposal==&lt;br /&gt;
To this end, the CSC 382 Artificial Intelligence class, taught by Dr. Laurie Heyer, proposes a solution which will help reduce energy waste through these open windows and provide us with an opportunity for first-hand experience in robotics, an increasingly important subfield of Artificial Intelligence. &lt;br /&gt;
&lt;br /&gt;
Our solution centers on configuring, programming and testing small robots to navigate Chambers at designated times, determine which classrooms have open windows, and report the room numbers (e.g., by email) to an agent capable of closing them. In this class, we have learned a variety of data and image processing methods that will enable us to implement this solution, but the college does not have the appropriate hardware.&lt;br /&gt;
&lt;br /&gt;
We propose purchasing two iRobot Create robots, essentially the same hardware as the Roomba robotic vacuum cleaner. These commercially available robots are designed for educational projects such as ours, and include developer tools that enable us to program the robot directly, as well as wirelessly communicate with the robot from a standard laptop or desktop computer.&lt;br /&gt;
&lt;br /&gt;
The full outline for this project is available [http://gcat.davidson.edu/mediawiki-1.15.0/index.php/File:Davidson_iRobot_Proposal.pdf here].&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
*MacOS X computer&lt;br /&gt;
**Needs bluetooth&lt;br /&gt;
**Needs MatLab and Python 2.7.3&lt;br /&gt;
*iRobot Create&lt;br /&gt;
*BAM iRobot bluetooth adaptor&lt;br /&gt;
*Wifi webcam that you can power&lt;br /&gt;
**We used [http://foscam.us/foscam-fi8918w-wireless-ip-camera-11.html Foscam FI8918W] because it ran off 5 volt power, allowing us to wire it to the iRobot for power.&lt;br /&gt;
&lt;br /&gt;
==Guide==&lt;br /&gt;
====Install software/packages/scripts on Mac====&lt;br /&gt;
*MatLab Setup&lt;br /&gt;
#Install [http://www.usna.edu/Users/weapsys/esposito/roomba.matlab/ Matlab Toolbox for the iRobot Create]&lt;br /&gt;
*Python Setup&lt;br /&gt;
#Download and Install [http://opencv.willowgarage.com/wiki/Mac_OS_X_OpenCV_Port MacPorts]&lt;br /&gt;
#Open terminal and type the following commands.&lt;br /&gt;
#Install open cv for python 2.7 &amp;lt;pre&amp;gt;sudo port -v install opencv +python27&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Install pil for python 2.7 &amp;lt;pre&amp;gt;sudo port install py27-pil&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Optional: Install selenium for python 2.7 (use this option if you want to control the webcam via a browser)&amp;lt;pre&amp;gt;sudo port install py27-selenium&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Set this MacPorts installed python as the default python interpreter: &amp;lt;pre&amp;gt;sudo port select --set python python27&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Download [http://dl.dropbox.com/u/4936834/webcam.py webcam.py] to control the wifi webcam&lt;br /&gt;
*Other Terminal Setup&lt;br /&gt;
#Install pkill command to terminal via MacPorts &amp;lt;pre&amp;gt;sudo port install proctools&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Set up iRobot====&lt;br /&gt;
#Determine how you want to power the webcam while it is attached to the robot (Is it going to feed off the robot power or have its own dedicated power supply?)&lt;br /&gt;
#Determine how you want to mount the camera to the iRobot. Our mount scheme is available [http://gcat.davidson.edu/mediawiki-1.15.0/images/5/5e/IRobotStand.docx here].&lt;br /&gt;
#Connect the the BAM bluetooth adaptor to the iRobot by following the [http://gcat.davidson.edu/mediawiki-1.15.0/index.php/File:BAM_iRobot_Manual.pdf manual] to connect it to the computer.&lt;br /&gt;
#Now connected to the iRobot, ensure the camera is turned on&lt;br /&gt;
[[Media:Matlab Serial Port and Bluetooth Setup Help.docx]]&lt;br /&gt;
&lt;br /&gt;
====Control the iRobot====&lt;br /&gt;
#Configure webcam.py&lt;br /&gt;
##webcam.py has a method (write_img_stream) that will constantly write and update the same image jpeg file. Set the webcam object to write that file to a directory accessible by matlab.&lt;br /&gt;
##The webcam.py script should only set up the webcam object and call write_img_stream() for the way we set it up&lt;br /&gt;
#Configure matlab script&lt;br /&gt;
##Set the read image path for matlab to read in the file that python constantly writes to. This way, whenever the brain in matlab needs an image to process, it can simply read the file written by the python webcam controller.&lt;br /&gt;
#Run the robot&lt;br /&gt;
##Begin webcam.py script in terminal &amp;lt;pre&amp;gt;python /path/to/webcam.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
##Run the matlab code&lt;br /&gt;
##When you are done, the python script needs to be killed (its in an infinite loop) so in another terminal window &amp;lt;pre&amp;gt;pkill -9 -f webcam.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Media:The_Algorithm.docx]]&lt;br /&gt;
&lt;br /&gt;
====Matlab Code====&lt;br /&gt;
[[Media:Our(Important)MatlabCode.zip]]&lt;/div&gt;</summary>
		<author><name>Copoff</name></author>	</entry>

	<entry>
		<id>http://gcat.davidson.edu/GcatWiki/index.php?title=R2D2_Tutorial&amp;diff=14509</id>
		<title>R2D2 Tutorial</title>
		<link rel="alternate" type="text/html" href="http://gcat.davidson.edu/GcatWiki/index.php?title=R2D2_Tutorial&amp;diff=14509"/>
				<updated>2012-05-10T04:08:54Z</updated>
		
		<summary type="html">&lt;p&gt;Copoff: /* Matlab Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Part of the college’s Climate Action Plan is the reduction of energy used in the heating and cooling of campus buildings. Our class has identified an innovative way of further increasing the energy efficiency of the Chambers academic building. In the warmer months of the year, students and professors frequently open classroom windows to let in fresh air. The problem is that they then neglect to close the windows, leaving them open all through the afternoon and night. Since the temperature and air filtration systems of the rooms and building in general are self-regulating, much energy is wasted when the systems tries to regulate a room with open windows. A large amount of energy could be saved if it was ensured that these windows were closed after the last class leaves the room each day.&lt;br /&gt;
&lt;br /&gt;
==Proposal==&lt;br /&gt;
To this end, the CSC 382 Artificial Intelligence class, taught by Dr. Laurie Heyer, proposes a solution which will help reduce energy waste through these open windows and provide us with an opportunity for first-hand experience in robotics, an increasingly important subfield of Artificial Intelligence. &lt;br /&gt;
&lt;br /&gt;
Our solution centers on configuring, programming and testing small robots to navigate Chambers at designated times, determine which classrooms have open windows, and report the room numbers (e.g., by email) to an agent capable of closing them. In this class, we have learned a variety of data and image processing methods that will enable us to implement this solution, but the college does not have the appropriate hardware.&lt;br /&gt;
&lt;br /&gt;
We propose purchasing two iRobot Create robots, essentially the same hardware as the Roomba robotic vacuum cleaner. These commercially available robots are designed for educational projects such as ours, and include developer tools that enable us to program the robot directly, as well as wirelessly communicate with the robot from a standard laptop or desktop computer.&lt;br /&gt;
&lt;br /&gt;
The full outline for this project is available [http://gcat.davidson.edu/mediawiki-1.15.0/index.php/File:Davidson_iRobot_Proposal.pdf here].&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
*MacOS X computer&lt;br /&gt;
**Needs bluetooth&lt;br /&gt;
**Needs MatLab and Python 2.7.3&lt;br /&gt;
*iRobot Create&lt;br /&gt;
*BAM iRobot bluetooth adaptor&lt;br /&gt;
*Wifi webcam that you can power&lt;br /&gt;
**We used [http://foscam.us/foscam-fi8918w-wireless-ip-camera-11.html Foscam FI8918W] because it ran off 5 volt power, allowing us to wire it to the iRobot for power.&lt;br /&gt;
&lt;br /&gt;
==Guide==&lt;br /&gt;
====Install software/packages/scripts on Mac====&lt;br /&gt;
*MatLab Setup&lt;br /&gt;
#Install [http://www.usna.edu/Users/weapsys/esposito/roomba.matlab/ Matlab Toolbox for the iRobot Create]&lt;br /&gt;
*Python Setup&lt;br /&gt;
#Download and Install [http://opencv.willowgarage.com/wiki/Mac_OS_X_OpenCV_Port MacPorts]&lt;br /&gt;
#Open terminal and type the following commands.&lt;br /&gt;
#Install open cv for python 2.7 &amp;lt;pre&amp;gt;sudo port -v install opencv +python27&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Install pil for python 2.7 &amp;lt;pre&amp;gt;sudo port install py27-pil&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Optional: Install selenium for python 2.7 (use this option if you want to control the webcam via a browser)&amp;lt;pre&amp;gt;sudo port install py27-selenium&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Set this MacPorts installed python as the default python interpreter: &amp;lt;pre&amp;gt;sudo port select --set python python27&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Download [http://dl.dropbox.com/u/4936834/webcam.py webcam.py] to control the wifi webcam&lt;br /&gt;
*Other Terminal Setup&lt;br /&gt;
#Install pkill command to terminal via MacPorts &amp;lt;pre&amp;gt;sudo port install proctools&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Set up iRobot====&lt;br /&gt;
#Determine how you want to power the webcam while it is attached to the robot (Is it going to feed off the robot power or have its own dedicated power supply?)&lt;br /&gt;
#Determine how you want to mount the camera to the iRobot. Our mount scheme is available [http://gcat.davidson.edu/mediawiki-1.15.0/images/5/5e/IRobotStand.docx here].&lt;br /&gt;
#Connect the the BAM bluetooth adaptor to the iRobot by following the [http://gcat.davidson.edu/mediawiki-1.15.0/index.php/File:BAM_iRobot_Manual.pdf manual] to connect it to the computer.&lt;br /&gt;
#Now connected to the iRobot, ensure the camera is turned on&lt;br /&gt;
#[[Media:Matlab Serial Port and Bluetooth Setup Help.docx]]&lt;br /&gt;
&lt;br /&gt;
====Control the iRobot====&lt;br /&gt;
#Configure webcam.py&lt;br /&gt;
##webcam.py has a method (write_img_stream) that will constantly write and update the same image jpeg file. Set the webcam object to write that file to a directory accessible by matlab.&lt;br /&gt;
##The webcam.py script should only set up the webcam object and call write_img_stream() for the way we set it up&lt;br /&gt;
#Configure matlab script&lt;br /&gt;
##Set the read image path for matlab to read in the file that python constantly writes to. This way, whenever the brain in matlab needs an image to process, it can simply read the file written by the python webcam controller.&lt;br /&gt;
#Run the robot&lt;br /&gt;
##Begin webcam.py script in terminal &amp;lt;pre&amp;gt;python /path/to/webcam.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
##Run the matlab code&lt;br /&gt;
##When you are done, the python script needs to be killed (its in an infinite loop) so in another terminal window &amp;lt;pre&amp;gt;pkill -9 -f webcam.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Media:The_Algorithm.docx]]&lt;br /&gt;
&lt;br /&gt;
====Matlab Code====&lt;br /&gt;
[[Media:Our(Important)MatlabCode.zip]]&lt;/div&gt;</summary>
		<author><name>Copoff</name></author>	</entry>

	<entry>
		<id>http://gcat.davidson.edu/GcatWiki/index.php?title=File:Our(Important)MatlabCode.zip&amp;diff=14508</id>
		<title>File:Our(Important)MatlabCode.zip</title>
		<link rel="alternate" type="text/html" href="http://gcat.davidson.edu/GcatWiki/index.php?title=File:Our(Important)MatlabCode.zip&amp;diff=14508"/>
				<updated>2012-05-10T04:06:35Z</updated>
		
		<summary type="html">&lt;p&gt;Copoff: This contains all of the scripts and functions that we wrote ourselves. The code is (mostly) well commented.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This contains all of the scripts and functions that we wrote ourselves. The code is (mostly) well commented.&lt;/div&gt;</summary>
		<author><name>Copoff</name></author>	</entry>

	<entry>
		<id>http://gcat.davidson.edu/GcatWiki/index.php?title=R2D2_Tutorial&amp;diff=14507</id>
		<title>R2D2 Tutorial</title>
		<link rel="alternate" type="text/html" href="http://gcat.davidson.edu/GcatWiki/index.php?title=R2D2_Tutorial&amp;diff=14507"/>
				<updated>2012-05-10T04:04:11Z</updated>
		
		<summary type="html">&lt;p&gt;Copoff: /* Guide */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Part of the college’s Climate Action Plan is the reduction of energy used in the heating and cooling of campus buildings. Our class has identified an innovative way of further increasing the energy efficiency of the Chambers academic building. In the warmer months of the year, students and professors frequently open classroom windows to let in fresh air. The problem is that they then neglect to close the windows, leaving them open all through the afternoon and night. Since the temperature and air filtration systems of the rooms and building in general are self-regulating, much energy is wasted when the systems tries to regulate a room with open windows. A large amount of energy could be saved if it was ensured that these windows were closed after the last class leaves the room each day.&lt;br /&gt;
&lt;br /&gt;
==Proposal==&lt;br /&gt;
To this end, the CSC 382 Artificial Intelligence class, taught by Dr. Laurie Heyer, proposes a solution which will help reduce energy waste through these open windows and provide us with an opportunity for first-hand experience in robotics, an increasingly important subfield of Artificial Intelligence. &lt;br /&gt;
&lt;br /&gt;
Our solution centers on configuring, programming and testing small robots to navigate Chambers at designated times, determine which classrooms have open windows, and report the room numbers (e.g., by email) to an agent capable of closing them. In this class, we have learned a variety of data and image processing methods that will enable us to implement this solution, but the college does not have the appropriate hardware.&lt;br /&gt;
&lt;br /&gt;
We propose purchasing two iRobot Create robots, essentially the same hardware as the Roomba robotic vacuum cleaner. These commercially available robots are designed for educational projects such as ours, and include developer tools that enable us to program the robot directly, as well as wirelessly communicate with the robot from a standard laptop or desktop computer.&lt;br /&gt;
&lt;br /&gt;
The full outline for this project is available [http://gcat.davidson.edu/mediawiki-1.15.0/index.php/File:Davidson_iRobot_Proposal.pdf here].&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
*MacOS X computer&lt;br /&gt;
**Needs bluetooth&lt;br /&gt;
**Needs MatLab and Python 2.7.3&lt;br /&gt;
*iRobot Create&lt;br /&gt;
*BAM iRobot bluetooth adaptor&lt;br /&gt;
*Wifi webcam that you can power&lt;br /&gt;
**We used [http://foscam.us/foscam-fi8918w-wireless-ip-camera-11.html Foscam FI8918W] because it ran off 5 volt power, allowing us to wire it to the iRobot for power.&lt;br /&gt;
&lt;br /&gt;
==Guide==&lt;br /&gt;
====Install software/packages/scripts on Mac====&lt;br /&gt;
*MatLab Setup&lt;br /&gt;
#Install [http://www.usna.edu/Users/weapsys/esposito/roomba.matlab/ Matlab Toolbox for the iRobot Create]&lt;br /&gt;
*Python Setup&lt;br /&gt;
#Download and Install [http://opencv.willowgarage.com/wiki/Mac_OS_X_OpenCV_Port MacPorts]&lt;br /&gt;
#Open terminal and type the following commands.&lt;br /&gt;
#Install open cv for python 2.7 &amp;lt;pre&amp;gt;sudo port -v install opencv +python27&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Install pil for python 2.7 &amp;lt;pre&amp;gt;sudo port install py27-pil&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Optional: Install selenium for python 2.7 (use this option if you want to control the webcam via a browser)&amp;lt;pre&amp;gt;sudo port install py27-selenium&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Set this MacPorts installed python as the default python interpreter: &amp;lt;pre&amp;gt;sudo port select --set python python27&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Download [http://dl.dropbox.com/u/4936834/webcam.py webcam.py] to control the wifi webcam&lt;br /&gt;
*Other Terminal Setup&lt;br /&gt;
#Install pkill command to terminal via MacPorts &amp;lt;pre&amp;gt;sudo port install proctools&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Set up iRobot====&lt;br /&gt;
#Determine how you want to power the webcam while it is attached to the robot (Is it going to feed off the robot power or have its own dedicated power supply?)&lt;br /&gt;
#Determine how you want to mount the camera to the iRobot. Our mount scheme is available [http://gcat.davidson.edu/mediawiki-1.15.0/images/5/5e/IRobotStand.docx here].&lt;br /&gt;
#Connect the the BAM bluetooth adaptor to the iRobot by following the [http://gcat.davidson.edu/mediawiki-1.15.0/index.php/File:BAM_iRobot_Manual.pdf manual] to connect it to the computer.&lt;br /&gt;
#Now connected to the iRobot, ensure the camera is turned on&lt;br /&gt;
#[[Media:Matlab Serial Port and Bluetooth Setup Help.docx]]&lt;br /&gt;
&lt;br /&gt;
====Control the iRobot====&lt;br /&gt;
#Configure webcam.py&lt;br /&gt;
##webcam.py has a method (write_img_stream) that will constantly write and update the same image jpeg file. Set the webcam object to write that file to a directory accessible by matlab.&lt;br /&gt;
##The webcam.py script should only set up the webcam object and call write_img_stream() for the way we set it up&lt;br /&gt;
#Configure matlab script&lt;br /&gt;
##Set the read image path for matlab to read in the file that python constantly writes to. This way, whenever the brain in matlab needs an image to process, it can simply read the file written by the python webcam controller.&lt;br /&gt;
#Run the robot&lt;br /&gt;
##Begin webcam.py script in terminal &amp;lt;pre&amp;gt;python /path/to/webcam.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
##Run the matlab code&lt;br /&gt;
##When you are done, the python script needs to be killed (its in an infinite loop) so in another terminal window &amp;lt;pre&amp;gt;pkill -9 -f webcam.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Media:The_Algorithm.docx]]&lt;br /&gt;
&lt;br /&gt;
====Matlab Code====&lt;/div&gt;</summary>
		<author><name>Copoff</name></author>	</entry>

	<entry>
		<id>http://gcat.davidson.edu/GcatWiki/index.php?title=File:Matlab_Serial_Port_and_Bluetooth_Setup_Help.docx&amp;diff=14506</id>
		<title>File:Matlab Serial Port and Bluetooth Setup Help.docx</title>
		<link rel="alternate" type="text/html" href="http://gcat.davidson.edu/GcatWiki/index.php?title=File:Matlab_Serial_Port_and_Bluetooth_Setup_Help.docx&amp;diff=14506"/>
				<updated>2012-05-10T04:03:23Z</updated>
		
		<summary type="html">&lt;p&gt;Copoff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Copoff</name></author>	</entry>

	<entry>
		<id>http://gcat.davidson.edu/GcatWiki/index.php?title=R2D2_Tutorial&amp;diff=14505</id>
		<title>R2D2 Tutorial</title>
		<link rel="alternate" type="text/html" href="http://gcat.davidson.edu/GcatWiki/index.php?title=R2D2_Tutorial&amp;diff=14505"/>
				<updated>2012-05-10T04:02:55Z</updated>
		
		<summary type="html">&lt;p&gt;Copoff: /* Set up iRobot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Part of the college’s Climate Action Plan is the reduction of energy used in the heating and cooling of campus buildings. Our class has identified an innovative way of further increasing the energy efficiency of the Chambers academic building. In the warmer months of the year, students and professors frequently open classroom windows to let in fresh air. The problem is that they then neglect to close the windows, leaving them open all through the afternoon and night. Since the temperature and air filtration systems of the rooms and building in general are self-regulating, much energy is wasted when the systems tries to regulate a room with open windows. A large amount of energy could be saved if it was ensured that these windows were closed after the last class leaves the room each day.&lt;br /&gt;
&lt;br /&gt;
==Proposal==&lt;br /&gt;
To this end, the CSC 382 Artificial Intelligence class, taught by Dr. Laurie Heyer, proposes a solution which will help reduce energy waste through these open windows and provide us with an opportunity for first-hand experience in robotics, an increasingly important subfield of Artificial Intelligence. &lt;br /&gt;
&lt;br /&gt;
Our solution centers on configuring, programming and testing small robots to navigate Chambers at designated times, determine which classrooms have open windows, and report the room numbers (e.g., by email) to an agent capable of closing them. In this class, we have learned a variety of data and image processing methods that will enable us to implement this solution, but the college does not have the appropriate hardware.&lt;br /&gt;
&lt;br /&gt;
We propose purchasing two iRobot Create robots, essentially the same hardware as the Roomba robotic vacuum cleaner. These commercially available robots are designed for educational projects such as ours, and include developer tools that enable us to program the robot directly, as well as wirelessly communicate with the robot from a standard laptop or desktop computer.&lt;br /&gt;
&lt;br /&gt;
The full outline for this project is available [http://gcat.davidson.edu/mediawiki-1.15.0/index.php/File:Davidson_iRobot_Proposal.pdf here].&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
*MacOS X computer&lt;br /&gt;
**Needs bluetooth&lt;br /&gt;
**Needs MatLab and Python 2.7.3&lt;br /&gt;
*iRobot Create&lt;br /&gt;
*BAM iRobot bluetooth adaptor&lt;br /&gt;
*Wifi webcam that you can power&lt;br /&gt;
**We used [http://foscam.us/foscam-fi8918w-wireless-ip-camera-11.html Foscam FI8918W] because it ran off 5 volt power, allowing us to wire it to the iRobot for power.&lt;br /&gt;
&lt;br /&gt;
==Guide==&lt;br /&gt;
====Install software/packages/scripts on Mac====&lt;br /&gt;
*MatLab Setup&lt;br /&gt;
#Install [http://www.usna.edu/Users/weapsys/esposito/roomba.matlab/ Matlab Toolbox for the iRobot Create]&lt;br /&gt;
*Python Setup&lt;br /&gt;
#Download and Install [http://opencv.willowgarage.com/wiki/Mac_OS_X_OpenCV_Port MacPorts]&lt;br /&gt;
#Open terminal and type the following commands.&lt;br /&gt;
#Install open cv for python 2.7 &amp;lt;pre&amp;gt;sudo port -v install opencv +python27&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Install pil for python 2.7 &amp;lt;pre&amp;gt;sudo port install py27-pil&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Optional: Install selenium for python 2.7 (use this option if you want to control the webcam via a browser)&amp;lt;pre&amp;gt;sudo port install py27-selenium&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Set this MacPorts installed python as the default python interpreter: &amp;lt;pre&amp;gt;sudo port select --set python python27&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Download [http://dl.dropbox.com/u/4936834/webcam.py webcam.py] to control the wifi webcam&lt;br /&gt;
*Other Terminal Setup&lt;br /&gt;
#Install pkill command to terminal via MacPorts &amp;lt;pre&amp;gt;sudo port install proctools&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Set up iRobot====&lt;br /&gt;
#Determine how you want to power the webcam while it is attached to the robot (Is it going to feed off the robot power or have its own dedicated power supply?)&lt;br /&gt;
#Determine how you want to mount the camera to the iRobot. Our mount scheme is available [http://gcat.davidson.edu/mediawiki-1.15.0/images/5/5e/IRobotStand.docx here].&lt;br /&gt;
#Connect the the BAM bluetooth adaptor to the iRobot by following the [http://gcat.davidson.edu/mediawiki-1.15.0/index.php/File:BAM_iRobot_Manual.pdf manual] to connect it to the computer.&lt;br /&gt;
#Now connected to the iRobot, ensure the camera is turned on&lt;br /&gt;
#[[Media:Matlab Serial Port and Bluetooth Setup Help.docx]]&lt;br /&gt;
&lt;br /&gt;
====Control the iRobot====&lt;br /&gt;
#Configure webcam.py&lt;br /&gt;
##webcam.py has a method (write_img_stream) that will constantly write and update the same image jpeg file. Set the webcam object to write that file to a directory accessible by matlab.&lt;br /&gt;
##The webcam.py script should only set up the webcam object and call write_img_stream() for the way we set it up&lt;br /&gt;
#Configure matlab script&lt;br /&gt;
##Set the read image path for matlab to read in the file that python constantly writes to. This way, whenever the brain in matlab needs an image to process, it can simply read the file written by the python webcam controller.&lt;br /&gt;
#Run the robot&lt;br /&gt;
##Begin webcam.py script in terminal &amp;lt;pre&amp;gt;python /path/to/webcam.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
##Run the matlab code&lt;br /&gt;
##When you are done, the python script needs to be killed (its in an infinite loop) so in another terminal window &amp;lt;pre&amp;gt;pkill -9 -f webcam.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Media:The_Algorithm.docx]]&lt;br /&gt;
&lt;br /&gt;
====Matlab Navigation Code====&lt;br /&gt;
#[[Media:initialize.m]]&lt;br /&gt;
#[[Media:RoombaInit.m]]&lt;br /&gt;
#[[Media:WallSensorRoomba.m]]&lt;br /&gt;
#[[Media:turnAngleCyrus.m]]&lt;br /&gt;
&lt;br /&gt;
====Matlab Image Processing Code====&lt;/div&gt;</summary>
		<author><name>Copoff</name></author>	</entry>

	<entry>
		<id>http://gcat.davidson.edu/GcatWiki/index.php?title=R2D2_Tutorial&amp;diff=14504</id>
		<title>R2D2 Tutorial</title>
		<link rel="alternate" type="text/html" href="http://gcat.davidson.edu/GcatWiki/index.php?title=R2D2_Tutorial&amp;diff=14504"/>
				<updated>2012-05-10T03:53:46Z</updated>
		
		<summary type="html">&lt;p&gt;Copoff: /* Matlab Navigation Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Part of the college’s Climate Action Plan is the reduction of energy used in the heating and cooling of campus buildings. Our class has identified an innovative way of further increasing the energy efficiency of the Chambers academic building. In the warmer months of the year, students and professors frequently open classroom windows to let in fresh air. The problem is that they then neglect to close the windows, leaving them open all through the afternoon and night. Since the temperature and air filtration systems of the rooms and building in general are self-regulating, much energy is wasted when the systems tries to regulate a room with open windows. A large amount of energy could be saved if it was ensured that these windows were closed after the last class leaves the room each day.&lt;br /&gt;
&lt;br /&gt;
==Proposal==&lt;br /&gt;
To this end, the CSC 382 Artificial Intelligence class, taught by Dr. Laurie Heyer, proposes a solution which will help reduce energy waste through these open windows and provide us with an opportunity for first-hand experience in robotics, an increasingly important subfield of Artificial Intelligence. &lt;br /&gt;
&lt;br /&gt;
Our solution centers on configuring, programming and testing small robots to navigate Chambers at designated times, determine which classrooms have open windows, and report the room numbers (e.g., by email) to an agent capable of closing them. In this class, we have learned a variety of data and image processing methods that will enable us to implement this solution, but the college does not have the appropriate hardware.&lt;br /&gt;
&lt;br /&gt;
We propose purchasing two iRobot Create robots, essentially the same hardware as the Roomba robotic vacuum cleaner. These commercially available robots are designed for educational projects such as ours, and include developer tools that enable us to program the robot directly, as well as wirelessly communicate with the robot from a standard laptop or desktop computer.&lt;br /&gt;
&lt;br /&gt;
The full outline for this project is available [http://gcat.davidson.edu/mediawiki-1.15.0/index.php/File:Davidson_iRobot_Proposal.pdf here].&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
*MacOS X computer&lt;br /&gt;
**Needs bluetooth&lt;br /&gt;
**Needs MatLab and Python 2.7.3&lt;br /&gt;
*iRobot Create&lt;br /&gt;
*BAM iRobot bluetooth adaptor&lt;br /&gt;
*Wifi webcam that you can power&lt;br /&gt;
**We used [http://foscam.us/foscam-fi8918w-wireless-ip-camera-11.html Foscam FI8918W] because it ran off 5 volt power, allowing us to wire it to the iRobot for power.&lt;br /&gt;
&lt;br /&gt;
==Guide==&lt;br /&gt;
====Install software/packages/scripts on Mac====&lt;br /&gt;
*MatLab Setup&lt;br /&gt;
#Install [http://www.usna.edu/Users/weapsys/esposito/roomba.matlab/ Matlab Toolbox for the iRobot Create]&lt;br /&gt;
*Python Setup&lt;br /&gt;
#Download and Install [http://opencv.willowgarage.com/wiki/Mac_OS_X_OpenCV_Port MacPorts]&lt;br /&gt;
#Open terminal and type the following commands.&lt;br /&gt;
#Install open cv for python 2.7 &amp;lt;pre&amp;gt;sudo port -v install opencv +python27&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Install pil for python 2.7 &amp;lt;pre&amp;gt;sudo port install py27-pil&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Optional: Install selenium for python 2.7 (use this option if you want to control the webcam via a browser)&amp;lt;pre&amp;gt;sudo port install py27-selenium&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Set this MacPorts installed python as the default python interpreter: &amp;lt;pre&amp;gt;sudo port select --set python python27&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Download [http://dl.dropbox.com/u/4936834/webcam.py webcam.py] to control the wifi webcam&lt;br /&gt;
*Other Terminal Setup&lt;br /&gt;
#Install pkill command to terminal via MacPorts &amp;lt;pre&amp;gt;sudo port install proctools&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Set up iRobot====&lt;br /&gt;
#Determine how you want to power the webcam while it is attached to the robot (Is it going to feed off the robot power or have its own dedicated power supply?)&lt;br /&gt;
#Determine how you want to mount the camera to the iRobot. Our mount scheme is available [http://gcat.davidson.edu/mediawiki-1.15.0/images/5/5e/IRobotStand.docx here].&lt;br /&gt;
#Connect the the BAM bluetooth adaptor to the iRobot by following the [http://gcat.davidson.edu/mediawiki-1.15.0/index.php/File:BAM_iRobot_Manual.pdf manual] to connect it to the computer.&lt;br /&gt;
#Now connected to the iRobot, ensure the camera is turned on&lt;br /&gt;
&lt;br /&gt;
====Control the iRobot====&lt;br /&gt;
#Configure webcam.py&lt;br /&gt;
##webcam.py has a method (write_img_stream) that will constantly write and update the same image jpeg file. Set the webcam object to write that file to a directory accessible by matlab.&lt;br /&gt;
##The webcam.py script should only set up the webcam object and call write_img_stream() for the way we set it up&lt;br /&gt;
#Configure matlab script&lt;br /&gt;
##Set the read image path for matlab to read in the file that python constantly writes to. This way, whenever the brain in matlab needs an image to process, it can simply read the file written by the python webcam controller.&lt;br /&gt;
#Run the robot&lt;br /&gt;
##Begin webcam.py script in terminal &amp;lt;pre&amp;gt;python /path/to/webcam.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
##Run the matlab code&lt;br /&gt;
##When you are done, the python script needs to be killed (its in an infinite loop) so in another terminal window &amp;lt;pre&amp;gt;pkill -9 -f webcam.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Media:The_Algorithm.docx]]&lt;br /&gt;
&lt;br /&gt;
====Matlab Navigation Code====&lt;br /&gt;
#[[Media:initialize.m]]&lt;br /&gt;
#[[Media:RoombaInit.m]]&lt;br /&gt;
#[[Media:WallSensorRoomba.m]]&lt;br /&gt;
#[[Media:turnAngleCyrus.m]]&lt;br /&gt;
&lt;br /&gt;
====Matlab Image Processing Code====&lt;/div&gt;</summary>
		<author><name>Copoff</name></author>	</entry>

	<entry>
		<id>http://gcat.davidson.edu/GcatWiki/index.php?title=R2D2_Tutorial&amp;diff=14503</id>
		<title>R2D2 Tutorial</title>
		<link rel="alternate" type="text/html" href="http://gcat.davidson.edu/GcatWiki/index.php?title=R2D2_Tutorial&amp;diff=14503"/>
				<updated>2012-05-10T03:53:12Z</updated>
		
		<summary type="html">&lt;p&gt;Copoff: /* Matlab Navigation Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Part of the college’s Climate Action Plan is the reduction of energy used in the heating and cooling of campus buildings. Our class has identified an innovative way of further increasing the energy efficiency of the Chambers academic building. In the warmer months of the year, students and professors frequently open classroom windows to let in fresh air. The problem is that they then neglect to close the windows, leaving them open all through the afternoon and night. Since the temperature and air filtration systems of the rooms and building in general are self-regulating, much energy is wasted when the systems tries to regulate a room with open windows. A large amount of energy could be saved if it was ensured that these windows were closed after the last class leaves the room each day.&lt;br /&gt;
&lt;br /&gt;
==Proposal==&lt;br /&gt;
To this end, the CSC 382 Artificial Intelligence class, taught by Dr. Laurie Heyer, proposes a solution which will help reduce energy waste through these open windows and provide us with an opportunity for first-hand experience in robotics, an increasingly important subfield of Artificial Intelligence. &lt;br /&gt;
&lt;br /&gt;
Our solution centers on configuring, programming and testing small robots to navigate Chambers at designated times, determine which classrooms have open windows, and report the room numbers (e.g., by email) to an agent capable of closing them. In this class, we have learned a variety of data and image processing methods that will enable us to implement this solution, but the college does not have the appropriate hardware.&lt;br /&gt;
&lt;br /&gt;
We propose purchasing two iRobot Create robots, essentially the same hardware as the Roomba robotic vacuum cleaner. These commercially available robots are designed for educational projects such as ours, and include developer tools that enable us to program the robot directly, as well as wirelessly communicate with the robot from a standard laptop or desktop computer.&lt;br /&gt;
&lt;br /&gt;
The full outline for this project is available [http://gcat.davidson.edu/mediawiki-1.15.0/index.php/File:Davidson_iRobot_Proposal.pdf here].&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
*MacOS X computer&lt;br /&gt;
**Needs bluetooth&lt;br /&gt;
**Needs MatLab and Python 2.7.3&lt;br /&gt;
*iRobot Create&lt;br /&gt;
*BAM iRobot bluetooth adaptor&lt;br /&gt;
*Wifi webcam that you can power&lt;br /&gt;
**We used [http://foscam.us/foscam-fi8918w-wireless-ip-camera-11.html Foscam FI8918W] because it ran off 5 volt power, allowing us to wire it to the iRobot for power.&lt;br /&gt;
&lt;br /&gt;
==Guide==&lt;br /&gt;
====Install software/packages/scripts on Mac====&lt;br /&gt;
*MatLab Setup&lt;br /&gt;
#Install [http://www.usna.edu/Users/weapsys/esposito/roomba.matlab/ Matlab Toolbox for the iRobot Create]&lt;br /&gt;
*Python Setup&lt;br /&gt;
#Download and Install [http://opencv.willowgarage.com/wiki/Mac_OS_X_OpenCV_Port MacPorts]&lt;br /&gt;
#Open terminal and type the following commands.&lt;br /&gt;
#Install open cv for python 2.7 &amp;lt;pre&amp;gt;sudo port -v install opencv +python27&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Install pil for python 2.7 &amp;lt;pre&amp;gt;sudo port install py27-pil&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Optional: Install selenium for python 2.7 (use this option if you want to control the webcam via a browser)&amp;lt;pre&amp;gt;sudo port install py27-selenium&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Set this MacPorts installed python as the default python interpreter: &amp;lt;pre&amp;gt;sudo port select --set python python27&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Download [http://dl.dropbox.com/u/4936834/webcam.py webcam.py] to control the wifi webcam&lt;br /&gt;
*Other Terminal Setup&lt;br /&gt;
#Install pkill command to terminal via MacPorts &amp;lt;pre&amp;gt;sudo port install proctools&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Set up iRobot====&lt;br /&gt;
#Determine how you want to power the webcam while it is attached to the robot (Is it going to feed off the robot power or have its own dedicated power supply?)&lt;br /&gt;
#Determine how you want to mount the camera to the iRobot. Our mount scheme is available [http://gcat.davidson.edu/mediawiki-1.15.0/images/5/5e/IRobotStand.docx here].&lt;br /&gt;
#Connect the the BAM bluetooth adaptor to the iRobot by following the [http://gcat.davidson.edu/mediawiki-1.15.0/index.php/File:BAM_iRobot_Manual.pdf manual] to connect it to the computer.&lt;br /&gt;
#Now connected to the iRobot, ensure the camera is turned on&lt;br /&gt;
&lt;br /&gt;
====Control the iRobot====&lt;br /&gt;
#Configure webcam.py&lt;br /&gt;
##webcam.py has a method (write_img_stream) that will constantly write and update the same image jpeg file. Set the webcam object to write that file to a directory accessible by matlab.&lt;br /&gt;
##The webcam.py script should only set up the webcam object and call write_img_stream() for the way we set it up&lt;br /&gt;
#Configure matlab script&lt;br /&gt;
##Set the read image path for matlab to read in the file that python constantly writes to. This way, whenever the brain in matlab needs an image to process, it can simply read the file written by the python webcam controller.&lt;br /&gt;
#Run the robot&lt;br /&gt;
##Begin webcam.py script in terminal &amp;lt;pre&amp;gt;python /path/to/webcam.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
##Run the matlab code&lt;br /&gt;
##When you are done, the python script needs to be killed (its in an infinite loop) so in another terminal window &amp;lt;pre&amp;gt;pkill -9 -f webcam.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Media:The_Algorithm.docx]]&lt;br /&gt;
&lt;br /&gt;
====Matlab Navigation Code====&lt;br /&gt;
[[Media:initialize.m]]&lt;br /&gt;
[[Media:RoombaInit.m]]&lt;br /&gt;
[[Media:WallSensorRoomba.m]]&lt;br /&gt;
[[Media:turnAngleCyrus.m]]&lt;br /&gt;
&lt;br /&gt;
====Matlab Image Processing Code====&lt;/div&gt;</summary>
		<author><name>Copoff</name></author>	</entry>

	<entry>
		<id>http://gcat.davidson.edu/GcatWiki/index.php?title=R2D2_Tutorial&amp;diff=14502</id>
		<title>R2D2 Tutorial</title>
		<link rel="alternate" type="text/html" href="http://gcat.davidson.edu/GcatWiki/index.php?title=R2D2_Tutorial&amp;diff=14502"/>
				<updated>2012-05-10T03:50:48Z</updated>
		
		<summary type="html">&lt;p&gt;Copoff: /* Guide */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Part of the college’s Climate Action Plan is the reduction of energy used in the heating and cooling of campus buildings. Our class has identified an innovative way of further increasing the energy efficiency of the Chambers academic building. In the warmer months of the year, students and professors frequently open classroom windows to let in fresh air. The problem is that they then neglect to close the windows, leaving them open all through the afternoon and night. Since the temperature and air filtration systems of the rooms and building in general are self-regulating, much energy is wasted when the systems tries to regulate a room with open windows. A large amount of energy could be saved if it was ensured that these windows were closed after the last class leaves the room each day.&lt;br /&gt;
&lt;br /&gt;
==Proposal==&lt;br /&gt;
To this end, the CSC 382 Artificial Intelligence class, taught by Dr. Laurie Heyer, proposes a solution which will help reduce energy waste through these open windows and provide us with an opportunity for first-hand experience in robotics, an increasingly important subfield of Artificial Intelligence. &lt;br /&gt;
&lt;br /&gt;
Our solution centers on configuring, programming and testing small robots to navigate Chambers at designated times, determine which classrooms have open windows, and report the room numbers (e.g., by email) to an agent capable of closing them. In this class, we have learned a variety of data and image processing methods that will enable us to implement this solution, but the college does not have the appropriate hardware.&lt;br /&gt;
&lt;br /&gt;
We propose purchasing two iRobot Create robots, essentially the same hardware as the Roomba robotic vacuum cleaner. These commercially available robots are designed for educational projects such as ours, and include developer tools that enable us to program the robot directly, as well as wirelessly communicate with the robot from a standard laptop or desktop computer.&lt;br /&gt;
&lt;br /&gt;
The full outline for this project is available [http://gcat.davidson.edu/mediawiki-1.15.0/index.php/File:Davidson_iRobot_Proposal.pdf here].&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
*MacOS X computer&lt;br /&gt;
**Needs bluetooth&lt;br /&gt;
**Needs MatLab and Python 2.7.3&lt;br /&gt;
*iRobot Create&lt;br /&gt;
*BAM iRobot bluetooth adaptor&lt;br /&gt;
*Wifi webcam that you can power&lt;br /&gt;
**We used [http://foscam.us/foscam-fi8918w-wireless-ip-camera-11.html Foscam FI8918W] because it ran off 5 volt power, allowing us to wire it to the iRobot for power.&lt;br /&gt;
&lt;br /&gt;
==Guide==&lt;br /&gt;
====Install software/packages/scripts on Mac====&lt;br /&gt;
*MatLab Setup&lt;br /&gt;
#Install [http://www.usna.edu/Users/weapsys/esposito/roomba.matlab/ Matlab Toolbox for the iRobot Create]&lt;br /&gt;
*Python Setup&lt;br /&gt;
#Download and Install [http://opencv.willowgarage.com/wiki/Mac_OS_X_OpenCV_Port MacPorts]&lt;br /&gt;
#Open terminal and type the following commands.&lt;br /&gt;
#Install open cv for python 2.7 &amp;lt;pre&amp;gt;sudo port -v install opencv +python27&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Install pil for python 2.7 &amp;lt;pre&amp;gt;sudo port install py27-pil&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Optional: Install selenium for python 2.7 (use this option if you want to control the webcam via a browser)&amp;lt;pre&amp;gt;sudo port install py27-selenium&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Set this MacPorts installed python as the default python interpreter: &amp;lt;pre&amp;gt;sudo port select --set python python27&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Download [http://dl.dropbox.com/u/4936834/webcam.py webcam.py] to control the wifi webcam&lt;br /&gt;
*Other Terminal Setup&lt;br /&gt;
#Install pkill command to terminal via MacPorts &amp;lt;pre&amp;gt;sudo port install proctools&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Set up iRobot====&lt;br /&gt;
#Determine how you want to power the webcam while it is attached to the robot (Is it going to feed off the robot power or have its own dedicated power supply?)&lt;br /&gt;
#Determine how you want to mount the camera to the iRobot. Our mount scheme is available [http://gcat.davidson.edu/mediawiki-1.15.0/images/5/5e/IRobotStand.docx here].&lt;br /&gt;
#Connect the the BAM bluetooth adaptor to the iRobot by following the [http://gcat.davidson.edu/mediawiki-1.15.0/index.php/File:BAM_iRobot_Manual.pdf manual] to connect it to the computer.&lt;br /&gt;
#Now connected to the iRobot, ensure the camera is turned on&lt;br /&gt;
&lt;br /&gt;
====Control the iRobot====&lt;br /&gt;
#Configure webcam.py&lt;br /&gt;
##webcam.py has a method (write_img_stream) that will constantly write and update the same image jpeg file. Set the webcam object to write that file to a directory accessible by matlab.&lt;br /&gt;
##The webcam.py script should only set up the webcam object and call write_img_stream() for the way we set it up&lt;br /&gt;
#Configure matlab script&lt;br /&gt;
##Set the read image path for matlab to read in the file that python constantly writes to. This way, whenever the brain in matlab needs an image to process, it can simply read the file written by the python webcam controller.&lt;br /&gt;
#Run the robot&lt;br /&gt;
##Begin webcam.py script in terminal &amp;lt;pre&amp;gt;python /path/to/webcam.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
##Run the matlab code&lt;br /&gt;
##When you are done, the python script needs to be killed (its in an infinite loop) so in another terminal window &amp;lt;pre&amp;gt;pkill -9 -f webcam.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Media:The_Algorithm.docx]]&lt;br /&gt;
&lt;br /&gt;
====Matlab Navigation Code====&lt;br /&gt;
&lt;br /&gt;
====Matlab Image Processing Code====&lt;/div&gt;</summary>
		<author><name>Copoff</name></author>	</entry>

	<entry>
		<id>http://gcat.davidson.edu/GcatWiki/index.php?title=R2D2_Tutorial&amp;diff=14501</id>
		<title>R2D2 Tutorial</title>
		<link rel="alternate" type="text/html" href="http://gcat.davidson.edu/GcatWiki/index.php?title=R2D2_Tutorial&amp;diff=14501"/>
				<updated>2012-05-10T03:49:18Z</updated>
		
		<summary type="html">&lt;p&gt;Copoff: /* Control the iRobot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Part of the college’s Climate Action Plan is the reduction of energy used in the heating and cooling of campus buildings. Our class has identified an innovative way of further increasing the energy efficiency of the Chambers academic building. In the warmer months of the year, students and professors frequently open classroom windows to let in fresh air. The problem is that they then neglect to close the windows, leaving them open all through the afternoon and night. Since the temperature and air filtration systems of the rooms and building in general are self-regulating, much energy is wasted when the systems tries to regulate a room with open windows. A large amount of energy could be saved if it was ensured that these windows were closed after the last class leaves the room each day.&lt;br /&gt;
&lt;br /&gt;
==Proposal==&lt;br /&gt;
To this end, the CSC 382 Artificial Intelligence class, taught by Dr. Laurie Heyer, proposes a solution which will help reduce energy waste through these open windows and provide us with an opportunity for first-hand experience in robotics, an increasingly important subfield of Artificial Intelligence. &lt;br /&gt;
&lt;br /&gt;
Our solution centers on configuring, programming and testing small robots to navigate Chambers at designated times, determine which classrooms have open windows, and report the room numbers (e.g., by email) to an agent capable of closing them. In this class, we have learned a variety of data and image processing methods that will enable us to implement this solution, but the college does not have the appropriate hardware.&lt;br /&gt;
&lt;br /&gt;
We propose purchasing two iRobot Create robots, essentially the same hardware as the Roomba robotic vacuum cleaner. These commercially available robots are designed for educational projects such as ours, and include developer tools that enable us to program the robot directly, as well as wirelessly communicate with the robot from a standard laptop or desktop computer.&lt;br /&gt;
&lt;br /&gt;
The full outline for this project is available [http://gcat.davidson.edu/mediawiki-1.15.0/index.php/File:Davidson_iRobot_Proposal.pdf here].&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
*MacOS X computer&lt;br /&gt;
**Needs bluetooth&lt;br /&gt;
**Needs MatLab and Python 2.7.3&lt;br /&gt;
*iRobot Create&lt;br /&gt;
*BAM iRobot bluetooth adaptor&lt;br /&gt;
*Wifi webcam that you can power&lt;br /&gt;
**We used [http://foscam.us/foscam-fi8918w-wireless-ip-camera-11.html Foscam FI8918W] because it ran off 5 volt power, allowing us to wire it to the iRobot for power.&lt;br /&gt;
&lt;br /&gt;
==Guide==&lt;br /&gt;
====Install software/packages/scripts on Mac====&lt;br /&gt;
*MatLab Setup&lt;br /&gt;
#Install [http://www.usna.edu/Users/weapsys/esposito/roomba.matlab/ Matlab Toolbox for the iRobot Create]&lt;br /&gt;
*Python Setup&lt;br /&gt;
#Download and Install [http://opencv.willowgarage.com/wiki/Mac_OS_X_OpenCV_Port MacPorts]&lt;br /&gt;
#Open terminal and type the following commands.&lt;br /&gt;
#Install open cv for python 2.7 &amp;lt;pre&amp;gt;sudo port -v install opencv +python27&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Install pil for python 2.7 &amp;lt;pre&amp;gt;sudo port install py27-pil&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Optional: Install selenium for python 2.7 (use this option if you want to control the webcam via a browser)&amp;lt;pre&amp;gt;sudo port install py27-selenium&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Set this MacPorts installed python as the default python interpreter: &amp;lt;pre&amp;gt;sudo port select --set python python27&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Download [http://dl.dropbox.com/u/4936834/webcam.py webcam.py] to control the wifi webcam&lt;br /&gt;
*Other Terminal Setup&lt;br /&gt;
#Install pkill command to terminal via MacPorts &amp;lt;pre&amp;gt;sudo port install proctools&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Set up iRobot====&lt;br /&gt;
#Determine how you want to power the webcam while it is attached to the robot (Is it going to feed off the robot power or have its own dedicated power supply?)&lt;br /&gt;
#Determine how you want to mount the camera to the iRobot. Our mount scheme is available [http://gcat.davidson.edu/mediawiki-1.15.0/images/5/5e/IRobotStand.docx here].&lt;br /&gt;
#Connect the the BAM bluetooth adaptor to the iRobot by following the [http://gcat.davidson.edu/mediawiki-1.15.0/index.php/File:BAM_iRobot_Manual.pdf manual] to connect it to the computer.&lt;br /&gt;
#Now connected to the iRobot, ensure the camera is turned on&lt;br /&gt;
&lt;br /&gt;
====Control the iRobot====&lt;br /&gt;
#Configure webcam.py&lt;br /&gt;
##webcam.py has a method (write_img_stream) that will constantly write and update the same image jpeg file. Set the webcam object to write that file to a directory accessible by matlab.&lt;br /&gt;
##The webcam.py script should only set up the webcam object and call write_img_stream() for the way we set it up&lt;br /&gt;
#Configure matlab script&lt;br /&gt;
##Set the read image path for matlab to read in the file that python constantly writes to. This way, whenever the brain in matlab needs an image to process, it can simply read the file written by the python webcam controller.&lt;br /&gt;
#Run the robot&lt;br /&gt;
##Begin webcam.py script in terminal &amp;lt;pre&amp;gt;python /path/to/webcam.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
##Run the matlab code&lt;br /&gt;
##When you are done, the python script needs to be killed (its in an infinite loop) so in another terminal window &amp;lt;pre&amp;gt;pkill -9 -f webcam.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Media:The_Algorithm.docx]]&lt;/div&gt;</summary>
		<author><name>Copoff</name></author>	</entry>

	<entry>
		<id>http://gcat.davidson.edu/GcatWiki/index.php?title=File:The_Algorithm.docx&amp;diff=14500</id>
		<title>File:The Algorithm.docx</title>
		<link rel="alternate" type="text/html" href="http://gcat.davidson.edu/GcatWiki/index.php?title=File:The_Algorithm.docx&amp;diff=14500"/>
				<updated>2012-05-10T03:47:50Z</updated>
		
		<summary type="html">&lt;p&gt;Copoff: uploaded a new version of &amp;quot;File:The Algorithm.docx&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Our algorithm&lt;/div&gt;</summary>
		<author><name>Copoff</name></author>	</entry>

	<entry>
		<id>http://gcat.davidson.edu/GcatWiki/index.php?title=R2D2_Tutorial&amp;diff=14499</id>
		<title>R2D2 Tutorial</title>
		<link rel="alternate" type="text/html" href="http://gcat.davidson.edu/GcatWiki/index.php?title=R2D2_Tutorial&amp;diff=14499"/>
				<updated>2012-05-10T03:46:14Z</updated>
		
		<summary type="html">&lt;p&gt;Copoff: /* Control the iRobot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Part of the college’s Climate Action Plan is the reduction of energy used in the heating and cooling of campus buildings. Our class has identified an innovative way of further increasing the energy efficiency of the Chambers academic building. In the warmer months of the year, students and professors frequently open classroom windows to let in fresh air. The problem is that they then neglect to close the windows, leaving them open all through the afternoon and night. Since the temperature and air filtration systems of the rooms and building in general are self-regulating, much energy is wasted when the systems tries to regulate a room with open windows. A large amount of energy could be saved if it was ensured that these windows were closed after the last class leaves the room each day.&lt;br /&gt;
&lt;br /&gt;
==Proposal==&lt;br /&gt;
To this end, the CSC 382 Artificial Intelligence class, taught by Dr. Laurie Heyer, proposes a solution which will help reduce energy waste through these open windows and provide us with an opportunity for first-hand experience in robotics, an increasingly important subfield of Artificial Intelligence. &lt;br /&gt;
&lt;br /&gt;
Our solution centers on configuring, programming and testing small robots to navigate Chambers at designated times, determine which classrooms have open windows, and report the room numbers (e.g., by email) to an agent capable of closing them. In this class, we have learned a variety of data and image processing methods that will enable us to implement this solution, but the college does not have the appropriate hardware.&lt;br /&gt;
&lt;br /&gt;
We propose purchasing two iRobot Create robots, essentially the same hardware as the Roomba robotic vacuum cleaner. These commercially available robots are designed for educational projects such as ours, and include developer tools that enable us to program the robot directly, as well as wirelessly communicate with the robot from a standard laptop or desktop computer.&lt;br /&gt;
&lt;br /&gt;
The full outline for this project is available [http://gcat.davidson.edu/mediawiki-1.15.0/index.php/File:Davidson_iRobot_Proposal.pdf here].&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
*MacOS X computer&lt;br /&gt;
**Needs bluetooth&lt;br /&gt;
**Needs MatLab and Python 2.7.3&lt;br /&gt;
*iRobot Create&lt;br /&gt;
*BAM iRobot bluetooth adaptor&lt;br /&gt;
*Wifi webcam that you can power&lt;br /&gt;
**We used [http://foscam.us/foscam-fi8918w-wireless-ip-camera-11.html Foscam FI8918W] because it ran off 5 volt power, allowing us to wire it to the iRobot for power.&lt;br /&gt;
&lt;br /&gt;
==Guide==&lt;br /&gt;
====Install software/packages/scripts on Mac====&lt;br /&gt;
*MatLab Setup&lt;br /&gt;
#Install [http://www.usna.edu/Users/weapsys/esposito/roomba.matlab/ Matlab Toolbox for the iRobot Create]&lt;br /&gt;
*Python Setup&lt;br /&gt;
#Download and Install [http://opencv.willowgarage.com/wiki/Mac_OS_X_OpenCV_Port MacPorts]&lt;br /&gt;
#Open terminal and type the following commands.&lt;br /&gt;
#Install open cv for python 2.7 &amp;lt;pre&amp;gt;sudo port -v install opencv +python27&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Install pil for python 2.7 &amp;lt;pre&amp;gt;sudo port install py27-pil&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Optional: Install selenium for python 2.7 (use this option if you want to control the webcam via a browser)&amp;lt;pre&amp;gt;sudo port install py27-selenium&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Set this MacPorts installed python as the default python interpreter: &amp;lt;pre&amp;gt;sudo port select --set python python27&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Download [http://dl.dropbox.com/u/4936834/webcam.py webcam.py] to control the wifi webcam&lt;br /&gt;
*Other Terminal Setup&lt;br /&gt;
#Install pkill command to terminal via MacPorts &amp;lt;pre&amp;gt;sudo port install proctools&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Set up iRobot====&lt;br /&gt;
#Determine how you want to power the webcam while it is attached to the robot (Is it going to feed off the robot power or have its own dedicated power supply?)&lt;br /&gt;
#Determine how you want to mount the camera to the iRobot. Our mount scheme is available [http://gcat.davidson.edu/mediawiki-1.15.0/images/5/5e/IRobotStand.docx here].&lt;br /&gt;
#Connect the the BAM bluetooth adaptor to the iRobot by following the [http://gcat.davidson.edu/mediawiki-1.15.0/index.php/File:BAM_iRobot_Manual.pdf manual] to connect it to the computer.&lt;br /&gt;
#Now connected to the iRobot, ensure the camera is turned on&lt;br /&gt;
&lt;br /&gt;
====Control the iRobot====&lt;br /&gt;
#Configure webcam.py&lt;br /&gt;
##webcam.py has a method (write_img_stream) that will constantly write and update the same image jpeg file. Set the webcam object to write that file to a directory accessible by matlab.&lt;br /&gt;
##The webcam.py script should only set up the webcam object and call write_img_stream() for the way we set it up&lt;br /&gt;
#Configure matlab script&lt;br /&gt;
##Set the read image path for matlab to read in the file that python constantly writes to. This way, whenever the brain in matlab needs an image to process, it can simply read the file written by the python webcam controller.&lt;br /&gt;
#Run the robot&lt;br /&gt;
##Begin webcam.py script in terminal &amp;lt;pre&amp;gt;python /path/to/webcam.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
##Run the matlab code&lt;br /&gt;
##When you are done, the python script needs to be killed (its in an infinite loop) so in another terminal window &amp;lt;pre&amp;gt;pkill -9 -f webcam.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[file:Our algorithm for navigation]]&lt;/div&gt;</summary>
		<author><name>Copoff</name></author>	</entry>

	<entry>
		<id>http://gcat.davidson.edu/GcatWiki/index.php?title=R2D2_Tutorial&amp;diff=14498</id>
		<title>R2D2 Tutorial</title>
		<link rel="alternate" type="text/html" href="http://gcat.davidson.edu/GcatWiki/index.php?title=R2D2_Tutorial&amp;diff=14498"/>
				<updated>2012-05-10T03:45:58Z</updated>
		
		<summary type="html">&lt;p&gt;Copoff: /* Control the iRobot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Part of the college’s Climate Action Plan is the reduction of energy used in the heating and cooling of campus buildings. Our class has identified an innovative way of further increasing the energy efficiency of the Chambers academic building. In the warmer months of the year, students and professors frequently open classroom windows to let in fresh air. The problem is that they then neglect to close the windows, leaving them open all through the afternoon and night. Since the temperature and air filtration systems of the rooms and building in general are self-regulating, much energy is wasted when the systems tries to regulate a room with open windows. A large amount of energy could be saved if it was ensured that these windows were closed after the last class leaves the room each day.&lt;br /&gt;
&lt;br /&gt;
==Proposal==&lt;br /&gt;
To this end, the CSC 382 Artificial Intelligence class, taught by Dr. Laurie Heyer, proposes a solution which will help reduce energy waste through these open windows and provide us with an opportunity for first-hand experience in robotics, an increasingly important subfield of Artificial Intelligence. &lt;br /&gt;
&lt;br /&gt;
Our solution centers on configuring, programming and testing small robots to navigate Chambers at designated times, determine which classrooms have open windows, and report the room numbers (e.g., by email) to an agent capable of closing them. In this class, we have learned a variety of data and image processing methods that will enable us to implement this solution, but the college does not have the appropriate hardware.&lt;br /&gt;
&lt;br /&gt;
We propose purchasing two iRobot Create robots, essentially the same hardware as the Roomba robotic vacuum cleaner. These commercially available robots are designed for educational projects such as ours, and include developer tools that enable us to program the robot directly, as well as wirelessly communicate with the robot from a standard laptop or desktop computer.&lt;br /&gt;
&lt;br /&gt;
The full outline for this project is available [http://gcat.davidson.edu/mediawiki-1.15.0/index.php/File:Davidson_iRobot_Proposal.pdf here].&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
*MacOS X computer&lt;br /&gt;
**Needs bluetooth&lt;br /&gt;
**Needs MatLab and Python 2.7.3&lt;br /&gt;
*iRobot Create&lt;br /&gt;
*BAM iRobot bluetooth adaptor&lt;br /&gt;
*Wifi webcam that you can power&lt;br /&gt;
**We used [http://foscam.us/foscam-fi8918w-wireless-ip-camera-11.html Foscam FI8918W] because it ran off 5 volt power, allowing us to wire it to the iRobot for power.&lt;br /&gt;
&lt;br /&gt;
==Guide==&lt;br /&gt;
====Install software/packages/scripts on Mac====&lt;br /&gt;
*MatLab Setup&lt;br /&gt;
#Install [http://www.usna.edu/Users/weapsys/esposito/roomba.matlab/ Matlab Toolbox for the iRobot Create]&lt;br /&gt;
*Python Setup&lt;br /&gt;
#Download and Install [http://opencv.willowgarage.com/wiki/Mac_OS_X_OpenCV_Port MacPorts]&lt;br /&gt;
#Open terminal and type the following commands.&lt;br /&gt;
#Install open cv for python 2.7 &amp;lt;pre&amp;gt;sudo port -v install opencv +python27&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Install pil for python 2.7 &amp;lt;pre&amp;gt;sudo port install py27-pil&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Optional: Install selenium for python 2.7 (use this option if you want to control the webcam via a browser)&amp;lt;pre&amp;gt;sudo port install py27-selenium&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Set this MacPorts installed python as the default python interpreter: &amp;lt;pre&amp;gt;sudo port select --set python python27&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Download [http://dl.dropbox.com/u/4936834/webcam.py webcam.py] to control the wifi webcam&lt;br /&gt;
*Other Terminal Setup&lt;br /&gt;
#Install pkill command to terminal via MacPorts &amp;lt;pre&amp;gt;sudo port install proctools&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Set up iRobot====&lt;br /&gt;
#Determine how you want to power the webcam while it is attached to the robot (Is it going to feed off the robot power or have its own dedicated power supply?)&lt;br /&gt;
#Determine how you want to mount the camera to the iRobot. Our mount scheme is available [http://gcat.davidson.edu/mediawiki-1.15.0/images/5/5e/IRobotStand.docx here].&lt;br /&gt;
#Connect the the BAM bluetooth adaptor to the iRobot by following the [http://gcat.davidson.edu/mediawiki-1.15.0/index.php/File:BAM_iRobot_Manual.pdf manual] to connect it to the computer.&lt;br /&gt;
#Now connected to the iRobot, ensure the camera is turned on&lt;br /&gt;
&lt;br /&gt;
====Control the iRobot====&lt;br /&gt;
#Configure webcam.py&lt;br /&gt;
##webcam.py has a method (write_img_stream) that will constantly write and update the same image jpeg file. Set the webcam object to write that file to a directory accessible by matlab.&lt;br /&gt;
##The webcam.py script should only set up the webcam object and call write_img_stream() for the way we set it up&lt;br /&gt;
#Configure matlab script&lt;br /&gt;
##Set the read image path for matlab to read in the file that python constantly writes to. This way, whenever the brain in matlab needs an image to process, it can simply read the file written by the python webcam controller.&lt;br /&gt;
#Run the robot&lt;br /&gt;
##Begin webcam.py script in terminal &amp;lt;pre&amp;gt;python /path/to/webcam.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
##Run the matlab code&lt;br /&gt;
##When you are done, the python script needs to be killed (its in an infinite loop) so in another terminal window &amp;lt;pre&amp;gt;pkill -9 -f webcam.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Our algorithm for navigation]]&lt;/div&gt;</summary>
		<author><name>Copoff</name></author>	</entry>

	<entry>
		<id>http://gcat.davidson.edu/GcatWiki/index.php?title=R2D2_Tutorial&amp;diff=14497</id>
		<title>R2D2 Tutorial</title>
		<link rel="alternate" type="text/html" href="http://gcat.davidson.edu/GcatWiki/index.php?title=R2D2_Tutorial&amp;diff=14497"/>
				<updated>2012-05-10T03:45:26Z</updated>
		
		<summary type="html">&lt;p&gt;Copoff: /* Control the iRobot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Part of the college’s Climate Action Plan is the reduction of energy used in the heating and cooling of campus buildings. Our class has identified an innovative way of further increasing the energy efficiency of the Chambers academic building. In the warmer months of the year, students and professors frequently open classroom windows to let in fresh air. The problem is that they then neglect to close the windows, leaving them open all through the afternoon and night. Since the temperature and air filtration systems of the rooms and building in general are self-regulating, much energy is wasted when the systems tries to regulate a room with open windows. A large amount of energy could be saved if it was ensured that these windows were closed after the last class leaves the room each day.&lt;br /&gt;
&lt;br /&gt;
==Proposal==&lt;br /&gt;
To this end, the CSC 382 Artificial Intelligence class, taught by Dr. Laurie Heyer, proposes a solution which will help reduce energy waste through these open windows and provide us with an opportunity for first-hand experience in robotics, an increasingly important subfield of Artificial Intelligence. &lt;br /&gt;
&lt;br /&gt;
Our solution centers on configuring, programming and testing small robots to navigate Chambers at designated times, determine which classrooms have open windows, and report the room numbers (e.g., by email) to an agent capable of closing them. In this class, we have learned a variety of data and image processing methods that will enable us to implement this solution, but the college does not have the appropriate hardware.&lt;br /&gt;
&lt;br /&gt;
We propose purchasing two iRobot Create robots, essentially the same hardware as the Roomba robotic vacuum cleaner. These commercially available robots are designed for educational projects such as ours, and include developer tools that enable us to program the robot directly, as well as wirelessly communicate with the robot from a standard laptop or desktop computer.&lt;br /&gt;
&lt;br /&gt;
The full outline for this project is available [http://gcat.davidson.edu/mediawiki-1.15.0/index.php/File:Davidson_iRobot_Proposal.pdf here].&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
*MacOS X computer&lt;br /&gt;
**Needs bluetooth&lt;br /&gt;
**Needs MatLab and Python 2.7.3&lt;br /&gt;
*iRobot Create&lt;br /&gt;
*BAM iRobot bluetooth adaptor&lt;br /&gt;
*Wifi webcam that you can power&lt;br /&gt;
**We used [http://foscam.us/foscam-fi8918w-wireless-ip-camera-11.html Foscam FI8918W] because it ran off 5 volt power, allowing us to wire it to the iRobot for power.&lt;br /&gt;
&lt;br /&gt;
==Guide==&lt;br /&gt;
====Install software/packages/scripts on Mac====&lt;br /&gt;
*MatLab Setup&lt;br /&gt;
#Install [http://www.usna.edu/Users/weapsys/esposito/roomba.matlab/ Matlab Toolbox for the iRobot Create]&lt;br /&gt;
*Python Setup&lt;br /&gt;
#Download and Install [http://opencv.willowgarage.com/wiki/Mac_OS_X_OpenCV_Port MacPorts]&lt;br /&gt;
#Open terminal and type the following commands.&lt;br /&gt;
#Install open cv for python 2.7 &amp;lt;pre&amp;gt;sudo port -v install opencv +python27&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Install pil for python 2.7 &amp;lt;pre&amp;gt;sudo port install py27-pil&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Optional: Install selenium for python 2.7 (use this option if you want to control the webcam via a browser)&amp;lt;pre&amp;gt;sudo port install py27-selenium&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Set this MacPorts installed python as the default python interpreter: &amp;lt;pre&amp;gt;sudo port select --set python python27&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Download [http://dl.dropbox.com/u/4936834/webcam.py webcam.py] to control the wifi webcam&lt;br /&gt;
*Other Terminal Setup&lt;br /&gt;
#Install pkill command to terminal via MacPorts &amp;lt;pre&amp;gt;sudo port install proctools&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Set up iRobot====&lt;br /&gt;
#Determine how you want to power the webcam while it is attached to the robot (Is it going to feed off the robot power or have its own dedicated power supply?)&lt;br /&gt;
#Determine how you want to mount the camera to the iRobot. Our mount scheme is available [http://gcat.davidson.edu/mediawiki-1.15.0/images/5/5e/IRobotStand.docx here].&lt;br /&gt;
#Connect the the BAM bluetooth adaptor to the iRobot by following the [http://gcat.davidson.edu/mediawiki-1.15.0/index.php/File:BAM_iRobot_Manual.pdf manual] to connect it to the computer.&lt;br /&gt;
#Now connected to the iRobot, ensure the camera is turned on&lt;br /&gt;
&lt;br /&gt;
====Control the iRobot====&lt;br /&gt;
#Configure webcam.py&lt;br /&gt;
##webcam.py has a method (write_img_stream) that will constantly write and update the same image jpeg file. Set the webcam object to write that file to a directory accessible by matlab.&lt;br /&gt;
##The webcam.py script should only set up the webcam object and call write_img_stream() for the way we set it up&lt;br /&gt;
#Configure matlab script&lt;br /&gt;
##Set the read image path for matlab to read in the file that python constantly writes to. This way, whenever the brain in matlab needs an image to process, it can simply read the file written by the python webcam controller.&lt;br /&gt;
#Run the robot&lt;br /&gt;
##Begin webcam.py script in terminal &amp;lt;pre&amp;gt;python /path/to/webcam.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
##Run the matlab code&lt;br /&gt;
##When you are done, the python script needs to be killed (its in an infinite loop) so in another terminal window &amp;lt;pre&amp;gt;pkill -9 -f webcam.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:The_Algorithm.docx]]&lt;/div&gt;</summary>
		<author><name>Copoff</name></author>	</entry>

	<entry>
		<id>http://gcat.davidson.edu/GcatWiki/index.php?title=File:The_Algorithm.docx&amp;diff=14496</id>
		<title>File:The Algorithm.docx</title>
		<link rel="alternate" type="text/html" href="http://gcat.davidson.edu/GcatWiki/index.php?title=File:The_Algorithm.docx&amp;diff=14496"/>
				<updated>2012-05-10T03:44:58Z</updated>
		
		<summary type="html">&lt;p&gt;Copoff: Our algorithm&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Our algorithm&lt;/div&gt;</summary>
		<author><name>Copoff</name></author>	</entry>

	<entry>
		<id>http://gcat.davidson.edu/GcatWiki/index.php?title=R2D2_Tutorial&amp;diff=14495</id>
		<title>R2D2 Tutorial</title>
		<link rel="alternate" type="text/html" href="http://gcat.davidson.edu/GcatWiki/index.php?title=R2D2_Tutorial&amp;diff=14495"/>
				<updated>2012-05-10T03:44:20Z</updated>
		
		<summary type="html">&lt;p&gt;Copoff: /* Control the iRobot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Part of the college’s Climate Action Plan is the reduction of energy used in the heating and cooling of campus buildings. Our class has identified an innovative way of further increasing the energy efficiency of the Chambers academic building. In the warmer months of the year, students and professors frequently open classroom windows to let in fresh air. The problem is that they then neglect to close the windows, leaving them open all through the afternoon and night. Since the temperature and air filtration systems of the rooms and building in general are self-regulating, much energy is wasted when the systems tries to regulate a room with open windows. A large amount of energy could be saved if it was ensured that these windows were closed after the last class leaves the room each day.&lt;br /&gt;
&lt;br /&gt;
==Proposal==&lt;br /&gt;
To this end, the CSC 382 Artificial Intelligence class, taught by Dr. Laurie Heyer, proposes a solution which will help reduce energy waste through these open windows and provide us with an opportunity for first-hand experience in robotics, an increasingly important subfield of Artificial Intelligence. &lt;br /&gt;
&lt;br /&gt;
Our solution centers on configuring, programming and testing small robots to navigate Chambers at designated times, determine which classrooms have open windows, and report the room numbers (e.g., by email) to an agent capable of closing them. In this class, we have learned a variety of data and image processing methods that will enable us to implement this solution, but the college does not have the appropriate hardware.&lt;br /&gt;
&lt;br /&gt;
We propose purchasing two iRobot Create robots, essentially the same hardware as the Roomba robotic vacuum cleaner. These commercially available robots are designed for educational projects such as ours, and include developer tools that enable us to program the robot directly, as well as wirelessly communicate with the robot from a standard laptop or desktop computer.&lt;br /&gt;
&lt;br /&gt;
The full outline for this project is available [http://gcat.davidson.edu/mediawiki-1.15.0/index.php/File:Davidson_iRobot_Proposal.pdf here].&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
*MacOS X computer&lt;br /&gt;
**Needs bluetooth&lt;br /&gt;
**Needs MatLab and Python 2.7.3&lt;br /&gt;
*iRobot Create&lt;br /&gt;
*BAM iRobot bluetooth adaptor&lt;br /&gt;
*Wifi webcam that you can power&lt;br /&gt;
**We used [http://foscam.us/foscam-fi8918w-wireless-ip-camera-11.html Foscam FI8918W] because it ran off 5 volt power, allowing us to wire it to the iRobot for power.&lt;br /&gt;
&lt;br /&gt;
==Guide==&lt;br /&gt;
====Install software/packages/scripts on Mac====&lt;br /&gt;
*MatLab Setup&lt;br /&gt;
#Install [http://www.usna.edu/Users/weapsys/esposito/roomba.matlab/ Matlab Toolbox for the iRobot Create]&lt;br /&gt;
*Python Setup&lt;br /&gt;
#Download and Install [http://opencv.willowgarage.com/wiki/Mac_OS_X_OpenCV_Port MacPorts]&lt;br /&gt;
#Open terminal and type the following commands.&lt;br /&gt;
#Install open cv for python 2.7 &amp;lt;pre&amp;gt;sudo port -v install opencv +python27&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Install pil for python 2.7 &amp;lt;pre&amp;gt;sudo port install py27-pil&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Optional: Install selenium for python 2.7 (use this option if you want to control the webcam via a browser)&amp;lt;pre&amp;gt;sudo port install py27-selenium&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Set this MacPorts installed python as the default python interpreter: &amp;lt;pre&amp;gt;sudo port select --set python python27&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Download [http://dl.dropbox.com/u/4936834/webcam.py webcam.py] to control the wifi webcam&lt;br /&gt;
*Other Terminal Setup&lt;br /&gt;
#Install pkill command to terminal via MacPorts &amp;lt;pre&amp;gt;sudo port install proctools&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Set up iRobot====&lt;br /&gt;
#Determine how you want to power the webcam while it is attached to the robot (Is it going to feed off the robot power or have its own dedicated power supply?)&lt;br /&gt;
#Determine how you want to mount the camera to the iRobot. Our mount scheme is available [http://gcat.davidson.edu/mediawiki-1.15.0/images/5/5e/IRobotStand.docx here].&lt;br /&gt;
#Connect the the BAM bluetooth adaptor to the iRobot by following the [http://gcat.davidson.edu/mediawiki-1.15.0/index.php/File:BAM_iRobot_Manual.pdf manual] to connect it to the computer.&lt;br /&gt;
#Now connected to the iRobot, ensure the camera is turned on&lt;br /&gt;
&lt;br /&gt;
====Control the iRobot====&lt;br /&gt;
#Configure webcam.py&lt;br /&gt;
##webcam.py has a method (write_img_stream) that will constantly write and update the same image jpeg file. Set the webcam object to write that file to a directory accessible by matlab.&lt;br /&gt;
##The webcam.py script should only set up the webcam object and call write_img_stream() for the way we set it up&lt;br /&gt;
#Configure matlab script&lt;br /&gt;
##Set the read image path for matlab to read in the file that python constantly writes to. This way, whenever the brain in matlab needs an image to process, it can simply read the file written by the python webcam controller.&lt;br /&gt;
#Run the robot&lt;br /&gt;
##Begin webcam.py script in terminal &amp;lt;pre&amp;gt;python /path/to/webcam.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
##Run the matlab code&lt;br /&gt;
##When you are done, the python script needs to be killed (its in an infinite loop) so in another terminal window &amp;lt;pre&amp;gt;pkill -9 -f webcam.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:C:\Users\copoff\Downloads\The Algorithm.docx]]&lt;/div&gt;</summary>
		<author><name>Copoff</name></author>	</entry>

	<entry>
		<id>http://gcat.davidson.edu/GcatWiki/index.php?title=Team_R2D2&amp;diff=14379</id>
		<title>Team R2D2</title>
		<link rel="alternate" type="text/html" href="http://gcat.davidson.edu/GcatWiki/index.php?title=Team_R2D2&amp;diff=14379"/>
				<updated>2012-05-04T14:09:51Z</updated>
		
		<summary type="html">&lt;p&gt;Copoff: /* OpenCV */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==To Do==&lt;br /&gt;
*Connect to iRobot &amp;amp; Send Command with MatLab (with laptop) - Cyrus &lt;br /&gt;
*Decide on Camera - Leland &amp;amp; Corey&lt;br /&gt;
*Subgroup Make Outline&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1xU78yDOxWieFpKtT_QhTrIGgYQCLwbA970CSFqemvBQ/edit Abstract Draft]&lt;br /&gt;
&lt;br /&gt;
==Imaging==&lt;br /&gt;
===Hardware Setup===&lt;br /&gt;
====Summary====&lt;br /&gt;
*Camera will be attached and set - to move the camera left or right we will move the robot&lt;br /&gt;
**We will have to decide if we want to create a contraption to raise/lower the camera&lt;br /&gt;
*We need to get a camera that we can also connect to via bluetooth... at first this could be a wired, but we need direct usb connection in final version&lt;br /&gt;
*[http://www.zagrosrobotics.com/shop/custom.aspx?recid=17 Good Link]&lt;br /&gt;
&lt;br /&gt;
====Possible Cameras====&lt;br /&gt;
*[http://www.lightinthebox.com/Popular/Bluetooth_Wireless_Webcam.html Something]&lt;br /&gt;
*[http://www.ecamm.com/mac/webcam/bt1/index.html BT-1] - 640x480&lt;br /&gt;
*[http://www.aztekcomputers.com/TVIP110-TRENDNET-426191.html For obtaining online images via MATLAB]&lt;br /&gt;
*[http://www.robotshop.com/4d-systems-microcam-serial-jpeg-camera-module-rs232-2.html Serial port integrated camera--looks good]&lt;br /&gt;
*[http://foscam.us/foscam-fi8918w-wireless-ip-camera-11.html Foscam]&lt;br /&gt;
**[http://www.chargerbuy.com/blog/files/2011/01/Foscam-FI8918W-Quick-Installation-User-Manual2.pdf Manual]&lt;br /&gt;
**[http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/1327/Office-Autonomous-Robot.aspx Project that uses]&lt;br /&gt;
&lt;br /&gt;
====SmartPhone Camera Vision====&lt;br /&gt;
*Use android phone and vlc&lt;br /&gt;
*http://androidcloudcam.net/&lt;br /&gt;
*http://lifehacker.com/5650095/ip-webcam-turns-your-android-phone-into-a-remote-camera&lt;br /&gt;
*[http://wiki.videolan.org/VLC_command-line_help VLC Command Line]&lt;br /&gt;
&lt;br /&gt;
====Feed Streaming====&lt;br /&gt;
*http://USER:PASS@10.40.181.49/videostream.cgi&lt;br /&gt;
=====With VLC=====&lt;br /&gt;
*See [http://forum.videolan.org/viewtopic.php?f=14&amp;amp;t=81119 this thread]&lt;br /&gt;
#Make VLC alias &amp;lt;pre&amp;gt;alias vlc='/Applications/VLC.app/Contents/MacOS/VLC'&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Now connect, and up comes live feed! &amp;lt;pre&amp;gt;vlc -vvv &amp;quot;http://http://10.40.181.49/videostream.cgi?user=test&amp;amp;pwd=&amp;amp;rate=3&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====With Python/OpenCV=====&lt;br /&gt;
*http://stackoverflow.com/questions/3001881/display-an-webcam-stream-in-pyqt4-using-opencv-camera-capture&lt;br /&gt;
&lt;br /&gt;
====How to connect to IP camera====&lt;br /&gt;
#Connect to davidson device using  WPA personal with the passphrase&lt;br /&gt;
#Go to the address http://10.40.181.49/&lt;br /&gt;
#Log in using our id and password&lt;br /&gt;
&lt;br /&gt;
====Install Open CV on Mac====&lt;br /&gt;
#Install with MacPorts [http://opencv.willowgarage.com/wiki/Mac_OS_X_OpenCV_Port here]&lt;br /&gt;
##Use Command: &amp;lt;pre&amp;gt;sudo port -v install opencv +python27&amp;lt;/pre&amp;gt;&lt;br /&gt;
##Now Check: &amp;lt;pre&amp;gt;port select python&amp;lt;/pre&amp;gt;&lt;br /&gt;
##Again: &amp;lt;pre&amp;gt;port installed opencv&amp;lt;/pre&amp;gt;&lt;br /&gt;
##Then, depending on mac ports settings: &amp;lt;pre&amp;gt;/opt/local/bin/python2.7&amp;lt;/pre&amp;gt;&lt;br /&gt;
##If we want to set this as the default interpreter: &amp;lt;pre&amp;gt;sudo port select --set python python27&amp;lt;/pre&amp;gt;&lt;br /&gt;
##To uninstall something: &amp;lt;pre&amp;gt;sudo port uninstall opencv @2.3.1a_3+python26&amp;lt;/pre&amp;gt;&lt;br /&gt;
##While we are at is go ahead and install pil &amp;lt;pre&amp;gt;sudo port install py27-pil&amp;lt;/pre&amp;gt;&lt;br /&gt;
(Below are random notes)&lt;br /&gt;
#Install with OpenCV&lt;br /&gt;
##Otherwise, download latest open cv release for mac... nevermind this wont work for enthought, just give up.&lt;br /&gt;
##Install ffmeg using [http://jungels.net/articles/ffmpeg-howto.html this tutorial]&lt;br /&gt;
##Install [http://damien.douxchamps.net/ieee1394/libdc1394/ libdc1394]&lt;br /&gt;
##PYTHON_PACKAGES_PATH=/Library/Frameworks/EPD64.framework/Versions/7.2/lib/python2.7/site-packages PYTHON_LIBRARIES=/Library/Frameworks/EPD64.framework/Versions/7.2/Frameworks PYTHON_EXECUTABLE=/Library/Frameworks/EPD64.framework/Versions/Current/bin/python PYTHON_INCLUDE_DIR=/Library/Frameworks/EPD64.framework/Versions/7.2/include/python2.7 cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON /Users/lelandtaylor/Downloads/OpenCV-2.4.0.tar/OpenCV-2.4.0/ &amp;lt;path to the OpenCV source directory&amp;gt;&lt;br /&gt;
##Run sudo make install&lt;br /&gt;
&lt;br /&gt;
====Issues====&lt;br /&gt;
*How do we connect to the camera wirelessly?&lt;br /&gt;
**http://www.youtube.com/watch?v=LG8zX68lxI0&lt;br /&gt;
**http://www.jbprojects.net/projects/wifirobot/&lt;br /&gt;
&lt;br /&gt;
*New leads:&lt;br /&gt;
**http://bitshift.bi.funpic.de/en/dslr-remote/manual/bluetooth.php&lt;br /&gt;
**http://www.informationweek.com/news/cloud-computing/software/228800042&lt;br /&gt;
**Pros: we can use almost any dslr camera.&lt;br /&gt;
**Cons: A lot of (potentially very difficult) coding. And we still need how to send the photo back to our laptop.&lt;br /&gt;
&lt;br /&gt;
*MATLAB approach:&lt;br /&gt;
**http://www.mathworks.com/matlabcentral/newsreader/view_thread/154601&lt;br /&gt;
**Pros: it's been done before (though maybe not without the acquisition toolbox, but I think it's possible). It looks very straightforward.&lt;br /&gt;
**Cons: Acquisition toolbox is a lot of money. Couldn't find anything about using newer versions of MATLAB to do this. Have to use low res webcam.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Image Processing===&lt;br /&gt;
====[http://www.mathworks.com/products/imaq/ Matlab Imaging]====&lt;br /&gt;
*[http://www.mathworks.com/products/imaq/ Image Acquisition Toolbox] - I think this costs money&lt;br /&gt;
*[http://www2.cs.uh.edu/~somalley/camerabox.html Matlab toolbox to control cannon cameras]&lt;br /&gt;
&lt;br /&gt;
====[http://opencv.willowgarage.com/wiki/ OpenCV]====&lt;br /&gt;
*Has some nice functions that could be used to detect opjects&lt;br /&gt;
*OpenCV (Open Source Computer Vision) is a library of programming functions for real time computer vision.&lt;br /&gt;
**&amp;quot;applications of the OpenCV library are Human-Computer Interaction (HCI); Object Identification, Segmentation and Recognition; Face Recognition; Gesture Recognition; Motion Tracking, Ego Motion, Motion Understanding; Structure From Motion (SFM); Stereo and Multi-Camera Calibration and Depth Computation; Mobile Robotics.&amp;quot;&lt;br /&gt;
*[http://docs.opencv.org/ OpenCV Documentation]&lt;br /&gt;
**[http://opencv.willowgarage.com/documentation/python/index.html Python Interface]&lt;br /&gt;
**C++ Interface&lt;br /&gt;
*[http://opencv.willowgarage.com/wiki/Welcome/OS List of compatible cameras]&lt;br /&gt;
**Camera used in FLAIL project: [http://www.logitech.com/webcam-communications/webcams/devices/6333 Logitech Webcam Pro 9000]&lt;br /&gt;
***This camera will work with openCV and matlab camera control features (see [http://www.mathworks.com/matlabcentral/newsreader/view_thread/245473 here])&lt;br /&gt;
*If we go with openCV for grabbing the images from webcam and matlab for navigation and some processing, then we'll need a way for the two to talk. Here are some (potentially) helpful links. I haven't yet found anything specifically about MATLAB/terminal interaction.&lt;br /&gt;
**[http://people.sc.fsu.edu/~jburkardt/m_src/matlab_os/matlab_os.html MATLAB_OS]&lt;br /&gt;
**[http://www.mathworks.com/matlabcentral/newsreader/view_thread/251480 Calling OS commands]&lt;br /&gt;
&lt;br /&gt;
Below is python code taken from [http://www.cs.duke.edu/~mac/flail.py FLAIL v2]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##################&lt;br /&gt;
# Camera Control #&lt;br /&gt;
##################&lt;br /&gt;
class FlailCam:&lt;br /&gt;
  &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
  Controls a USB webcam. Uses OpenCV to control the camera, and should&lt;br /&gt;
  therefore work with any V4L2-compatible camera (in linux) or just about&lt;br /&gt;
  anything (in Mac OS). Webcam support being what it is in Linux, though, it&lt;br /&gt;
  may not work at all.&lt;br /&gt;
 &lt;br /&gt;
  If you find yourself in the it-doesn't-even-begin-to-work boat, take a look&lt;br /&gt;
  at flailcam.py from FLAIL 1.0. It has a (terrible, kludgy, slow) workaround&lt;br /&gt;
  that sometimes worked better.&lt;br /&gt;
 &lt;br /&gt;
  The important method (get_image) returns a Python Imaging Library (or PIL)&lt;br /&gt;
  object; these are well-documented on the PIL website, at&lt;br /&gt;
  &amp;lt;http://www.pythonware.com/library/pil/handbook/image.htm&amp;gt;. You're probably&lt;br /&gt;
  most interested in the getpixel, putpixel, and save methods. &lt;br /&gt;
 &lt;br /&gt;
  FLAIL 1.0 had a FlailImage class, which wrapped the same PIL image class&lt;br /&gt;
  used here; if you'd like an extremely simplified interface, take a look at&lt;br /&gt;
  that code.&lt;br /&gt;
   &lt;br /&gt;
  If you'd prefer an OpenCV object, just take a look at the get_image source&lt;br /&gt;
  code, and you'll see what to do.&lt;br /&gt;
  &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
  def __init__(self, index = 0):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Connect to a camera. OpenCV (which we use for camera control) numbers&lt;br /&gt;
    these starting from 0; the index parameter tells which camera to use. In&lt;br /&gt;
    Linux, an index of X implies the device /dev/videoX.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    self.cap = opencv.highgui.cvCreateCameraCapture(index)&lt;br /&gt;
 &lt;br /&gt;
  def get_image(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Take a picture. Return it as a PIL image. &lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    return opencv.adaptors.Ipl2PIL(opencv.highgui.cvQueryFrame(self.cap))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Navigation==&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
Jack and Duke met on 4/20 to discuss navigation. The consensus was that our first goal is to figure out how to design a virtual map of a space and write commands to get the robot to go to a target location in the space. Once we do that, we will work on mapping out chambers, hopefully using the robot to gather data of the shape of our chambers floor (which one are we going to do?) and turn that data into a map. We also discussed the possibility of using traveling salesman problem model to get the robot to our target locations as quickly as possible.&lt;br /&gt;
&lt;br /&gt;
===Uninstall Python===&lt;br /&gt;
#Remove framework &amp;lt;pre&amp;gt;sudo rm -rf /Library/Frameworks/Python.framework/Versions/2.7&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Remove Applications Dir &amp;lt;pre&amp;gt;sudo rm -rf &amp;quot;/Applications/Python 2.7&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Remove symbolic links in /usr/local/bin &amp;lt;pre&amp;gt;ls -l /usr/local/bin | grep '../Library/Frameworks/Python.framework/Versions/2.7' | xargs rm&amp;lt;/pre&amp;gt;or&amp;lt;pre&amp;gt;cd /usr/local/bin; ls -l . | grep '../Library/Frameworks/Python.framework/Versions/2.7' | awk '{print $9}' | xargs rm&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Copoff</name></author>	</entry>

	<entry>
		<id>http://gcat.davidson.edu/GcatWiki/index.php?title=Team_R2D2&amp;diff=14378</id>
		<title>Team R2D2</title>
		<link rel="alternate" type="text/html" href="http://gcat.davidson.edu/GcatWiki/index.php?title=Team_R2D2&amp;diff=14378"/>
				<updated>2012-05-04T14:02:54Z</updated>
		
		<summary type="html">&lt;p&gt;Copoff: /* OpenCV */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==To Do==&lt;br /&gt;
*Connect to iRobot &amp;amp; Send Command with MatLab (with laptop) - Cyrus &lt;br /&gt;
*Decide on Camera - Leland &amp;amp; Corey&lt;br /&gt;
*Subgroup Make Outline&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1xU78yDOxWieFpKtT_QhTrIGgYQCLwbA970CSFqemvBQ/edit Abstract Draft]&lt;br /&gt;
&lt;br /&gt;
==Imaging==&lt;br /&gt;
===Hardware Setup===&lt;br /&gt;
====Summary====&lt;br /&gt;
*Camera will be attached and set - to move the camera left or right we will move the robot&lt;br /&gt;
**We will have to decide if we want to create a contraption to raise/lower the camera&lt;br /&gt;
*We need to get a camera that we can also connect to via bluetooth... at first this could be a wired, but we need direct usb connection in final version&lt;br /&gt;
*[http://www.zagrosrobotics.com/shop/custom.aspx?recid=17 Good Link]&lt;br /&gt;
&lt;br /&gt;
====Possible Cameras====&lt;br /&gt;
*[http://www.lightinthebox.com/Popular/Bluetooth_Wireless_Webcam.html Something]&lt;br /&gt;
*[http://www.ecamm.com/mac/webcam/bt1/index.html BT-1] - 640x480&lt;br /&gt;
*[http://www.aztekcomputers.com/TVIP110-TRENDNET-426191.html For obtaining online images via MATLAB]&lt;br /&gt;
*[http://www.robotshop.com/4d-systems-microcam-serial-jpeg-camera-module-rs232-2.html Serial port integrated camera--looks good]&lt;br /&gt;
*[http://foscam.us/foscam-fi8918w-wireless-ip-camera-11.html Foscam]&lt;br /&gt;
**[http://www.chargerbuy.com/blog/files/2011/01/Foscam-FI8918W-Quick-Installation-User-Manual2.pdf Manual]&lt;br /&gt;
**[http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/1327/Office-Autonomous-Robot.aspx Project that uses]&lt;br /&gt;
&lt;br /&gt;
====SmartPhone Camera Vision====&lt;br /&gt;
*Use android phone and vlc&lt;br /&gt;
*http://androidcloudcam.net/&lt;br /&gt;
*http://lifehacker.com/5650095/ip-webcam-turns-your-android-phone-into-a-remote-camera&lt;br /&gt;
*[http://wiki.videolan.org/VLC_command-line_help VLC Command Line]&lt;br /&gt;
&lt;br /&gt;
====Feed Streaming====&lt;br /&gt;
*http://USER:PASS@10.40.181.49/videostream.cgi&lt;br /&gt;
=====With VLC=====&lt;br /&gt;
*See [http://forum.videolan.org/viewtopic.php?f=14&amp;amp;t=81119 this thread]&lt;br /&gt;
#Make VLC alias &amp;lt;pre&amp;gt;alias vlc='/Applications/VLC.app/Contents/MacOS/VLC'&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Now connect, and up comes live feed! &amp;lt;pre&amp;gt;vlc -vvv &amp;quot;http://http://10.40.181.49/videostream.cgi?user=test&amp;amp;pwd=&amp;amp;rate=3&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====With Python/OpenCV=====&lt;br /&gt;
*http://stackoverflow.com/questions/3001881/display-an-webcam-stream-in-pyqt4-using-opencv-camera-capture&lt;br /&gt;
&lt;br /&gt;
====How to connect to IP camera====&lt;br /&gt;
#Connect to davidson device using  WPA personal with the passphrase&lt;br /&gt;
#Go to the address http://10.40.181.49/&lt;br /&gt;
#Log in using our id and password&lt;br /&gt;
&lt;br /&gt;
====Install Open CV on Mac====&lt;br /&gt;
#Install with MacPorts [http://opencv.willowgarage.com/wiki/Mac_OS_X_OpenCV_Port here]&lt;br /&gt;
##Use Command: &amp;lt;pre&amp;gt;sudo port -v install opencv +python27&amp;lt;/pre&amp;gt;&lt;br /&gt;
##Now Check: &amp;lt;pre&amp;gt;port select python&amp;lt;/pre&amp;gt;&lt;br /&gt;
##Again: &amp;lt;pre&amp;gt;port installed opencv&amp;lt;/pre&amp;gt;&lt;br /&gt;
##Then, depending on mac ports settings: &amp;lt;pre&amp;gt;/opt/local/bin/python2.7&amp;lt;/pre&amp;gt;&lt;br /&gt;
##If we want to set this as the default interpreter: &amp;lt;pre&amp;gt;sudo port select --set python python27&amp;lt;/pre&amp;gt;&lt;br /&gt;
##To uninstall something: &amp;lt;pre&amp;gt;sudo port uninstall opencv @2.3.1a_3+python26&amp;lt;/pre&amp;gt;&lt;br /&gt;
##While we are at is go ahead and install pil &amp;lt;pre&amp;gt;sudo port install py27-pil&amp;lt;/pre&amp;gt;&lt;br /&gt;
(Below are random notes)&lt;br /&gt;
#Install with OpenCV&lt;br /&gt;
##Otherwise, download latest open cv release for mac... nevermind this wont work for enthought, just give up.&lt;br /&gt;
##Install ffmeg using [http://jungels.net/articles/ffmpeg-howto.html this tutorial]&lt;br /&gt;
##Install [http://damien.douxchamps.net/ieee1394/libdc1394/ libdc1394]&lt;br /&gt;
##PYTHON_PACKAGES_PATH=/Library/Frameworks/EPD64.framework/Versions/7.2/lib/python2.7/site-packages PYTHON_LIBRARIES=/Library/Frameworks/EPD64.framework/Versions/7.2/Frameworks PYTHON_EXECUTABLE=/Library/Frameworks/EPD64.framework/Versions/Current/bin/python PYTHON_INCLUDE_DIR=/Library/Frameworks/EPD64.framework/Versions/7.2/include/python2.7 cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON /Users/lelandtaylor/Downloads/OpenCV-2.4.0.tar/OpenCV-2.4.0/ &amp;lt;path to the OpenCV source directory&amp;gt;&lt;br /&gt;
##Run sudo make install&lt;br /&gt;
&lt;br /&gt;
====Issues====&lt;br /&gt;
*How do we connect to the camera wirelessly?&lt;br /&gt;
**http://www.youtube.com/watch?v=LG8zX68lxI0&lt;br /&gt;
**http://www.jbprojects.net/projects/wifirobot/&lt;br /&gt;
&lt;br /&gt;
*New leads:&lt;br /&gt;
**http://bitshift.bi.funpic.de/en/dslr-remote/manual/bluetooth.php&lt;br /&gt;
**http://www.informationweek.com/news/cloud-computing/software/228800042&lt;br /&gt;
**Pros: we can use almost any dslr camera.&lt;br /&gt;
**Cons: A lot of (potentially very difficult) coding. And we still need how to send the photo back to our laptop.&lt;br /&gt;
&lt;br /&gt;
*MATLAB approach:&lt;br /&gt;
**http://www.mathworks.com/matlabcentral/newsreader/view_thread/154601&lt;br /&gt;
**Pros: it's been done before (though maybe not without the acquisition toolbox, but I think it's possible). It looks very straightforward.&lt;br /&gt;
**Cons: Acquisition toolbox is a lot of money. Couldn't find anything about using newer versions of MATLAB to do this. Have to use low res webcam.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Image Processing===&lt;br /&gt;
====[http://www.mathworks.com/products/imaq/ Matlab Imaging]====&lt;br /&gt;
*[http://www.mathworks.com/products/imaq/ Image Acquisition Toolbox] - I think this costs money&lt;br /&gt;
*[http://www2.cs.uh.edu/~somalley/camerabox.html Matlab toolbox to control cannon cameras]&lt;br /&gt;
&lt;br /&gt;
====[http://opencv.willowgarage.com/wiki/ OpenCV]====&lt;br /&gt;
*Has some nice functions that could be used to detect opjects&lt;br /&gt;
*OpenCV (Open Source Computer Vision) is a library of programming functions for real time computer vision.&lt;br /&gt;
**&amp;quot;applications of the OpenCV library are Human-Computer Interaction (HCI); Object Identification, Segmentation and Recognition; Face Recognition; Gesture Recognition; Motion Tracking, Ego Motion, Motion Understanding; Structure From Motion (SFM); Stereo and Multi-Camera Calibration and Depth Computation; Mobile Robotics.&amp;quot;&lt;br /&gt;
*[http://docs.opencv.org/ OpenCV Documentation]&lt;br /&gt;
**[http://opencv.willowgarage.com/documentation/python/index.html Python Interface]&lt;br /&gt;
**C++ Interface&lt;br /&gt;
*[http://opencv.willowgarage.com/wiki/Welcome/OS List of compatible cameras]&lt;br /&gt;
**Camera used in FLAIL project: [http://www.logitech.com/webcam-communications/webcams/devices/6333 Logitech Webcam Pro 9000]&lt;br /&gt;
***This camera will work with openCV and matlab camera control features (see [http://www.mathworks.com/matlabcentral/newsreader/view_thread/245473 here])&lt;br /&gt;
*[http://people.sc.fsu.edu/~jburkardt/m_src/matlab_os/matlab_os.html Could be a way to make MATLAB and openCV talk via command line]&lt;br /&gt;
&lt;br /&gt;
Below is python code taken from [http://www.cs.duke.edu/~mac/flail.py FLAIL v2]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##################&lt;br /&gt;
# Camera Control #&lt;br /&gt;
##################&lt;br /&gt;
class FlailCam:&lt;br /&gt;
  &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
  Controls a USB webcam. Uses OpenCV to control the camera, and should&lt;br /&gt;
  therefore work with any V4L2-compatible camera (in linux) or just about&lt;br /&gt;
  anything (in Mac OS). Webcam support being what it is in Linux, though, it&lt;br /&gt;
  may not work at all.&lt;br /&gt;
 &lt;br /&gt;
  If you find yourself in the it-doesn't-even-begin-to-work boat, take a look&lt;br /&gt;
  at flailcam.py from FLAIL 1.0. It has a (terrible, kludgy, slow) workaround&lt;br /&gt;
  that sometimes worked better.&lt;br /&gt;
 &lt;br /&gt;
  The important method (get_image) returns a Python Imaging Library (or PIL)&lt;br /&gt;
  object; these are well-documented on the PIL website, at&lt;br /&gt;
  &amp;lt;http://www.pythonware.com/library/pil/handbook/image.htm&amp;gt;. You're probably&lt;br /&gt;
  most interested in the getpixel, putpixel, and save methods. &lt;br /&gt;
 &lt;br /&gt;
  FLAIL 1.0 had a FlailImage class, which wrapped the same PIL image class&lt;br /&gt;
  used here; if you'd like an extremely simplified interface, take a look at&lt;br /&gt;
  that code.&lt;br /&gt;
   &lt;br /&gt;
  If you'd prefer an OpenCV object, just take a look at the get_image source&lt;br /&gt;
  code, and you'll see what to do.&lt;br /&gt;
  &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
  def __init__(self, index = 0):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Connect to a camera. OpenCV (which we use for camera control) numbers&lt;br /&gt;
    these starting from 0; the index parameter tells which camera to use. In&lt;br /&gt;
    Linux, an index of X implies the device /dev/videoX.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    self.cap = opencv.highgui.cvCreateCameraCapture(index)&lt;br /&gt;
 &lt;br /&gt;
  def get_image(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Take a picture. Return it as a PIL image. &lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    return opencv.adaptors.Ipl2PIL(opencv.highgui.cvQueryFrame(self.cap))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Navigation==&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
Jack and Duke met on 4/20 to discuss navigation. The consensus was that our first goal is to figure out how to design a virtual map of a space and write commands to get the robot to go to a target location in the space. Once we do that, we will work on mapping out chambers, hopefully using the robot to gather data of the shape of our chambers floor (which one are we going to do?) and turn that data into a map. We also discussed the possibility of using traveling salesman problem model to get the robot to our target locations as quickly as possible.&lt;br /&gt;
&lt;br /&gt;
===Uninstall Python===&lt;br /&gt;
#Remove framework &amp;lt;pre&amp;gt;sudo rm -rf /Library/Frameworks/Python.framework/Versions/2.7&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Remove Applications Dir &amp;lt;pre&amp;gt;sudo rm -rf &amp;quot;/Applications/Python 2.7&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Remove symbolic links in /usr/local/bin &amp;lt;pre&amp;gt;ls -l /usr/local/bin | grep '../Library/Frameworks/Python.framework/Versions/2.7' | xargs rm&amp;lt;/pre&amp;gt;or&amp;lt;pre&amp;gt;cd /usr/local/bin; ls -l . | grep '../Library/Frameworks/Python.framework/Versions/2.7' | awk '{print $9}' | xargs rm&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Copoff</name></author>	</entry>

	<entry>
		<id>http://gcat.davidson.edu/GcatWiki/index.php?title=Team_R2D2&amp;diff=14307</id>
		<title>Team R2D2</title>
		<link rel="alternate" type="text/html" href="http://gcat.davidson.edu/GcatWiki/index.php?title=Team_R2D2&amp;diff=14307"/>
				<updated>2012-04-25T14:44:10Z</updated>
		
		<summary type="html">&lt;p&gt;Copoff: /* Possible Cameras */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==To Do==&lt;br /&gt;
*Connect to iRobot &amp;amp; Send Command with MatLab (with laptop) - Cyrus &lt;br /&gt;
*Decide on Camera - Leland &amp;amp; Corey&lt;br /&gt;
*Subgroup Make Outline&lt;br /&gt;
&lt;br /&gt;
==Imaging==&lt;br /&gt;
===Summary===&lt;br /&gt;
*Camera will be attached and set - to move the camera left or right we will move the robot&lt;br /&gt;
**We will have to decide if we want to create a contraption to raise/lower the camera&lt;br /&gt;
*We need to get a camera that we can also connect to via bluetooth... at first this could be a wired, but we need direct usb connection in final version&lt;br /&gt;
*[http://www.zagrosrobotics.com/shop/custom.aspx?recid=17 Good Link]&lt;br /&gt;
&lt;br /&gt;
===[http://www.mathworks.com/products/imaq/ Matlab Imaging]===&lt;br /&gt;
*[http://www.mathworks.com/products/imaq/ Image Acquisition Toolbox] - I think this costs money&lt;br /&gt;
*[http://www2.cs.uh.edu/~somalley/camerabox.html Matlab toolbox to control cannon cameras]&lt;br /&gt;
&lt;br /&gt;
===[http://opencv.willowgarage.com/wiki/ OpenCV]===&lt;br /&gt;
*Has some nice functions that could be used to detect opjects&lt;br /&gt;
*OpenCV (Open Source Computer Vision) is a library of programming functions for real time computer vision.&lt;br /&gt;
**&amp;quot;applications of the OpenCV library are Human-Computer Interaction (HCI); Object Identification, Segmentation and Recognition; Face Recognition; Gesture Recognition; Motion Tracking, Ego Motion, Motion Understanding; Structure From Motion (SFM); Stereo and Multi-Camera Calibration and Depth Computation; Mobile Robotics.&amp;quot;&lt;br /&gt;
*[http://docs.opencv.org/ OpenCV Documentation]&lt;br /&gt;
**[http://opencv.willowgarage.com/documentation/python/index.html Python Interface]&lt;br /&gt;
**C++ Interface&lt;br /&gt;
*[http://opencv.willowgarage.com/wiki/Welcome/OS List of compatible cameras]&lt;br /&gt;
**Camera used in FLAIL project: [http://www.logitech.com/webcam-communications/webcams/devices/6333 Logitech Webcam Pro 9000]&lt;br /&gt;
***This camera will work with openCV and matlab camera control features (see [http://www.mathworks.com/matlabcentral/newsreader/view_thread/245473 here])&lt;br /&gt;
&lt;br /&gt;
Below is python code taken from [http://www.cs.duke.edu/~mac/flail.py FLAIL v2]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##################&lt;br /&gt;
# Camera Control #&lt;br /&gt;
##################&lt;br /&gt;
class FlailCam:&lt;br /&gt;
  &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
  Controls a USB webcam. Uses OpenCV to control the camera, and should&lt;br /&gt;
  therefore work with any V4L2-compatible camera (in linux) or just about&lt;br /&gt;
  anything (in Mac OS). Webcam support being what it is in Linux, though, it&lt;br /&gt;
  may not work at all.&lt;br /&gt;
 &lt;br /&gt;
  If you find yourself in the it-doesn't-even-begin-to-work boat, take a look&lt;br /&gt;
  at flailcam.py from FLAIL 1.0. It has a (terrible, kludgy, slow) workaround&lt;br /&gt;
  that sometimes worked better.&lt;br /&gt;
 &lt;br /&gt;
  The important method (get_image) returns a Python Imaging Library (or PIL)&lt;br /&gt;
  object; these are well-documented on the PIL website, at&lt;br /&gt;
  &amp;lt;http://www.pythonware.com/library/pil/handbook/image.htm&amp;gt;. You're probably&lt;br /&gt;
  most interested in the getpixel, putpixel, and save methods. &lt;br /&gt;
 &lt;br /&gt;
  FLAIL 1.0 had a FlailImage class, which wrapped the same PIL image class&lt;br /&gt;
  used here; if you'd like an extremely simplified interface, take a look at&lt;br /&gt;
  that code.&lt;br /&gt;
   &lt;br /&gt;
  If you'd prefer an OpenCV object, just take a look at the get_image source&lt;br /&gt;
  code, and you'll see what to do.&lt;br /&gt;
  &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
  def __init__(self, index = 0):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Connect to a camera. OpenCV (which we use for camera control) numbers&lt;br /&gt;
    these starting from 0; the index parameter tells which camera to use. In&lt;br /&gt;
    Linux, an index of X implies the device /dev/videoX.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    self.cap = opencv.highgui.cvCreateCameraCapture(index)&lt;br /&gt;
 &lt;br /&gt;
  def get_image(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Take a picture. Return it as a PIL image. &lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    return opencv.adaptors.Ipl2PIL(opencv.highgui.cvQueryFrame(self.cap))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Issues===&lt;br /&gt;
*How do we connect to the camera wirelessly?&lt;br /&gt;
**http://www.youtube.com/watch?v=LG8zX68lxI0&lt;br /&gt;
&lt;br /&gt;
*New leads:&lt;br /&gt;
**http://bitshift.bi.funpic.de/en/dslr-remote/manual/bluetooth.php&lt;br /&gt;
**http://www.informationweek.com/news/cloud-computing/software/228800042&lt;br /&gt;
**Pros: we can use almost any dslr camera.&lt;br /&gt;
**Cons: A lot of (potentially very difficult) coding. And we still need how to send the photo back to our laptop.&lt;br /&gt;
&lt;br /&gt;
*MATLAB approach:&lt;br /&gt;
**http://www.mathworks.com/matlabcentral/newsreader/view_thread/154601&lt;br /&gt;
**Pros: it's been done before (though maybe not without the acquisition toolbox, but I think it's possible). It looks very straightforward.&lt;br /&gt;
**Cons: Acquisition toolbox is a lot of money. Couldn't find anything about using newer versions of MATLAB to do this. Have to use low res webcam.&lt;br /&gt;
&lt;br /&gt;
===Possible Cameras===&lt;br /&gt;
*[http://www.lightinthebox.com/Popular/Bluetooth_Wireless_Webcam.html Something]&lt;br /&gt;
*[http://www.ecamm.com/mac/webcam/bt1/index.html BT-1] - 640x480&lt;br /&gt;
*[http://www.aztekcomputers.com/TVIP110-TRENDNET-426191.html For obtaining online images via MATLAB]&lt;br /&gt;
*[http://www.robotshop.com/4d-systems-microcam-serial-jpeg-camera-module-rs232-2.html Serial port integrated camera--looks good]&lt;br /&gt;
&lt;br /&gt;
==Navigation==&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
Jack and Duke met on 4/20 to discuss navigation. The consensus was that our first goal is to figure out how to design a virtual map of a space and write commands to get the robot to go to a target location in the space. Once we do that, we will work on mapping out chambers, hopefully using the robot to gather data of the shape of our chambers floor (which one are we going to do?) and turn that data into a map. We also discussed the possibility of using traveling salesman problem model to get the robot to our target locations as quickly as possible.&lt;/div&gt;</summary>
		<author><name>Copoff</name></author>	</entry>

	<entry>
		<id>http://gcat.davidson.edu/GcatWiki/index.php?title=Team_R2D2&amp;diff=14303</id>
		<title>Team R2D2</title>
		<link rel="alternate" type="text/html" href="http://gcat.davidson.edu/GcatWiki/index.php?title=Team_R2D2&amp;diff=14303"/>
				<updated>2012-04-23T23:45:41Z</updated>
		
		<summary type="html">&lt;p&gt;Copoff: /* Issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==To Do==&lt;br /&gt;
*Connect to iRobot &amp;amp; Send Command with MatLab (with laptop) - Cyrus &lt;br /&gt;
*Decide on Camera - Leland &amp;amp; Corey&lt;br /&gt;
*Subgroup Make Outline&lt;br /&gt;
&lt;br /&gt;
==Imaging==&lt;br /&gt;
===Summary===&lt;br /&gt;
*Camera will be attached and set - to move the camera left or right we will move the robot&lt;br /&gt;
**We will have to decide if we want to create a contraption to raise/lower the camera&lt;br /&gt;
*We need to get a camera that we can also connect to via bluetooth... at first this could be a wired, but we need direct usb connection in final version&lt;br /&gt;
*[http://www.zagrosrobotics.com/shop/custom.aspx?recid=17 Good Link]&lt;br /&gt;
&lt;br /&gt;
===[http://www.mathworks.com/products/imaq/ Matlab Imaging]===&lt;br /&gt;
*[http://www.mathworks.com/products/imaq/ Image Acquisition Toolbox] - I think this costs money&lt;br /&gt;
*[http://www2.cs.uh.edu/~somalley/camerabox.html Matlab toolbox to control cannon cameras]&lt;br /&gt;
&lt;br /&gt;
===[http://opencv.willowgarage.com/wiki/ OpenCV]===&lt;br /&gt;
*Has some nice functions that could be used to detect opjects&lt;br /&gt;
*OpenCV (Open Source Computer Vision) is a library of programming functions for real time computer vision.&lt;br /&gt;
**&amp;quot;applications of the OpenCV library are Human-Computer Interaction (HCI); Object Identification, Segmentation and Recognition; Face Recognition; Gesture Recognition; Motion Tracking, Ego Motion, Motion Understanding; Structure From Motion (SFM); Stereo and Multi-Camera Calibration and Depth Computation; Mobile Robotics.&amp;quot;&lt;br /&gt;
*[http://docs.opencv.org/ OpenCV Documentation]&lt;br /&gt;
**[http://opencv.willowgarage.com/documentation/python/index.html Python Interface]&lt;br /&gt;
**C++ Interface&lt;br /&gt;
*[http://opencv.willowgarage.com/wiki/Welcome/OS List of compatible cameras]&lt;br /&gt;
**Camera used in FLAIL project: [http://www.logitech.com/webcam-communications/webcams/devices/6333 Logitech Webcam Pro 9000]&lt;br /&gt;
***This camera will work with openCV and matlab camera control features (see [http://www.mathworks.com/matlabcentral/newsreader/view_thread/245473 here])&lt;br /&gt;
&lt;br /&gt;
Below is python code taken from [http://www.cs.duke.edu/~mac/flail.py FLAIL v2]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##################&lt;br /&gt;
# Camera Control #&lt;br /&gt;
##################&lt;br /&gt;
class FlailCam:&lt;br /&gt;
  &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
  Controls a USB webcam. Uses OpenCV to control the camera, and should&lt;br /&gt;
  therefore work with any V4L2-compatible camera (in linux) or just about&lt;br /&gt;
  anything (in Mac OS). Webcam support being what it is in Linux, though, it&lt;br /&gt;
  may not work at all.&lt;br /&gt;
 &lt;br /&gt;
  If you find yourself in the it-doesn't-even-begin-to-work boat, take a look&lt;br /&gt;
  at flailcam.py from FLAIL 1.0. It has a (terrible, kludgy, slow) workaround&lt;br /&gt;
  that sometimes worked better.&lt;br /&gt;
 &lt;br /&gt;
  The important method (get_image) returns a Python Imaging Library (or PIL)&lt;br /&gt;
  object; these are well-documented on the PIL website, at&lt;br /&gt;
  &amp;lt;http://www.pythonware.com/library/pil/handbook/image.htm&amp;gt;. You're probably&lt;br /&gt;
  most interested in the getpixel, putpixel, and save methods. &lt;br /&gt;
 &lt;br /&gt;
  FLAIL 1.0 had a FlailImage class, which wrapped the same PIL image class&lt;br /&gt;
  used here; if you'd like an extremely simplified interface, take a look at&lt;br /&gt;
  that code.&lt;br /&gt;
   &lt;br /&gt;
  If you'd prefer an OpenCV object, just take a look at the get_image source&lt;br /&gt;
  code, and you'll see what to do.&lt;br /&gt;
  &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
  def __init__(self, index = 0):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Connect to a camera. OpenCV (which we use for camera control) numbers&lt;br /&gt;
    these starting from 0; the index parameter tells which camera to use. In&lt;br /&gt;
    Linux, an index of X implies the device /dev/videoX.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    self.cap = opencv.highgui.cvCreateCameraCapture(index)&lt;br /&gt;
 &lt;br /&gt;
  def get_image(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Take a picture. Return it as a PIL image. &lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    return opencv.adaptors.Ipl2PIL(opencv.highgui.cvQueryFrame(self.cap))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Issues===&lt;br /&gt;
*How do we connect to the camera wirelessly?&lt;br /&gt;
**http://www.youtube.com/watch?v=LG8zX68lxI0&lt;br /&gt;
&lt;br /&gt;
*New leads:&lt;br /&gt;
**http://bitshift.bi.funpic.de/en/dslr-remote/manual/bluetooth.php&lt;br /&gt;
**http://www.informationweek.com/news/cloud-computing/software/228800042&lt;br /&gt;
**Pros: we can use almost any dslr camera.&lt;br /&gt;
**Cons: A lot of (potentially very difficult) coding. And we still need how to send the photo back to our laptop.&lt;br /&gt;
&lt;br /&gt;
*MATLAB approach:&lt;br /&gt;
**http://www.mathworks.com/matlabcentral/newsreader/view_thread/154601&lt;br /&gt;
**Pros: it's been done before (though maybe not without the acquisition toolbox, but I think it's possible). It looks very straightforward.&lt;br /&gt;
**Cons: Acquisition toolbox is a lot of money. Couldn't find anything about using newer versions of MATLAB to do this. Have to use low res webcam.&lt;br /&gt;
&lt;br /&gt;
===Possible Cameras===&lt;br /&gt;
*[http://www.lightinthebox.com/Popular/Bluetooth_Wireless_Webcam.html Something]&lt;br /&gt;
*[http://www.ecamm.com/mac/webcam/bt1/index.html BT-1] - 640x480&lt;br /&gt;
*[http://www.aztekcomputers.com/TVIP110-TRENDNET-426191.html For obtaining online images via MATLAB]&lt;br /&gt;
&lt;br /&gt;
==Navigation==&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
Jack and Duke met on 4/20 to discuss navigation. The consensus was that our first goal is to figure out how to design a virtual map of a space and write commands to get the robot to go to a target location in the space. Once we do that, we will work on mapping out chambers, hopefully using the robot to gather data of the shape of our chambers floor (which one are we going to do?) and turn that data into a map. We also discussed the possibility of using traveling salesman problem model to get the robot to our target locations as quickly as possible.&lt;/div&gt;</summary>
		<author><name>Copoff</name></author>	</entry>

	<entry>
		<id>http://gcat.davidson.edu/GcatWiki/index.php?title=Team_R2D2&amp;diff=14302</id>
		<title>Team R2D2</title>
		<link rel="alternate" type="text/html" href="http://gcat.davidson.edu/GcatWiki/index.php?title=Team_R2D2&amp;diff=14302"/>
				<updated>2012-04-23T23:44:56Z</updated>
		
		<summary type="html">&lt;p&gt;Copoff: /* Possible Cameras */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==To Do==&lt;br /&gt;
*Connect to iRobot &amp;amp; Send Command with MatLab (with laptop) - Cyrus &lt;br /&gt;
*Decide on Camera - Leland &amp;amp; Corey&lt;br /&gt;
*Subgroup Make Outline&lt;br /&gt;
&lt;br /&gt;
==Imaging==&lt;br /&gt;
===Summary===&lt;br /&gt;
*Camera will be attached and set - to move the camera left or right we will move the robot&lt;br /&gt;
**We will have to decide if we want to create a contraption to raise/lower the camera&lt;br /&gt;
*We need to get a camera that we can also connect to via bluetooth... at first this could be a wired, but we need direct usb connection in final version&lt;br /&gt;
*[http://www.zagrosrobotics.com/shop/custom.aspx?recid=17 Good Link]&lt;br /&gt;
&lt;br /&gt;
===[http://www.mathworks.com/products/imaq/ Matlab Imaging]===&lt;br /&gt;
*[http://www.mathworks.com/products/imaq/ Image Acquisition Toolbox] - I think this costs money&lt;br /&gt;
*[http://www2.cs.uh.edu/~somalley/camerabox.html Matlab toolbox to control cannon cameras]&lt;br /&gt;
&lt;br /&gt;
===[http://opencv.willowgarage.com/wiki/ OpenCV]===&lt;br /&gt;
*Has some nice functions that could be used to detect opjects&lt;br /&gt;
*OpenCV (Open Source Computer Vision) is a library of programming functions for real time computer vision.&lt;br /&gt;
**&amp;quot;applications of the OpenCV library are Human-Computer Interaction (HCI); Object Identification, Segmentation and Recognition; Face Recognition; Gesture Recognition; Motion Tracking, Ego Motion, Motion Understanding; Structure From Motion (SFM); Stereo and Multi-Camera Calibration and Depth Computation; Mobile Robotics.&amp;quot;&lt;br /&gt;
*[http://docs.opencv.org/ OpenCV Documentation]&lt;br /&gt;
**[http://opencv.willowgarage.com/documentation/python/index.html Python Interface]&lt;br /&gt;
**C++ Interface&lt;br /&gt;
*[http://opencv.willowgarage.com/wiki/Welcome/OS List of compatible cameras]&lt;br /&gt;
**Camera used in FLAIL project: [http://www.logitech.com/webcam-communications/webcams/devices/6333 Logitech Webcam Pro 9000]&lt;br /&gt;
***This camera will work with openCV and matlab camera control features (see [http://www.mathworks.com/matlabcentral/newsreader/view_thread/245473 here])&lt;br /&gt;
&lt;br /&gt;
Below is python code taken from [http://www.cs.duke.edu/~mac/flail.py FLAIL v2]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##################&lt;br /&gt;
# Camera Control #&lt;br /&gt;
##################&lt;br /&gt;
class FlailCam:&lt;br /&gt;
  &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
  Controls a USB webcam. Uses OpenCV to control the camera, and should&lt;br /&gt;
  therefore work with any V4L2-compatible camera (in linux) or just about&lt;br /&gt;
  anything (in Mac OS). Webcam support being what it is in Linux, though, it&lt;br /&gt;
  may not work at all.&lt;br /&gt;
 &lt;br /&gt;
  If you find yourself in the it-doesn't-even-begin-to-work boat, take a look&lt;br /&gt;
  at flailcam.py from FLAIL 1.0. It has a (terrible, kludgy, slow) workaround&lt;br /&gt;
  that sometimes worked better.&lt;br /&gt;
 &lt;br /&gt;
  The important method (get_image) returns a Python Imaging Library (or PIL)&lt;br /&gt;
  object; these are well-documented on the PIL website, at&lt;br /&gt;
  &amp;lt;http://www.pythonware.com/library/pil/handbook/image.htm&amp;gt;. You're probably&lt;br /&gt;
  most interested in the getpixel, putpixel, and save methods. &lt;br /&gt;
 &lt;br /&gt;
  FLAIL 1.0 had a FlailImage class, which wrapped the same PIL image class&lt;br /&gt;
  used here; if you'd like an extremely simplified interface, take a look at&lt;br /&gt;
  that code.&lt;br /&gt;
   &lt;br /&gt;
  If you'd prefer an OpenCV object, just take a look at the get_image source&lt;br /&gt;
  code, and you'll see what to do.&lt;br /&gt;
  &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
  def __init__(self, index = 0):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Connect to a camera. OpenCV (which we use for camera control) numbers&lt;br /&gt;
    these starting from 0; the index parameter tells which camera to use. In&lt;br /&gt;
    Linux, an index of X implies the device /dev/videoX.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    self.cap = opencv.highgui.cvCreateCameraCapture(index)&lt;br /&gt;
 &lt;br /&gt;
  def get_image(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Take a picture. Return it as a PIL image. &lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    return opencv.adaptors.Ipl2PIL(opencv.highgui.cvQueryFrame(self.cap))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Issues===&lt;br /&gt;
*How do we connect to the camera wirelessly?&lt;br /&gt;
**http://www.youtube.com/watch?v=LG8zX68lxI0&lt;br /&gt;
&lt;br /&gt;
*New leads:&lt;br /&gt;
**http://bitshift.bi.funpic.de/en/dslr-remote/manual/bluetooth.php&lt;br /&gt;
**http://www.informationweek.com/news/cloud-computing/software/228800042&lt;br /&gt;
**Pros: we can use almost any dslr camera.&lt;br /&gt;
**Cons: A lot of (potentially very difficult) coding. And we still need how to send the photo back to our laptop.&lt;br /&gt;
&lt;br /&gt;
*MATLAB approach:&lt;br /&gt;
**http://www.mathworks.com/matlabcentral/newsreader/view_thread/154601&lt;br /&gt;
**Pros: it's been done before, though maybe not without the acquisition toolbox. It looks very straightforward.&lt;br /&gt;
**Cons: Acquisition toolbox is a lot of money. Couldn't find anything about using newer versions of MATLAB to do this. Have to use low res webcam.&lt;br /&gt;
&lt;br /&gt;
===Possible Cameras===&lt;br /&gt;
*[http://www.lightinthebox.com/Popular/Bluetooth_Wireless_Webcam.html Something]&lt;br /&gt;
*[http://www.ecamm.com/mac/webcam/bt1/index.html BT-1] - 640x480&lt;br /&gt;
*[http://www.aztekcomputers.com/TVIP110-TRENDNET-426191.html For obtaining online images via MATLAB]&lt;br /&gt;
&lt;br /&gt;
==Navigation==&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
Jack and Duke met on 4/20 to discuss navigation. The consensus was that our first goal is to figure out how to design a virtual map of a space and write commands to get the robot to go to a target location in the space. Once we do that, we will work on mapping out chambers, hopefully using the robot to gather data of the shape of our chambers floor (which one are we going to do?) and turn that data into a map. We also discussed the possibility of using traveling salesman problem model to get the robot to our target locations as quickly as possible.&lt;/div&gt;</summary>
		<author><name>Copoff</name></author>	</entry>

	<entry>
		<id>http://gcat.davidson.edu/GcatWiki/index.php?title=Team_R2D2&amp;diff=14301</id>
		<title>Team R2D2</title>
		<link rel="alternate" type="text/html" href="http://gcat.davidson.edu/GcatWiki/index.php?title=Team_R2D2&amp;diff=14301"/>
				<updated>2012-04-23T23:44:09Z</updated>
		
		<summary type="html">&lt;p&gt;Copoff: /* Issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==To Do==&lt;br /&gt;
*Connect to iRobot &amp;amp; Send Command with MatLab (with laptop) - Cyrus &lt;br /&gt;
*Decide on Camera - Leland &amp;amp; Corey&lt;br /&gt;
*Subgroup Make Outline&lt;br /&gt;
&lt;br /&gt;
==Imaging==&lt;br /&gt;
===Summary===&lt;br /&gt;
*Camera will be attached and set - to move the camera left or right we will move the robot&lt;br /&gt;
**We will have to decide if we want to create a contraption to raise/lower the camera&lt;br /&gt;
*We need to get a camera that we can also connect to via bluetooth... at first this could be a wired, but we need direct usb connection in final version&lt;br /&gt;
*[http://www.zagrosrobotics.com/shop/custom.aspx?recid=17 Good Link]&lt;br /&gt;
&lt;br /&gt;
===[http://www.mathworks.com/products/imaq/ Matlab Imaging]===&lt;br /&gt;
*[http://www.mathworks.com/products/imaq/ Image Acquisition Toolbox] - I think this costs money&lt;br /&gt;
*[http://www2.cs.uh.edu/~somalley/camerabox.html Matlab toolbox to control cannon cameras]&lt;br /&gt;
&lt;br /&gt;
===[http://opencv.willowgarage.com/wiki/ OpenCV]===&lt;br /&gt;
*Has some nice functions that could be used to detect opjects&lt;br /&gt;
*OpenCV (Open Source Computer Vision) is a library of programming functions for real time computer vision.&lt;br /&gt;
**&amp;quot;applications of the OpenCV library are Human-Computer Interaction (HCI); Object Identification, Segmentation and Recognition; Face Recognition; Gesture Recognition; Motion Tracking, Ego Motion, Motion Understanding; Structure From Motion (SFM); Stereo and Multi-Camera Calibration and Depth Computation; Mobile Robotics.&amp;quot;&lt;br /&gt;
*[http://docs.opencv.org/ OpenCV Documentation]&lt;br /&gt;
**[http://opencv.willowgarage.com/documentation/python/index.html Python Interface]&lt;br /&gt;
**C++ Interface&lt;br /&gt;
*[http://opencv.willowgarage.com/wiki/Welcome/OS List of compatible cameras]&lt;br /&gt;
**Camera used in FLAIL project: [http://www.logitech.com/webcam-communications/webcams/devices/6333 Logitech Webcam Pro 9000]&lt;br /&gt;
***This camera will work with openCV and matlab camera control features (see [http://www.mathworks.com/matlabcentral/newsreader/view_thread/245473 here])&lt;br /&gt;
&lt;br /&gt;
Below is python code taken from [http://www.cs.duke.edu/~mac/flail.py FLAIL v2]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##################&lt;br /&gt;
# Camera Control #&lt;br /&gt;
##################&lt;br /&gt;
class FlailCam:&lt;br /&gt;
  &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
  Controls a USB webcam. Uses OpenCV to control the camera, and should&lt;br /&gt;
  therefore work with any V4L2-compatible camera (in linux) or just about&lt;br /&gt;
  anything (in Mac OS). Webcam support being what it is in Linux, though, it&lt;br /&gt;
  may not work at all.&lt;br /&gt;
 &lt;br /&gt;
  If you find yourself in the it-doesn't-even-begin-to-work boat, take a look&lt;br /&gt;
  at flailcam.py from FLAIL 1.0. It has a (terrible, kludgy, slow) workaround&lt;br /&gt;
  that sometimes worked better.&lt;br /&gt;
 &lt;br /&gt;
  The important method (get_image) returns a Python Imaging Library (or PIL)&lt;br /&gt;
  object; these are well-documented on the PIL website, at&lt;br /&gt;
  &amp;lt;http://www.pythonware.com/library/pil/handbook/image.htm&amp;gt;. You're probably&lt;br /&gt;
  most interested in the getpixel, putpixel, and save methods. &lt;br /&gt;
 &lt;br /&gt;
  FLAIL 1.0 had a FlailImage class, which wrapped the same PIL image class&lt;br /&gt;
  used here; if you'd like an extremely simplified interface, take a look at&lt;br /&gt;
  that code.&lt;br /&gt;
   &lt;br /&gt;
  If you'd prefer an OpenCV object, just take a look at the get_image source&lt;br /&gt;
  code, and you'll see what to do.&lt;br /&gt;
  &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
  def __init__(self, index = 0):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Connect to a camera. OpenCV (which we use for camera control) numbers&lt;br /&gt;
    these starting from 0; the index parameter tells which camera to use. In&lt;br /&gt;
    Linux, an index of X implies the device /dev/videoX.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    self.cap = opencv.highgui.cvCreateCameraCapture(index)&lt;br /&gt;
 &lt;br /&gt;
  def get_image(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Take a picture. Return it as a PIL image. &lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    return opencv.adaptors.Ipl2PIL(opencv.highgui.cvQueryFrame(self.cap))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Issues===&lt;br /&gt;
*How do we connect to the camera wirelessly?&lt;br /&gt;
**http://www.youtube.com/watch?v=LG8zX68lxI0&lt;br /&gt;
&lt;br /&gt;
*New leads:&lt;br /&gt;
**http://bitshift.bi.funpic.de/en/dslr-remote/manual/bluetooth.php&lt;br /&gt;
**http://www.informationweek.com/news/cloud-computing/software/228800042&lt;br /&gt;
**Pros: we can use almost any dslr camera.&lt;br /&gt;
**Cons: A lot of (potentially very difficult) coding. And we still need how to send the photo back to our laptop.&lt;br /&gt;
&lt;br /&gt;
*MATLAB approach:&lt;br /&gt;
**http://www.mathworks.com/matlabcentral/newsreader/view_thread/154601&lt;br /&gt;
**Pros: it's been done before, though maybe not without the acquisition toolbox. It looks very straightforward.&lt;br /&gt;
**Cons: Acquisition toolbox is a lot of money. Couldn't find anything about using newer versions of MATLAB to do this. Have to use low res webcam.&lt;br /&gt;
&lt;br /&gt;
===Possible Cameras===&lt;br /&gt;
*[http://www.lightinthebox.com/Popular/Bluetooth_Wireless_Webcam.html Something]&lt;br /&gt;
*[http://www.ecamm.com/mac/webcam/bt1/index.html BT-1] - 640x480&lt;br /&gt;
&lt;br /&gt;
==Navigation==&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
Jack and Duke met on 4/20 to discuss navigation. The consensus was that our first goal is to figure out how to design a virtual map of a space and write commands to get the robot to go to a target location in the space. Once we do that, we will work on mapping out chambers, hopefully using the robot to gather data of the shape of our chambers floor (which one are we going to do?) and turn that data into a map. We also discussed the possibility of using traveling salesman problem model to get the robot to our target locations as quickly as possible.&lt;/div&gt;</summary>
		<author><name>Copoff</name></author>	</entry>

	<entry>
		<id>http://gcat.davidson.edu/GcatWiki/index.php?title=Team_R2D2&amp;diff=14300</id>
		<title>Team R2D2</title>
		<link rel="alternate" type="text/html" href="http://gcat.davidson.edu/GcatWiki/index.php?title=Team_R2D2&amp;diff=14300"/>
				<updated>2012-04-23T23:43:25Z</updated>
		
		<summary type="html">&lt;p&gt;Copoff: /* Issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==To Do==&lt;br /&gt;
*Connect to iRobot &amp;amp; Send Command with MatLab (with laptop) - Cyrus &lt;br /&gt;
*Decide on Camera - Leland &amp;amp; Corey&lt;br /&gt;
*Subgroup Make Outline&lt;br /&gt;
&lt;br /&gt;
==Imaging==&lt;br /&gt;
===Summary===&lt;br /&gt;
*Camera will be attached and set - to move the camera left or right we will move the robot&lt;br /&gt;
**We will have to decide if we want to create a contraption to raise/lower the camera&lt;br /&gt;
*We need to get a camera that we can also connect to via bluetooth... at first this could be a wired, but we need direct usb connection in final version&lt;br /&gt;
*[http://www.zagrosrobotics.com/shop/custom.aspx?recid=17 Good Link]&lt;br /&gt;
&lt;br /&gt;
===[http://www.mathworks.com/products/imaq/ Matlab Imaging]===&lt;br /&gt;
*[http://www.mathworks.com/products/imaq/ Image Acquisition Toolbox] - I think this costs money&lt;br /&gt;
*[http://www2.cs.uh.edu/~somalley/camerabox.html Matlab toolbox to control cannon cameras]&lt;br /&gt;
&lt;br /&gt;
===[http://opencv.willowgarage.com/wiki/ OpenCV]===&lt;br /&gt;
*Has some nice functions that could be used to detect opjects&lt;br /&gt;
*OpenCV (Open Source Computer Vision) is a library of programming functions for real time computer vision.&lt;br /&gt;
**&amp;quot;applications of the OpenCV library are Human-Computer Interaction (HCI); Object Identification, Segmentation and Recognition; Face Recognition; Gesture Recognition; Motion Tracking, Ego Motion, Motion Understanding; Structure From Motion (SFM); Stereo and Multi-Camera Calibration and Depth Computation; Mobile Robotics.&amp;quot;&lt;br /&gt;
*[http://docs.opencv.org/ OpenCV Documentation]&lt;br /&gt;
**[http://opencv.willowgarage.com/documentation/python/index.html Python Interface]&lt;br /&gt;
**C++ Interface&lt;br /&gt;
*[http://opencv.willowgarage.com/wiki/Welcome/OS List of compatible cameras]&lt;br /&gt;
**Camera used in FLAIL project: [http://www.logitech.com/webcam-communications/webcams/devices/6333 Logitech Webcam Pro 9000]&lt;br /&gt;
***This camera will work with openCV and matlab camera control features (see [http://www.mathworks.com/matlabcentral/newsreader/view_thread/245473 here])&lt;br /&gt;
&lt;br /&gt;
Below is python code taken from [http://www.cs.duke.edu/~mac/flail.py FLAIL v2]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##################&lt;br /&gt;
# Camera Control #&lt;br /&gt;
##################&lt;br /&gt;
class FlailCam:&lt;br /&gt;
  &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
  Controls a USB webcam. Uses OpenCV to control the camera, and should&lt;br /&gt;
  therefore work with any V4L2-compatible camera (in linux) or just about&lt;br /&gt;
  anything (in Mac OS). Webcam support being what it is in Linux, though, it&lt;br /&gt;
  may not work at all.&lt;br /&gt;
 &lt;br /&gt;
  If you find yourself in the it-doesn't-even-begin-to-work boat, take a look&lt;br /&gt;
  at flailcam.py from FLAIL 1.0. It has a (terrible, kludgy, slow) workaround&lt;br /&gt;
  that sometimes worked better.&lt;br /&gt;
 &lt;br /&gt;
  The important method (get_image) returns a Python Imaging Library (or PIL)&lt;br /&gt;
  object; these are well-documented on the PIL website, at&lt;br /&gt;
  &amp;lt;http://www.pythonware.com/library/pil/handbook/image.htm&amp;gt;. You're probably&lt;br /&gt;
  most interested in the getpixel, putpixel, and save methods. &lt;br /&gt;
 &lt;br /&gt;
  FLAIL 1.0 had a FlailImage class, which wrapped the same PIL image class&lt;br /&gt;
  used here; if you'd like an extremely simplified interface, take a look at&lt;br /&gt;
  that code.&lt;br /&gt;
   &lt;br /&gt;
  If you'd prefer an OpenCV object, just take a look at the get_image source&lt;br /&gt;
  code, and you'll see what to do.&lt;br /&gt;
  &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
  def __init__(self, index = 0):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Connect to a camera. OpenCV (which we use for camera control) numbers&lt;br /&gt;
    these starting from 0; the index parameter tells which camera to use. In&lt;br /&gt;
    Linux, an index of X implies the device /dev/videoX.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    self.cap = opencv.highgui.cvCreateCameraCapture(index)&lt;br /&gt;
 &lt;br /&gt;
  def get_image(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Take a picture. Return it as a PIL image. &lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    return opencv.adaptors.Ipl2PIL(opencv.highgui.cvQueryFrame(self.cap))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Issues===&lt;br /&gt;
*How do we connect to the camera wirelessly?&lt;br /&gt;
**http://www.youtube.com/watch?v=LG8zX68lxI0&lt;br /&gt;
&lt;br /&gt;
*New leads:&lt;br /&gt;
**http://bitshift.bi.funpic.de/en/dslr-remote/manual/bluetooth.php&lt;br /&gt;
**http://www.informationweek.com/news/cloud-computing/software/228800042&lt;br /&gt;
**Pros: we can use almost any dslr camera.&lt;br /&gt;
**Cons: A lot of (potentially very difficult) coding. And we still need how to send the photo back to our laptop.&lt;br /&gt;
&lt;br /&gt;
*MATLAB approach:&lt;br /&gt;
**http://www.mathworks.com/matlabcentral/newsreader/view_thread/154601&lt;br /&gt;
**http://www.aztekcomputers.com/TVIP110-TRENDNET-426191.html&lt;br /&gt;
**Pros: it's been done before, though maybe not without the acquisition toolbox. It looks very straightforward.&lt;br /&gt;
**Cons: Acquisition toolbox is a lot of money. Couldn't find anything about using newer versions of MATLAB to do this. Have to use low res webcam.&lt;br /&gt;
&lt;br /&gt;
===Possible Cameras===&lt;br /&gt;
*[http://www.lightinthebox.com/Popular/Bluetooth_Wireless_Webcam.html Something]&lt;br /&gt;
*[http://www.ecamm.com/mac/webcam/bt1/index.html BT-1] - 640x480&lt;br /&gt;
&lt;br /&gt;
==Navigation==&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
Jack and Duke met on 4/20 to discuss navigation. The consensus was that our first goal is to figure out how to design a virtual map of a space and write commands to get the robot to go to a target location in the space. Once we do that, we will work on mapping out chambers, hopefully using the robot to gather data of the shape of our chambers floor (which one are we going to do?) and turn that data into a map. We also discussed the possibility of using traveling salesman problem model to get the robot to our target locations as quickly as possible.&lt;/div&gt;</summary>
		<author><name>Copoff</name></author>	</entry>

	<entry>
		<id>http://gcat.davidson.edu/GcatWiki/index.php?title=Team_R2D2&amp;diff=14299</id>
		<title>Team R2D2</title>
		<link rel="alternate" type="text/html" href="http://gcat.davidson.edu/GcatWiki/index.php?title=Team_R2D2&amp;diff=14299"/>
				<updated>2012-04-23T23:42:52Z</updated>
		
		<summary type="html">&lt;p&gt;Copoff: /* Issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==To Do==&lt;br /&gt;
*Connect to iRobot &amp;amp; Send Command with MatLab (with laptop) - Cyrus &lt;br /&gt;
*Decide on Camera - Leland &amp;amp; Corey&lt;br /&gt;
*Subgroup Make Outline&lt;br /&gt;
&lt;br /&gt;
==Imaging==&lt;br /&gt;
===Summary===&lt;br /&gt;
*Camera will be attached and set - to move the camera left or right we will move the robot&lt;br /&gt;
**We will have to decide if we want to create a contraption to raise/lower the camera&lt;br /&gt;
*We need to get a camera that we can also connect to via bluetooth... at first this could be a wired, but we need direct usb connection in final version&lt;br /&gt;
*[http://www.zagrosrobotics.com/shop/custom.aspx?recid=17 Good Link]&lt;br /&gt;
&lt;br /&gt;
===[http://www.mathworks.com/products/imaq/ Matlab Imaging]===&lt;br /&gt;
*[http://www.mathworks.com/products/imaq/ Image Acquisition Toolbox] - I think this costs money&lt;br /&gt;
*[http://www2.cs.uh.edu/~somalley/camerabox.html Matlab toolbox to control cannon cameras]&lt;br /&gt;
&lt;br /&gt;
===[http://opencv.willowgarage.com/wiki/ OpenCV]===&lt;br /&gt;
*Has some nice functions that could be used to detect opjects&lt;br /&gt;
*OpenCV (Open Source Computer Vision) is a library of programming functions for real time computer vision.&lt;br /&gt;
**&amp;quot;applications of the OpenCV library are Human-Computer Interaction (HCI); Object Identification, Segmentation and Recognition; Face Recognition; Gesture Recognition; Motion Tracking, Ego Motion, Motion Understanding; Structure From Motion (SFM); Stereo and Multi-Camera Calibration and Depth Computation; Mobile Robotics.&amp;quot;&lt;br /&gt;
*[http://docs.opencv.org/ OpenCV Documentation]&lt;br /&gt;
**[http://opencv.willowgarage.com/documentation/python/index.html Python Interface]&lt;br /&gt;
**C++ Interface&lt;br /&gt;
*[http://opencv.willowgarage.com/wiki/Welcome/OS List of compatible cameras]&lt;br /&gt;
**Camera used in FLAIL project: [http://www.logitech.com/webcam-communications/webcams/devices/6333 Logitech Webcam Pro 9000]&lt;br /&gt;
***This camera will work with openCV and matlab camera control features (see [http://www.mathworks.com/matlabcentral/newsreader/view_thread/245473 here])&lt;br /&gt;
&lt;br /&gt;
Below is python code taken from [http://www.cs.duke.edu/~mac/flail.py FLAIL v2]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##################&lt;br /&gt;
# Camera Control #&lt;br /&gt;
##################&lt;br /&gt;
class FlailCam:&lt;br /&gt;
  &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
  Controls a USB webcam. Uses OpenCV to control the camera, and should&lt;br /&gt;
  therefore work with any V4L2-compatible camera (in linux) or just about&lt;br /&gt;
  anything (in Mac OS). Webcam support being what it is in Linux, though, it&lt;br /&gt;
  may not work at all.&lt;br /&gt;
 &lt;br /&gt;
  If you find yourself in the it-doesn't-even-begin-to-work boat, take a look&lt;br /&gt;
  at flailcam.py from FLAIL 1.0. It has a (terrible, kludgy, slow) workaround&lt;br /&gt;
  that sometimes worked better.&lt;br /&gt;
 &lt;br /&gt;
  The important method (get_image) returns a Python Imaging Library (or PIL)&lt;br /&gt;
  object; these are well-documented on the PIL website, at&lt;br /&gt;
  &amp;lt;http://www.pythonware.com/library/pil/handbook/image.htm&amp;gt;. You're probably&lt;br /&gt;
  most interested in the getpixel, putpixel, and save methods. &lt;br /&gt;
 &lt;br /&gt;
  FLAIL 1.0 had a FlailImage class, which wrapped the same PIL image class&lt;br /&gt;
  used here; if you'd like an extremely simplified interface, take a look at&lt;br /&gt;
  that code.&lt;br /&gt;
   &lt;br /&gt;
  If you'd prefer an OpenCV object, just take a look at the get_image source&lt;br /&gt;
  code, and you'll see what to do.&lt;br /&gt;
  &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
  def __init__(self, index = 0):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Connect to a camera. OpenCV (which we use for camera control) numbers&lt;br /&gt;
    these starting from 0; the index parameter tells which camera to use. In&lt;br /&gt;
    Linux, an index of X implies the device /dev/videoX.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    self.cap = opencv.highgui.cvCreateCameraCapture(index)&lt;br /&gt;
 &lt;br /&gt;
  def get_image(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Take a picture. Return it as a PIL image. &lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    return opencv.adaptors.Ipl2PIL(opencv.highgui.cvQueryFrame(self.cap))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Issues===&lt;br /&gt;
*How do we connect to the camera wirelessly?&lt;br /&gt;
**http://www.youtube.com/watch?v=LG8zX68lxI0&lt;br /&gt;
*http://www.mathworks.com/matlabcentral/newsreader/view_thread/154601&lt;br /&gt;
&lt;br /&gt;
*New leads:&lt;br /&gt;
**http://bitshift.bi.funpic.de/en/dslr-remote/manual/bluetooth.php&lt;br /&gt;
**http://www.informationweek.com/news/cloud-computing/software/228800042&lt;br /&gt;
**Pros: we can use almost any dslr camera.&lt;br /&gt;
**Cons: A lot of (potentially very difficult) coding. And we still need how to send the photo back to our laptop.&lt;br /&gt;
&lt;br /&gt;
*MATLAB approach:&lt;br /&gt;
**http://www.aztekcomputers.com/TVIP110-TRENDNET-426191.html&lt;br /&gt;
**Pros: it's been done before, though maybe not without the acquisition toolbox. It looks very straightforward.&lt;br /&gt;
**Cons: Acquisition toolbox is a lot of money. Couldn't find anything about using newer versions of MATLAB to do this. Have to use low res webcam.&lt;br /&gt;
&lt;br /&gt;
===Possible Cameras===&lt;br /&gt;
*[http://www.lightinthebox.com/Popular/Bluetooth_Wireless_Webcam.html Something]&lt;br /&gt;
*[http://www.ecamm.com/mac/webcam/bt1/index.html BT-1] - 640x480&lt;br /&gt;
&lt;br /&gt;
==Navigation==&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
Jack and Duke met on 4/20 to discuss navigation. The consensus was that our first goal is to figure out how to design a virtual map of a space and write commands to get the robot to go to a target location in the space. Once we do that, we will work on mapping out chambers, hopefully using the robot to gather data of the shape of our chambers floor (which one are we going to do?) and turn that data into a map. We also discussed the possibility of using traveling salesman problem model to get the robot to our target locations as quickly as possible.&lt;/div&gt;</summary>
		<author><name>Copoff</name></author>	</entry>

	<entry>
		<id>http://gcat.davidson.edu/GcatWiki/index.php?title=Team_R2D2&amp;diff=14298</id>
		<title>Team R2D2</title>
		<link rel="alternate" type="text/html" href="http://gcat.davidson.edu/GcatWiki/index.php?title=Team_R2D2&amp;diff=14298"/>
				<updated>2012-04-23T23:42:16Z</updated>
		
		<summary type="html">&lt;p&gt;Copoff: /* Issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==To Do==&lt;br /&gt;
*Connect to iRobot &amp;amp; Send Command with MatLab (with laptop) - Cyrus &lt;br /&gt;
*Decide on Camera - Leland &amp;amp; Corey&lt;br /&gt;
*Subgroup Make Outline&lt;br /&gt;
&lt;br /&gt;
==Imaging==&lt;br /&gt;
===Summary===&lt;br /&gt;
*Camera will be attached and set - to move the camera left or right we will move the robot&lt;br /&gt;
**We will have to decide if we want to create a contraption to raise/lower the camera&lt;br /&gt;
*We need to get a camera that we can also connect to via bluetooth... at first this could be a wired, but we need direct usb connection in final version&lt;br /&gt;
*[http://www.zagrosrobotics.com/shop/custom.aspx?recid=17 Good Link]&lt;br /&gt;
&lt;br /&gt;
===[http://www.mathworks.com/products/imaq/ Matlab Imaging]===&lt;br /&gt;
*[http://www.mathworks.com/products/imaq/ Image Acquisition Toolbox] - I think this costs money&lt;br /&gt;
*[http://www2.cs.uh.edu/~somalley/camerabox.html Matlab toolbox to control cannon cameras]&lt;br /&gt;
&lt;br /&gt;
===[http://opencv.willowgarage.com/wiki/ OpenCV]===&lt;br /&gt;
*Has some nice functions that could be used to detect opjects&lt;br /&gt;
*OpenCV (Open Source Computer Vision) is a library of programming functions for real time computer vision.&lt;br /&gt;
**&amp;quot;applications of the OpenCV library are Human-Computer Interaction (HCI); Object Identification, Segmentation and Recognition; Face Recognition; Gesture Recognition; Motion Tracking, Ego Motion, Motion Understanding; Structure From Motion (SFM); Stereo and Multi-Camera Calibration and Depth Computation; Mobile Robotics.&amp;quot;&lt;br /&gt;
*[http://docs.opencv.org/ OpenCV Documentation]&lt;br /&gt;
**[http://opencv.willowgarage.com/documentation/python/index.html Python Interface]&lt;br /&gt;
**C++ Interface&lt;br /&gt;
*[http://opencv.willowgarage.com/wiki/Welcome/OS List of compatible cameras]&lt;br /&gt;
**Camera used in FLAIL project: [http://www.logitech.com/webcam-communications/webcams/devices/6333 Logitech Webcam Pro 9000]&lt;br /&gt;
***This camera will work with openCV and matlab camera control features (see [http://www.mathworks.com/matlabcentral/newsreader/view_thread/245473 here])&lt;br /&gt;
&lt;br /&gt;
Below is python code taken from [http://www.cs.duke.edu/~mac/flail.py FLAIL v2]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##################&lt;br /&gt;
# Camera Control #&lt;br /&gt;
##################&lt;br /&gt;
class FlailCam:&lt;br /&gt;
  &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
  Controls a USB webcam. Uses OpenCV to control the camera, and should&lt;br /&gt;
  therefore work with any V4L2-compatible camera (in linux) or just about&lt;br /&gt;
  anything (in Mac OS). Webcam support being what it is in Linux, though, it&lt;br /&gt;
  may not work at all.&lt;br /&gt;
 &lt;br /&gt;
  If you find yourself in the it-doesn't-even-begin-to-work boat, take a look&lt;br /&gt;
  at flailcam.py from FLAIL 1.0. It has a (terrible, kludgy, slow) workaround&lt;br /&gt;
  that sometimes worked better.&lt;br /&gt;
 &lt;br /&gt;
  The important method (get_image) returns a Python Imaging Library (or PIL)&lt;br /&gt;
  object; these are well-documented on the PIL website, at&lt;br /&gt;
  &amp;lt;http://www.pythonware.com/library/pil/handbook/image.htm&amp;gt;. You're probably&lt;br /&gt;
  most interested in the getpixel, putpixel, and save methods. &lt;br /&gt;
 &lt;br /&gt;
  FLAIL 1.0 had a FlailImage class, which wrapped the same PIL image class&lt;br /&gt;
  used here; if you'd like an extremely simplified interface, take a look at&lt;br /&gt;
  that code.&lt;br /&gt;
   &lt;br /&gt;
  If you'd prefer an OpenCV object, just take a look at the get_image source&lt;br /&gt;
  code, and you'll see what to do.&lt;br /&gt;
  &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
  def __init__(self, index = 0):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Connect to a camera. OpenCV (which we use for camera control) numbers&lt;br /&gt;
    these starting from 0; the index parameter tells which camera to use. In&lt;br /&gt;
    Linux, an index of X implies the device /dev/videoX.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    self.cap = opencv.highgui.cvCreateCameraCapture(index)&lt;br /&gt;
 &lt;br /&gt;
  def get_image(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Take a picture. Return it as a PIL image. &lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    return opencv.adaptors.Ipl2PIL(opencv.highgui.cvQueryFrame(self.cap))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Issues===&lt;br /&gt;
*How do we connect to the camera wirelessly?&lt;br /&gt;
**http://www.youtube.com/watch?v=LG8zX68lxI0&lt;br /&gt;
*http://www.mathworks.com/matlabcentral/newsreader/view_thread/154601&lt;br /&gt;
&lt;br /&gt;
*New leads:&lt;br /&gt;
*http://bitshift.bi.funpic.de/en/dslr-remote/manual/bluetooth.php&lt;br /&gt;
*http://www.informationweek.com/news/cloud-computing/software/228800042&lt;br /&gt;
*Pros: we can use almost any dslr camera.&lt;br /&gt;
*Cons: A lot of (potentially very difficult) coding. And we still need how to send the photo back to our laptop.&lt;br /&gt;
&lt;br /&gt;
*MATLAB approach:&lt;br /&gt;
*http://www.aztekcomputers.com/TVIP110-TRENDNET-426191.html&lt;br /&gt;
*Pros: it's been done before, though maybe not without the acquisition toolbox. It looks very straightforward.&lt;br /&gt;
*Cons: Acquisition toolbox is a lot of money. Couldn't find anything about using newer versions of MATLAB to do this. Have to use low res webcam.&lt;br /&gt;
&lt;br /&gt;
===Possible Cameras===&lt;br /&gt;
*[http://www.lightinthebox.com/Popular/Bluetooth_Wireless_Webcam.html Something]&lt;br /&gt;
*[http://www.ecamm.com/mac/webcam/bt1/index.html BT-1] - 640x480&lt;br /&gt;
&lt;br /&gt;
==Navigation==&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
Jack and Duke met on 4/20 to discuss navigation. The consensus was that our first goal is to figure out how to design a virtual map of a space and write commands to get the robot to go to a target location in the space. Once we do that, we will work on mapping out chambers, hopefully using the robot to gather data of the shape of our chambers floor (which one are we going to do?) and turn that data into a map. We also discussed the possibility of using traveling salesman problem model to get the robot to our target locations as quickly as possible.&lt;/div&gt;</summary>
		<author><name>Copoff</name></author>	</entry>

	</feed>