<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>RobotGrrl.com &#187; food</title>
	<atom:link href="http://robotgrrl.com/blog/tag/food/feed/" rel="self" type="application/rss+xml" />
	<link>http://robotgrrl.com/blog</link>
	<description>ethical robots that bring smiles</description>
	<lastBuildDate>Mon, 21 May 2012 21:27:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Artist in Residence at Evil Mad Science!</title>
		<link>http://robotgrrl.com/blog/2012/05/02/artist-in-residence-at-evil-mad-science/</link>
		<comments>http://robotgrrl.com/blog/2012/05/02/artist-in-residence-at-evil-mad-science/#comments</comments>
		<pubDate>Wed, 02 May 2012 06:29:32 +0000</pubDate>
		<dc:creator>Erin, the RobotGrrl</dc:creator>
				<category><![CDATA[EMSL]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[RoboBrrd (thx Adafruit!)]]></category>
		<category><![CDATA[2012]]></category>
		<category><![CDATA[Art]]></category>
		<category><![CDATA[artist]]></category>
		<category><![CDATA[boards]]></category>
		<category><![CDATA[CAD]]></category>
		<category><![CDATA[California]]></category>
		<category><![CDATA[Cool]]></category>
		<category><![CDATA[evil mad science]]></category>
		<category><![CDATA[exploring]]></category>
		<category><![CDATA[food]]></category>
		<category><![CDATA[RoboBrrd]]></category>

		<guid isPermaLink="false">http://robotgrrl.com/blog/?p=2413</guid>
		<description><![CDATA[I&#8217;m currently an artist in residence at Evil Mad Science! I get to work on some interesting tasks, play with some great robots, and learn tons of new skills! On Thursday we had a Robot Party LIVE from EMSL! There were many technical difficulties, but we appreciate everyone who showed up to the Ustream and [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m currently an artist in residence at <a href="http://evilmadscientist.com/">Evil Mad Science</a>! I get to work on some interesting tasks, play with some great robots, and learn tons of new skills!</p>
<p>On Thursday we had a <a href="http://robotgrrl.com/robotparty">Robot Party</a> LIVE from EMSL! There were many technical difficulties, but we appreciate everyone who showed up to the Ustream and participated in the hangout afterwards! Next week will be better because there will be faster internet. Yay!</p>
<p><center><br />
<a href="http://www.flickr.com/photos/robotgrrl/6982885916/" title="Robot Party @ Evil Mad Science April 26, 2012 by RobotGrrl, on Flickr"><img src="http://farm8.staticflickr.com/7094/6982885916_6f94628fb4.jpg" width="500" height="313" alt="Robot Party @ Evil Mad Science April 26, 2012"></a><br />
</center></p>
<p><center><a href="http://www.flickr.com/photos/robotgrrl/6982882426/" title="Robot Party @ Evil Mad Science April 26, 2012 by RobotGrrl, on Flickr"><img src="http://farm8.staticflickr.com/7047/6982882426_691d55bde4.jpg" width="500" height="313" alt="Robot Party @ Evil Mad Science April 26, 2012"></a></center></p>
<p>While I&#8217;m here one of the things that has to get done is making RoboBrrd as a kit form. There&#8217;s lots of questions and redesigning. Here&#8217;s some revised CAD! As you can see, much more thick than the previous versions.</p>
<p><center><a href="http://www.flickr.com/photos/robotgrrl/7127706579/" title="IMG_4221 by RobotGrrl, on Flickr"><img src="http://farm9.staticflickr.com/8022/7127706579_fbba3ce5da.jpg" width="500" height="374" alt="IMG_4221"></a></center></p>
<p>The beak mechanism is going to be a little different too. It will be a hinge using the same plasticky material as on the eggbot. I tried unsuccessfully to rip this material, it&#8217;s extremely durable!</p>
<p><center><a href="http://www.flickr.com/photos/robotgrrl/6981622280/" title="IMG_4222 by RobotGrrl, on Flickr"><img src="http://farm9.staticflickr.com/8143/6981622280_df792d171b.jpg" width="500" height="374" alt="IMG_4222"></a></center></p>
<p>Speaking of material, this is the 6.35mm (1/4inch) basswood. Wood is significantly less expensive than acrylic, more sturdy, can assemble strong using wood glue, anyone can drill into it easily, and best of all you can paint on it <img src='http://robotgrrl.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><center><a href="http://www.flickr.com/photos/robotgrrl/7127707871/" title="IMG_4224 by RobotGrrl, on Flickr"><img src="http://farm8.staticflickr.com/7199/7127707871_9ef0cc5791.jpg" width="500" height="374" alt="IMG_4224"></a></center></p>
<p>Trying to figure out the kerf was a little horrible. With this material, a friction fit isn&#8217;t entirely necessary (because you can glue it), but having a bit of friction is nice. It took me a lot of tries, it was an epic fail, but eventually figured it out in the end!</p>
<p><center><a href="http://www.flickr.com/photos/robotgrrl/7127710035/" title="IMG_4230 by RobotGrrl, on Flickr"><img src="http://farm8.staticflickr.com/7112/7127710035_71a9ce93bb.jpg" width="500" height="374" alt="IMG_4230"></a></center></p>
<p>Next time I&#8217;ll do a better job at figuring out kerf values. Live and learn.</p>
<p><center><a href="http://www.flickr.com/photos/robotgrrl/6981629994/" title="IMG_4237 by RobotGrrl, on Flickr"><img src="http://farm8.staticflickr.com/7259/6981629994_6c1c01655e.jpg" width="500" height="374" alt="IMG_4237"></a></center></p>
<p>Laser cutting the pieces is pretty fun! You have to mask the basswood before cutting otherwise there will be goop near the edges, making the piece a little discoloured and sticky. The basswood smells great!</p>
<p><center><a href="http://www.flickr.com/photos/robotgrrl/6981635010/" title="IMG_4270 by RobotGrrl, on Flickr"><img src="http://farm8.staticflickr.com/7054/6981635010_a8de4281fb.jpg" width="500" height="374" alt="IMG_4270"></a></center></p>
<p>Sometimes there are issues with cutting all the way through since basswood is a natural material. Sometimes it heats up a lot and you get bright sparks. You really have to keep an eye on the laser cutter and make sure you have an action plan if things get out of hand!</p>
<p><center><a href="http://www.flickr.com/photos/robotgrrl/7127720077/" title="IMG_4271 by RobotGrrl, on Flickr"><img src="http://farm8.staticflickr.com/7209/7127720077_a8af405901.jpg" width="500" height="390" alt="IMG_4271"></a></center></p>
<p>Inventor is so fantastic to figure help make sure all the tabs are lined up. I found a pretty cool program on Windows that can take timelapse screenshots, so this weekend perhaps there will be enough for yet another funky timelapse video!</p>
<p><center><a href="http://www.flickr.com/photos/robotgrrl/6981637764/" title="IMG_4275 by RobotGrrl, on Flickr"><img src="http://farm8.staticflickr.com/7114/6981637764_bdec849e64.jpg" width="500" height="500" alt="IMG_4275"></a></center></p>
<p>Skipping along to the boards now, the boards didn&#8217;t really work before- but the issue was found and solved! Turned out the reset line didn&#8217;t have the capacitor and right resistor on it. Wooops! When that fix was made, it FINALLY WORKED! Uploading code and blinking an LED!</p>
<p><center><a href="http://www.flickr.com/photos/robotgrrl/7127715977/" title="IMG_4243 by RobotGrrl, on Flickr"><img src="http://farm9.staticflickr.com/8160/7127715977_5f4faec2e1.jpg" width="500" height="374" alt="IMG_4243"></a></center></p>
<p>It also works great with the Googly Eye shield <img src='http://robotgrrl.com/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p><center><a href="http://www.flickr.com/photos/robotgrrl/6981631920/" title="IMG_4242 by RobotGrrl, on Flickr"><img src="http://farm9.staticflickr.com/8017/6981631920_8ef2974062.jpg" width="500" height="374" alt="IMG_4242"></a></center></p>
<p>However it did not work with the LoL Shield just yet. Perhaps it might be as simple as a power issue (because the 5V header is messed up on this one because I was trying to desolder something but failed). This will be debugged later on!</p>
<p><center><a href="http://www.flickr.com/photos/robotgrrl/6981638274/" title="IMG_4252 by RobotGrrl, on Flickr"><img src="http://farm8.staticflickr.com/7097/6981638274_e2d62f9551.jpg" width="500" height="374" alt="IMG_4252"></a></center></p>
<p>Speaking of desoldering, check out this really cool soldering station they have! The soldering iron is a Metcal, it heats up via RF waves rather than a heating element. It takes only 7 seconds to heat up! Holey moley!</p>
<p><center><a href="http://www.flickr.com/photos/robotgrrl/6981643772/" title="IMG_4284 by RobotGrrl, on Flickr"><img src="http://farm8.staticflickr.com/7091/6981643772_022b1cedf9.jpg" width="500" height="374" alt="IMG_4284"></a></center></p>
<p><center><a href="http://www.flickr.com/photos/robotgrrl/7127728847/" title="IMG_4286 by RobotGrrl, on Flickr"><img src="http://farm9.staticflickr.com/8022/7127728847_b4a1a86427.jpg" width="500" height="374" alt="IMG_4286"></a></center></p>
<p>There is also a very nice microscope here. You can look at a breadboard so close you can see deep into the breadboard holes. It&#8217;s like your trapped inside a breadboard and you can&#8217;t escape! Here are some pictures of various things taken with my iPhone. There is a camera mount, but there needs to be a better lighting setup for the photos to be captured properly.</p>
<p><center><a href="http://www.flickr.com/photos/robotgrrl/6981645402/" title="IMG_4287 by RobotGrrl, on Flickr"><img src="http://farm8.staticflickr.com/7135/6981645402_3734f29769.jpg" width="500" height="374" alt="IMG_4287"></a></center></p>
<p><center><a href="http://www.flickr.com/photos/robotgrrl/6981645818/" title="IMG_4289 by RobotGrrl, on Flickr"><img src="http://farm8.staticflickr.com/7255/6981645818_a062306f7f.jpg" width="500" height="374" alt="IMG_4289"></a></center></p>
<p><center><a href="http://www.flickr.com/photos/robotgrrl/6981646148/" title="IMG_4292 by RobotGrrl, on Flickr"><img src="http://farm8.staticflickr.com/7225/6981646148_3487d20aa6.jpg" width="500" height="374" alt="IMG_4292"></a></center></p>
<p><center><a href="http://www.flickr.com/photos/robotgrrl/6981646600/" title="IMG_4293 by RobotGrrl, on Flickr"><img src="http://farm8.staticflickr.com/7223/6981646600_450fe60994.jpg" width="500" height="374" alt="IMG_4293"></a></center></p>
<p>We have visited a lot of interesting places around. Sooo many interesting places around here! The electronic stores are REALLY STELLAR! We also went to the SawdustShop (kind of like the TechShop but for woodworking), and I saw this clever hinge on a box that was neat!</p>
<p><center><a href="http://www.flickr.com/photos/robotgrrl/6981637134/" title="IMG_4249 by RobotGrrl, on Flickr"><img src="http://farm9.staticflickr.com/8149/6981637134_aabb3b1cbe.jpg" width="500" height="374" alt="IMG_4249"></a></center></p>
<p>Here was another cool place to go to, the <a href="http://www.hbrobotics.org/">Homebrew Robotics Group</a> meeting! It was really cool to be with other robot builders as well. There are some really great robots there, and a lot of them were very successful at RoboGames! I presented my RoboBrrd at the meeting, it was fun! (Thanks <a href="http://twitter.com/mifulapirus">@mifulapirus</a> for the pic!)</p>
<p><center><a href="http://www.flickr.com/photos/robotgrrl/6988672100/" title="homebrew_robotics_group_robotgrrl_from_mifulapirus by RobotGrrl, on Flickr"><img src="http://farm8.staticflickr.com/7268/6988672100_2d6ce7e270.jpg" width="500" height="375" alt="homebrew_robotics_group_robotgrrl_from_mifulapirus"></a></center></p>
<p>This here is one of the main things I&#8217;m tasked with while being in the lab. Sort of. It should be really slick when complete. It&#8217;s pretty challenging as it is some stuff that I haven&#8217;t played with before!</p>
<p><center><a href="http://www.flickr.com/photos/robotgrrl/7127726617/" title="IMG_4282 by RobotGrrl, on Flickr"><img src="http://farm9.staticflickr.com/8146/7127726617_a2f0017508.jpg" width="500" height="376" alt="IMG_4282"></a></center></p>
<p>In addition to all this amazing brain food, I&#8217;m learning how to make real food too! A huge part of this is making bread. Bread is actually quite optimal to make, more people should make it! Most of the food turns out to be really delicious. There&#8217;s lots of lemons, since lemons grow on trees here! This here is one of the nicer things, we made sorbet in a gelato machine. It was excitingly good!</p>
<p><center><a href="http://www.flickr.com/photos/robotgrrl/7127717357/" title="IMG_4247 by RobotGrrl, on Flickr"><img src="http://farm8.staticflickr.com/7263/7127717357_ea19e848f3.jpg" width="500" height="500" alt="IMG_4247"></a></center></p>
<p>At some point this week I will make some robobrrd and robot party hackerspace passport stamps! I unfortunately didn&#8217;t bring my Wacom tablet, so I&#8217;m not sure how I&#8217;m going to get the drawings into the computer. Eek! <img src='http://robotgrrl.com/blog/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  Hopefully the drawings will be spiffy enough!</p>
<p><center><a href="http://www.flickr.com/photos/robotgrrl/7127727053/" title="IMG_4283 by RobotGrrl, on Flickr"><img src="http://farm8.staticflickr.com/7060/7127727053_c58a1d15f4.jpg" width="500" height="374" alt="IMG_4283"></a></center></p>
<p>RoboBrrd is of course enjoying its time sitting on the desk and watching cool stuff happen! Chirp chirp!</p>
<p><center><a href="http://www.flickr.com/photos/robotgrrl/7127724051/" title="IMG_4279 by RobotGrrl, on Flickr"><img src="http://farm8.staticflickr.com/7130/7127724051_a5c8798d70.jpg" width="500" height="500" alt="IMG_4279"></a></center></p>
<p>That&#8217;s all for this week! (Actually it was last week- this was supposed to be posted on Sunday haha) I&#8217;ll be posting up some more interesting things in the future! Maker Faire is swiftly approaching! Thanks to Lenore and Windell for the help so far! If you have a robot be sure to come to the <a href="http://robotgrrl.com/robotparty">Robot Party</a> this week! It is going to be really exciting! <img src='http://robotgrrl.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div class="tweetthis" style="text-align:left;"><p>  <a class="tt" href="http://twitter.com/intent/tweet?text=Blog+post%21+Artist+in+Residence+at+Evil+Mad+Science%21+http%3A%2F%2Fis.gd%2FUZuwxl+%5E_%5E+%40RobotGrrl" title=" "> </a></p></div>]]></content:encoded>
			<wfw:commentRss>http://robotgrrl.com/blog/2012/05/02/artist-in-residence-at-evil-mad-science/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>FNR – BubbleBoy Behaviour AI</title>
		<link>http://robotgrrl.com/blog/2010/07/12/fnr-bubbleboy-behaviour-ai/</link>
		<comments>http://robotgrrl.com/blog/2010/07/12/fnr-bubbleboy-behaviour-ai/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 15:10:18 +0000</pubDate>
		<dc:creator>Erin, the RobotGrrl</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Robot]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[bayes]]></category>
		<category><![CDATA[Bayes Filter]]></category>
		<category><![CDATA[bayes filter algorithm]]></category>
		<category><![CDATA[Behaviour]]></category>
		<category><![CDATA[BubbleBoy]]></category>
		<category><![CDATA[flowchart]]></category>
		<category><![CDATA[food]]></category>
		<category><![CDATA[water]]></category>

		<guid isPermaLink="false">http://robotgrrl.com/blog/?p=1633</guid>
		<description><![CDATA[This week and this Friday Night Robotics I was working on a behaviour AI for the newly refurbished BubbleBoy! It is much easier to design an AI that you know will be interactable with thew orld! Without the headbobbing capability of BubbleBoy, this effort would not be worth it. BubbleBoy&#8217;s behaviour is primarily focused on [...]]]></description>
			<content:encoded><![CDATA[<p>This week and this Friday Night Robotics I was working on a behaviour AI for the newly refurbished BubbleBoy! It is much easier to design an AI that you know will be interactable with thew orld! Without the headbobbing capability of BubbleBoy, this effort would not be worth it. </p>
<p>BubbleBoy&#8217;s behaviour is primarily focused on food and water. BubbleBoy lives its anthropomorphized life <i>just</i> be be fed/watered! This means that BubbleBoy will want to know when it will expect to be fed, so that way it can headbob at the most optimal times. Being fed/watered is having a button pressed on BubbleBoy&#8217;s green stage area (the part with the blue and white LCD).</p>
<p>BubbleBoy will have three sensors, and a rudimentary measure time. The three sensors are the LDR, lid switch, and Xbee. All of these are onboard the robot (except for the Xbee which isn&#8217;t implemented yet).</p>
<p>Here&#8217;s a broad flowchart of the behaviour, which I will then explain below in detail.</p>
<p><center><a href="http://www.flickr.com/photos/robotgrrl/4786744498/" title="BubbleBoy Behaviour AI Flowchart by RobotGrrl, on Flickr"><img src="http://farm5.static.flickr.com/4135/4786744498_36ded3829e.jpg" width="500" height="500" alt="BubbleBoy Behaviour AI Flowchart"></a></center></p>
<ol>
<li>
<h3>Creating the Expectation</h3>
</li>
<p>This is the observatory phase. BubbleBoy initially does not have any expectation of when to be fed, so it waits around. While it is waiting, its collecting data from all of the sensors and storing them to an array. There has to be 10 numbers in the array for each sensor before BubbleBoy can proceed to the next stage, pattern finding. Once this is fulfilled, and if BubbleBoy is fed/watered, then it goes on to find a pattern.</p>
<li>
<h3>Pattern Finding</h3>
</li>
<p>BubbleBoy is seen as a simple robot. Thereby, its pattern finding is relatively simple as well. The main idea is to check each sensor&#8217;s array and see if there is a pattern within the residuals. Meaning, if looking for a sequential pattern, the array would be iterated through (starting at i=0, stopping after i=8), and i+1 would be subtracted from i. An average of the residual change would be calculated at the same time. The array would be iterated through again, this time to count how many items are within +- 10% of the residual average. If the count is above 7, then it is said that there is a sequential pattern in there.</p>
<p>The same process is done for a secondary pattern, and a &#8216;thirdary&#8217; pattern. Meaning, every 2nd number and 3rd number is checked to see if there is a pattern. It also goes through and checks with offsets, just incase the pattern is &#8220;even/odd/whatever&#8221;.</p>
<p>If there are no patterns, a random primary sensor is chosen for BubbleBoy to work with.</p>
<p>A problem exists in determining which pattern for which sensor to trust the most. A thirdary pattern for a photosensor is less dependable than a sequential pattern for a lid switch. This is handled in the next step.</p>
<li>
<h3>Determining the Sensor to Use</h3>
</li>
<p>The sensor with whatever pattern to follow is chosen through a Bayes Filter. This allows for a simple specification of confidence levels for a given sense resulting in a particular state through a table where all rows add up to 1.0. The sense columns are the sensor and pattern type. Meaning, there&#8217;s three sensors for every sensor, giving 9 senses in total. The states are confidence intervals. Anything >= 85 would be considered the most confident.</p>
<p><center><a href="http://spreadsheets.google.com/ccc?key=0Ato4VK268_GbdDJqZmZjVjNXUVFBSHI0aDdXLUlLYmc&#038;hl=en&#038;authkey=CPuAqsYG"><img src="http://farm5.static.flickr.com/4117/4785261276_23ed45c09b.jpg" width="500" height="119" alt="Bayes Filter AI Lookup Tables"></a></center></p>
<p>The numbers in bold are the ones that are more probable to be a result. A sensor in particular to look at is the Xbee for a thirdary pattern. The numbers are dispersed in such a way that it is almost a bimodal distribution. In order to understand why this is, imagine the scenario in real:</p>
<p>Xbee modems can communicate for up to a few meters. If BubbleBoy only receives a message every 3rd instance, it could either be a clever pattern, or it could be a miscommunication. </p>
<p>For this reason, the largest probability is given to the least confident state, and the second largest probability is given to the most confident state. It depends on the Bayes Filter and random roulette for what will actually be chosen.</p>
<p>This is just for determining what sensor is the most confident, that will provide the best result. This can mean that the chosen sensor will be followed, but it also may not. This will be explained in the next step.</p>
<li>
<h3>Calculating the Cost Adjustment</h3>
</li>
<p>The adjusted cost is determined by using the result from the previous step, and multiplying the probability by the inverse of whatever column it was situated in. In simpler terms, if the result was found in the best confidence interval state, then it would be multiplied by 5. If it was in ( 85, 70 ], it would be multiplied by 4&#8230;</p>
<p>This is then used as the sense for the next Bayes Filter. The state is how much of a cost to reduce the sense by.</p>
<p><center><a href=http://spreadsheets.google.com/ccc?key=0Ato4VK268_GbdEh6WXdqclducHFscktPcElkTllzTFE&#038;hl=en&#038;authkey=CK7RmesC"><img src="http://farm5.static.flickr.com/4117/4785261228_ce5b4c89b2.jpg" width="500" height="106" alt="Bayes Filter AI Lookup Tables"></a></center></p>
<p>Once the cost adjustment amount is determined, it is then subtracted from the cost of the particular sense&#8217;s cell. All of the senses are in a grid, with the most &#8220;primary&#8221; being the closest to BubbleBoy. An A* search is then used to choose the closest and least cost sensor. Once this is done, BubbleBoy can get on to entertaining its audience while waiting for food/water!</p>
<li>
<h3>Following the Expectation</h3>
</li>
<p>This is the main loop of the program. It&#8217;s where BubbleBoy is thinking in the present time about if it will be fed or not! <img src='http://robotgrrl.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The key idea here is that BubbleBoy is thinking in the now. Meaning, it tracks the patterns differently than it does when it is reflecting back on them (in a &#8220;past&#8221; thought).</p>
<p>Sensor data is retrieved and placed into an array of size 10. The data at i is checked wither it is within +- 10% of the average in the pattern. The threshold percentage amount differs for the type of pattern, where secondary would be +- 20%, and thirdary would be +- 30%. If the data fits in to the check, then a &#8220;yes&#8221; counter is incremented.</p>
<p>Once the &#8220;yes&#8221; counter is >= 6, the food level will begin to decrease by (i/2)^2. At the same time, BubbleBoy will begin to show signs that he is excited to be fed/watered soon, by spinning its hat and bobbing its head.</p>
<p>If the &#8220;no&#8221; counter is >= 6, then it means that the expectation isn&#8217;t really working in the present thought. A flag is set to redo the expectation once BubbleBoy receives food and water.</p>
<p>i is then either incremented or reset to 0, depending if it hit 9 or not. (That&#8217;s a sort of obvious step)</p>
<li>
<h3> Real-World Behaviors</h3>
</li>
<p>When the time elapsed from not receiving food exceeds 150% of that of the observed elapsed time, BubbleBoy goes in to a &#8220;wallow&#8221; mode. When BubbleBoy is wallowing, it spins its hat slowly, and bobs rarely.</p>
<p>If the time elapsed is ( 150%, 100% ], BubbleBoy is &#8220;angry&#8221; because it did not receive its food exactly before the time elapsed. The hat will not spin, and BubbleBoy will bob side to side, and once (quickly) in the opposite axis to simulate a sort of &#8220;twitching&#8221; to all this anger!</p>
<p>If the time elapsed is ( 100%, 85% ], BubbleBoy is eager to please. Hat tricks will be common, same as delightful bobbing. Depending on how much food/water BubbleBoy has, it may also hoola hoop!</p>
<li>
<h3>Last part of Following the Expectation</h3>
</li>
<p>Depending on when BubbleBoy was fed, if it was in ( whatever, 100 ], the expectation will be done. Essentially, BubbleBoy is a positive/eager thinker that believes it should always be fed before the elapsed observed time. What an attitude!</p>
<p>If it is in [ 85, 100 ), then the expectation will be kept.</p>
<p>To reformulate the expectation, the previous steps are executed on the collected data. Then, everything repeats!
</ol>
<p>What will be super interesting to see, in my opinion, will be when the discrepancies occur from past thought to present thought. It will be interesting to see which sensors fare better through that transformation.</p>
<p>It will also be interesting to see if this actually can work on an Arduino, and not in simulation. I created a simulated version of BubbleBoy in Processing earlier in the week.</p>
<p><center><a href="http://www.flickr.com/photos/robotgrrl/4760811533/" title="Screen shot 2010-07-04 at 2.56.16 PM by RobotGrrl, on Flickr"><img src="http://farm5.static.flickr.com/4142/4760811533_acb312c77e.jpg" width="500" height="313" alt="Screen shot 2010-07-04 at 2.56.16 PM"></a></center></p>
<p>I&#8217;ll do the initial coding and testing through this simulation, mainly because I already coded the Bayes Filter Algorithm (with random roulette) in Processing from 2009 Honors Summer Research. <img src='http://robotgrrl.com/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  Plus, in Processing it is very simple to communicate to an Arduino through Firmata. I can read in the data from BubbleBoy through there.</p>
<p>Hopefully next Friday I will have devised a test sequence to test the soon-to-be-coded AI on. This will of course be Open Source, under the <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Attribution-NonCommercial-ShareAlike 3.0 Unported License (BY-NC-SA)</a>.</p>
<p>Let me know what you think of this AI in the comment section below! (And yes I know it is very linear, but BubbleBoy doesn&#8217;t have enough DOF in the real world to spend the effort making the AI more nonlinear, since the observed result will essentially be the same!)</p>
<div class="tweetthis" style="text-align:left;"><p>  <a class="tt" href="http://twitter.com/intent/tweet?text=Blog+post%21+FNR+%E2%80%93+BubbleBoy+Behaviour+AI+http%3A%2F%2Fis.gd%2FthALUB+%5E_%5E+%40RobotGrrl" title=" "> </a></p></div>]]></content:encoded>
			<wfw:commentRss>http://robotgrrl.com/blog/2010/07/12/fnr-bubbleboy-behaviour-ai/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Friday Night Robotics &#8211; Portable&#8230; Fish.. Tank&#8230; Robot&#8230; ???</title>
		<link>http://robotgrrl.com/blog/2009/11/15/friday-night-robotics-portable-fish-tank-robot/</link>
		<comments>http://robotgrrl.com/blog/2009/11/15/friday-night-robotics-portable-fish-tank-robot/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 04:44:07 +0000</pubDate>
		<dc:creator>Erin, the RobotGrrl</dc:creator>
				<category><![CDATA[Art]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Robot]]></category>
		<category><![CDATA[blinkity blink]]></category>
		<category><![CDATA[edge]]></category>
		<category><![CDATA[fast]]></category>
		<category><![CDATA[food]]></category>
		<category><![CDATA[frisbee]]></category>
		<category><![CDATA[goal]]></category>
		<category><![CDATA[knee]]></category>
		<category><![CDATA[LED fish]]></category>
		<category><![CDATA[Lego NXT]]></category>
		<category><![CDATA[MANOI]]></category>
		<category><![CDATA[portable LED fish tank]]></category>
		<category><![CDATA[table]]></category>
		<category><![CDATA[tasks]]></category>
		<category><![CDATA[ultrasonic sensor]]></category>
		<category><![CDATA[walking]]></category>
		<category><![CDATA[water level]]></category>
		<category><![CDATA[zippy]]></category>

		<guid isPermaLink="false">http://robotgrrl.com/blog/?p=1456</guid>
		<description><![CDATA[This FNR I continued work on the blinky blink NXT LED fish! I added wheels to it, sensors, and the NXT brick. Basically, this now makes it a &#8216;portable fish tank robot&#8217;! The idea stemmed from the want to make a robot that can drive around on a table but not fall off. In particular, [...]]]></description>
			<content:encoded><![CDATA[<p>This FNR I continued work on the <a href="http://robotgrrl.com/blog/2009/10/11/friday-night-robotics-musicbox/">blinky blink NXT LED fish</a>! I added wheels to it, sensors, and the NXT brick. Basically, this now makes it a &#8216;portable fish tank robot&#8217;!</p>
<p><center><a href="http://www.flickr.com/photos/robotgrrl/4107550649/" title="Portable Fish Tank Robot by RobotGrrl, on Flickr"><img src="http://farm3.static.flickr.com/2624/4107550649_14ebee3b7f.jpg" width="500" height="375" alt="Portable Fish Tank Robot" /></a></center></p>
<p>The idea stemmed from the want to make a robot that can drive around on a table but not fall off. In particular, the table would be the table for the Autonomous Robotics Club at the admissions open house activity fair ^_^</p>
<p>Ultrasonic sensors are usually the best for this, since it depends on distance. Though, one could easily make a mechanism to trigger a touch sensor&#8230; or one could use a light sensor, but there is more possibility for error with a light sensor.</p>
<p><center><a href="http://www.flickr.com/photos/robotgrrl/4107553341/" title="Portable Fish Tank Robot by RobotGrrl, on Flickr"><img src="http://farm3.static.flickr.com/2561/4107553341_c18f63005d.jpg" width="500" height="375" alt="Portable Fish Tank Robot" /></a></center></p>
<p>The design right now has the ultrasonic sensor sticking out more that that, since it wasn&#8217;t far enough out&#8230; this means that sometimes the NXT couldn&#8217;t tell the motors to stop in time, and it would fall off the table.</p>
<p>The motors are geared to be fast, since I want it to be fast like a fish!</p>
<p><center><a href="http://www.flickr.com/photos/robotgrrl/4107553341/" title="Portable Fish Tank Robot by RobotGrrl, on Flickr"><img src="http://farm3.static.flickr.com/2561/4107553341_c18f63005d.jpg" width="500" height="375" alt="Portable Fish Tank Robot" /></a></center></p>
<p>The screen displays the &#8216;water level&#8217; for the LED fish. In the picture, it used a method of drawing the level line by line, but I later refined it so that it uses a rectangle, and increments 3 pixels more so that it&#8217;s noticable when one presses the button.</p>
<p><center><a href="http://www.flickr.com/photos/robotgrrl/4107551205/" title="Portable Fish Tank Robot by RobotGrrl, on Flickr"><img src="http://farm3.static.flickr.com/2802/4107551205_ddec828d92.jpg" width="500" height="375" alt="Portable Fish Tank Robot" /></a></center></p>
<p>The robot can zip around pretty quickly, which produces some interesting artsy stuff:</p>
<p><center><a href="http://www.flickr.com/photos/robotgrrl/4107551571/" title="Portable Fish Tank Robot by RobotGrrl, on Flickr"><img src="http://farm3.static.flickr.com/2667/4107551571_8c893e8cb9.jpg" width="500" height="375" alt="Portable Fish Tank Robot" /></a></center></p>
<p>The LED fish are on the back of the robot, and the speed of their blinks is determined by how much &#8216;food&#8217; they have. The more food, the more fast it is, the less food, the slower it is. When you press the button to feed the fish, it makes a bloop sound <img src='http://robotgrrl.com/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p><center><a href="http://www.flickr.com/photos/robotgrrl/4107552331/" title="Portable Fish Tank Robot by RobotGrrl, on Flickr"><img src="http://farm3.static.flickr.com/2765/4107552331_0690066117.jpg" width="500" height="375" alt="Portable Fish Tank Robot" /></a></center></p>
<p>The LED fish is what makes this project. No one can resist the power of super-cute LED fish. They&#8217;re just so happy! <img src='http://robotgrrl.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><center><object width="500" height="405"><param name="movie" value="http://www.youtube.com/v/P-e4DG4yOfo&#038;hl=en_US&#038;fs=1&#038;color1=0x402061&#038;color2=0x9461ca&#038;border=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/P-e4DG4yOfo&#038;hl=en_US&#038;fs=1&#038;color1=0x402061&#038;color2=0x9461ca&#038;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" height="405"></embed></object></center></p>
<p>Here&#8217;s a video of the robot in action. It&#8217;s running the old program, but it&#8217;s all pretty much the same thing <img src='http://robotgrrl.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><center><object width="500" height="405"><param name="movie" value="http://www.youtube.com/v/SNCeXYk-N3c&#038;hl=en_US&#038;fs=1&#038;color1=0x006699&#038;color2=0x54abd6&#038;border=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/SNCeXYk-N3c&#038;hl=en_US&#038;fs=1&#038;color1=0x006699&#038;color2=0x54abd6&#038;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" height="405"></embed></object></center></p>
<p>The code for this is pretty cool. The NXT can handle up to 10 different simultaneous tasks! I use this to check the sensors for food and water, drive the robot, and blink the LED fish at the same time. Now, I&#8217;m still experimenting with the code, which is why there are bugs, random functions, and no comments in it.</p>
<div class="codesnip-container" >
<div class="c codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1"><span class="co2">#pragma config(Sensor, S1, &nbsp; &nbsp; HTPB, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sensorI2CCustom9V)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#pragma config(Sensor, S2, &nbsp; &nbsp; sonicSensor, &nbsp; &nbsp; &nbsp; &nbsp; sensorSONAR)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#pragma config(Sensor, S3, &nbsp; &nbsp; touchSensor1, &nbsp; &nbsp; &nbsp; &nbsp; sensorTouch)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#pragma config(Sensor, S4, &nbsp; &nbsp; touchSensor2, &nbsp; &nbsp; &nbsp; &nbsp; sensorTouch)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//*!!Code automatically generated by &#8216;ROBOTC&#8217; configuration wizard &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; !!*//</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/*</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; Crazy LEDs!</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; Erin K</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; Oct. 9th, 2009</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">*/</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#include &quot;drivers/common.h&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#include &quot;drivers/HTPB-driver.h&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">byte theLEDs<span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="br0">&#123;</span> 0&#215;01<span class="sy0">,</span> 0&#215;02<span class="sy0">,</span> 0&#215;04<span class="sy0">,</span> 0&#215;08<span class="sy0">,</span> 0&#215;10<span class="sy0">,</span> 0&#215;20 <span class="br0">&#125;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">int</span> theTime <span class="sy0">=</span> <span class="nu0">50</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">int</span> theWaterLevel <span class="sy0">=</span> <span class="nu0">32</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">int</span> foodButton <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">int</span> waterButton <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">int</span> averageTouch1Level <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">int</span> averageTouch2Level <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">void</span> fishTank<span class="br0">&#40;</span><span class="kw4">int</span> theTime<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">void</span> drawWaterLevel<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">void</span> doSomething<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">task blinkFish<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">while</span><span class="br0">&#40;</span><span class="kw2">true</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; fishTank<span class="br0">&#40;</span>theTime<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">task checkFoodSensor<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">while</span><span class="br0">&#40;</span><span class="kw2">true</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>SensorValue<span class="br0">&#40;</span>touchSensor1<span class="br0">&#41;</span> <span class="sy0">==</span> 1<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; theTime<span class="sy0">-=</span><span class="nu0">10</span><span class="sy0">;</span> <span class="co1">// Make fish faster</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; PlaySoundFile<span class="br0">&#40;</span><span class="st0">&quot;bloop4.rso&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; wait1Msec<span class="br0">&#40;</span>1000<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">task checkWaterSensor<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">while</span><span class="br0">&#40;</span><span class="kw2">true</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>SensorValue<span class="br0">&#40;</span>touchSensor2<span class="br0">&#41;</span> <span class="sy0">==</span> 1<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; theWaterLevel<span class="sy0">+=</span><span class="nu0">3</span><span class="sy0">;</span> <span class="co1">// Add water</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; PlaySoundFile<span class="br0">&#40;</span><span class="st0">&quot;waterSPLASH.rso&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; wait1Msec<span class="br0">&#40;</span>1000<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">task drainWaterAndFood<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">while</span><span class="br0">&#40;</span><span class="kw2">true</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; wait1Msec<span class="br0">&#40;</span>5000<span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">// Wait 10 seconds</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; theTime <span class="sy0">+=</span> <span class="nu0">10</span><span class="sy0">;</span> <span class="co1">// Make fish slower</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; theWaterLevel <span class="sy0">-=</span> <span class="nu0">2</span><span class="sy0">;</span> <span class="co1">// Drain water</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">void</span> drawWaterLevel<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; eraseDisplay<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; nxtFillRect<span class="br0">&#40;</span>0<span class="sy0">,</span> theWaterLevel<span class="sy0">,</span> 99<span class="sy0">,</span> 0<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">task main<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="co1">// Setup all the digital IO ports as outputs (0xFF)</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span>HTPBsetupIO<span class="br0">&#40;</span>HTPB<span class="sy0">,</span> 0xFF<span class="br0">&#41;</span><span class="br0">&#41;</span> StopAllTasks<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; wait1Msec<span class="br0">&#40;</span>200<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; eraseDisplay<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; drawWaterLevel<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw4">float</span> averageSonicLevel <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">for</span><span class="br0">&#40;</span><span class="kw4">int</span> i<span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span> i<span class="sy0">&lt;</span><span class="nu0">5</span><span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;averageSonicLevel <span class="sy0">+=</span> SensorValue<span class="br0">&#40;</span>sonicSensor<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;wait1Msec<span class="br0">&#40;</span>500<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; averageSonicLevel <span class="sy0">/=</span> <span class="nu0">5</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; StartTask<span class="br0">&#40;</span>blinkFish<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; StartTask<span class="br0">&#40;</span>checkFoodSensor<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; StartTask<span class="br0">&#40;</span>checkWaterSensor<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; StartTask<span class="br0">&#40;</span>drainWaterAndFood<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw4">float</span> sonicThresh <span class="sy0">=</span> <span class="nu16">10.0</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; bool driveMotors <span class="sy0">=</span> <span class="kw2">false</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">while</span><span class="br0">&#40;</span><span class="kw2">true</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="br0">&#40;</span>SensorValue<span class="br0">&#40;</span>sonicSensor<span class="br0">&#41;</span> <span class="sy0">&gt;</span> <span class="br0">&#40;</span>averageSonicLevel<span class="sy0">-</span>sonicThresh<span class="br0">&#41;</span> <span class="sy0">||</span> SensorValue<span class="br0">&#40;</span>sonicSensor<span class="br0">&#41;</span> <span class="sy0">&lt;</span> <span class="br0">&#40;</span>averageSonicLevel<span class="sy0">+</span>sonicThresh<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; doSomething<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;motor<span class="br0">&#91;</span>motorB<span class="br0">&#93;</span> <span class="sy0">=</span> <span class="sy0">-</span><span class="nu0">40</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;motor<span class="br0">&#91;</span>motorC<span class="br0">&#93;</span> <span class="sy0">=</span> <span class="sy0">-</span><span class="nu0">40</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;wait1Msec<span class="br0">&#40;</span>1000<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; drawWaterLevel<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; alive<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">int</span> doSomethingIterations <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">void</span> doSomething<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; doSomethingIterations<span class="sy0">++;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; motor<span class="br0">&#91;</span>motorB<span class="br0">&#93;</span> <span class="sy0">=</span> <span class="nu0">40</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; motor<span class="br0">&#91;</span>motorC<span class="br0">&#93;</span> <span class="sy0">=</span> <span class="nu0">40</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; wait1Msec<span class="br0">&#40;</span>100<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">void</span> fishTank<span class="br0">&#40;</span><span class="kw4">int</span> theTime<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">// LEDs going up</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span><span class="kw4">int</span> i<span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span> i<span class="sy0">&lt;</span><span class="nu0">6</span><span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span>HTPBwriteIO<span class="br0">&#40;</span>HTPB<span class="sy0">,</span> theLEDs<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> nxtDisplayTextLine<span class="br0">&#40;</span><span class="nu0">5</span><span class="sy0">,</span> <span class="st0">&quot;ERR WRITE&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; wait1Msec<span class="br0">&#40;</span>theTime<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">// LEDs going down</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span><span class="kw4">int</span> i<span class="sy0">=</span><span class="nu0">5</span><span class="sy0">;</span> i<span class="sy0">&gt;=</span><span class="nu0">0</span><span class="sy0">;</span> i<span class="sy0">&#8211;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span>HTPBwriteIO<span class="br0">&#40;</span>HTPB<span class="sy0">,</span> theLEDs<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> nxtDisplayTextLine<span class="br0">&#40;</span><span class="nu0">5</span><span class="sy0">,</span> <span class="st0">&quot;ERR WRITE&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; wait1Msec<span class="br0">&#40;</span>theTime<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
</div>
<p>Eventually, I want to have the robot able to drive around in a square (a big square) autonomously. The square is around one of the dorm buildings, so there&#8217;s brick walls, stairs, fences, and people to avoid. I think it would be cool because the square is just so confusing at first. You can walk around it 5 times, and still think that you have gone somewhere. </p>
<p>Since a lot of smart people do this, if a robot does it we could imply that it is smart! Bahaha! Logic prevails!</p>
<p>I mentioned that this was originally intended for the activities fair. I also had MANOI there, doing its handshake routine! It went really good. We had a good 15 people show interest, which is surprisingly more than the orchestra, and the tables adjacent to ARC.</p>
<p>But, the table got hit by a frisbee. (Yes, my robot got hit by a frisbee) So, thanks to the jerks at the frisbee club, they messed up MANOI&#8217;s other knee (the good one&#8211; or what was the good one). So now MANOI has two bad knees, and can&#8217;t walk. The goal that I just obtained got wrecked. By a frisbee. Frisbee sucks, really bad.</p>
<p>(so, don&#8217;t join frisbee club, they&#8217;re morons)</p>
<div class="tweetthis" style="text-align:left;"><p>  <a class="tt" href="http://twitter.com/intent/tweet?text=Blog+post%21+Friday+Night+Robotics+%E2%80%93+Portable%E2%80%A6+Fish..+Tank%E2%80%A6+Robot%E2%80%A6+%3F%3F%3F+http%3A%2F%2Fis.gd%2F3ufMcX+%5E_%5E+%40RobotGrrl" title=" "> </a></p></div>]]></content:encoded>
			<wfw:commentRss>http://robotgrrl.com/blog/2009/11/15/friday-night-robotics-portable-fish-tank-robot/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Japan&#8217;s Robot of the Year</title>
		<link>http://robotgrrl.com/blog/2007/12/27/japans-robot-of-the-year/</link>
		<comments>http://robotgrrl.com/blog/2007/12/27/japans-robot-of-the-year/#comments</comments>
		<pubDate>Thu, 27 Dec 2007 21:00:49 +0000</pubDate>
		<dc:creator>Erin, the RobotGrrl</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Robot News]]></category>
		<category><![CDATA[Tech News]]></category>
		<category><![CDATA[autonomous]]></category>
		<category><![CDATA[food]]></category>
		<category><![CDATA[greaseless]]></category>
		<category><![CDATA[pharmaceutical]]></category>
		<category><![CDATA[Robot]]></category>

		<guid isPermaLink="false">http://robotgrrl.com/blog/2007/12/27/japans-robot-of-the-year/</guid>
		<description><![CDATA[Â  Japan&#8217;s Ministry of Economy, Trade, and Industry (METI) 2007 Robot of tthe work-horse, industrial robot from Fanuc Ltd. called M-430iA. The multi-axis, greaseless (read: sanitary) robot is part of a food and pharmaceutical handling system. Unlike your unemployed uncle with his GED, this bot can work non-stop, 24 hours a day, accurately picking up [...]]]></description>
			<content:encoded><![CDATA[<p align="center">Â <img height="210" style="margin: 5px" width="440" alt="" src="http://robotgrrl.com/blog/wp-content/uploads/2007/12/robotaward-06.jpg" /></p>
<blockquote><p>Japan&#8217;s Ministry of Economy, Trade, and Industry (METI) 2007 Robot of tthe work-horse, industrial robot from Fanuc Ltd. called M-430iA. The multi-axis, greaseless (read: sanitary) robot is part of a food and pharmaceutical handling system. Unlike your unemployed uncle with his GED, this bot can work non-stop, 24 hours a day, accurately picking up 120 items per minute as they roll down a conveyor belt.</p></blockquote>
<p>That&#8217;s cool, they have an annual ROBOT AWARD! I would get a kick out of it if it was named Yeti though. All jokes aside, a greaseless food handling system sounds great. Yet, with these robots comes unemployment issues. As the article mentions, &quot;Unlike your unemployed uncle with his GED, this bot can work non-stop, 24 hours a day, accurately picking up 120 items per minute as they roll down a conveyor belt.&quot; that is great, but there should be a limit. Unemployment sucks, and many small towns depend on their local manufacturing plants to keep a steady payroll. I&#8217;m all for innovation, within limits.</p>
<p><a href="http://news.google.com/news/url?sa=T&amp;ct=ca/7-0&amp;fd=A&amp;url=http://www.engadget.com/2007/12/20/japans-2007-robot-of-the-year-goes-to/&amp;cid=0&amp;ei=tUpqR5bsEoec-wGLlJmdCw">Link</a>.</p></p>
<div class="tweetthis" style="text-align:left;"><p>  <a class="tt" href="http://twitter.com/intent/tweet?text=Blog+post%21+Japan%E2%80%99s+Robot+of+the+Year+http%3A%2F%2Fis.gd%2F3FdkpH+%5E_%5E+%40RobotGrrl" title=" "> </a></p></div>]]></content:encoded>
			<wfw:commentRss>http://robotgrrl.com/blog/2007/12/27/japans-robot-of-the-year/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

