<?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>OzBotz</title>
	<atom:link href="http://www.ozbotz.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ozbotz.org/</link>
	<description>Tips, Tricks, and Tutorials for Robotics Enthusiasts</description>
	<lastBuildDate>Fri, 07 Nov 2014 18:12:00 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.1.10</generator>
	<item>
		<title>Files for RED, the balancing robot</title>
		<link>http://www.ozbotz.org/files-red-balancing-robot/</link>
					<comments>http://www.ozbotz.org/files-red-balancing-robot/#comments</comments>
		
		<dc:creator><![CDATA[Osman Eralp]]></dc:creator>
		<pubDate>Wed, 29 Oct 2014 23:13:35 +0000</pubDate>
				<category><![CDATA[Robots]]></category>
		<category><![CDATA[balancing]]></category>
		<category><![CDATA[robot]]></category>
		<guid isPermaLink="false">http://www.ozbotz.org/?p=966</guid>

					<description><![CDATA[<p><img class="excerptimg" src="http://www.ozbotz.org/wp-content/uploads/2014/10/snap2-thumb-300x275.jpg" alt="" width="100" height="100/" />Looking for design files for RED? You can find links in this post. </p>
<p><a href="http://www.ozbotz.org/files-red-balancing-robot/"></p>
<div id="oz-read-more-button">Read More...</div>
<p></a></p>
<p>The post <a rel="nofollow" href="http://www.ozbotz.org/files-red-balancing-robot/">Files for RED, the balancing robot</a> appeared first on <a rel="nofollow" href="http://www.ozbotz.org">OzBotz</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Nov 7, 2014 Update &#8211; I made a public repository in GitHub to hold all of the files for RED. You can find it here: <a href="https://github.com/osmaneralp/RED/">https://github.com/osmaneralp/RED/</a>.</p>
<h3>CAD Files</h3>
<p>RED was designed in SolidWorks. I know a full license of SolidWorks is expensive, but it is the most widely used tool for designing robots. If you are a student, you can get an educational version of SolidWorks for about $200, which is very reasonable.</p>
<p>This version has some a few problems:<br />
&#8211; The belts don&#8217;t turn because the pulleys are fully defined.<br />
&#8211; The design as a whole is under defined.</p>
<p>Despite these problems, you can still use the drawing to see what parts are needed and how the parts fit together. I&#8217;ll fix the problems when I get time.</p>
<p>In case you don&#8217;t have aceess to SolidWorks, here are some images of the important parts:</p>
<p><a href="http://www.ozbotz.org/wp-content/uploads/2014/10/pulley-lower-1.png"><img decoding="async" class="alignnone size-medium wp-image-989" src="http://www.ozbotz.org/wp-content/uploads/2014/10/pulley-lower-1-300x209.png" alt="pulley lower 1" width="300" height="209" srcset="http://www.ozbotz.org/wp-content/uploads/2014/10/pulley-lower-1-300x209.png 300w, http://www.ozbotz.org/wp-content/uploads/2014/10/pulley-lower-1-1024x715.png 1024w, http://www.ozbotz.org/wp-content/uploads/2014/10/pulley-lower-1-150x104.png 150w, http://www.ozbotz.org/wp-content/uploads/2014/10/pulley-lower-1-400x279.png 400w, http://www.ozbotz.org/wp-content/uploads/2014/10/pulley-lower-1.png 1250w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p><a href="http://www.ozbotz.org/wp-content/uploads/2014/10/pulley-lower-2.png"><img decoding="async" loading="lazy" class="alignnone size-medium wp-image-990" src="http://www.ozbotz.org/wp-content/uploads/2014/10/pulley-lower-2-300x226.png" alt="pulley lower 2" width="300" height="226" srcset="http://www.ozbotz.org/wp-content/uploads/2014/10/pulley-lower-2-300x226.png 300w, http://www.ozbotz.org/wp-content/uploads/2014/10/pulley-lower-2-1024x771.png 1024w, http://www.ozbotz.org/wp-content/uploads/2014/10/pulley-lower-2-150x113.png 150w, http://www.ozbotz.org/wp-content/uploads/2014/10/pulley-lower-2-400x301.png 400w, http://www.ozbotz.org/wp-content/uploads/2014/10/pulley-lower-2.png 1148w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p><a href="http://www.ozbotz.org/wp-content/uploads/2014/10/pulley-upper-1.png"><img decoding="async" loading="lazy" class="alignnone size-medium wp-image-991" src="http://www.ozbotz.org/wp-content/uploads/2014/10/pulley-upper-1-300x163.png" alt="pulley upper 1" width="300" height="163" srcset="http://www.ozbotz.org/wp-content/uploads/2014/10/pulley-upper-1-300x163.png 300w, http://www.ozbotz.org/wp-content/uploads/2014/10/pulley-upper-1-1024x556.png 1024w, http://www.ozbotz.org/wp-content/uploads/2014/10/pulley-upper-1-150x81.png 150w, http://www.ozbotz.org/wp-content/uploads/2014/10/pulley-upper-1-400x217.png 400w, http://www.ozbotz.org/wp-content/uploads/2014/10/pulley-upper-1.png 1411w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p><a href="http://www.ozbotz.org/wp-content/uploads/2014/10/pulley-upper-2.png"><img decoding="async" loading="lazy" class="alignnone size-medium wp-image-992" src="http://www.ozbotz.org/wp-content/uploads/2014/10/pulley-upper-2-300x167.png" alt="pulley upper 2" width="300" height="167" srcset="http://www.ozbotz.org/wp-content/uploads/2014/10/pulley-upper-2-300x167.png 300w, http://www.ozbotz.org/wp-content/uploads/2014/10/pulley-upper-2-1024x573.png 1024w, http://www.ozbotz.org/wp-content/uploads/2014/10/pulley-upper-2-150x83.png 150w, http://www.ozbotz.org/wp-content/uploads/2014/10/pulley-upper-2-400x223.png 400w, http://www.ozbotz.org/wp-content/uploads/2014/10/pulley-upper-2.png 1427w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>A SolidWorks pack and go file is available in my GitHub repository: <a href="https://github.com/osmaneralp/RED">https://github.com/osmaneralp/RED</a>.</p>
<h3>Arduino Files</h3>
<p>The code for RED is contained in two sketches: robot.ino and motors.ino. Most of robot.ino is related to initializing the MPU-6050. I should really move it to a separate file. Most of the motors.ino file is for reading the wheel encoders. I am using an interrupt on each edge of both phases of the quadutrature signals for each wheel. That&#8217;s a lot of interrupts. The Arduino Due can keep up. I don&#8217;t know if a slower Arduino, such as the Uno, can keep up with so many interrupts. This is one reason I chose the Arduino Due.</p>
<p>In addition to the two sketches, I used the following libraries: I2Cdev, MPU6050, PID_v1, and PS2X_lib. The PS2X_lib did not work with the Arduino Due, so I made some modifications to make it work. One thing I discovered is that a lot of libraries are not yet ported to the Due. If you choose a Due, be prepared to make changes to code that works for all the AVR based Arduinos. Thus, I would not recommend the Due for a beginner.</p>
<p>The Arduino files are available in my GitHub repository: <a href="https://github.com/osmaneralp/RED">https://github.com/osmaneralp/RED</a>.</p>
<h3>Parts List</h3>
<p>Item Vendor Part Number Qty Unit Extended<br />
Mechanics<br />
1 6&#8243; Heavy Duty Wheels ServoCity 595610 2 9.99 $ 19.98<br />
2 24&#8243; Aluminum Channel ServoCity 585466 1 15.99 $ 15.99<br />
3 12&#8243; Aluminum Channel ServoCity 585454 2 9.99 $ 19.98<br />
4 9&#8243; Aluminum Channel ServoCity 585450 2 7.99 $ 15.98<br />
5 6&#8243; Aluminum Channel ServoCity 585466 2 5.99 $ 11.98<br />
6 Pinion Pulley 16T 0.25&#8243; ServoCity 615378 4 8.99 $ 35.96<br />
7 Shaft Coupler 0.25&#8243; to 6mmServoCity 625106 2 4.99 $ 9.98<br />
8 Bearing 0.25&#8243; ServoCity 635042 6 0.995 $ 5.97<br />
9 Motor 37D 30:1 Pololu 1443 2 39.95 $ 79.90<br />
10 Motor Mount ServoCity 555128 2 4.99 $ 9.98<br />
11 Flat Single Channel BrackeServoCity 585468 2 1.29 $ 2.58<br />
12 Hub Spacer 0.5&#8243; ServoCity 545384 2 1.59 $ 3.18<br />
13 Shaft Clamp Collar 0.25&#8243; ServoCity 625102 4 2.495 $ 9.98<br />
14 D-Shaft 0.25&#8243; x 1.75&#8243; ServoCity 634066 2 1.39 $ 2.78<br />
15 Shaft Spacer ServoCity 633105 4 0.14 $ 0.56<br />
16 Aluminum Clamp Colar 0.25&#8243;ServoCity 6157K12 2 4.99 $ 9.98<br />
17 D-Shaft 0.25&#8243; x 2.25&#8243; ServoCity 634070 2 1.59 $ 3.18<br />
18 Hub Adapter 1.5&#8243; x 0.770&#8243; ServoCity 545388 2 4.99 $ 9.98<br />
19 Clamping Hub 0.25&#8243; x 0.770ServoCity 545588 2 7.99 $ 15.98<br />
20 Socket Head Screw #6 x 0.2ServoCity 632106 1 1.69 $ 1.69<br />
21 Socket Head Screw #6 x 0.3ServoCity 632110 1 1.89 $ 1.89<br />
22 Timing Belt XL 17&#8243; ServoCity B375-170XL 2 4.95 $ 9.90<br />
Electronics<br />
23 Arduino Due SparkFun 11589 1 49.95 $ 49.95<br />
24 Dual MC33926 Motor Driver Pololu 1213 1 29.95 $ 29.95<br />
25 MPU-6050 Breakout SparkFun 11028 1 39.95 $ 39.95<br />
&#8212;&#8212;-<br />
$417.23</p>
<p>Other Misc Parts<br />
#6 Nuts<br />
Hookup wire<br />
Battery<br />
PS2 Remote control<br />
Acrylic</p>
<h3>References</h3>
<p>Balancing robots have been around for many years. The first balancing robot I encountered, nBot, was created by David Anderson. His robot remains one of the best even after many years. He describes his robot on his website: <a href="http://www.geology.smu.edu/~dpa-www/robo/nbot/" target="_blank">http://www.geology.smu.edu/~dpa-www/robo/nbot/</a>.</p>
<p>Back in 2010, Kas started a thread on the Arduino blog called <a href="http://blog.arduino.cc/2010/09/20/balancing-robot-for-dummies/" target="_blank">Balancing robot for dummies</a>. This was around the same time as I was building my first balancing robot, <a href="http://www.ozbotz.org/robot-resumes/blinky/" target="_blank">Blinky</a>. I didn&#8217;t use an Arduino in Blinky, but I learned a lot from that thread. It is still an excellent source of information for building a balancing robot.</p>
<p>The only way that I was able to create the code for RED in only a few weeks is because of the work of others, particularly those who created open source Arduino libraries, such as Jeff Rowberg&#8217;s <a href="http://www.i2cdevlib.com/devices/mpu6050#source" target="_blank">I2Cdevlib</a>, Brett Beauregard&#8217;s <a href="http://playground.arduino.cc/Code/PIDLibrary" target="_blank">PID library</a>, and Bill Porter&#8217;s <a href="http://www.billporter.info/2010/06/05/playstation-2-controller-arduino-library-v1-0/" target="_blank">PlayStation 2 controller library</a>. Many thanks!</p>
<p>The post <a rel="nofollow" href="http://www.ozbotz.org/files-red-balancing-robot/">Files for RED, the balancing robot</a> appeared first on <a rel="nofollow" href="http://www.ozbotz.org">OzBotz</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.ozbotz.org/files-red-balancing-robot/feed/</wfw:commentRss>
			<slash:comments>24</slash:comments>
		
		
			</item>
		<item>
		<title>My Video for the ServoCity Balancing Robot Contest</title>
		<link>http://www.ozbotz.org/video-servocity-balancing-robot-contest/</link>
					<comments>http://www.ozbotz.org/video-servocity-balancing-robot-contest/#respond</comments>
		
		<dc:creator><![CDATA[Osman Eralp]]></dc:creator>
		<pubDate>Sun, 26 Oct 2014 23:02:09 +0000</pubDate>
				<category><![CDATA[Robots]]></category>
		<category><![CDATA[balancing]]></category>
		<category><![CDATA[robot]]></category>
		<guid isPermaLink="false">http://www.ozbotz.org/?p=960</guid>

					<description><![CDATA[<p><img class="excerptimg" src="http://www.ozbotz.org/wp-content/uploads/2014/10/thumbnail-300x168.jpg" alt="" width="100"/>My video for the ServoCity balancing robot contest is done! </p>
<p><a href="http://www.ozbotz.org/video-servocity-balancing-robot-contest/"></p>
<div id="oz-read-more-button">Read More...</div>
<p></a></p>
<p>The post <a rel="nofollow" href="http://www.ozbotz.org/video-servocity-balancing-robot-contest/">My Video for the ServoCity Balancing Robot Contest</a> appeared first on <a rel="nofollow" href="http://www.ozbotz.org">OzBotz</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Today, Oct 26, 2014, I uploaded to YouTube my video for the <a href="http://www.servocity.com/html/actobotics_video_contest.html" target="_blank">My video for the ServoCity balancing robot contest is done!</a>. I actually completed the video a day before the deadline! You can watch the video here:</p>
<p><iframe loading="lazy" width="640" height="360" src="https://www.youtube.com/embed/6oYTeo6ZIak?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p>The results of the contest will be announced on Friday, Oct 31, 2014.</p>
<p>The post <a rel="nofollow" href="http://www.ozbotz.org/video-servocity-balancing-robot-contest/">My Video for the ServoCity Balancing Robot Contest</a> appeared first on <a rel="nofollow" href="http://www.ozbotz.org">OzBotz</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.ozbotz.org/video-servocity-balancing-robot-contest/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Build Report: Red, A Robot for the ServoCity Balancing Robot Contest</title>
		<link>http://www.ozbotz.org/build-report-red/</link>
					<comments>http://www.ozbotz.org/build-report-red/#comments</comments>
		
		<dc:creator><![CDATA[Osman Eralp]]></dc:creator>
		<pubDate>Sun, 26 Oct 2014 22:50:38 +0000</pubDate>
				<category><![CDATA[Robots]]></category>
		<category><![CDATA[balancing]]></category>
		<category><![CDATA[robot]]></category>
		<guid isPermaLink="false">http://www.ozbotz.org/?p=925</guid>

					<description><![CDATA[<p><img class="excerptimg" src="http://www.ozbotz.org/wp-content/uploads/2014/10/robot-with-acrylic-150x150.png" alt="" width="100" height="100/" />ServoCity is sponsoring a balancing robot contest. This post contains updates on the robot that I'm building for the contest. </p>
<p><a href="http://www.ozbotz.org/build-report-red/"></p>
<div id="oz-read-more-button">Read More...</div>
<p></a></p>
<p>The post <a rel="nofollow" href="http://www.ozbotz.org/build-report-red/">Build Report: Red, A Robot for the ServoCity Balancing Robot Contest</a> appeared first on <a rel="nofollow" href="http://www.ozbotz.org">OzBotz</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>This page contains the current status of the robot I&#8217;m building for the <a href="http://www.servocity.com/html/actobotics_video_contest.html" target="_blank">ServoCity balancing robot contest</a>. My robot&#8217;s name is Red. He was named on September 25, 2014. The most recent entries are at the botttom.</p>
<hr />
<p><strong>September 13, 2014</strong> &#8211; Today, I started working on the design for my entry into the ServoCity balancing robot contest. I&#8217;ve built balancing robots before, and the Actobotics kit is the best available for building robots, in my opinion, so how difficult can this be? <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> The contest requires that everyone use a 24 inch piece of tubing or channel. I plan to use this channel as the vertical backbone of the robot. A smaller horizontal channel will attach at the bottom of the backbone. On this channel will mount the wheels. The primary mechanical challenge is finding a way to mount the wheels to the channel. I can think of four methods:</p>
<ol>
<li><strong>Mount the motor inside the channel</strong>, as shown in the following drawing:<br class="none" /><a href="http://www.ozbotz.org/wp-content/uploads/2014/10/motor-inside-channel.png"><img decoding="async" loading="lazy" class="alignnone size-medium wp-image-903" src="http://www.ozbotz.org/wp-content/uploads/2014/10/motor-inside-channel-300x221.png" alt="motor inside channel" width="300" height="221" srcset="http://www.ozbotz.org/wp-content/uploads/2014/10/motor-inside-channel-300x221.png 300w, http://www.ozbotz.org/wp-content/uploads/2014/10/motor-inside-channel-150x110.png 150w, http://www.ozbotz.org/wp-content/uploads/2014/10/motor-inside-channel-400x294.png 400w, http://www.ozbotz.org/wp-content/uploads/2014/10/motor-inside-channel.png 825w" sizes="(max-width: 300px) 100vw, 300px" /><br class="none" /></a>This seems like the best method because the motor is protected. ServoCity sells a small planetary gearhead motor that would fit in the channel. However, there is currently no way to attach the motor to the inside of a channel, and the motor does not have an encoder. For these two reasons, I will need to try another method.</li>
<li><strong>Mount the motor on top of the channel</strong>, as shown in the following image on the ServoCity website:<br class="none" /><a href="http://www.ozbotz.org/wp-content/uploads/2014/10/Clamping_Swivel_Motor_Mount_on_channel_meshed.jpg"><img decoding="async" loading="lazy" class="alignnone size-full wp-image-904" src="http://www.ozbotz.org/wp-content/uploads/2014/10/Clamping_Swivel_Motor_Mount_on_channel_meshed.jpg" alt="Clamping_Swivel_Motor_Mount_on_channel_meshed" width="183" height="188" srcset="http://www.ozbotz.org/wp-content/uploads/2014/10/Clamping_Swivel_Motor_Mount_on_channel_meshed.jpg 183w, http://www.ozbotz.org/wp-content/uploads/2014/10/Clamping_Swivel_Motor_Mount_on_channel_meshed-146x150.jpg 146w" sizes="(max-width: 183px) 100vw, 183px" /><br class="none" /></a>The problem with this method is objects can get caught in the point where the two gears mesh. I know from previous experience that balancing robots can get a bit &#8220;wild&#8221; in their movements, particularly during initial testing. I can envision fingers getting crunched in the exposed gears. If I had time, I could fashion a cover for the gears, but the robot needs to be done in a month, so for now I need another method of mounting the motor.</li>
<li><strong>Mount the motor to a vertical piece of channel</strong>, as shown in the following drawing:<br class="none" /><a href="http://www.ozbotz.org/wp-content/uploads/2014/10/motor-low.png"><img decoding="async" loading="lazy" class="alignnone size-medium wp-image-907" src="http://www.ozbotz.org/wp-content/uploads/2014/10/motor-low-290x300.png" alt="motor low" width="290" height="300" srcset="http://www.ozbotz.org/wp-content/uploads/2014/10/motor-low-290x300.png 290w, http://www.ozbotz.org/wp-content/uploads/2014/10/motor-low-145x150.png 145w, http://www.ozbotz.org/wp-content/uploads/2014/10/motor-low-400x413.png 400w, http://www.ozbotz.org/wp-content/uploads/2014/10/motor-low.png 797w" sizes="(max-width: 290px) 100vw, 290px" /><br class="none" /></a>Adapters are available to mount a gearhead motor such as the Pololu 37D motor. In this configuration, the wheel is supported by a bearing, which is good because the 37D motor has only a bushing. However, the big problem with this arrangement is that the motor is too exposed. It would be easy for the motor to hit an object and become damaged.</li>
<li><strong>Mount the motor high up</strong> and connect it to the wheel using a pulley and belt, as shown in the following drawing:<br class="none" /><a href="http://www.ozbotz.org/wp-content/uploads/2014/10/motor-high1.png"><img decoding="async" loading="lazy" class="alignnone size-medium wp-image-909" src="http://www.ozbotz.org/wp-content/uploads/2014/10/motor-high1-300x241.png" alt="motor high" width="300" height="241" srcset="http://www.ozbotz.org/wp-content/uploads/2014/10/motor-high1-300x241.png 300w, http://www.ozbotz.org/wp-content/uploads/2014/10/motor-high1-150x120.png 150w, http://www.ozbotz.org/wp-content/uploads/2014/10/motor-high1-400x321.png 400w, http://www.ozbotz.org/wp-content/uploads/2014/10/motor-high1.png 995w" sizes="(max-width: 300px) 100vw, 300px" /><br class="none" /></a>The disadvantage of this method is that it is more complicated than the direct drive method just described. However, the motor is protected, and the wheel is supported by two bearings, which is great.</li>
</ol>
<p>After weighing the pros and cons of each method, I have choosen method #4. Another major design decision is what microcontroller (MCU) to use. I would love to use a cheap $15 STM32 developement board, but the contest requires that all electronics be purchased from ServoCity, Pololu, or SparkFun. SparkFun sells a Cortex M board that is designed to work with <a href="https://mbed.org/" target="_blank">mbed</a>. That&#8217;s tempting, but because of the desire to make a kit for the masses, I&#8217;m going to try an Arduino. I found a product called the <a href="https://www.sparkfun.com/products/11608" target="_blank">Netduino Plus 2</a> on SparkFun. It even uses an STM32, so if I run into a limitation in the Arduino IDE, I can always program it directly using a <a href="http://www.segger.com/jlink-debug-probes.html" target="_blank">J-Link</a> and <a href="http://www.keil.com/" target="_blank">Keil</a>.</p>
<p><strong>September 24, 2014</strong> &#8211; I showed my robot at the <a href="http://www.hbrobotics.org/" target="_blank">Homebrew Robotics</a> meeting tonight. I also mentioned the ServoCity contest. Someone asked what the prize was and how much money I will spend. I explained that the prize was $1000 worth of parts, and I will probably spend close to $500. Thus, to make this a financially profitable venture, my odds of winning would need to be greater than 1 in 2! Video from the meeting is posted on the <a href="https://www.youtube.com/watch?v=tzIsLkAgtO0" target="_blank">Homebrew Robotics YouTube channel</a>. I&#8217;m the guy in the gray shirt. Here is the robot in its current state:</p>
<p><a href="http://www.ozbotz.org/wp-content/uploads/2014/10/balancing-robot-frame-2.jpg"><img decoding="async" loading="lazy" class="alignnone size-medium wp-image-896" src="http://www.ozbotz.org/wp-content/uploads/2014/10/balancing-robot-frame-2-180x300.jpg" alt="balancing robot frame 2" width="180" height="300" srcset="http://www.ozbotz.org/wp-content/uploads/2014/10/balancing-robot-frame-2-180x300.jpg 180w, http://www.ozbotz.org/wp-content/uploads/2014/10/balancing-robot-frame-2-90x150.jpg 90w, http://www.ozbotz.org/wp-content/uploads/2014/10/balancing-robot-frame-2-400x666.jpg 400w, http://www.ozbotz.org/wp-content/uploads/2014/10/balancing-robot-frame-2.jpg 480w" sizes="(max-width: 180px) 100vw, 180px" /></a> <a href="http://www.ozbotz.org/wp-content/uploads/2014/10/balancing-robot-frame-1.jpg"><img decoding="async" loading="lazy" class="alignnone size-medium wp-image-895" src="http://www.ozbotz.org/wp-content/uploads/2014/10/balancing-robot-frame-1-180x300.jpg" alt="balancing robot frame 1" width="180" height="300" srcset="http://www.ozbotz.org/wp-content/uploads/2014/10/balancing-robot-frame-1-180x300.jpg 180w, http://www.ozbotz.org/wp-content/uploads/2014/10/balancing-robot-frame-1-90x150.jpg 90w, http://www.ozbotz.org/wp-content/uploads/2014/10/balancing-robot-frame-1-400x666.jpg 400w, http://www.ozbotz.org/wp-content/uploads/2014/10/balancing-robot-frame-1.jpg 480w" sizes="(max-width: 180px) 100vw, 180px" /></a></p>
<p><strong>September 25, 2014</strong> &#8211; I figured out how I&#8217;m going to attached the electronics and at the same time give my robot a more natural contour: I will cut out an hour glass shape out of acrylic and attach it between the upper and lower aluminum channels, as shown in the following drawing: The curvy shape gives the robot a more organic appearance which helps to offset the industrial feel of the aluminium. The acrylic will be red. The color red is a bold color that stands out in a crowd, and it implies that the robot has life in it because blood is red.  The color also give my robot a simple name: Red.</p>
<p><a href="http://www.ozbotz.org/wp-content/uploads/2014/10/robot-with-acrylic.png"><img decoding="async" loading="lazy" class="alignnone size-medium wp-image-900" src="http://www.ozbotz.org/wp-content/uploads/2014/10/robot-with-acrylic-231x300.png" alt="robot with acrylic" width="231" height="300" srcset="http://www.ozbotz.org/wp-content/uploads/2014/10/robot-with-acrylic-231x300.png 231w, http://www.ozbotz.org/wp-content/uploads/2014/10/robot-with-acrylic-115x150.png 115w, http://www.ozbotz.org/wp-content/uploads/2014/10/robot-with-acrylic-400x518.png 400w, http://www.ozbotz.org/wp-content/uploads/2014/10/robot-with-acrylic.png 724w" sizes="(max-width: 231px) 100vw, 231px" /></a></p>
<p><strong>September 26, 2014</strong> &#8211; I tried to use the <a href="https://www.sparkfun.com/products/11608" target="_blank">NetDuino Plus 2</a> that I bought from SparkFun and had hoped to use as the controller for Red. I discovered that it is not really an Arduino, and it does not work with the Arduino IDE. It requires Visual Studio Express. Ugghh. I&#8217;ve have some basic experience with the Arduino IDE, and I use Keil every day. I don&#8217;t have time to install and learn another IDE in time for this contest, so I need another controller board. One of the goals of this contest is to create a kit. An Arduino is a good choice for a kit because Arduinos are so ubiquitous. A kit that required someone to lean Keil probably wouldn&#8217;t sell as well to the general maker community. The Arduino Due looks promising because it is fast and has a lot of inputs and outputs, so I will try one of those.</p>
<p><strong>Sunday, October 12, 2014</strong> &#8211; Today I went to the office  and 3D printed &#8220;mittens&#8221; to represent hands and a &#8220;neck&#8221; to hold the phone at the top of the robot. I also laser cut the body panels. The back panel has holes in it to mount the electronics. I discovered the the 3D model I downloaded for an Arduino Mega, which has the same hole pattern as the Due that I am using, had a mistake in the positioning of the holes! Fortunately, I cut the first panel out of paper. I found the problem when I dry fit all of the electronics on the paper panel.  The lesson learned is to double check critical sizing elements of models that I don&#8217;t create myself. All of the electronics and mechanics were finished today. Tomorrow I will try to finish the software before the deadline, but it&#8217;s looking doubtful that I will finish on time. Here is a picture of Red without his front panel:</p>
<p><a href="http://www.ozbotz.org/wp-content/uploads/2014/10/red1.jpg"><img decoding="async" loading="lazy" class="alignnone size-medium wp-image-927" src="http://www.ozbotz.org/wp-content/uploads/2014/10/red1-225x300.jpg" alt="red1" width="225" height="300" srcset="http://www.ozbotz.org/wp-content/uploads/2014/10/red1-225x300.jpg 225w, http://www.ozbotz.org/wp-content/uploads/2014/10/red1-768x1024.jpg 768w, http://www.ozbotz.org/wp-content/uploads/2014/10/red1-112x150.jpg 112w, http://www.ozbotz.org/wp-content/uploads/2014/10/red1-400x533.jpg 400w, http://www.ozbotz.org/wp-content/uploads/2014/10/red1.jpg 1200w" sizes="(max-width: 225px) 100vw, 225px" /></a></p>
<p>The eyes are an Android app from the <a href="http://www.oddwerx.com/" target="_blank">Oddwerx</a> project. Oddwerx was originally a prototype for a commercial product. It is now an open source project.</p>
<p><strong>Monday, October 13, 2014</strong> &#8211; The deadline for submitting a video of the robot balancing has been extended two weeks to October 27! I have a chance now of completing the software on time.</p>
<p><strong>Tuesday, October 14, 2014</strong> &#8211; I discovered today that the MPU-6050 does not give accurate readings when mounted vertically. I believe that I am running into the <a href="http://en.wikipedia.org/wiki/Gimbal_lock" target="_blank">gimbal lock</a> problem. When I tested the MPU-6050 on my desk, it was lying horizontally. I should thought to test it in the position that it would be installed in the robot. To fix the problem, I attached the MPU-6050 to a small piece of acrylic which I glued to the back panel in a horizontal position:</p>
<p><a href="http://www.ozbotz.org/wp-content/uploads/2014/10/mpu6050.jpg"><img decoding="async" loading="lazy" class="alignnone size-medium wp-image-929" src="http://www.ozbotz.org/wp-content/uploads/2014/10/mpu6050.jpg" alt="mpu6050" width="225" height="300" /></a></p>
<p>&nbsp;</p>
<p><strong>Thursday, October 16, 2014</strong> &#8211; Red&#8217;s motors moved for the first time today on the mechanically and electronically complete frame. I consider this step to be the birthday of my robots.</p>
<p><strong>Saturday, October 18, 2014</strong> &#8211; I was going to port code for a PID control loop from a previous project to the skectch for RED, but then I found an awesome <a href="http://playground.arduino.cc/Code/PIDLibrary" target="_blank">open source PID library</a> for the Arduino. The author, Brett Beauregard, does a great job of explaining how the library work on his <a href="http://brettbeauregard.com/blog/2011/04/improving-the-beginners-pid-introduction/" target="_blank">website</a>. With mininal additional work, I was able to make RED move like a Segway. When RED tilts forward, the wheels move forward. When he tilts back, the wheels move back. The more he tilts, the faster the wheels move. This is &#8220;proportional gain&#8221;  portion of the PID control loop. RED is not able to balance on his own at this point. A human is required for balance. To make RED balance and achieve full PID control, I will need to add Integral and Derivative gain.</p>
<p><iframe loading="lazy" width="640" height="360" src="http://www.youtube.com/embed/OR5m2_ZUnQA?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p>&nbsp;</p>
<p><strong>Monday, October 20, 2014</strong> &#8211; PID tuning is turning out to be a major pain. The only way I have to change the PID parameters is to edit the sketch and recompile. This process takes me about a minute on the Arduino Due. I&#8217;m tempted to create a separate box with rotary dials that could plug into the Arduino so that I can input new PID parameters.</p>
<p><strong>Tuesday, October 21, 2014</strong> &#8211; I decided that I don&#8217;t have time to implement my &#8220;PID box.&#8221; I will make it a separate project after RED is complete because I&#8217;m sure that I&#8217;ll be making more balancing robots.</p>
<p>After a bit of PID tuning, RED is now able to balance on his own! He is still a bit wobbly, but, nonetheless, this is a major milestone.</p>
<p><iframe loading="lazy" width="640" height="360" src="https://www.youtube.com/embed/cOfh1V9ElqA?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p><strong>Friday, October 24, 2014</strong> &#8211; I spent two days just tuning the PID loop. I have finally achieved a stable balance. Now on to the video that I need to submit for the contest!</p>
<p><strong>Sunday, October 26, 2014</strong> &#8211; Friday afternoon and part of Saturday I shot video of RED operating in various situations, including being used as a telepresence robot. After two days of video editing, I have a video that I can submit for the contest. I&#8217;m actually done a day before the deadline!</p>
<p>You can watch the video here:</p>
<p><iframe loading="lazy" width="640" height="360" src="https://www.youtube.com/embed/6oYTeo6ZIak?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p>The results of the contest will be announced on Friday. It will be interesting to see what other people came up with.</p>
<p>The post <a rel="nofollow" href="http://www.ozbotz.org/build-report-red/">Build Report: Red, A Robot for the ServoCity Balancing Robot Contest</a> appeared first on <a rel="nofollow" href="http://www.ozbotz.org">OzBotz</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.ozbotz.org/build-report-red/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Blinky Finds a Friend at Maker Faire 2014</title>
		<link>http://www.ozbotz.org/blinky-maker-faire-2014/</link>
					<comments>http://www.ozbotz.org/blinky-maker-faire-2014/#respond</comments>
		
		<dc:creator><![CDATA[Osman Eralp]]></dc:creator>
		<pubDate>Fri, 18 Apr 2014 03:40:50 +0000</pubDate>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[balancing]]></category>
		<category><![CDATA[blinky]]></category>
		<category><![CDATA[robot]]></category>
		<guid isPermaLink="false">http://www.ozbotz.org/?p=978</guid>

					<description><![CDATA[<p><img class="excerptimg" alt="" src="http://www.ozbotz.org/wp-content/uploads/2014/10/maker-faire-thumb-300x102.png" width="200" />Blinky Finds a Friend at Maker Faire 2014.  </p>
<p><a href="http://www.ozbotz.org/blinky-maker-faire-2014/"></p>
<div id="oz-read-more-button">Read More...</div>
<p></a></p>
<p>The post <a rel="nofollow" href="http://www.ozbotz.org/blinky-maker-faire-2014/">Blinky Finds a Friend at Maker Faire 2014</a> appeared first on <a rel="nofollow" href="http://www.ozbotz.org">OzBotz</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>At Maker Faire 2014 in California, the <a href="http://www.hbrobotics.org/" target="_blank">HomeBrew Robotics Club</a>, of which I am an officer, sponsored a booth. About 20 members from the club, including myself, staffed the booth during the three-day event. I brought Blinky with me. Being so small, Blinky had a difficult time navigating the crowd of giant humans that attended the event. However, he did find a pint-sized friend in a robot that looked like a mini beer keg. I guess robots do take after their makers!</p>
<p><iframe loading="lazy" width="640" height="360" src="https://www.youtube.com/embed/rOqx6FltLPc?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p>The post <a rel="nofollow" href="http://www.ozbotz.org/blinky-maker-faire-2014/">Blinky Finds a Friend at Maker Faire 2014</a> appeared first on <a rel="nofollow" href="http://www.ozbotz.org">OzBotz</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.ozbotz.org/blinky-maker-faire-2014/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Laser Cut a PCB Solder Paste Stencil on Kapton</title>
		<link>http://www.ozbotz.org/kapton-stencil/</link>
					<comments>http://www.ozbotz.org/kapton-stencil/#comments</comments>
		
		<dc:creator><![CDATA[Osman Eralp]]></dc:creator>
		<pubDate>Tue, 11 Mar 2014 03:45:09 +0000</pubDate>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[kapton]]></category>
		<category><![CDATA[laser]]></category>
		<category><![CDATA[stencil]]></category>
		<guid isPermaLink="false">http://www.ozbotz.org/?p=733</guid>

					<description><![CDATA[<p><img class="excerptimg" alt="" src="/images/excerpts/kapton_stencil_excerpt.png" />This guide shows you how to convert a gerber file containing the paste layer of your PCB into a vector file that you can use to create a kapton stencil with your laser cutter. </p>
<p><a href="http://www.ozbotz.org/kapton-stencil/"></p>
<div id="oz-read-more-button">Read More...</div>
<p></a></p>
<p>The post <a rel="nofollow" href="http://www.ozbotz.org/kapton-stencil/">How to Laser Cut a PCB Solder Paste Stencil on Kapton</a> appeared first on <a rel="nofollow" href="http://www.ozbotz.org">OzBotz</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>This guide explains how to convert a gerber file containing the paste layer of your PCB to a PDF that you can send to a laser cutter. The software required is all open source and will run on Linux, Windows, or Mac operating systems. I have used this procedure successfully to create stencils for fine pitch parts, such as 0.5 mm QFPs and 0603 metric (0201 imperial) resistors and capacitors. In addition, this procedure works for parts that are oriented 45 degrees.</p>
<p>To complete the steps in this guide, you will need to install the following software:</p>
<ul>
<li>gerbv &#8211; Available from <a href="http://sourceforge.net/projects/gerbv/files/" target="_blank">http://sourceforge.net/projects/gerbv/files/</a></li>
<li>Inkscape &#8211; Available from <a href="http://www.inkscape.org/en/download/" target="_blank">http://www.inkscape.org/en/download/</a></li>
</ul>
<p>You will also need the paste layer of your PCB design in a gerber file. The creation of the paste gerber file is not covered in this guide because the process is different for each PCB design tool.</p>
<p>Complete the following steps:</p>
<ol>
<li><b>Convert the paste gerber file to an SVG file.</b> The conversion is needed so the paste layer can be modified with Inkscape, a vector editing tool, in step 2.
<ol style="list-style-type: lower-alpha;">
<li>Start gerbv.</li>
<li>Choose <span style="font-family: 'courier new', courier;">File -&gt; Open layer(s)</span>. Select your paste gerber file, and click <span style="font-family: 'courier new', courier;">Open</span>.</li>
<li>Choose <span style="font-family: 'courier new', courier;">File -&gt; Export -&gt; SVG…</span>. Enter a new file name, such as <strong><span style="font-family: 'courier new', courier;">paste.svg</span></strong>, for the exported SVG file, and click <span style="font-family: 'courier new', courier;">Save</span>.</li>
<li>Close gerbv.<br class="none" /><br class="none" /></li>
</ol>
</li>
<li><b>Reduce the size of the paste area on each pad.</b> Most PCB design tools that I have used define the paste area to be the same as the pad area. I have found that reducing the paste area helps prevent putting too much solder paste on the board. Too much solder paste will lead to shorts on fine pitch parts. Some tools, such as Altium Designer, have options in the library to specify the size of the paste mask. If you have defined a paste mask in your library to be smaller than the pad size, skip this step.
<ol style="list-style-type: lower-alpha;">
<li>Start Inkscape.</li>
<li>Choose <span style="font-family: 'courier new', courier;">File -&gt; Open</span>. Select the SVG file you exported in step 1c, and click <span style="font-family: 'courier new', courier;">Open</span>.</li>
<li>Click once on any of the polygons. All of the polygons should now be selected as a group, as indicated by the dotted line around your design. <a href="http://www.ozbotz.org/wp-content/uploads/2014/03/inkscape_all_selected.png"> <img decoding="async" class="ozimgleftmedium" style="margin: 20px 1000px 20px 0;" title="" alt="" src="http://www.ozbotz.org/wp-content/uploads/2014/03/inkscape_all_selected.png" /></a></li>
<li>Choose <span style="font-family: 'courier new', courier;">Object -&gt; Ungroup</span>. You should now see a dotted line around each individual object. <a href="http://www.ozbotz.org/wp-content/uploads/2014/03/inkscape_ungrouped.png"> <img decoding="async" class="ozimgleftmedium" style="margin: 20px 1000px 20px 0;" title="" alt="" src="http://www.ozbotz.org/wp-content/uploads/2014/03/inkscape_ungrouped.png" /></a> <a href="http://www.ozbotz.org/wp-content/uploads/2014/03/inkscape_ungrouped_closeup.png"> <img decoding="async" class="ozimgleftmedium" style="margin: 20px 1000px 20px 0;" title="" alt="" src="http://www.ozbotz.org/wp-content/uploads/2014/03/inkscape_ungrouped_closeup.png" /> </a></li>
<li>With all objects still selected, choose <span style="font-family: 'courier new', courier;">Object -&gt; Transform</span>. Select the <span style="font-family: 'courier new', courier;">Scale</span> tab. Enter <strong><span style="font-family: 'courier new', courier;">85%</span></strong> for the <span style="font-family: 'courier new', courier;">Width</span> and <span style="font-family: 'courier new', courier;">Height</span>. Make sure “<span style="font-family: 'courier new', courier;">Scale proportionally</span>” and “<span style="font-family: 'courier new', courier;">Apply to each object separately</span>” are checked. Click <span style="font-family: 'courier new', courier;">Apply</span>.</li>
<li>Choose <span style="font-family: 'courier new', courier;">File -&gt; Save As</span>. Change the file type to “<span style="font-family: 'courier new', courier;">Portable Document Format (*.pdf)</span>”. Enter a file name, such as <strong><span style="font-family: 'courier new', courier;">paste.pdf</span></strong>. Click <span style="font-family: 'courier new', courier;">Save</span>.
<p class="none " id="">NOTE: In this step, I save the file as a PDF instead of a SVG because Corel Version 15 (X5), which is the software used with the laser cutter that I use, cannot read the SVG files produced by Inkscape. The latest version of Corel, version 16 (X6), *can* read the Inkscape SVG files. Thus, if your laser cutter uses Corel X6, you can save your modified paste file as either a PDF or an SVG file.</p>
</li>
</ol>
</li>
<li><b>Send the PDF file to your laser cutter using raster settings.</b> The polygons in the paste file are too small to be cut out of the kapton like you might cut out a pattern in acrylic. Instead, you will burn away the polygons by telling the laser to interpret the file as a raster image.The instructions below use CorelDRAW connected to a Helix 30W laser. The exact steps will vary based on your software and the model of your laser cutter.
<ol style="list-style-type: lower-alpha;">
<li>Place the kapton on the bed of the laser cutter.</li>
<li>Press the Pointer button on the laser cutter to turn on the red visible laser pointer.</li>
<li>Press the X/Y off button to release the carriage. With your hands, physically move the carriage to the point that will be the upper left point of the stencil.</li>
<li>Press the Go button to re-engage the carriage.</li>
<li>Open Corel Draw.</li>
<li>Choose <span style="font-family: 'courier new', courier;">File -&gt; Open</span>. Select the PDF file you exported in step 2f, and click <span style="font-family: 'courier new', courier;">Open</span>.</li>
<li>Choose <span style="font-family: 'courier new', courier;">File -&gt; Print</span>.</li>
<li>Select the Layout tab, select “<span style="font-family: 'courier new', courier;">Reposition images to</span>”, and select “<span style="font-family: 'courier new', courier;">Top left corner</span>”, as shown in the following image.<br />
<a href="http://www.ozbotz.org/wp-content/uploads/2014/03/corel_print_layout.png"><img decoding="async" class="ozimgleftmedium" style="margin: 20px 1000px 20px 0;" title="" alt="" src="http://www.ozbotz.org/wp-content/uploads/2014/03/corel_print_layout.png" /></a></li>
<li>Select the <span style="font-family: 'courier new', courier;">General</span> tab, and click <span style="font-family: 'courier new', courier;">Preferences</span>.<br />
<a href="http://www.ozbotz.org/wp-content/uploads/2014/03/corel_print_general.png"><img decoding="async" class="ozimgleftmedium" style="margin: 20px 1000px 20px 0;" title="" alt="" src="http://www.ozbotz.org/wp-content/uploads/2014/03/corel_print_general.png" /></a></li>
<li>Adjust the <span style="font-family: 'courier new', courier;">Resolution</span> to the maximum. Set the <span style="font-family: 'courier new', courier;">Job Type</span> to Raster. Set the <span style="font-family: 'courier new', courier;">Speed</span> to <strong><span style="font-family: 'courier new', courier;">40%</span></strong> and the <span style="font-family: 'courier new', courier;">Power</span> to<strong><span style="font-family: 'courier new', courier;"> 90%</span></strong>. If you are using a laser that is more than 30 watts, you can try increasing the speed slightly.<br />
<a href="http://www.ozbotz.org/wp-content/uploads/2014/03/corel_print_properties.png"><img decoding="async" class="ozimgleftmedium" style="margin: 20px 1000px 20px 0;" title="" alt="" src="http://www.ozbotz.org/wp-content/uploads/2014/03/corel_print_properties.png" /></a></li>
<li>Click <span style="font-family: 'courier new', courier;">Print</span>.</li>
<li>On the laser cutter, press Go.</li>
</ol>
</li>
</ol>
<p>After completing the steps listed above, your stencil will be burned into the kapton. The burning process creates a lot of charred debris. I use acetone on a paper towel to wipe the kapton several times on each side to remove the debris.</p>
<p>Here is an image of a stencil created with the process described above:</p>
<p><a href="http://www.ozbotz.org/wp-content/uploads/2014/03/kapton_stencil1.png"><img decoding="async" loading="lazy" src="http://www.ozbotz.org/wp-content/uploads/2014/03/kapton_stencil1.png" alt="kapton_stencil" width="816" height="612" class="alignnone size-full wp-image-874" srcset="http://www.ozbotz.org/wp-content/uploads/2014/03/kapton_stencil1.png 816w, http://www.ozbotz.org/wp-content/uploads/2014/03/kapton_stencil1-300x225.png 300w, http://www.ozbotz.org/wp-content/uploads/2014/03/kapton_stencil1-150x112.png 150w, http://www.ozbotz.org/wp-content/uploads/2014/03/kapton_stencil1-400x300.png 400w" sizes="(max-width: 816px) 100vw, 816px" /></a></p>
<p>The pitch of the QFP in the image above is 0.5 mm. Most of the R &amp; Cs are 0603 imperial. The five small parts in the lower right are 0201 imperial.</p>
<p>Please let me know if you have any feedback on this process by leaving comments below.</p>
<p>The post <a rel="nofollow" href="http://www.ozbotz.org/kapton-stencil/">How to Laser Cut a PCB Solder Paste Stencil on Kapton</a> appeared first on <a rel="nofollow" href="http://www.ozbotz.org">OzBotz</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.ozbotz.org/kapton-stencil/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>How To Print At Actual Size (1:1) In SketchUp</title>
		<link>http://www.ozbotz.org/print-actual-size-in-sketchup/</link>
					<comments>http://www.ozbotz.org/print-actual-size-in-sketchup/#comments</comments>
		
		<dc:creator><![CDATA[Osman Eralp]]></dc:creator>
		<pubDate>Mon, 03 Mar 2014 23:58:21 +0000</pubDate>
				<category><![CDATA[Mechanics]]></category>
		<category><![CDATA[cad]]></category>
		<category><![CDATA[sketchup]]></category>
		<guid isPermaLink="false">http://www.ozbotz.org/?p=812</guid>

					<description><![CDATA[<p><img class="excerptimg" alt="" src="http://www.ozbotz.org/wp-content/uploads/2014/03/sketchup-logo-150x150.jpg" width="100" height="100" /><span style="line-height: 1.5em;"><br class="none" />Printing a SketchUp drawing at actual size can be a bit tricky. This guide shows you <br class="none" />how to do it.</span> </p>
<p><a href="http://www.ozbotz.org/print-actual-size-in-sketchup/"></p>
<div id="oz-read-more-button">Read More...</div>
<p></a></p>
<p>The post <a rel="nofollow" href="http://www.ozbotz.org/print-actual-size-in-sketchup/">How To Print At Actual Size (1:1) In SketchUp</a> appeared first on <a rel="nofollow" href="http://www.ozbotz.org">OzBotz</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Although I use SolidWorks for most of my 3D modeling, I still occasionally use SketchUp for creating drawings that will be cut out with a laser cutter. SketchUp is easy to use, and it doesn&#8217;t consume as much computer resources as SolidWorks. Below is an example of a drawing in SketchUp that I used to create a layer of Blinky, one of my balancing robots:</p>
<p><a href="http://www.ozbotz.org/wp-content/uploads/2014/03/start.png"><img decoding="async" class="ozimgleftlarge" style="margin: 10 0 50px 0;" alt="start" src="http://www.ozbotz.org/wp-content/uploads/2014/03/start.png" /></a></p>
<p>I like to create paper models of my robots before I cut parts out of acrylic on the laser cutter. To verify that all the parts will fit together properly, it&#8217;s important that the paper models are printed at the exact size of drawings.</p>
<p>To print at actual size in SketchUp, follow these instructions:</p>
<ol>
<li>Choose <span style="font-family: 'courier new', courier;">Camera -&gt; Standard Views -&gt; Top</span> to adjust the camera view so that you are looking directly at the face of the drawing you want to print, as shown in the following image: <br class="none" /> <a href="http://www.ozbotz.org/wp-content/uploads/2014/03/top-view.png"><img decoding="async" class="ozimgleftlarge" style="padding-bottom: 30px;" alt="top-view" src="http://www.ozbotz.org/wp-content/uploads/2014/03/top-view.png" /></a></li>
<li>Choose <span style="font-family: 'courier new', courier;">Camera -&gt; Parallel Projection</span> to produce a flat drawing with no perspective lines: <br class="none" /> <a href="http://www.ozbotz.org/wp-content/uploads/2014/03/parallel.png"><img decoding="async" class="ozimgleftlarge" style="padding-bottom: 30px;" alt="parallel" src="http://www.ozbotz.org/wp-content/uploads/2014/03/parallel.png" /></a></li>
<li>Choose <span style="font-family: 'courier new', courier;">Camera -&gt; Zoom Extents</span>. to make the drawing as large as possible in the window: <br class="none" /> <a href="http://www.ozbotz.org/wp-content/uploads/2014/03/zoom-extents.png"><img decoding="async" class="ozimgleftlarge" style="padding-bottom: 30px;" alt="zoom-extents" src="http://www.ozbotz.org/wp-content/uploads/2014/03/zoom-extents.png" /></a></li>
<li>Resize the window to reduce the amount of white space around the drawing. This step is important because when you print, SketchUp will print not just your drawing but all the space around it too. Thus, if your drawing is a one inch square, but the window shows six inches of space on each side of the square, the drawing will be spread across multiple pages when you print. <br class="none" /> <a href="http://www.ozbotz.org/wp-content/uploads/2014/03/resized.png"><img decoding="async" class="ozimgleftlarge" style="padding-bottom: 30px;" alt="resized" src="http://www.ozbotz.org/wp-content/uploads/2014/03/resized.png" /></a></li>
<li>Choose <span style="font-family: 'courier new', courier;">File -&gt; Print</span>.<br class="none" /><br class="none" /></li>
<li>In the Print option window, uncheck the &#8220;<span style="font-family: 'courier new', courier;">Fit to page</span>&#8221; and &#8220;<span style="font-family: 'courier new', courier;">Use model extents</span>&#8221; options. Set both scale values to 1. <br class="none" /> <a href="http://www.ozbotz.org/wp-content/uploads/2014/03/print-options.png"><img decoding="async" class="ozimgleftmedium" style="padding-bottom: 30px;" alt="print-options" src="http://www.ozbotz.org/wp-content/uploads/2014/03/print-options.png" /></a></li>
<li>Verify that the &#8220;<span style="font-family: 'courier new', courier;">Tiled Sheet Print Range&#8221;</span> shows &#8220;<span style="font-family: 'courier new', courier;">Pages from: 1 to: 1</span>&#8220;. If is says pages from 1 to 2 (or any other number), your print will span multiple pages. If your drawing is larger than the size of the paper, there is no way to avoid the print spanning multiple pages and still print at actual size. <br class="none" /><br class="none" />NOTE: The &#8220;Page size&#8221; does not always match the actual page size. In the previous image, the page width is shown as 3.9202 inches, but my drawing measures exactly 5 inches on the printed page.<br class="none" /><br class="none" /></li>
<li>Click <span style="font-family: 'courier new', courier;">OK</span>.</li>
</ol>
<p>Your drawing should now print on one piece of paper at actual size. If you drawing is still not actual size, it&#8217;s possible that your printer might be scaling the print. For example, my Epson ink jet photo printer prints very accurately (as one might expect from a photo printer). However, my HP Officejet all-in-one printer scales printed drawings by about 0.96 in the Y direction.</p>
<p>Please let me know your results using this procedure by leaving a comment below.</p>
<p>The post <a rel="nofollow" href="http://www.ozbotz.org/print-actual-size-in-sketchup/">How To Print At Actual Size (1:1) In SketchUp</a> appeared first on <a rel="nofollow" href="http://www.ozbotz.org">OzBotz</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.ozbotz.org/print-actual-size-in-sketchup/feed/</wfw:commentRss>
			<slash:comments>49</slash:comments>
		
		
			</item>
		<item>
		<title>Blinky Competes at RoboGames 2013</title>
		<link>http://www.ozbotz.org/blinky-robogames-2013/</link>
					<comments>http://www.ozbotz.org/blinky-robogames-2013/#respond</comments>
		
		<dc:creator><![CDATA[Osman Eralp]]></dc:creator>
		<pubDate>Sun, 21 Apr 2013 06:00:51 +0000</pubDate>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[balancing]]></category>
		<category><![CDATA[blinky]]></category>
		<category><![CDATA[robot]]></category>
		<guid isPermaLink="false">http://www.ozbotz.org/?p=971</guid>

					<description><![CDATA[<p><img class="excerptimg" alt="" src="http://www.ozbotz.org/wp-content/uploads/2014/10/thumb-crop.jpg" />Blinky competes in the Balancer Race at Robogames 2013. </p>
<p><a href="http://www.ozbotz.org/blinky-robogames-2013/"></p>
<div id="oz-read-more-button">Read More...</div>
<p></a></p>
<p>The post <a rel="nofollow" href="http://www.ozbotz.org/blinky-robogames-2013/">Blinky Competes at RoboGames 2013</a> appeared first on <a rel="nofollow" href="http://www.ozbotz.org">OzBotz</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>This year at RoboGames I ran the <a href="http://robogames.net/rules/balancer.php" target="_blank">Balancer Race</a>. The objective of this competition is for your robot complete the course in the shortest period of time, while staying balanced. The robot has to navigate some simple obstacles and at the end of the course stay within the end zone for 10 seconds. The robot can be autonomous or remote controlled.</p>
<p>My robot Blinky competed in the Balancer Race this year. It&#8217;s a bit of a conflict of interest to organize the race and compete in it, but there were so few other competitors that if Blinky didn&#8217;t enter, the race would not have qualified for the medal ceremony. So I don&#8217;t feel too conflicted. A balancing robot is one of the most challenging types of robots to build, so just entering a robot in the race is an accomplishment. </p>
<p>In the end, Blinky completed the course faster than any other robot and was awarded first place. Here is a video of his final run. Yes, I know the video is vertical. I gave my phone to someone who didn&#8217;t know that video is supposed to be shot horizontally!</p>
<p><iframe loading="lazy" width="640" height="480" src="http://www.youtube.com/embed/C4KGjKWY3QE?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p>The post <a rel="nofollow" href="http://www.ozbotz.org/blinky-robogames-2013/">Blinky Competes at RoboGames 2013</a> appeared first on <a rel="nofollow" href="http://www.ozbotz.org">OzBotz</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.ozbotz.org/blinky-robogames-2013/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>A Comprehensive Guide to Installing and Configuring OpenCV 2.4.2 on Ubuntu</title>
		<link>http://www.ozbotz.org/opencv-installation/</link>
					<comments>http://www.ozbotz.org/opencv-installation/#comments</comments>
		
		<dc:creator><![CDATA[Osman Eralp]]></dc:creator>
		<pubDate>Thu, 07 Jun 2012 00:55:46 +0000</pubDate>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[opencv]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">http://www.ozbotz.org/?p=630</guid>

					<description><![CDATA[<p><img class=excerptimg src="/images/excerpts/OpenCV_Logo_with_text_100x123.gif">This guide takes you from a clean Ubuntu install to a working installation of OpenCV 2.4.1. </p>
<p><a href="http://www.ozbotz.org/opencv-installation/"></p>
<div id="oz-read-more-button">Read More...</div>
<p></a></p>
<p>The post <a rel="nofollow" href="http://www.ozbotz.org/opencv-installation/">A Comprehensive Guide to Installing and Configuring OpenCV 2.4.2 on Ubuntu</a> appeared first on <a rel="nofollow" href="http://www.ozbotz.org">OzBotz</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div>
<p>This guide describes how to install and configure OpenCV 2.4.2 and its dependencies on Ubuntu 12.04. This guide includes instructions for both 32-bit and 64-bit systems.</p>
<p>Revision History:<br />
[2012-09-12] Updated guide to work with OpenCV 2.4.2. Updated ffmpeg section: ffmpeg 0.11.1 now requires -pic option on 64-bit systems.<br />
[2012-06-05] Updated guide to work with OpenCV 2.4.1 and Ubuntu 12.04. Added instructions for 64-bit systems.<br />
[2011-08-11] Initial version. Worked with OpenCV 2.3.1 and Ubuntu 11.10. Archived <a href="http://www.ozbotz.org/opencv-installation-2.3.1/">here</a>.</p>
<p>If you need help troubleshooting OpenCV installation problems, see the companion guide “<a href="http://ozbotz.org/opencv-install-troubleshooting/">A Comprehensive OpenCV Installation Troubleshooting Guide</a>.”</p>
<p>&nbsp;</p>
<h3>The Installation Procedure</h3>
<p>To install and configure OpenCV 2.4.1, complete the following steps. The commands shown in each step can be copy and pasted directly into a Linux command line.</p>
<ol>
<p><!-- 1-------------------- NEW LIST ITEM -------------------- --></p>
<li>Remove any installed versions of ffmpeg and x264.<br />
<blockquote style="margin-left:0em"><p><code>sudo apt-get remove ffmpeg x264 libx264-dev</code></p></blockquote>
</li>
<p><!-- 2-------------------- NEW LIST ITEM -------------------- --></p>
<li>Get all the dependencies for x264 and ffmpeg.<br />
<blockquote style="margin-left:0em"><p><code>sudo apt-get update<br />
sudo apt-get install build-essential checkinstall git cmake libfaac-dev libjack-jackd2-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev libva-dev libvdpau-dev libvorbis-dev libx11-dev libxfixes-dev libxvidcore-dev texi2html yasm zlib1g-dev</code></p></blockquote>
</li>
<p><!-- 3-------------------- NEW LIST ITEM -------------------- --></p>
<li>Download and install gstreamer.<br />
<blockquote style="margin-left:0em"><p><code>sudo apt-get install libgstreamer0.10-0 libgstreamer0.10-dev gstreamer0.10-tools gstreamer0.10-plugins-base libgstreamer-plugins-base0.10-dev gstreamer0.10-plugins-good gstreamer0.10-plugins-ugly gstreamer0.10-plugins-bad gstreamer0.10-ffmpeg</code></p></blockquote>
</li>
<p><!-- 6-------------------- NEW LIST ITEM -------------------- --></p>
<li>Download and install gtk.<br />
<blockquote style="margin-left:0em"><p><code>sudo apt-get install libgtk2.0-0 libgtk2.0-dev</code></p></blockquote>
</li>
<p><!-- 7-------------------- NEW LIST ITEM -------------------- --></p>
<li>Download and install libjpeg.<br />
<blockquote style="margin-left:0em"><p><code>sudo apt-get install libjpeg8 libjpeg8-dev</code></p></blockquote>
</li>
<p><!-- -------------------- NEW LIST ITEM -------------------- --></p>
<li>Create a directory to hold source code.<br />
<blockquote style="margin-left:0em"><p><code>cd ~<br />
mkdir src</code></p></blockquote>
</li>
<p><!-- -------------------- NEW LIST ITEM -------------------- --></p>
<li>Download and install install x264.
<ol style="list-style-type: lower-alpha">
<li>Download a recent stable snapshot of x264 from <a href="ftp://ftp.videolan.org/pub/videolan/x264/snapshots/">ftp://ftp.videolan.org/pub/videolan/x264/snapshots/</a>. The exact version does not seem to matter. To write this guide, I used version x264-snapshot-20120528-2245-stable.tar.bz2, but I have used previous versions too.<br />
<blockquote style="margin-left:-3em"><p><code>cd ~/src</p>
<p>wget ftp://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20120528-2245-stable.tar.bz2</p>
<p>tar xvf x264-snapshot-20120528-2245-stable.tar.bz2</p>
<p>cd x264-snapshot-20120528-2245-stable</code></p></blockquote>
</li>
<li>Configure and build the x264 libraries.<br />
<blockquote style="margin-left:-3em"><p><code>./configure --enable-static<br />
make<br />
sudo make install</code></p></blockquote>
<p>IMPORTANT: If you are running a 64-bit version of Ubuntu, you must configure x264 as shown in the following command:</p>
<blockquote style="margin-left:0em"><p><code>./configure --enable-shared --enable-pic</code></p></blockquote>
<p>The -shared and -pic options might also be required when you compile for some other architectures, such as ARM. You know you need these options if you get the following error when compiling OpenCV: </p>
<blockquote style="margin-left:0em; background-color:white"><p><code>[ 25%] Building CXX object modules/highgui/CMakeFiles/opencv_highgui.dir/src/bitstrm.cpp.o<br />
Linking CXX shared library ../../lib/libopencv_highgui.so<br />
/usr/bin/ld: /usr/local/lib/libavcodec.a(avpacket.o): relocation R_X86_64_32S against `av_destruct_packet' can not be used when making a shared object; recompile with -fPIC<br />
/usr/local/lib/libavcodec.a: could not read symbols: Bad value<br />
</code></p></blockquote>
</li>
</ol>
</li>
<p><!-- -------------------- NEW LIST ITEM -------------------- --></p>
<li>Download and install install ffmpeg.
<ol style="list-style-type: lower-alpha">
<li>Download ffmpeg version 0.11.1 from <a href="http://ffmpeg.org/download.html">http://ffmpeg.org/download.html</a>.<br />
<blockquote style="margin-left:-3em"><p><code>cd ~/src<br />
wget http://ffmpeg.org/releases/ffmpeg-0.11.1.tar.bz2<br />
tar xvf ffmpeg-0.11.1.tar.bz2<br />
cd ffmpeg-0.11.1</code></p></blockquote>
</li>
<li>Configure and build ffmpeg.<br />
<blockquote style="margin-left:-3em"><p><code>./configure --enable-gpl --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-nonfree --enable-postproc --enable-version3 --enable-x11grab</p>
<p>make<br />
sudo make install</code></p></blockquote>
<p>IMPORTANT: Just like with x264 in the previous step, you must configure ffmpeg with the -shared and -pic options if you are running a 64-bit version of Ubuntu or some other architectures, such as ARM.</p>
<blockquote style="margin-left:0em"><p><code>./configure --enable-gpl --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-nonfree --enable-postproc --enable-version3 --enable-x11grab --enable-shared --enable-pic</code></p></blockquote>
</li>
</ol>
</li>
<p><!-- -------------------- NEW LIST ITEM -------------------- --></p>
<li>Download and install install a recent version of v4l (video for linux) from <a href="http://www.linuxtv.org/downloads/v4l-utils/">http://www.linuxtv.org/downloads/v4l-utils/</a>. For this guide I used version 0.8.8.<br />
<blockquote style="margin-left:0em"><p><code>cd ~/src</p>
<p>wget http://www.linuxtv.org/downloads/v4l-utils/v4l-utils-0.8.8.tar.bz2</p>
<p>tar xvf v4l-utils-0.8.8.tar.bz2<br />
cd v4l-utils-0.8.8<br />
make<br />
sudo make install</code></p></blockquote>
</li>
<p><!-- -------------------- NEW LIST ITEM -------------------- --></p>
<li>Download and install install OpenCV 2.4.2.
<ol style="list-style-type: lower-alpha">
<li>Download OpenCV version 2.4.2 from <a href="http://sourceforge.net/projects/opencvlibrary/files/">http://sourceforge.net/projects/opencvlibrary/files/</a><br />
<blockquote style="margin-left:-3em"><p><code>cd ~/src</p>
<p>wget http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.4.2/OpenCV-2.4.2.tar.bz2</p>
<p>tar xvf OpenCV-2.4.2.tar.bz2</code></p></blockquote>
</li>
<li>Create a new build directory and run cmake:<br />
<blockquote style="margin-left:-3em"><p><code>cd OpenCV-2.4.2/<br />
mkdir build<br />
cd build<br />
cmake -D CMAKE_BUILD_TYPE=RELEASE ..</code></p></blockquote>
</li>
<li>Verify that the output of cmake includes the following text:
<ul>
<li>found gstreamer-base-0.10</li>
<li>GTK+ 2.x: YES</li>
<li>FFMPEG: YES</li>
<li>GStreamer: YES</li>
<li>V4L/V4L2: Using libv4l</li>
</ul>
</li>
<li>Build and install OpenCV.<br />
<blockquote style="margin-left:-3em"><p><code>make<br />
sudo make install</code></p></blockquote>
</li>
</ol>
</li>
<p><!-- -------------------- NEW LIST ITEM -------------------- --></p>
<li>Configure Linux.
<ol style="list-style-type: lower-alpha">
<li>Tell linux where the shared libraries for OpenCV are located by entering the following shell command:<br />
<blockquote style="margin-left:-3em;"><p><code>export LD_LIBRARY_PATH=/usr/local/lib</code></p></blockquote>
<p>Add the command to your .bashrc file so that you don’t have to enter every time your start a new terminal.</p>
<p>Alternatively, you can configure the system wide library search path. Using your favorite editor, add a single line containing the text <code>/usr/local/lib</code> to the end of a file named <code>/etc/ld.so.conf.d/opencv.conf</code>. In the standard Ubuntu install, the opencv.conf file does not exist; you need to create it. Using vi, for example, enter the following commands:</p>
<blockquote style="margin-left:-3em;"><p><code>sudo vi /etc/ld.so.conf.d/opencv.conf<br />
G<br />
o<br />
/usr/local/lib<br />
&lt;Esc&gt;<br />
:wq!</code></p></blockquote>
<p>After editing the opencv.conf file, enter the following command:</p>
<blockquote style="margin-left:-3em;"><p><code>sudo ldconfig /etc/ld.so.conf</code></p></blockquote>
<p>.
   </li>
<li>Using your favorite editor, add the following two lines to the end of /etc/bash.bashrc:<br />
<blockquote style="margin-left:-3em;"><p><code>PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig<br />
export PKG_CONFIG_PATH</code></p></blockquote>
</li>
</ol>
</li>
</ol>
<p><!-- -------------------- DONE WITH LIST -------------------- --></p>
<p>After completing the previous steps, your system should be ready to compile code that uses the OpenCV libraries. The following example shows one way to compile code for OpenCV:</p>
<blockquote style="margin-left: 0px;"><p><code>g++ `pkg-config opencv --cflags` my_code.cpp  -o my_code `pkg-config opencv --libs` </code></p></blockquote>
<p>&nbsp;</p>
<h3>More Information</h3>
<ul>
<li>If you encounter problems installing OpenCV, see the companion guide, &#8220;<a href="http://ozbotz.org/opencv-install-troubleshooting/">A Comprehensive OpenCV Installation Troubleshooting Guide</a>.&#8221;</li>
<li>Utkarsh Sinha runs AiShack, a site that has easy-to-understand tutorials using OpenCV to solve real-world problems: <a href="http://www.aishack.in/topics/tutorials/">http://www.aishack.in/topics/tutorials/</a></li>
<li>Sebastian Montabone has several articles on installing OpenCV and image processing. His web site is <a href="http://www.samontab.com/">http://www.samontab.com/</a></li>
<li>FakeOutdoorsman’s posted an excellent dependency install guide, which is located on the Ubuntu forums: <a href="http://ubuntuforums.org/showthread.php?t=786095">http://ubuntuforums.org/showthread.php?t=786095</a></li>
</ul>
</div>
<p>The post <a rel="nofollow" href="http://www.ozbotz.org/opencv-installation/">A Comprehensive Guide to Installing and Configuring OpenCV 2.4.2 on Ubuntu</a> appeared first on <a rel="nofollow" href="http://www.ozbotz.org">OzBotz</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.ozbotz.org/opencv-installation/feed/</wfw:commentRss>
			<slash:comments>163</slash:comments>
		
		
			</item>
		<item>
		<title>A Simple Realtime Application on the PandaBoard: A 10 KHz Square Wave</title>
		<link>http://www.ozbotz.org/a-simplereal-time-application-on-pandaboard/</link>
					<comments>http://www.ozbotz.org/a-simplereal-time-application-on-pandaboard/#comments</comments>
		
		<dc:creator><![CDATA[Osman Eralp]]></dc:creator>
		<pubDate>Sun, 08 Apr 2012 21:44:19 +0000</pubDate>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[pandaboard]]></category>
		<category><![CDATA[realtime]]></category>
		<guid isPermaLink="false">http://www.ozbotz.org/?p=593</guid>

					<description><![CDATA[<p><img class=excerptimg src="/images/excerpts/panda.png" height=100>This post contains code that creates a 10 KHz square wave on one of the GPIO pins of a PandaBoard running the real-time Linux extensions. It is a proof of concept showing that the PandaBoard is suitable for real time applications. </p>
<p><a href="http://www.ozbotz.org/a-simplereal-time-application-on-pandaboard/"></p>
<div id="oz-read-more-button">Read More...</div>
<p></a></p>
<p>The post <a rel="nofollow" href="http://www.ozbotz.org/a-simplereal-time-application-on-pandaboard/">A Simple Realtime Application on the PandaBoard: &lt;br&gt;A 10 KHz Square Wave</a> appeared first on <a rel="nofollow" href="http://www.ozbotz.org">OzBotz</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>This post contains code that creates a 10 KHz square wave on one of the GPIO pins of a PandaBoard running the real-time Linux extensions. It is a proof of concept showing that the PandaBoard is suitable for real time applications.</p>
<p>The code used in this example is based on the swave.c program from the kernel.org RT wiki, which is located here: <a href="https://rt.wiki.kernel.org/articles/s/q/u/Squarewave-example.html">https://rt.wiki.kernel.org/articles/s/q/u/Squarewave-example.html</a>.</p>
<p>For instructions on how to run realtime Linux on your PandaBoard, refer to the tutorial that I posted on the Homebrew Robotics Club wiki titled “<a href="http://hbrobotics.org/wiki/index.php?title=Installing_Ubuntu_With_Real_Time_Patches_On_The_PandaBoard">Installing Ubuntu With Real Time Patches On The PandaBoard</a>.”</p>
<p>&nbsp;</p>
<h3>Code</h3>
<p>The following code is all that you need to create the square wave. Save the code in a file called swave_panda.c.</p>
<blockquote>
<pre style="font-size: 10px;">// file: swave_panda.c
/* compile using  "gcc -o swave_panda swave_panda.c -lrt -Wall"  */

#include &lt;stdlib.h&gt;
#include &lt;stdio.h&gt;
#include &lt;time.h&gt;
#include &lt;sched.h&gt;
#include &lt;sys/io.h&gt;
#include &lt;unistd.h&gt;

#include &lt;sys/types.h&gt;
#include &lt;sys/stat.h&gt;
#include &lt;fcntl.h&gt;
#include &lt;string.h&gt;

#define NSEC_PER_SEC    1000000000

/* using clock_nanosleep of librt */
extern int clock_nanosleep(clockid_t __clock_id, int __flags,
      __const struct timespec *__req,
      struct timespec *__rem);

static inline void tsnorm(struct timespec *ts) {
    while (ts-&gt;tv_nsec &gt;= NSEC_PER_SEC) {
        ts-&gt;tv_nsec -= NSEC_PER_SEC;
        ts-&gt;tv_sec++;
    }
}

int main( int argc, char** argv )
{
    struct timespec t;
    struct sched_param param;
    int interval=50000;  // 50000ns = 50us, cycle duration = 100us

    int fd;
    char zero_string[] = "0";
    char one_string[] = "1";
    char buffer[32];
    unsigned char value = 0;

    // Enable GPIO_32, which comes out pin 18 of J6. A list of available GPIOs
    // can be found in the PandaBoard System Reference Manual.
    {
        if ((fd = open("/sys/class/gpio/export", O_WRONLY | O_NDELAY, 0)) == 0) {
            printf("Error: Can't open /sys/class/gpio/export.\n");
            exit(1);
        }   
        strcpy( buffer, "32" );
        write( fd, buffer, strlen(buffer) );
        close(fd);
        printf("Added GPIO 32.\n");
    }

    // Set the direction of the GPIO to "out."
    {
        if ((fd = open("/sys/class/gpio/gpio32/direction", O_WRONLY | O_NDELAY, 0)) == 0) {
            printf("Error: Can't open /sys/class/gpio/gpio32/direction.\n");
            exit(1);
        }
        strcpy( buffer, "out" );
        write( fd, buffer, strlen(buffer) );
        close(fd);
        printf("Direction set to out.\n");
    }

    // Open the "value" node. We will write to it later.
    {
        if ((fd = open("/sys/class/gpio/gpio32/value", O_WRONLY | O_NDELAY, 0)) == 0) {
            printf("Error: Can't open /sys/class/gpio/gpio32/value.\n");
            exit(1);
        }   
        printf("Value opened for writing.\n");
    }

    if ( argc &gt;= 2 &amp;&amp; atoi(argv[1]) &gt; 0 ) {
        printf("Using realtime, priority: %d.\n",atoi(argv[1]));
        param.sched_priority = atoi(argv[1]);
        // Enable realtime fifo scheduling.
        if(sched_setscheduler(0, SCHED_FIFO, &amp;param)==-1){
            perror("Error: sched_setscheduler failed.");
            exit(-1);
        }
    }
    if ( argc &gt;= 3 )
        interval=atoi(argv[2]);

    clock_gettime(0,&amp;t); // Get current time.
    t.tv_sec++;          // Start after one second.

    while (1) {
        // wait untill next shot.
        clock_nanosleep(0, TIMER_ABSTIME, &amp;t, NULL);
        if(value) {
            write( fd, one_string, 1 );
            //printf("...value set to 1...\n");
        } else {
            write( fd, zero_string, 1 );
            //printf("...value set to 0...\n");
        }
        value = !value;
        // Calculate next shot.
        t.tv_nsec+=interval;
        tsnorm(&amp;t);
   }
   return 0;
}</pre>
</blockquote>
<p>Compile the program with the following command:</p>
<blockquote><p><code>gcc -o swave_panda swave_panda.c -lrt</code></p></blockquote>
<p>To run the program with a real time priority of 90, enter the following command:</p>
<blockquote><p><code>sudo ./swave_panda 90</code></p></blockquote>
<p>&nbsp;</p>
<h3>Hardware Setup</h3>
<p>To view the output on a oscilloscope, connect the probe to pin 18 on J6. You can find ground on pins 27 and 28 of J3.<br />
<a href="http://www.ozbotz.org/wp-content/uploads/2012/04/gpio32.png"><img decoding="async" class="ozimgleftmedium" title="gpio32" alt="" src="http://www.ozbotz.org/wp-content/uploads/2012/04/gpio32.png" /></a></p>
<p>&nbsp;</p>
<h3>Results</h3>
<p>After you run the program and connect your oscilloscope probe to pin 18, you should see a 10 KHz square wave, as shown in the following image.<br />
<a href="http://www.ozbotz.org/wp-content/uploads/2012/04/scope_10khz.png"><img decoding="async" class="ozimgleftlarge" title="scope_10khz" alt="" src="http://www.ozbotz.org/wp-content/uploads/2012/04/scope_10khz.png" /></a></p>
<p>The square wave is solid even when the system is under moderate load. Under heavy load, I can see a jitter of a few microseconds. I have yet to determine from where the jitter originates. I don&#8217;t know if there is some uncertainty in the kernel or if there is a uncertain amount of delay in the userspace GPIO drivers. None of my robots operate in conditions that are dangerous to humans or property, so I will probably be able to tolerate an uncertainty of a few microseconds. If you are designing a surgical robot, for example, a few microseconds of uncertainty might be too much. I will be investigating if this little bit of observed jitter can be reduced or eliminated.</p>
<p>&nbsp;</p>
<h3>More Informaion</h3>
<p>I am interested in creating more realtime applications for the PandaBoard. If you have any experience creating such programs and you have any advice to offer or you would like to exchange ideas, please send me an email or add a comment to this post.</p>
<p>The post <a rel="nofollow" href="http://www.ozbotz.org/a-simplereal-time-application-on-pandaboard/">A Simple Realtime Application on the PandaBoard: &lt;br&gt;A 10 KHz Square Wave</a> appeared first on <a rel="nofollow" href="http://www.ozbotz.org">OzBotz</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.ozbotz.org/a-simplereal-time-application-on-pandaboard/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
		<item>
		<title>Installing Ubuntu With Real Time Patches On The PandaBoard</title>
		<link>http://www.ozbotz.org/installing-ubuntu-with-real-time-patches-on-the-pandaboard/</link>
					<comments>http://www.ozbotz.org/installing-ubuntu-with-real-time-patches-on-the-pandaboard/#comments</comments>
		
		<dc:creator><![CDATA[Osman Eralp]]></dc:creator>
		<pubDate>Sat, 25 Feb 2012 05:25:25 +0000</pubDate>
				<category><![CDATA[PandaBoard]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[pandaboard]]></category>
		<category><![CDATA[realtime]]></category>
		<category><![CDATA[rt]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">http://www.ozbotz.org/?p=578</guid>

					<description><![CDATA[<p><img class="excerptimg" src="/images/excerpts/news-icon.png" alt="" height="100" />I just posted a tutorial on the Silicon Valley HomeBrew Robotics Club Wiki entitled <a href="http://hbrobotics.org/wiki/index.php?title=Installing_Ubuntu_With_Real_Time_Patches_On_The_PandaBoard" target="_blank">Installing Ubuntu With Real Time Patches On The PandaBoard</a>. In addition to instruction for installing Ubuntu from scratch, which is also described in my <a href="http://www.ozbotz.org/install-ubuntu-on-a-pandaboard-in-less-than-15-minutes/">recent post on ozbotz.org</a>, the tutorial explains how to compile a new kernel from source and test the latency of the OS. </p>
<p><a href="http://www.ozbotz.org/installing-ubuntu-with-real-time-patches-on-the-pandaboard/"></p>
<div id="oz-read-more-button">Read More...</div>
<p></a></p>
<p>The post <a rel="nofollow" href="http://www.ozbotz.org/installing-ubuntu-with-real-time-patches-on-the-pandaboard/">Installing Ubuntu With Real Time Patches On The PandaBoard</a> appeared first on <a rel="nofollow" href="http://www.ozbotz.org">OzBotz</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>I posted a tutorial on the Silicon Valley HomeBrew Robotics Club Wiki entitled <a href="http://hbrobotics.org/wiki/index.php?title=Installing_Ubuntu_With_Real_Time_Patches_On_The_PandaBoard" target="_blank">Installing Ubuntu With Real Time Patches On The PandaBoard</a>. The tutorial explains how to compile a new kernel from source and test the latency of the OS. Instructions for installing Ubuntu from scratch are listed in my <a href="http://www.ozbotz.org/install-ubuntu-on-a-pandaboard-in-less-than-15-minutes/">recent post on ozbotz.org</a>.</p>
<p>Update October 9, 2014: The Homebrew Robotics Wiki is down. An archived copy of the tutorial from the Wiki is repeated below.</p>
<p>&nbsp;</p>
<div>
<h1 style="color: #000000;">Installing Ubuntu With Real Time Patches On The PandaBoard</h1>
<div style="color: #000000;">
<p>This tutorial describes how to install on the PandaBoard a version of Ubuntu with the real time kernel patches. The tutorial includes instructions for installing Ubuntu from scratch, compiling a new kernel from source, and testing the latency of the system with the real time patches.</p>
<table>
<tbody>
<tr>
<td>
<div>
<h2>Contents</h2>
<p>[<a style="color: #5a3696;">hide</a>]</p>
</div>
<ul>
<li><a style="color: #5a3696;" href="http://hbrobotics.org/wiki/index.php?title=Installing_Ubuntu_With_Real_Time_Patches_On_The_PandaBoard#Prerequisites">1 Prerequisites</a></li>
<li><a style="color: #5a3696;" href="http://hbrobotics.org/wiki/index.php?title=Installing_Ubuntu_With_Real_Time_Patches_On_The_PandaBoard#Installing_The_TI_OMAP4_Version_Of_Ubuntu">2 Installing The TI OMAP4 Version Of Ubuntu</a></li>
<li><a style="color: #5a3696;" href="http://hbrobotics.org/wiki/index.php?title=Installing_Ubuntu_With_Real_Time_Patches_On_The_PandaBoard#Configuring_Ubuntu">3 Configuring Ubuntu</a></li>
<li><a style="color: #5a3696;" href="http://hbrobotics.org/wiki/index.php?title=Installing_Ubuntu_With_Real_Time_Patches_On_The_PandaBoard#Building_A_New_Kernel_From_Source">4 Building A New Kernel From Source</a></li>
<li><a style="color: #5a3696;" href="http://hbrobotics.org/wiki/index.php?title=Installing_Ubuntu_With_Real_Time_Patches_On_The_PandaBoard#Verifying_That_The_Build_Was_Successful">5 Verifying That The Build Was Successful</a></li>
<li><a style="color: #5a3696;" href="http://hbrobotics.org/wiki/index.php?title=Installing_Ubuntu_With_Real_Time_Patches_On_The_PandaBoard#Acknowledgments">6 Acknowledgments</a></li>
<li><a style="color: #5a3696;" href="http://hbrobotics.org/wiki/index.php?title=Installing_Ubuntu_With_Real_Time_Patches_On_The_PandaBoard#More_Information">7 More Information</a></li>
</ul>
</td>
</tr>
</tbody>
</table>
<h2>[<a style="color: #5a3696;" title="Edit section: Prerequisites" href="http://hbrobotics.org/wiki/index.php?title=Installing_Ubuntu_With_Real_Time_Patches_On_The_PandaBoard&amp;amp;action=edit&amp;amp;section=1">edit</a>]Prerequisites</h2>
<p>To complete this tutorial, you need</p>
<ul>
<li>A PandaBoard.</li>
<li>An SD card, preferably 16 GB or larger.</li>
<li>A Linux build system.</li>
<li>A way to access a command prompt on the PandaBoard. You have two choices:
<ul>
<li>Connect your build system to the PandaBoard with a serial cable, and use a program such as minicom.</li>
<li>Connect a monitor and keyboard to the PandaBoard.</li>
</ul>
</li>
</ul>
<h2>[<a style="color: #5a3696;" title="Edit section: Installing The TI OMAP4 Version Of Ubuntu" href="http://hbrobotics.org/wiki/index.php?title=Installing_Ubuntu_With_Real_Time_Patches_On_The_PandaBoard&amp;amp;action=edit&amp;amp;section=2">edit</a>]Installing The TI OMAP4 Version Of Ubuntu</h2>
<p>This section describes how to install the &#8220;preinstalled&#8221; version of Ubuntu for the TI OMAP4 processor, which is the processor on the PandaBoard. You can install either a desktop image or a server image. The desktop image contains the Gnome desktop manager, which enables you to use your PandaBoard like a PC. The server image does not include a window manager: interaction with the OS is through a command prompt. The server image is appropriate for a robot that doesn&#8217;t need the ovehead of a graphical desktop. This tutorial uses the server image. If you prefer to use the desktop image, replace &#8220;server&#8221; with &#8220;desktop&#8221; in the steps below.</p>
<p>To install the Ubuntu image, complete the following steps.</p>
<ol>
<li>Download the latest Ubuntu Texas Instruments OMAP4 preinstalled server image from <a style="color: #3366bb;" href="http://cdimage.ubuntu.com/releases/11.10/release" rel="nofollow">http://cdimage.ubuntu.com/releases/11.10/release</a>.</li>
<li>Mount an SD card, and make note of the path to the mount point. It might look like /dev/sdc, for example. The last letter should be something other than an &#8220;a.&#8221; The /dev/sda node points to you primary drive; if you copy the Ubuntu image to /dev/sda, you will erase your drive.</li>
<li>Write the Ubuntu image to the SD card by entering the following command:
<dl>
<dd>
<pre>sudo sh -c 'zcat ./ubuntu-11.10-preinstalled-server-armel+omap4.img.gz | dd bs=4M of=/dev/sdx ; sync'
</pre>
</dd>
<dt >Replace /dev/sdx with the path to your SD card.</dt>
</dl>
</li>
</ol>
<p>At this point, you have a clean version of Ubuntu on the SD card, but it needs to be configured, which you will do in the next section.</p>
<h2>[<a style="color: #5a3696;" title="Edit section: Configuring Ubuntu" href="http://hbrobotics.org/wiki/index.php?title=Installing_Ubuntu_With_Real_Time_Patches_On_The_PandaBoard&amp;amp;action=edit&amp;amp;section=3">edit</a>]Configuring Ubuntu</h2>
<p>To configure Ubuntu, complete the following steps.</p>
<ol>
<li>Make sure you will be able to access a command prompt on the PandaBoard either by connecting a serial cable to the PandaBoard or by attaching a monitor, keyboard, and mouse.</li>
<li>Inset the SD card containing the Ubuntu image into the PandaBoard.</li>
<li>Apply power to the PandaBoard.</li>
<li>When prompted, answer the Ubuntu configuration questions.</li>
<li>Approximately five minutes after answering the last question, the PandaBoard will reboot and display a log in prompt.
<dl>
<dd>Note: There is a bug in the Ubuntu configuration that causes the configuration to start again after the reboot. If you are presented with the configuration questions again after the PandaBoard reboots, mount the sd card on your build system and delete the file /var/lib/oem-config/run.</dd>
</dl>
</li>
<li>Verify that you can log in using the user name and password that you created during the configuration.</li>
</ol>
<p>At this point, you have a functional version of Ubuntu running on your PandaBoard. If you don&#8217;t need real time behavior, you can stop reading this tutorial. In the next section, you will build a new kernel and apply the real time patches.</p>
<h2>[<a style="color: #5a3696;" title="Edit section: Building A New Kernel From Source" href="http://hbrobotics.org/wiki/index.php?title=Installing_Ubuntu_With_Real_Time_Patches_On_The_PandaBoard&amp;amp;action=edit&amp;amp;section=4">edit</a>]Building A New Kernel From Source</h2>
<p>This section describes how to build a new version of the kernel that includes the real time patches.</p>
<p>To build the new kernel, complete the following steps:</p>
<ol>
<li>On your build system, create a new directory, and change to the directory.
<dl>
<dd>
<pre>mkdir src ; cd src
</pre>
</dd>
</dl>
</li>
<li>Download to the current directory the 3.0.0.1206-13 source from <a style="color: #3366bb;" href="http://kernel.ubuntu.com/git?p=ubuntu/ubuntu-oneiric.git;a=snapshot;h=7bca30b176890e62ec0ff3fc3678e10459148111;sf=tgz" rel="nofollow">http://kernel.ubuntu.com/git?p=ubuntu/ubuntu-oneiric.git;a=snapshot;h=7bca30b176890e62ec0ff3fc3678e10459148111;sf=tgz</a>.</li>
<li>Extract the files from the tar file.
<dl>
<dd>
<pre>tar xvf ubuntu-oneiric-7bca30b.tar.gz
</pre>
</dd>
</dl>
</li>
<li>Download to the current directory the real time patches: <a style="color: #5a3696;" title="File:Patch-3.0.9-rt26.patch.doc" href="http://hbrobotics.org/wiki/index.php?title=File:Patch-3.0.9-rt26.patch.doc">File:Patch-3.0.9-rt26.patch.doc</a>. Rename the file to patch-3.0.9-rt26.patch.</li>
<li>Extract the patch files.
<dl>
<dd>
<pre>gzip -d patch-3.0.9-rt26.patch.gz
</pre>
</dd>
</dl>
</li>
<li>Download to the current directory the high-resolution timer patch: <a style="color: #5a3696;" title="File:High-res-timer.patch.doc" href="http://hbrobotics.org/wiki/index.php?title=File:High-res-timer.patch.doc">File:High-res-timer.patch.doc</a>. Rename the file to high-res-timer.patch.</li>
<li>Change to kernel source directory that you just extracted.
<dl>
<dd>
<pre>cd ubuntu-oneiric-7bca30b
</pre>
</dd>
</dl>
</li>
<li>Apply the real time patches.
<dl>
<dd>
<pre>patch -p1 &lt; ../patch-3.0.9-rt26.patch
</pre>
</dd>
<dt>Make sure there are no failing hunks.</dt>
</dl>
</li>
<li>Apply the real time patches.
<dl>
<dd>
<pre>patch -p1 &lt; ../high-res-timer.patch
</pre>
</dd>
</dl>
</li>
<li>Correct an error in one of the source files by adding &#8220;#include &lt;linux/cache.h&gt;&#8221; to the file ./security/apparmor/sid.c.</li>
<li>Download the .config file: <a style="color: #5a3696;" title="File:Config.doc" href="http://hbrobotics.org/wiki/index.php?title=File:Config.doc">File:Config.doc</a>. Rename the file to .config. Don&#8217;t forget the dot before &#8220;config&#8221;.</li>
<li>Start the menu-based configuration tool.
<dl>
<dd>
<pre>make ARCH=arm menuconfig
</pre>
</dd>
</dl>
</li>
<li>In the configuration tool, change &#8220;Kernel Features &#8212;&gt; Preemption Model&#8221; to Fully Preemptible Kernel and change &#8220;System Type &#8212;&gt; TI OMAP Common Features &#8212;&gt; Use 32KHz timer&#8221; to excluded (no asterisk).</li>
<li>Exit the configuration tool. Save the new .config file when prompted.</li>
<li>Compile the new uImage file.
<dl>
<dd>
<pre>make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- uImage
</pre>
</dd>
<dt>If necessary, change &#8220;arm-linux-gnueabi-&#8221; to the name required by your cross compiler.</dt>
</dl>
</li>
<li>Compile the new module files.
<dl>
<dd>
<pre>make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules
</pre>
</dd>
</dl>
</li>
<li>&#8220;Install&#8221; the modules files in a directory called mymodules. You will copy the module files to the SD card later in this procedure.
<dl>
<dd>
<pre>INSTALL_MOD_PATH=./mymodules make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules_install
</pre>
</dd>
</dl>
</li>
<li>Insert SD card into card reader on build system.</li>
<li>Mount the partitions on the SD card. In the following commands, replace sdc with the actual path to the SD card partitions on your system.
<dl>
<dd>
<pre>sudo mkdir /media/1
</pre>
</dd>
<dd>
<pre>sudo mount /dev/sdc1 1
</pre>
</dd>
<dd>
<pre>sudo mkdir /media/2
</pre>
</dd>
<dd>
<pre>sudo mount /dev/sdc2 2
</pre>
</dd>
<dt >If the mount command fails, check if your OS automatically mounted the partitions when you inserted the SD card. If the OS did mount the partitions automatically, either unmount the partitions and remount them using the commands above or use the mounted paths instead of /media/1 and /media/2 in the following steps.</dt>
</dl>
</li>
<li>Copy the uImage and the new modules directory to the SD card.
<dl>
<dd>
<pre>cp ./arch/arm/boot/uImage /media/1
</pre>
</dd>
<dd>
<pre>cp -r ./mymodules/lib/modules/3.0.9-rt26 /media/2/lib/modules
</pre>
</dd>
</dl>
</li>
<li>Unmount the SD card partitions.
<dl>
<dd>
<pre>sudo umount /media/1
</pre>
</dd>
<dd>
<pre>sudo umount /media/2
</pre>
</dd>
</dl>
</li>
</ol>
<p>At this point, the SD card contains a working version of Ubuntu for the PandaBoard with the real time patches. You can now remove the SD card from the build system and insert it into the PandaBoard.</p>
<h2>[<a style="color: #5a3696;" title="Edit section: Verifying That The Build Was Successful" href="http://hbrobotics.org/wiki/index.php?title=Installing_Ubuntu_With_Real_Time_Patches_On_The_PandaBoard&amp;amp;action=edit&amp;amp;section=5">edit</a>]Verifying That The Build Was Successful</h2>
<p>To verify the successful application of the real time patches, insert the SD into the PandaBoard and apply power. Log in, open a terminal, and run &#8220;uname -r&#8221;. If the command returns &#8220;3.0.9-rt26,&#8221; you have successfully applied the real time patches.</p>
<p>To check the latency of the OS, run the cyclictest tool. You can download and build cyclictest by running the following commands:</p>
<pre>git clone git://git.kernel.org/pub/scm/linux/kernel/git/clrkwllms/rt-tests.git
cd rt-tests
make
</pre>
<p>The output of cyclictest <i>before</i> applying the real time patches shows a latency of about 14 ms:</p>
<pre>root@panda1:~# sudo cyclictest -t1 -p99 -n -i 100 -l 10000
policy: fifo: loadavg: 0.00 0.01 0.05 1/277 1542         
T: 0 ( 1542) P:99 I:100 C:  10000 Min:      0 Act: 1701 Avg:  729 Max:   14157
</pre>
<p>The output of cyclictest <i>after</i> applying the real time patches shows a latency of 40 us:</p>
<pre>root@panda1:~# sudo cyclictest -t1 -p99 -n -i 100 -l 10000
policy: fifo: loadavg: 1.62 1.59 0.70 1/308 1738         
T: 0 ( 1738) P:99 I:100 C:  10000 Min:     11 Act:   12 Avg:   12 Max:      40
</pre>
<p>&nbsp;</p>
<h2>[<a style="color: #5a3696;" title="Edit section: Acknowledgments" href="http://hbrobotics.org/wiki/index.php?title=Installing_Ubuntu_With_Real_Time_Patches_On_The_PandaBoard&amp;amp;action=edit&amp;amp;section=6">edit</a>]Acknowledgments</h2>
<p>Many thanks to the members of the Robot Reference Platform mailing list and the linux-rt-users mailing list for providing valuable information that helped create this tutorial. In particular, thanks go to Bob Smith for creating the config file and to Sankara Muthukrishnan for creating the high-resolution timer patch. &#8211;Osman Eralp</p>
<h2>[<a style="color: #5a3696;" title="Edit section: More Information" href="http://hbrobotics.org/wiki/index.php?title=Installing_Ubuntu_With_Real_Time_Patches_On_The_PandaBoard&amp;amp;action=edit&amp;amp;section=7">edit</a>]More Information</h2>
<p>If you have any questions about this procedure, please send a message to the RRP mailing list: <a style="color: #3366bb;" href="http://groups.google.com/group/robotreferenceplatform" rel="nofollow">http://groups.google.com/group/robotreferenceplatform</a>. You can also track me (Osman) down at the HBRC main monthly meeting or SIG meeting.</p>
</div>
</div>
<p>The post <a rel="nofollow" href="http://www.ozbotz.org/installing-ubuntu-with-real-time-patches-on-the-pandaboard/">Installing Ubuntu With Real Time Patches On The PandaBoard</a> appeared first on <a rel="nofollow" href="http://www.ozbotz.org">OzBotz</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.ozbotz.org/installing-ubuntu-with-real-time-patches-on-the-pandaboard/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
	</channel>
</rss>
