<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.0.4" -->
<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/"
	>

<channel>
	<title>blog.lorneswork.com</title>
	<link>http://www.lorneswork.com/blog</link>
	<description>where art meets technology</description>
	<pubDate>Sat, 25 Nov 2006 08:46:02 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.4</generator>
	<language>en</language>
			<item>
		<title>UAV Current Design</title>
		<link>http://www.lorneswork.com/blog/2006/11/25/uav-current-design/</link>
		<comments>http://www.lorneswork.com/blog/2006/11/25/uav-current-design/#comments</comments>
		<pubDate>Sat, 25 Nov 2006 08:46:02 +0000</pubDate>
		<dc:creator>lorne</dc:creator>
		
	<category>project</category>
	<category>uav</category>
		<guid isPermaLink="false">http://www.lorneswork.com/blog/2006/11/25/uav-current-design/</guid>
		<description><![CDATA[The current design, (and I stress current, because it changes every 3 weeks), is built around a PIC18F2550. This is one of Microchips USB-enabled devices, which means that new firmware or flight-plans etc. can be uploaded to it in seconds from any computer with a USB port. You know you waaaaant it.



The microcontroller reads serial [...]]]></description>
			<content:encoded><![CDATA[<p>The current design, (and I stress current, because it changes every 3 weeks), is built around a <a target="_blank" href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&#038;nodeId=1335&#038;dDocName=en010280">PIC18F2550</a>. This is one of Microchips USB-enabled devices, which means that new firmware or flight-plans etc. can be uploaded to it in seconds from any computer with a USB port. You know you waaaaant it.</p>
<p><a class="tt-flickr" href="http://www.flickr.com/photos/spacecookies/305554078/"></p>
<div style="text-align: center"><img width="240" height="180" border="0" alt="2006-11-25 00.30.55" src="http://static.flickr.com/105/305554078_14c6d0eaa6_m.jpg" /></div>
<p></a></p>
<p>The microcontroller reads serial data from a <a target="_blank" href="http://www.sony.co.jp/~semicon/english/img/sony01/a6808472.pdf">cxd2951</a> GPS unit (a Polstar PGM-111 to be specific). This gives it the aircrafts position, heading and speed, once every second. The microcontroller also reads pulse-widths from a Memsic <a target="_blank" href="http://www.memsic.com/memsic/data/products/MXD2125ML/mxd2125gl_hl_nl_ml.pdf">mxd2125gl</a> dual-axis accelerometer. This gives it the aircrafts orientation (pitch, and roll). The desired heading to the target waypoint is calculated using <a target="_blank" title="Everything you never wanted to know" href="http://williams.best.vwh.net/avform.htm">great circle navigation</a>, which accounts for the curvature of the Earth. This is totally over-kill, since the plane will never be going farther than a few hundred meters, but it was fun to write, and I have the processing power to spare (for now). The microcontroller also generates output pulses for the 5 servos - ailerons, elevator, rudder, motor, and a special function.</p>
<p>One of my current challenges is adding support for remote-control flight. I’d like to be able to assume control of the plane using a standard RC transmitter for take-offs, landings, and if ever the CPU should go haywire (not that I’d be able to fly it any better). I started by hacking open my <a target="_blank" href="http://www.hitecrcd.com/Receivers/supremeairRX.htm">HiTec HFD-08RD Receiver</a>, and (with the help of my oscilloscope) found a pin with the RF signal before it’s demultiplexed out to the individual servos. I soldered a wire onto that pin, and ran it to an input on the microcontroller. Hopefully, I’ll be able to develop an algorithm to tell the difference between a clear signal and static. I can then have it switch to manual-pilot if there’s a signal, and revert to autopilot when it’s just static.</p>
<p>There are two potential problems I can foresee with the current design. The first is that the accelerometers are probably too sensitive to acceleration. Yeah, I realize how dumb that sounds. I’m using the accelerometers as tilt-meters (measuring just the acceleration due to gravity). Unfortunately if the plane is buffeted around, or makes a tight turn, those accelerations will be read as well, and interpreted (incorrectly) as rotations. The solution, as it was discovered during the Apollo program, is to add some gyroscopes to the mix, and push all the data through a <a target="_blank" href="http://en.wikipedia.org/wiki/Kalman_filter">Kalman Filter</a>. I should doubt very much that I have that kind of processing power, but we’ll see. Perhaps it won’t be necessary.</p>
<p>The second problem is that the microcontroller is outputting increasingly inaccurate pulse-widths to the servos.  As I add features, more and more interrupts vie for the CPU’s time, and eventually it happens that the CPU is busy when it should be switching on or off a servo signal. It’s not too bad yet – just a slight twitch in the servos every few seconds. If it degrades further though, I’ll have to include a separate microcontroller for handling the pulses.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.lorneswork.com/blog/2006/11/25/uav-current-design/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>History of the UAV</title>
		<link>http://www.lorneswork.com/blog/2006/11/10/history-of-the-uav/</link>
		<comments>http://www.lorneswork.com/blog/2006/11/10/history-of-the-uav/#comments</comments>
		<pubDate>Sat, 11 Nov 2006 02:59:53 +0000</pubDate>
		<dc:creator>lorne</dc:creator>
		
	<category>project</category>
	<category>uav</category>
		<guid isPermaLink="false">http://www.lorneswork.com/blog/2006/11/10/history-of-the-uav/</guid>
		<description><![CDATA[I should have kept a blog from the beginning, because it’s almost impossible now for me to relate (or even remember) everything that’s happened.
I started out with a Basic Atom (a rip-off of the famous Basic Stamp), which was a great decision. It worked right out of the box, and provided a good introduction to [...]]]></description>
			<content:encoded><![CDATA[<p>I should have kept a blog from the beginning, because it’s almost impossible now for me to relate (or even remember) everything that’s happened.</p>
<p class="MsoNormal">I started out with a <a target="_blank" href="http://www.basicmicro.com/Category.aspx?CategoryID=1">Basic Atom</a> (a rip-off of the famous <a target="_blank" href="http://www.parallax.com/html_pages/products/basicstamps/basic_stamps.asp">Basic Stamp</a>), which was a great decision. It worked right out of the box, and provided a good introduction to the world of microcontrollers. It wasn’t long though before I had out-grown it. There were no methods for floating-point math, so SIN and COS were pretty-well out of the question. The syntax of BASIC was also starting to drive me mad.</p>
<p class="MsoNormal">With my new-found knowledge of microcontrollers, I started assembling my own version of the Basic Atom. I <a title="This is the most awesome service I've ever had the pleasure of using." target="_blank" href="http://sample.microchip.com/">sampled</a> some PICs from <a target="_blank" href="http://www.microchip.com/">Microchip</a>, ordered some parts from <a target="_blank" href="http://www.digikey.com/">Digi-Key</a>, and put them together on a breadboard. To my utter astonishment, it worked! I had a blinking LED! (the &#8220;Hello World&#8221; of hardware)</p>
<p class="MsoNormal">For a while I flirted with <a target="_blank" href="http://www.mikroelektronika.co.yu/">Mikroelektronika</a>’s C compiler / IDE. That was probably the biggest mistake I’ve made on this project. The Mikroelektronika compiler is crap. Compile the same code multiple times, and you’ll get different hex sizes and checksums (some of which run correctly - most of which don’t). After spending weeks chasing compiler ghosts, and fruitlessly tinkering with broken libraries, I finally gave up and switched to Microchip&#8217;s <a target="_blank" href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&#038;nodeId=1406&#038;dDocName=en019469&#038;part=SW007002">MPLAB</a>. I should have known that the only tools to use would be the “official” ones. I’ve never found a broken library or had unexplainable behavior since.</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.lorneswork.com/blog/2006/11/10/history-of-the-uav/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>The UAV</title>
		<link>http://www.lorneswork.com/blog/2006/11/05/the-uav/</link>
		<comments>http://www.lorneswork.com/blog/2006/11/05/the-uav/#comments</comments>
		<pubDate>Mon, 06 Nov 2006 02:20:42 +0000</pubDate>
		<dc:creator>lorne</dc:creator>
		
	<category>project</category>
	<category>uav</category>
		<guid isPermaLink="false">http://www.lorneswork.com/blog/2006/11/05/the-uav/</guid>
		<description><![CDATA[I think it&#8217;s time to introduce another project I&#8217;ve been working on. One day, near the start of summer &#8216;05, I was hanging out with my friend Colin. He&#8217;s a mechanical engineer, and I&#8217;m a computer scientist so we tend to talk about some pretty nerdy stuff. Trying to break our boredom, he hit upon [...]]]></description>
			<content:encoded><![CDATA[<p>I think it&#8217;s time to introduce another project I&#8217;ve been working on. One day, near the start of summer &#8216;05, I was hanging out with my friend Colin. He&#8217;s a mechanical engineer, and I&#8217;m a computer scientist so we tend to talk about some pretty nerdy stuff. Trying to break our boredom, he hit upon the idea of building an RC plane. This sounded fun, but just wasn&#8217;t high-tech enough for me. People have been flying RC planes since the 1950&#8217;s&#8230; big deal. A <a title="Unmanned aerial vehicle" target="_blank" href="http://en.wikipedia.org/wiki/UAV">UAV</a> though! Now THAT would take our project into the 21st century.</p>
<p>And so the project was born. The goal: to build and fly a UAV. Sure you can buy them ready-to-fly, but for $4000 who can afford it? Hobbies are supposed to be about wasting your time, not your money&#8230; and has this one ever. It will soon be 2 years since we sat by his pool, tossing around ideas, and it still isn&#8217;t finished.</p>
<p>The last 19 months have been a strange journey: diving head-long into things I knew nothing about, accumulating a strange assortment of electronics on my desk (now workbench), and learning that there’s a kind of “art” to programming under-powered microcontrollers.</p>
<p class="MsoNormal">I’ll see if I can summarize the project&#8217;s &#8220;troubled&#8221; history in my next post.</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.lorneswork.com/blog/2006/11/05/the-uav/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Convopi Platform</title>
		<link>http://www.lorneswork.com/blog/2006/10/27/convopi-platform/</link>
		<comments>http://www.lorneswork.com/blog/2006/10/27/convopi-platform/#comments</comments>
		<pubDate>Sat, 28 Oct 2006 04:09:38 +0000</pubDate>
		<dc:creator>lorne</dc:creator>
		
	<category>school</category>
	<category>project</category>
	<category>convopi</category>
		<guid isPermaLink="false">http://www.lorneswork.com/blog/2006/10/27/convopi-platform/</guid>
		<description><![CDATA[Ideally The Conversation Piece (which I will hereby mercifully shorten to “Convopi”) would run some tiny flavor of Linux – just enough to get the job done. It would also run entirely on Open Source, BSD-licensed technology. Realistically though, we have a prototype due Nov. 20th, and I need to cut corners.
And so, as it [...]]]></description>
			<content:encoded><![CDATA[<p>Ideally The Conversation Piece (which I will hereby mercifully shorten to “Convopi”) would run some tiny flavor of Linux – just enough to get the job done. It would also run entirely on Open Source, BSD-licensed technology. Realistically though, we have a prototype due Nov. 20th, and I need to cut corners.</p>
<p>And so, as it stands Microsoft would make a killing from licenses if this product ever hit the market. We’re running Windows XP, a copy of Office 2003 (yes, just for the speech recognition engine), and .NET 3.0. I was considering Vista which has a speech recognition engine built-in, but the laptop has “only” 256MB of RAM. Vista demands 512MB before it will install. Now, that’s some serious tom foolery!</p>
<p>The one thing I can say about using .NET / Visual Studio 2005 is that it sure makes life easy. With its plentiful libraries and tools, it can do in 100 lines what many platforms would in 1000. Even more impressive, the learning curve lasted about 10 minutes. I swear I could train a monkey could do this. I feel a little guilty (okay, a lot guilty), but I suppose this is really the future. Software is becoming too complex for anyone to write from the bottom up.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.lorneswork.com/blog/2006/10/27/convopi-platform/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Unholy Creation</title>
		<link>http://www.lorneswork.com/blog/2006/10/26/unholy-creation/</link>
		<comments>http://www.lorneswork.com/blog/2006/10/26/unholy-creation/#comments</comments>
		<pubDate>Fri, 27 Oct 2006 04:57:20 +0000</pubDate>
		<dc:creator>lorne</dc:creator>
		
	<category>school</category>
	<category>project</category>
	<category>convopi</category>
		<guid isPermaLink="false">http://www.lorneswork.com/blog/2006/10/26/unholy-creation/</guid>
		<description><![CDATA[The technical challenges in making The Conversation Piece a reality are enormous. On the hardware side, it needs to be small, powerful, and attractive – things computers generally, well, aren’t.
On the software side, it&#8217;s even more miserable: speech recognition, text-to-speech, internet connectivity, and some kind of yet-to-be-invented “topic-jisting” AI. Worse than all that though, it’s [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal">The technical challenges in making The Conversation Piece a reality are enormous. On the hardware side, it needs to be small, powerful, and attractive – things computers generally, well, <a target="_blank" href="http://en.wikipedia.org/wiki/Image:Eniac.jpg">aren’t</a>.</p>
<p class="MsoNormal">On the software side, it&#8217;s even more miserable: speech recognition, text-to-speech, internet connectivity, and some kind of yet-to-be-invented “topic-jisting” AI. Worse than all that though, it’s got to be dead simple. No setup, no updates, no GUI, and definitely no <a target="_blank" title="Somehow it just doesn't evoke the same fear in this context..." href="http://kaosgeek.baliwae.com/produk/bsod/BOS-pake-kaos-BSOD.jpg">BSOD</a> – “grandma” (god bless her) has never even heard of it, and I want to keep it that way.</p>
<p class="MsoNormal">The project is already well underway so thankfully most of these problems have a solution. The hardware for the prototype will be an old laptop donated by teammate <a title="Your sacrifice will be remembered." target="_blank" href="http://sheakoshan.net/">Tanya</a>. I pulled it apart a few weeks ago, and found myself with this unholy creation:</p>
<p class="MsoNormal"><a onclick="return silas_showOptions(280452491);" href="http://www.flickr.com/photos/spacecookies/280452491/" /><a class="tt-flickr" href="http://www.flickr.com/photos/spacecookies/280452491/" /></p>
<div style="text-align: center"><a target="_blank" href="http://www.flickr.com/photos/spacecookies/280452491/"><img width="240" height="180" border="0" alt="2006-10-17 17.36.24" src="http://static.flickr.com/107/280452491_657bbaeea2_m.jpg" /></a></div>
<p class="MsoNormal">Tanya and <a title="Celtic music scene? Actually, they're pretty good." target="_blank" href="http://www.mutinymusic.cjb.net/">Nate</a> will be figuring out how to mount that into a picture frame, while I concentrate on the software. More to come on that.</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.lorneswork.com/blog/2006/10/26/unholy-creation/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>The Conversation Piece</title>
		<link>http://www.lorneswork.com/blog/2006/10/25/the-conversation-piece/</link>
		<comments>http://www.lorneswork.com/blog/2006/10/25/the-conversation-piece/#comments</comments>
		<pubDate>Thu, 26 Oct 2006 02:34:48 +0000</pubDate>
		<dc:creator>lorne</dc:creator>
		
	<category>school</category>
	<category>project</category>
	<category>convopi</category>
		<guid isPermaLink="false">http://www.lorneswork.com/blog/2006/10/25/the-conversation-piece/</guid>
		<description><![CDATA[This semester I&#8217;m taking IAT 400. It&#8217;s a project course where students, &#8220;work in teams to develop an artistic or product-based design addressing a complex problem&#8221;. My team is working on a digital-picture-frame-like device we&#8217;re calling &#8220;The Conversation Piece&#8221;. Using speech recognition technology, it will eavesdrop on ones conversation, and then display relevant images from [...]]]></description>
			<content:encoded><![CDATA[<p>This semester I&#8217;m taking <a href="http://www.siat.sfu.ca/resources/undergraduatecourses/1067/IAT%20400.pdf" target="_blank">IAT 400</a>. It&#8217;s a project course where students, &#8220;work in teams to develop an artistic or product-based design addressing a complex problem&#8221;. My team is working on a <a href="http://en.wikipedia.org/wiki/Digital_picture_frame">digital-picture-frame</a>-like device we&#8217;re calling &#8220;The Conversation Piece&#8221;. Using speech recognition technology, it will eavesdrop on ones conversation, and then display relevant images from a photo-sharing site like <a href="http://www.flickr.com/">Flickr</a>.</p>
<p>One would put this product in a living room, waiting room, or any space where people tend to congregate and chat. As they do, The Conversation Piece will illustrate their dialog, enhancing the conversation and perhaps taking the discussion in new and interesting directions. At the very least, it should give people something to talk about besides the weather.</p>
<p>In another mode, The Conversation Piece will act like a regular digital picture frame, showing photos from ones own Flickr account. This will also make use of the speech interface though for quick and easy navigation. For instance a command like, &#8220;Show Lorne&#8221; would show pictures from my Flickr account tagged with &#8220;Lorne&#8221;. The command, &#8220;Show Lorne hiking&#8221; would show pictures tagged with both &#8220;Lorne&#8221; and &#8220;Hiking&#8221;. In this way the product should be simple to use, even for &#8220;Grandma&#8221; who has little or no computer experience.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.lorneswork.com/blog/2006/10/25/the-conversation-piece/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Hello world!</title>
		<link>http://www.lorneswork.com/blog/2006/10/24/hello-world/</link>
		<comments>http://www.lorneswork.com/blog/2006/10/24/hello-world/#comments</comments>
		<pubDate>Tue, 24 Oct 2006 23:42:28 +0000</pubDate>
		<dc:creator>lorne</dc:creator>
		
	<category>Uncategorized</category>
		<guid isPermaLink="false">http://www.lorneswork.com/blog/2006/10/24/hello-world/</guid>
		<description><![CDATA[I suppose the logical question to ask at this juncture is, &#8220;Why am I starting a blog?&#8221;. Well first, I&#8217;m required to create a blog for my IAT 401 class this semester. If I were only interested in getting the credits though, I&#8217;d just make a MySpace account, post a few &#8220;Emo&#8221; entries about how [...]]]></description>
			<content:encoded><![CDATA[<p>I suppose the logical question to ask at this juncture is, &#8220;Why am I starting a blog?&#8221;. Well first, I&#8217;m required to create a blog for my <a target="_blank" href="http://www.siat.sfu.ca/resources/undergraduatecourses/1067/IAT%20401.pdf">IAT 401</a> class this semester. If I were only interested in getting the credits though, I&#8217;d just make a MySpace account, post a few <a target="_blank" href="http://uncyclopedia.org/wiki/Emo">&#8220;Emo&#8221;</a> entries about how spiffy my hair is, and be done of it. Instead, I&#8217;ve installed <a target="_blank" href="http://wordpress.org/">WordPress</a> on my server, customized it a little, and appear to be settling in for a longer stay.</p>
<p>So why am I starting a blog? The goal is really to catalog work on the various projects I start (and occasionally even finish). Not all of them are worthy of showcasing on my website, but all are interesting in some way and I feel they deserve some exposure. Perhaps the solutions I discover will be of interest to others - perhaps not. At the very least, I&#8217;ll be able to look back and remember what I&#8217;ve done with my time. It will be a little like a high-tech &#8220;engineering log&#8221; I suppose, (though I doubt I&#8217;d be very successful at arguing patent rights with a blog).</p>
<p>As time goes on, I&#8217;ll likely throw in some personal posts as well, just to thoroughly confuse things. I have my Flickr photos on the sidebar, so it&#8217;s headed in that direction already.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.lorneswork.com/blog/2006/10/24/hello-world/feed/</wfw:commentRSS>
		</item>
	</channel>
</rss>
