<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3570438470257500735</id><updated>2011-07-28T23:19:31.564-07:00</updated><category term='meta'/><category term='workshop'/><category term='CNC'/><category term='CAM'/><title type='text'>Fabrications of the Mind</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://fabricationsofthemind.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://fabricationsofthemind.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Leo Dearden</name><uri>http://www.blogger.com/profile/04947654308614394044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>18</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3570438470257500735.post-3192154426422036812</id><published>2009-11-08T13:19:00.000-08:00</published><updated>2009-11-08T13:57:04.567-08:00</updated><title type='text'>An Open Source licence for Hardware</title><content type='html'>&lt;span&gt;&lt;span&gt;&lt;div&gt;I'm helping the OSE choose a license for the designs that we produce.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;A couple of days ago, I blithely recommended that Marcin license the &lt;a href="http://openfarmtech.org/weblog/?p=1224"&gt;Liberator compressed earth brick press&lt;/a&gt; under the GPL.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;Licensing is a largely solved problem in OSS, but on further reading, I found that open hardware licensing is a mess. I'm not a Lawyer (thank goodness :-), but here's by best attempt to understand the situation.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The crucial difference appears to be that physical items are not covered by copyright, which only concerns itself with informational goods.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's easy enough to do public domain, MIT, or BSD style openness with hardware. These licenses are so permissive that they don't change their behaviour in the new context. They don't need to use copyright to make their provisions enforceable.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The problem comes with the GPL copyleft provisions: Without copyright, enforcing openness of derived works is hard, and I'm not satisfied that any existing license does it well, if at all. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The Open Hardware License (as used by TAPR) was written by a lawyer, but was &lt;a href="http://www.linux.com/archive/feature/60071"&gt;criticised by Eric Raymond&lt;/a&gt;, and I have some misgivings about it too.  &lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;There are a substantial number of open hardware projects that are using the GPL as is, and it doesn't seem to be doing them any harm. These include Arduino and RepRap.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;I like the obligation to open derived works included in the GPL. I feel that it is politically consistent with the OSE values, and it acts against commercially exploitative freeloading. If it were easy, I would like to enforce that same obligation on anyone selling modified Liberators. I now think that this enforcement may not be possible through copyright.&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial; font-size: small; "&gt;&lt;div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I also think that it doesn't actually matter very much. We'd like to get the benefit of &lt;i&gt;all&lt;/i&gt; modifications to our open designs, but we don't need it. So long as good complete designs and cheap good quality implementations of open hardware are always available then we have succeeded. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So long as there is a community of people using and building our designs the designs will be available and constantly improving. If some people don't share the results of their efforts with us, then that's a shame, but we don't need them anyway. If they're that inclined to be selfish then their grudging cooperation probably wouldn't be that useful anyway.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I think we should go with the GPL for the moment. We can re-license later if we need to.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Tomorrow, I'll contact Eric Raymond, the OSI, and the FSF for advice.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570438470257500735-3192154426422036812?l=fabricationsofthemind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fabricationsofthemind.blogspot.com/feeds/3192154426422036812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3570438470257500735&amp;postID=3192154426422036812' title='37 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/3192154426422036812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/3192154426422036812'/><link rel='alternate' type='text/html' href='http://fabricationsofthemind.blogspot.com/2009/11/open-source-licence-for-hardware.html' title='An Open Source licence for Hardware'/><author><name>Leo Dearden</name><uri>http://www.blogger.com/profile/04947654308614394044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>37</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3570438470257500735.post-6829538786883166762</id><published>2009-11-08T10:31:00.000-08:00</published><updated>2009-11-08T10:33:39.882-08:00</updated><title type='text'>How do you tell if an open source project is successful</title><content type='html'>After a bit of musing, I came up with the following metrics:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial; font-size: small; "&gt;&lt;div&gt;Good structures&lt;/div&gt;&lt;div&gt; version control system for code&lt;/div&gt;&lt;div&gt; bug tracking system&lt;/div&gt;&lt;div&gt; documentation for developers and users (might be in a Wiki or similar)&lt;/div&gt;&lt;div&gt; mailing lists or equivalent&lt;/div&gt;&lt;div&gt; discussion fora or equivalent&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Active Developer Community&lt;/div&gt;&lt;div&gt; traffic on developer mailing list or forum or similar&lt;/div&gt;&lt;div&gt; high rate of code commits to VCS&lt;/div&gt;&lt;div&gt; low bug fix latency&lt;/div&gt;&lt;div&gt; high bug fix rate&lt;/div&gt;&lt;div&gt; high new feature rate&lt;/div&gt;&lt;div&gt; full release calendar (lots of releases are being made)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Active User Community&lt;/div&gt;&lt;div&gt; traffic in user fora/mailing lists&lt;/div&gt;&lt;div&gt; download rate of installers&lt;/div&gt;&lt;div&gt; output produced (type depends on project)&lt;/div&gt;&lt;div&gt; professional support services&lt;/div&gt;&lt;div&gt; job openings for skilled users&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Can you think of any others?&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570438470257500735-6829538786883166762?l=fabricationsofthemind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fabricationsofthemind.blogspot.com/feeds/6829538786883166762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3570438470257500735&amp;postID=6829538786883166762' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/6829538786883166762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/6829538786883166762'/><link rel='alternate' type='text/html' href='http://fabricationsofthemind.blogspot.com/2009/11/how-do-you-tell-if-open-source-project.html' title='How do you tell if an open source project is successful'/><author><name>Leo Dearden</name><uri>http://www.blogger.com/profile/04947654308614394044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3570438470257500735.post-1702499755010014078</id><published>2009-11-08T10:24:00.000-08:00</published><updated>2009-11-08T10:31:22.177-08:00</updated><title type='text'>Working on Open Source Ecology</title><content type='html'>I'm contributing to the OSE effort, where my fabrication efforts have a chance to deliver enormous social benefits. Finally, I've got a something concrete to do that can have a widespread beneficial effect. It's very exciting.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The best place to read about it is &lt;a href="http://openfarmtech.org/weblog/"&gt;http://openfarmtech.org/weblog/&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'll be continuing with posts about fabrication soon, but I'll also be posting about open source hardware, and other related subjects, as I'm stimulated to write by my interactions with the other OSE contributors.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570438470257500735-1702499755010014078?l=fabricationsofthemind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fabricationsofthemind.blogspot.com/feeds/1702499755010014078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3570438470257500735&amp;postID=1702499755010014078' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/1702499755010014078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/1702499755010014078'/><link rel='alternate' type='text/html' href='http://fabricationsofthemind.blogspot.com/2009/11/working-on-open-source-ecology.html' title='Working on Open Source Ecology'/><author><name>Leo Dearden</name><uri>http://www.blogger.com/profile/04947654308614394044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3570438470257500735.post-3324529433112769078</id><published>2009-08-18T01:24:00.000-07:00</published><updated>2009-09-21T11:43:48.938-07:00</updated><title type='text'>Vacuum Degassing PU resin experiments 00-02</title><content type='html'>I have some Smooth On  resins that are past their use by, including Task8 that's 15 months old and some other that are ~2 years old. They are supposed to be used within 12 months of manufacture, so they're a bit dodgy.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;These resins are interesting materials with a lot of promise, so I did some experiments to get a feel for them.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm interesed in Reaction Injection Moulding (RIM), which can including injecting the resin under pressure into a mold under vacuum to reduce trapped air bubbles. This doesn't work with the resins I tried, because they seem to evolve a gas as they cure, after they gel, and vacuum causes them to foam hugely. This might be because my samples are old, but I suspect that it's a 'feature' of the material.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Experiment 00&lt;br /&gt;&lt;br /&gt;Mixed ~180 ml&lt;br /&gt;Put in in to degass after about 1:30 of mixing&lt;br /&gt;degassing happened late in the cure&lt;br /&gt;Result: cup full of hard cured coarse partly open foam&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Experiment 01&lt;br /&gt;&lt;br /&gt;Mixed ~240 ml&lt;br /&gt;Put it in to degass after ~50s of mixing, in two cups:&lt;br /&gt;~70ml on two layers of Biaxial glass fiber mat&lt;br /&gt;~160ml on its own&lt;br /&gt;Degass happened early in the cure, but post gel&lt;br /&gt;Result:&lt;br /&gt;Large cup overflowed.&lt;br /&gt;Cured as solid, not foam, but surface of both very uneven. Partly clear amber which is interesting because this resin is supposed to cure opaque tan. Is the opacity a volatile reaction product that is causing foaming under vacuum?&lt;br /&gt;Resin appears to wet out mat well.&lt;br /&gt;Thin section was strong, but breakable by hand. Showed evidence of delamination, probably from part cured layers touching as the gelled foam colapsed.&lt;br /&gt;&lt;br /&gt;Experiment 02&lt;br /&gt;&lt;br /&gt;pre-degass 2 minute&lt;br /&gt;mix 120ml&lt;br /&gt;Vacuum half of it after 30s, keep under vaccum during cure&lt;br /&gt;Result:&lt;br /&gt;Vacuumed half overflowed cup and produced rubbery Clear amber mess with large bubbles in it&lt;br /&gt;Unvacuumed half foamed very sightly and set to rubbery tan.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Experiment 03&lt;br /&gt;&lt;br /&gt;same, but with 2 year old Smooth Cast 326&lt;br /&gt;Result:&lt;br /&gt;The half cured under vacuum had a totally clear and nearly colourless bottom part and a tall deck of hard coarse foam on top.&lt;div&gt;The half cured at room pressure had a bunch of pinhead bubbles.&lt;/div&gt;&lt;div&gt;I suspect that a little gas was evolved during cure.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570438470257500735-3324529433112769078?l=fabricationsofthemind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fabricationsofthemind.blogspot.com/feeds/3324529433112769078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3570438470257500735&amp;postID=3324529433112769078' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/3324529433112769078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/3324529433112769078'/><link rel='alternate' type='text/html' href='http://fabricationsofthemind.blogspot.com/2009/08/vacuum-degassing-pu-resin-experiments.html' title='Vacuum Degassing PU resin experiments 00-02'/><author><name>Leo Dearden</name><uri>http://www.blogger.com/profile/04947654308614394044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3570438470257500735.post-6399022487156856755</id><published>2009-06-29T06:00:00.000-07:00</published><updated>2009-06-29T06:03:31.686-07:00</updated><title type='text'>Awesomely huge 3D printing in stone</title><content type='html'>Big. 3x3x3m is the small scale demo.&lt;br /&gt;&lt;br /&gt;The final version will be 10m tall.&lt;br /&gt;&lt;br /&gt;Sand or ground rock with "inorganic binder".&lt;br /&gt;&lt;br /&gt;Pretty sweet.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dezeen.com/2009/06/22/radiolaria-pavilion-by-shiro-studio/#more-33059"&gt;http://www.dezeen.com/2009/06/22/radiolaria-pavilion-by-shiro-studio/#more-33059&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570438470257500735-6399022487156856755?l=fabricationsofthemind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fabricationsofthemind.blogspot.com/feeds/6399022487156856755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3570438470257500735&amp;postID=6399022487156856755' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/6399022487156856755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/6399022487156856755'/><link rel='alternate' type='text/html' href='http://fabricationsofthemind.blogspot.com/2009/06/awesomely-huge-3d-printing-in-stone.html' title='Awesomely huge 3D printing in stone'/><author><name>Leo Dearden</name><uri>http://www.blogger.com/profile/04947654308614394044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3570438470257500735.post-1327255251009178127</id><published>2009-05-29T18:20:00.000-07:00</published><updated>2009-05-29T18:48:07.848-07:00</updated><title type='text'>Noisebridge</title><content type='html'>While I was in the San Francisco Bay Area (where I'd like to live eventually), I hung out with a wonderful buch of &lt;a href="http://catb.org/esr/jargon/html/H/hacker.htmla"&gt;hackers&lt;/a&gt; at &lt;a href="http://www.noisebridge.net/"&gt;Noisbridge&lt;/a&gt;. Massively inspiring, and constantly bubbling over with creativity and skill.&lt;br /&gt;&lt;br /&gt;Just for example, some are working on a &lt;a href="http://reprap.org/bin/view/Main/McWire_Cartesian_Bot_1_2"&gt;McWire RepStrap&lt;/a&gt;, and another created &lt;a href="http://www.flickr.com/photos/vniow/sets/72157617413089233/"&gt;this&lt;/a&gt; bit of kinky steampunkery.&lt;br /&gt;&lt;br /&gt;If you get the chance, check it out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570438470257500735-1327255251009178127?l=fabricationsofthemind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fabricationsofthemind.blogspot.com/feeds/1327255251009178127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3570438470257500735&amp;postID=1327255251009178127' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/1327255251009178127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/1327255251009178127'/><link rel='alternate' type='text/html' href='http://fabricationsofthemind.blogspot.com/2009/05/noisebridge.html' title='Noisebridge'/><author><name>Leo Dearden</name><uri>http://www.blogger.com/profile/04947654308614394044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3570438470257500735.post-2885419834559932090</id><published>2009-05-29T18:17:00.000-07:00</published><updated>2009-05-29T18:20:48.607-07:00</updated><title type='text'>Moving to Zurich</title><content type='html'>I'm in the process of Moving to Zurich in Switzerland. I've got a job with Google there.&lt;br /&gt;&lt;br /&gt;Over the last couple of months I've packed up my house, shipped my stuff to a warehouse, been to California, and I'm now in temporary accomodation in Zurich while I wait for my appartment to become available.&lt;br /&gt;&lt;br /&gt;I should be moved in within a fortnight.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570438470257500735-2885419834559932090?l=fabricationsofthemind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fabricationsofthemind.blogspot.com/feeds/2885419834559932090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3570438470257500735&amp;postID=2885419834559932090' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/2885419834559932090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/2885419834559932090'/><link rel='alternate' type='text/html' href='http://fabricationsofthemind.blogspot.com/2009/05/moving-to-zurich.html' title='Moving to Zurich'/><author><name>Leo Dearden</name><uri>http://www.blogger.com/profile/04947654308614394044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3570438470257500735.post-7621427273321900836</id><published>2009-03-22T07:08:00.000-07:00</published><updated>2009-03-22T08:01:58.864-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CNC'/><title type='text'>Amazingly easy CNC touch off</title><content type='html'>Very often I need to measure the length of a tool in the spindle or the hight of a piece of stock. With a feeler gauge or similar this takes ages.&lt;br /&gt;&lt;br /&gt;How can you do it quickly precisely and easily?&lt;br /&gt;&lt;br /&gt;As far as I know this is the simplest thing that that works: an electronic touchplate. If the tool tip is at IO signal ground, it is easy to detect when it touches a conductive plate, but attaching a pull up resistor to the plate and detecting its logic level.&lt;br /&gt;&lt;br /&gt;Many spindles have grounded collets anyway, most CNC controllers have signal ground and mains ground at the same voltage, and tungsten carbide is conductive, even if it is coated with TiAlN, so the first part is usually automatic. If your controller has a small signal ground (0V) that is isolated from mains ground, or your spindle electrically isolates its collet, YMMV.&lt;br /&gt;&lt;br /&gt;My spindle is not grounded at all (single phase mains and neutral, double isolated, plastic case, no ground), but it does have a metal collar for clamping it to the Z table. This collar is electrically connected to the collet, so I added a connection between the ground for the Z servo encoder and the Z table.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_eOhujvXdG1Y/ScZP5XZiFTI/AAAAAAAAABs/PEu-bkc5624/s1600-h/CIMG0298.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 240px; height: 320px;" src="http://4.bp.blogspot.com/_eOhujvXdG1Y/ScZP5XZiFTI/AAAAAAAAABs/PEu-bkc5624/s320/CIMG0298.JPG" alt="" id="BLOGGER_PHOTO_ID_5316024257109693746" border="0" /&gt;&lt;/a&gt;Connecting the touchplate was pretty easy too. My controller is not electrically isolated: it uses direct connections from the PC parallel port. I connected a 10k pull up resistor between the 5V supply from the PC and pin 15. Then I soldered a long wire between pin 15 and a blank PCB, which is 1.58 +-0.02mm thick.&lt;br /&gt;&lt;br /&gt;I used the EMC Halscope to observe parport.0.pin-15-in. This does indeed go false when I touch the reference panel to the tool, and is true otherwise.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I can now run this program to set the z=0 level to the surface that the touchplate (the blank PCB) is resting on:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;(restore offsets)&lt;br /&gt;G92.3&lt;br /&gt;(make this Z=20)&lt;br /&gt;G92 z20&lt;br /&gt;(probe down for a maximum of 10mm or until contact is made, at 50mm/min)&lt;br /&gt;F50&lt;br /&gt;G38.2 z0&lt;br /&gt;(assume that we made contact, and set z=0 to be the surface that the touch off contact was resting on)&lt;br /&gt;G92 z1.58&lt;br /&gt;(back off so that we can get the plate out)&lt;br /&gt;G0 z10&lt;br /&gt;&lt;br /&gt;(end, which clears all the offsets)&lt;br /&gt;M2&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570438470257500735-7621427273321900836?l=fabricationsofthemind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fabricationsofthemind.blogspot.com/feeds/7621427273321900836/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3570438470257500735&amp;postID=7621427273321900836' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/7621427273321900836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/7621427273321900836'/><link rel='alternate' type='text/html' href='http://fabricationsofthemind.blogspot.com/2009/03/amazingly-easy-cnc-touch-off.html' title='Amazingly easy CNC touch off'/><author><name>Leo Dearden</name><uri>http://www.blogger.com/profile/04947654308614394044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_eOhujvXdG1Y/ScZP5XZiFTI/AAAAAAAAABs/PEu-bkc5624/s72-c/CIMG0298.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3570438470257500735.post-4139387186283289573</id><published>2009-03-21T16:46:00.000-07:00</published><updated>2009-03-27T17:44:45.934-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CNC'/><title type='text'>Using Joystick buttons to run complex CNC commands</title><content type='html'>&lt;a href="http://fabricationsofthemind.blogspot.com/2008/11/making-joystick-buttons-run-simple-cnc.html"&gt;Earlier&lt;/a&gt; I described how to run a single line of G code with a single button press. The problem with this is that it is limited to a single line. :-)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://fabricationsofthemind.blogspot.com/2009/03/amazingly-easy-cnc-touch-off.html"&gt;Earlier&lt;/a&gt; I wrote a short multi-line program for setting tool length, and now I'd like to run it at the touch of a button.&lt;br /&gt;&lt;br /&gt;There is already a &lt;a href="http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?ClassicLadderExamples#Single_button_probe_touchoff"&gt;method&lt;/a&gt; for doing this with some classic ladder HAL logic, but one look at classic ladder turned my stomach. Fair enough for people who already think that way and don't want to change, but as far as I can see, it's like running an emulation of an abacus on your PC so that you can use it do your accounts: a deliberate step back into a far more awkward past. So I went looking for an easier and more powerful way. :-)&lt;br /&gt;&lt;br /&gt;One piece of the puzzle is a &lt;a href="http://linuxcnc.org/docs/2.2/html/gcode_main.html#sec:M100-to-M199:"&gt;user-defined M-code&lt;/a&gt;. This allows us to run any executable with a single M1xx command. Unfortunately for these purposes, this is an executable program, not a G-code program.&lt;br /&gt;&lt;br /&gt;The next piece of the puzzle is &lt;a href="http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?Emcrsh"&gt;emcrsh&lt;/a&gt;. This allows fairly complete control over emc via telnet.&lt;br /&gt;&lt;br /&gt;To glue them together I needed a program to connect an emcrsh session, run the touch off program, wait for completion, and close the session. I used this as an excuse to learn a bit more Python, but my unsuccessful efforts to get telnetlib to work took too much time from the main task, so I did something a bit kludgy instead: I piped the stuff I wanted to send into telnet and hoped for the best.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;telnet localhost 5007 &lt; ~/emc2/nc_files/util/InvokeProbeAndSetToolLength.commands &lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Note that this file must be executable.&lt;br /&gt;&lt;br /&gt;And here are the commands:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;hello EMC client 1.0&lt;br /&gt;set echo off&lt;br /&gt;set verbose on&lt;br /&gt;set enable EMCTOO&lt;br /&gt;set task_plan_init&lt;br /&gt;set mode auto&lt;br /&gt;set echo off&lt;br /&gt;set set_wait done&lt;br /&gt;set open util/ProbeAndSetToolLength.ngc&lt;br /&gt;set run&lt;br /&gt;get mode&lt;br /&gt;quit&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Note that ProbeAndSetToolLength.ngc must be in ~/emc2/nc_files/util for this to work.&lt;br /&gt;&lt;br /&gt;This works well enough. If the probing program does not complete for some reason, AXIS is left in auto mode as if it were still running a program. This locks out the manual controls. To get back to manual mode, I click on the MDI tab and back to manual.&lt;br /&gt;&lt;br /&gt;Now I can set Z=0 to correspond to something useful at the touch of a button.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570438470257500735-4139387186283289573?l=fabricationsofthemind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fabricationsofthemind.blogspot.com/feeds/4139387186283289573/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3570438470257500735&amp;postID=4139387186283289573' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/4139387186283289573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/4139387186283289573'/><link rel='alternate' type='text/html' href='http://fabricationsofthemind.blogspot.com/2009/03/using-joystick-buttons-to-run-complex.html' title='Using Joystick buttons to run complex CNC commands'/><author><name>Leo Dearden</name><uri>http://www.blogger.com/profile/04947654308614394044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3570438470257500735.post-4486379814817429442</id><published>2009-03-21T14:08:00.000-07:00</published><updated>2009-03-27T17:44:28.843-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CNC'/><title type='text'>Tuning EMC2 and Gecko servo drives</title><content type='html'>Tuning a PID loop usually involves repeatedly perturbing the thing that the loop controls, observing how the error changes over time, and adjusting the error feedback to improve the response.&lt;br /&gt;&lt;br /&gt;My CNC router uses &lt;a href="http://www.geckodrive.com/"&gt;Gecko&lt;/a&gt; servo drives : a G320 for the Z (up/down) axis and G340s for the X and Y.&lt;br /&gt;&lt;br /&gt;These use trim pots for the gain and damping of the PID loop. There's a good set of tuning instructions in the gecko user manual, but I came across some niceties that may be useful to someone else, both in how to measure the error and what I found.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How I Measured&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In order to tune the servo I needed to apply an impulse to it in a repeatable way. I wrote a short G-code loop for each axis, to repeatedly rapid move and then reverse rapid move the axis. Here's the one for the x axis:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;(restore G92 offsets cleared by M2)&lt;br /&gt;G92.3&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;G0 x0 y0 z0&lt;br /&gt;(go this far before immediately reversing)&lt;br /&gt;#&lt;d&gt; = 10&lt;br /&gt;&lt;br /&gt;#&lt;i&gt; = 0&lt;br /&gt;O100 while [#&lt;i&gt; lt 1000]&lt;br /&gt;G0 x#&lt;d&gt;&lt;br /&gt;G0 x0&lt;br /&gt;(wait for 2 seconds)&lt;br /&gt;G4 P2&lt;br /&gt;#&lt;i&gt; = [#&lt;i&gt; + 1]&lt;br /&gt;O100 endwhile&lt;br /&gt;&lt;br /&gt;(end)&lt;br /&gt;M2&lt;br /&gt;&lt;/i&gt;&lt;/i&gt;&lt;/d&gt;&lt;/i&gt;&lt;/i&gt;&lt;/d&gt;&lt;/code&gt;&lt;br /&gt;Running this code repeatedly in EMC2 subjects the chosen axis to worst case demands: accelerating from full speed one way to full speed the other as quickly as possible. This is a realistic benchmark for the worst case error that I'll see while I'm using the router, and it allows me to concentrate on twiddling trim pots and pondering the measurements.&lt;br /&gt;&lt;br /&gt;I soldered short wires to the error and ground testpoints on the drive boards so that I could tune the drives with their covers on.&lt;br /&gt;&lt;br /&gt;In order to tune an gecko servo drive properly you need an oscilloscope. The drives have an analog error output and you need to know how that varies over time in order to tune the drive and measure the maximum error. Anyone with their servo PID loop exposed to the EMC HAL can use the pure software Halscope, but that's no good for external hardware. I've just bought an &lt;a href="http://www.linkinstruments.com/mso19.htm"&gt;MSO-19&lt;/a&gt;, which is seems to be a pretty reasonable mixed signal 'scope for an amazingly small $250. It does have a couple of shortcomings that I've found so far, though.&lt;br /&gt;&lt;br /&gt;Firstly, the maximum timebase is 10ms which is slightly shorter than I would have liked for this job. There were times when I couldn't see the whole of the direction changeover period, which was about 120ms long for the X axis. The best I could do to work 'round that was set the trigger to detect the start of the increased error at the beginning of the reverse, examine the first screen full and then set a trigger hold off of 80ms or so that I could check a screen full &lt;span style="font-style: italic;"&gt;starting&lt;/span&gt; 80ms after the trigger. This was good enough.&lt;br /&gt;&lt;br /&gt;Secondly, the maximum voltage offset that I've been able to apply is 2V. The error signal is about 4V for no error, and varies by 0.04v for each encoder count of error, negative for lag, positive for lead. This means that I want to measure small voltage changes, but have to set a large voltage scale to keep the signal on the screen at all. This gives me insufficient precision on either the readings or (especially) the trigger setting.&lt;br /&gt;&lt;br /&gt;The solution to this problem consists of a 3300uF cap, a 10K resistor, and a couple of crocodile clips:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_eOhujvXdG1Y/ScVoWgPR1XI/AAAAAAAAABU/qe0Ck91ewDE/s1600-h/CIMG0292.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_eOhujvXdG1Y/ScVoWgPR1XI/AAAAAAAAABU/qe0Ck91ewDE/s320/CIMG0292.JPG" alt="" id="BLOGGER_PHOTO_ID_5315769671001167218" border="0" /&gt;&lt;/a&gt;(The negative side of the cap is attached to the resistor).&lt;br /&gt;&lt;br /&gt;I connect the red wire to the error signal, and the black to the servo drive signal ground. It takes about a minute to charge the cap up, and then it blocks the DC part of the error signal.&lt;br /&gt;&lt;br /&gt;I connect the scope probe between the cap and the resistor, and the the scope ground to the signal ground.&lt;br /&gt;&lt;br /&gt;The error averages 0 over a few seconds, so now the short bursts of error as the axis starts, reverses, and stops, are measured as small variations around 0V, which is ideal.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What I Found&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_eOhujvXdG1Y/ScVv19lXf-I/AAAAAAAAABc/mK_FDN2f3zc/s1600-h/x-105-300.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 262px;" src="http://2.bp.blogspot.com/_eOhujvXdG1Y/ScVv19lXf-I/AAAAAAAAABc/mK_FDN2f3zc/s320/x-105-300.JPG" alt="" id="BLOGGER_PHOTO_ID_5315777908035780578" border="0" /&gt;&lt;/a&gt;The first thing to tune was the top speed of the axis. I had calculated this to be 116mm/s from the spec of the servo motor (2800 rpm), the 2:1 step down on the belt, and the 5mm/rev ball screws. In practice the absolute maximum is between 105 and 110mm/s. Beyond that the servo can't  keep up with the commands from the computer and the drive faults out. No acceleration setting that I tried allowed the servo to work at a higher top speed.&lt;br /&gt;&lt;br /&gt;Having got an attainable max speed, I tuned the servo gain and damping to the maximum gain and minimum damping that didn't produce any ringing (ie: where the error was brought smoothly back to near zero with no overshoot).&lt;br /&gt;&lt;br /&gt;Then I tuned the max speed and acceleration: For a chosen top speed I found the maximum acceleration that I could use while still seeing an acceptably small peak error.&lt;br /&gt;&lt;br /&gt;When operating at 105mm/s I found that even with optimal drive tuning and a modest 300mm/s/s acceleration the error was unacceptably large: ~2.4V measured error signal maps to ~0.15mm following error. This is about 6 times the specified backlash on the ballscrews.&lt;br /&gt;&lt;br /&gt;Reducing the top speed to 95mm/s gave a max error of only 0.05mm with an acceleration of 800mm/s/s. This improvement surprised me. Decreasing the top speed further doesn't seem to lead to any additional improvement. I couldn't see one at 85mm/s/s, anyway. Servo torque is supposed to be approximately constant with RPM, but this clearly isn't the case here. I have to guess that the max torque of my servo motors drops off quickly near their specified max RPM.&lt;br /&gt;&lt;br /&gt;I tuned Y and Z by the same method, and found that they could support higher max accelerations for the same peak error (900 and 1350mm/s/s, respectively). This is to be expected since they are driving less inertia with the same torque.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570438470257500735-4486379814817429442?l=fabricationsofthemind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fabricationsofthemind.blogspot.com/feeds/4486379814817429442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3570438470257500735&amp;postID=4486379814817429442' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/4486379814817429442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/4486379814817429442'/><link rel='alternate' type='text/html' href='http://fabricationsofthemind.blogspot.com/2009/03/tuning-emc2-and-gecko-servo-drives.html' title='Tuning EMC2 and Gecko servo drives'/><author><name>Leo Dearden</name><uri>http://www.blogger.com/profile/04947654308614394044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_eOhujvXdG1Y/ScVoWgPR1XI/AAAAAAAAABU/qe0Ck91ewDE/s72-c/CIMG0292.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3570438470257500735.post-2781238134779556444</id><published>2009-03-03T12:55:00.000-08:00</published><updated>2009-03-21T14:07:47.198-07:00</updated><title type='text'>CyberAngel: v0.5 in the works</title><content type='html'>The full project as I outlined in my earlier post is massive. Even more massive that I had thought. Since I last posted I've been mostly working on the electronics, and I have pretty much finished the schematics, but it's clear that what with one thing and another I won't be done in time  for this year's Burning Man festeval.&lt;br /&gt;&lt;br /&gt;I've decided to postpone the LEDs and accelerometers version and do a half way version with EL wire and an off the shelf controller. I've ordered the Super CAT-09 10 channel sequencer and 300m of EL wire from the lovely people at &lt;a href="http://www.coolneon.com/"&gt;Funhouse Productions&lt;/a&gt;, and these should arrive on Monday.&lt;br /&gt;&lt;br /&gt;This means that I can put the accelerometers, the garage SMD soldering, the PCB layout, the PCB contract manufacture, the PCB isolation routing, the LED heatsinks, the 3000+ wires to solder by hand and the FPGA programming on ice until the autumn.&lt;br /&gt;&lt;br /&gt;I just need to design and make a mold for the costume, and for the battery pack, encapsulate the battery cells, put the components into the molds, and injection mold elastomer over them. Before the 5th of April. While learning to drive and preparing to move from the UK to Switzerland. That's all. At least I'm between jobs at the moment. :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570438470257500735-2781238134779556444?l=fabricationsofthemind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fabricationsofthemind.blogspot.com/feeds/2781238134779556444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3570438470257500735&amp;postID=2781238134779556444' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/2781238134779556444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/2781238134779556444'/><link rel='alternate' type='text/html' href='http://fabricationsofthemind.blogspot.com/2009/03/cyberangel-v05-in-works.html' title='CyberAngel: v0.5 in the works'/><author><name>Leo Dearden</name><uri>http://www.blogger.com/profile/04947654308614394044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3570438470257500735.post-2853536230138082317</id><published>2009-02-15T07:10:00.000-08:00</published><updated>2009-03-03T12:55:12.974-08:00</updated><title type='text'>CyberAngel: a wearable light sculpture</title><content type='html'>Picture a suit cast in one piece from &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;translucent&lt;/span&gt; silicone rubber. It covers the outsides of the arms and legs, the hips, spine, shoulders, upper chest, and hoods the head, with just enough strapping over the rest of the body to keep it on. It is covered with feather &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;light guides&lt;/span&gt; made of the same rubber, with a cluster of RGB &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;LEDs&lt;/span&gt; at the base of each feather, and a network of fine black wires runs through it between the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;LEDs&lt;/span&gt;. The light from the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;LEDs&lt;/span&gt; fills the feathers.&lt;br /&gt;&lt;br /&gt;The &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;LEDs&lt;/span&gt; can display all possible colours at all intensities up to a very high brightness, and each changes individually. Rippling, shifting and writhing patterns of light and colour run over the surface of the suit in response to the wearer's movement.&lt;br /&gt;&lt;br /&gt;This is what I'm working on at the moment. I'll post more about progress and the technical details as the project progresses.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570438470257500735-2853536230138082317?l=fabricationsofthemind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fabricationsofthemind.blogspot.com/feeds/2853536230138082317/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3570438470257500735&amp;postID=2853536230138082317' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/2853536230138082317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/2853536230138082317'/><link rel='alternate' type='text/html' href='http://fabricationsofthemind.blogspot.com/2009/02/cyberangel-wearable-light-sculpture.html' title='CyberAngel: a wearable light sculpture'/><author><name>Leo Dearden</name><uri>http://www.blogger.com/profile/04947654308614394044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3570438470257500735.post-7788108277815974414</id><published>2008-11-22T10:00:00.000-08:00</published><updated>2009-03-21T16:46:44.698-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CNC'/><title type='text'>Making joystick buttons run simple CNC commands</title><content type='html'>It's pretty easy to get a button to do something simple (run any one line of G-code).&lt;br /&gt;&lt;br /&gt;Create a new HALUI MDI command with one line in your .ini file:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;[HALUI]&lt;br /&gt;MDI_COMMAND = G92 X0 Y0&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This causes a new HAL pin to be created, called halui.mdi-command-00. Then wire that pin up to the joystick button that you want to cause that command to be run, with an line in your .hal:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;net setXYOrigin input.0.btn-thumb2 =&gt; halui.mdi-command-00&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now pressing that button (in this case, the thumb 2 button) runs G92 X0 Y0, just as if I'd typed it in the MDI box. This setup allows me to use the joystick to jog to the place that I want my origin to be, and then set that to be my XY origin by pressing the button.&lt;br /&gt;&lt;br /&gt;You can have any number of MDI_COMMAND .ini lines, and they each make make their own mdi-command-xx pin, ordered in the order they appear in the file.&lt;br /&gt;&lt;br /&gt;Each one can run any one liner. In the next post I'll talk about running more than one line from a single button.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570438470257500735-7788108277815974414?l=fabricationsofthemind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fabricationsofthemind.blogspot.com/feeds/7788108277815974414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3570438470257500735&amp;postID=7788108277815974414' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/7788108277815974414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/7788108277815974414'/><link rel='alternate' type='text/html' href='http://fabricationsofthemind.blogspot.com/2008/11/making-joystick-buttons-run-simple-cnc.html' title='Making joystick buttons run simple CNC commands'/><author><name>Leo Dearden</name><uri>http://www.blogger.com/profile/04947654308614394044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3570438470257500735.post-7597415139419866880</id><published>2008-11-21T14:53:00.000-08:00</published><updated>2008-11-22T10:00:35.906-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CNC'/><title type='text'>The Joy(stick) of Machining</title><content type='html'>I control my router with EMC2, which rocks, BTW. It's extremely versatile and extensible, while being easy to use, and has a vibrant community of contributors. I thoroughly recommend it.&lt;br /&gt;&lt;br /&gt;The most accurate way that I have of measuring the offset between the tool and some fixed point (for example, in order to set the tool length offset) is to move the tool to that point, and see the offset in machine coordinates. At the moment I do that through the jog GUI in AXIS, which is slow and awkward, so task number one is to improve that.&lt;br /&gt;&lt;br /&gt;I've got a USB joystick, and I'm following &lt;a href="http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?A_New_Approach_For_Using_Joypads_With_EMC2"&gt;these instructions&lt;/a&gt; on the EMC Wiki. The rest of this post assumes that you have read them.&lt;br /&gt;&lt;br /&gt;If you don't understand EMC and the HAL the instructions and the logic behind them won't make much sense, in which case I recommend reading &lt;a href="http://www.linuxcnc.org/docview/html//common_user_intro.html"&gt;an introduction to EMC2&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The joystick setup process is simpler than it looks: download joypad_v3.hal, tweak it, put a reference to it in your .ini file, and install joyhandle. The two snags that I hit were with getting the hal_input module to see my joystick and getting joyhandle helper module to work.&lt;br /&gt;&lt;br /&gt;I had trouble with the hal_input for two reasons: I hadn't followed the "setting the permissions for input devices using udev" instruction closely enough, and had to mess around with the name pattern for the joystick to get one that hal_input would accept.&lt;br /&gt;&lt;br /&gt;joyhandle is a HAL module designed to set a deadband around the center of a joystick axis, and provide power law and linear scaling for the value of that axis. There is a precompiled version on the EMC2 Wiki, but it's for a rather old RT kernel, so it doesn't work. Luckily, there's also a .comp (source) file. I installed the emc2-dev package to get comp (the HAL module compiler). After that, building and installing the module was as simple as:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$ sudo comp --install joyhandle.comp &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And the man page:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$ sudo mv joyhandle.9.gz /usr/share/man/man9&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Then it just worked. :-)&lt;br /&gt;&lt;br /&gt;By itself, the addition of the joystick has made my &lt;a href="http://fabricationsofthemind.blogspot.com/2008/11/many-steps-to-4-axis-machining.html"&gt;old method&lt;/a&gt; of measuring tool offset or stock position quicker and easier, but the full benefits will come when I combine it with automatic offset recording for X and Y, and automatic probing to detect the tool length.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570438470257500735-7597415139419866880?l=fabricationsofthemind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fabricationsofthemind.blogspot.com/feeds/7597415139419866880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3570438470257500735&amp;postID=7597415139419866880' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/7597415139419866880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/7597415139419866880'/><link rel='alternate' type='text/html' href='http://fabricationsofthemind.blogspot.com/2008/11/joystick-of-machining_21.html' title='The Joy(stick) of Machining'/><author><name>Leo Dearden</name><uri>http://www.blogger.com/profile/04947654308614394044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3570438470257500735.post-6997348716456657379</id><published>2008-11-21T10:42:00.000-08:00</published><updated>2008-11-21T11:29:17.431-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CNC'/><title type='text'>The many steps to 4 axis machining</title><content type='html'>I'd like to run some "all round" machining jobs on my router. To do that, I need a rotary axis. I intend to convert a &lt;a href="http://www.chronos.ltd.uk/acatalog/Chronos_Catalogue_Rotary_Tables___Indexers_93.html"&gt;rotary milling table&lt;/a&gt; into a CNC rotary axis by fitting it with a servo (more on that later).&lt;br /&gt;&lt;br /&gt;To do that, I need to do some 3 axis machining, but there are a few obstacles that I'd like to get out of the way first.&lt;br /&gt;&lt;br /&gt;At the moment it takes me annoyingly long to set up my CNC router after I change the  stock or tool, and even then the results are often compromised by poor calibration of tool length and stock position. The next few posts will explore faster and more accurate ways to do this calibration. At some point I'll have to find out how the pros do fixturing, too.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;The old way (if you care)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To measure tool length I fit the tool, and then jog it down close to some datum (such as the router bed or the top surface of a flat piece of stock). Then I use a feeler gauge to measure the offset and setting that to be Z=n with:&lt;br /&gt;&lt;br /&gt;G92 Zm&lt;br /&gt;&lt;br /&gt;with m=n + measured offset, in the MDI window of AXIS (the tab that's in the background in http://www.linuxcnc.org/docview/html//gui_axis.html#cap:AXIS-Window).&lt;br /&gt;&lt;br /&gt;I'm using oversize stock, positioning it by eye, fixing it down, and then jogging the router until the spindle is in approximately the right place above the stock and setting that to be X0 Y0 with:&lt;br /&gt;&lt;br /&gt;G92 X0 Y0&lt;br /&gt;&lt;br /&gt;in the MDI window of AXIS.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570438470257500735-6997348716456657379?l=fabricationsofthemind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fabricationsofthemind.blogspot.com/feeds/6997348716456657379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3570438470257500735&amp;postID=6997348716456657379' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/6997348716456657379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/6997348716456657379'/><link rel='alternate' type='text/html' href='http://fabricationsofthemind.blogspot.com/2008/11/many-steps-to-4-axis-machining.html' title='The many steps to 4 axis machining'/><author><name>Leo Dearden</name><uri>http://www.blogger.com/profile/04947654308614394044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3570438470257500735.post-297901017525793151</id><published>2008-10-28T15:42:00.000-07:00</published><updated>2008-10-28T19:00:02.159-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CAM'/><title type='text'>Time for a novel approach to CAM?</title><content type='html'>I'm now pretty familiar with SolidCAM (a SolidWorks CAM plug in), and I've had a look at the screen shots and sales blurb for a bunch of others. I am not impressed.&lt;br /&gt;&lt;br /&gt;The state of the art CAM seems to be stuck on an unnecessary plateau: Slick but dumb. The user is presented with a fixed toolbox of slightly adaptive machining strategies and expected to choose an appropriate sequence of them to apply to various parts of the stock in order to produce an acceptable result. The process is both slow and demanding of human skill and attention, and the results are far short of optimal.&lt;br /&gt;&lt;br /&gt;The better tools do have some optimisations that help a bit: Adaptive step over when milling with a ball nose, to limit the scallop to some maximum height; Feed rate adaption to varying cutting load; Solid modelling so that later machining steps only cut the material left by previous steps; etc.&lt;br /&gt;&lt;br /&gt;However, this falls far short of what is possible: fully automatic generation of a far more optimal set of machining instructions. It seems to me that the local definitions of a good cut are fairly simple. A cut that is within the capabilities of the machine, at optimal feed rate and chip load, leaving only an acceptable scallop, and not gouging the part, is a good start, and would be better than the current approach can uniformly produce.&lt;br /&gt;&lt;br /&gt;Ratings for all of these cut properties can be calculated, and a single merit function could be a weighted product of those ratings. This allows us to use any local search strategy to generate a complete tool path, by creating a sequence of locally (near) optimal cuts.&lt;br /&gt;&lt;br /&gt;Global merit would include completing the task in minimum time, with minimum machine and cutting tool wear, with maximum quality. A simple hill climb optimisation would produce an improved but still substantially sub-optimal path. Simulated annealing, a genetic algorithm, or similar, would further improve the result.&lt;br /&gt;&lt;br /&gt;In future posts I'll propose an algorithm in detail and get in to the implementation details, with the intention of cutting alpha release code in python and starting an open source project to get this in practical use.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570438470257500735-297901017525793151?l=fabricationsofthemind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fabricationsofthemind.blogspot.com/feeds/297901017525793151/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3570438470257500735&amp;postID=297901017525793151' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/297901017525793151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/297901017525793151'/><link rel='alternate' type='text/html' href='http://fabricationsofthemind.blogspot.com/2008/10/time-for-novel-approach-to-cam.html' title='Time for a novel approach to CAM?'/><author><name>Leo Dearden</name><uri>http://www.blogger.com/profile/04947654308614394044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3570438470257500735.post-7169676364184396435</id><published>2008-10-28T15:07:00.000-07:00</published><updated>2008-10-28T19:02:10.695-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='workshop'/><title type='text'>In praise of a good workshop</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_eOhujvXdG1Y/SQew5qDko0I/AAAAAAAAAAM/8bt-xkmqap8/s1600-h/CIMG0235.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_eOhujvXdG1Y/SQew5qDko0I/AAAAAAAAAAM/8bt-xkmqap8/s400/CIMG0235.JPG" alt="" id="BLOGGER_PHOTO_ID_5262369194194019138" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Having a good space to work in makes it massively easier to do good work.&lt;br /&gt;&lt;br /&gt;At first my workshop was the spare bedroom: a tiny child's room. Then I got my CNC router, took over the dining room too. This meant that most of my tools and materials were stored in one place, and I was working in another, which resulted in a huge waste of time and a perpetual battle against clutter. It was also impossible to keep the metal swarf out of the rest of the house.&lt;br /&gt;&lt;br /&gt;Now I've moved, and I have a single garage as a workshop. It's still a bit cramped, but it's a &lt;span style="font-weight: bold;"&gt;massive &lt;/span&gt;improvement.&lt;br /&gt;&lt;br /&gt;Here are some of the highlights of what I've set up.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_eOhujvXdG1Y/SQeyNsd1RfI/AAAAAAAAAAU/v-tAQ8mKCuE/s1600-h/CIMG0225.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_eOhujvXdG1Y/SQeyNsd1RfI/AAAAAAAAAAU/v-tAQ8mKCuE/s320/CIMG0225.JPG" alt="" id="BLOGGER_PHOTO_ID_5262370637950043634" border="0" /&gt;&lt;/a&gt;CNC router enclosure with high static pressure extractor. The fan can easily be fitted with a flexible duct that I can put out of the door when I'm cutting anything noxious of especially dusty. The box keeps the extreme mess that routing makes off the rest of the workshop, and should contain the splashes from the flood coolant (more on that in a later post). The box walls are 4mm double wall polycarbonate intended for low cost greenhouses, on an Al angle frame.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_eOhujvXdG1Y/SQe0_WRKfbI/AAAAAAAAAAc/FzUilDVw-8U/s1600-h/CIMG0233.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_eOhujvXdG1Y/SQe0_WRKfbI/AAAAAAAAAAc/FzUilDVw-8U/s320/CIMG0233.JPG" alt="" id="BLOGGER_PHOTO_ID_5262373690008042930" border="0" /&gt;&lt;/a&gt;CNC router. K2 KG-2539, which seems to offer pretty good performance for an excellent ~$7500 including the trimmings. I paid $5000 for a machine without a tabletop, cables, cable chains, or servo drive electronics, and built them myself. It wasn't a smart way to earn $2500 less the cost of the parts, since that didn't leave much actual saving and took a great deal of time that would have been better spent on other things.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_eOhujvXdG1Y/SQe3Ypbeb0I/AAAAAAAAAAk/L6gq45KbMSM/s1600-h/CIMG0234.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 240px; height: 320px;" src="http://2.bp.blogspot.com/_eOhujvXdG1Y/SQe3Ypbeb0I/AAAAAAAAAAk/L6gq45KbMSM/s320/CIMG0234.JPG" alt="" id="BLOGGER_PHOTO_ID_5262376323671551810" border="0" /&gt;&lt;/a&gt;Kress spindle, which has a surprising amount of torque and an very low run out. It was able to cut a big chunk off the top of a cast iron G cramp when I accidentally crashed the bit into it at 3600mm/min.&lt;br /&gt;&lt;br /&gt;Around the spindle you can see the flood coolant delivery to the four orange nozzles, and the compressed air with optional mist to the grey locline with the red tip. I'll post later on building and using the coolant systems.&lt;br /&gt;&lt;br /&gt;Between the flood nozzles is a ring brush that surrounds the bit. The open middle of the ring goes to a shop vacuum cleaner via the the big black hose.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_eOhujvXdG1Y/SQe56hcXfAI/AAAAAAAAAAs/LdmwwCr8Z74/s1600-h/CIMG0230.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 240px; height: 320px;" src="http://3.bp.blogspot.com/_eOhujvXdG1Y/SQe56hcXfAI/AAAAAAAAAAs/LdmwwCr8Z74/s320/CIMG0230.JPG" alt="" id="BLOGGER_PHOTO_ID_5262379104666614786" border="0" /&gt;&lt;/a&gt;Industrial shelves. Practically impossible to overload.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_eOhujvXdG1Y/SQe7TnZdK1I/AAAAAAAAAA0/1Q-7IlegaUw/s1600-h/CIMG0231.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 240px; height: 320px;" src="http://1.bp.blogspot.com/_eOhujvXdG1Y/SQe7TnZdK1I/AAAAAAAAAA0/1Q-7IlegaUw/s320/CIMG0231.JPG" alt="" id="BLOGGER_PHOTO_ID_5262380635273374546" border="0" /&gt;&lt;/a&gt;Really Useful Boxes (TM). From Staples, quite cheap yet sturdy, and it's possible to see what's in them through the walls. They're Euro standard sizes and shapes, too.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_eOhujvXdG1Y/SQe_x_hZYLI/AAAAAAAAABM/YtrJBCHhLMM/s1600-h/CIMG0232.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_eOhujvXdG1Y/SQe_x_hZYLI/AAAAAAAAABM/YtrJBCHhLMM/s320/CIMG0232.JPG" alt="" id="BLOGGER_PHOTO_ID_5262385555191718066" border="0" /&gt;&lt;/a&gt;Home made work bench, from timber from a builders merchant.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_eOhujvXdG1Y/SQe-finR3AI/AAAAAAAAABE/VeESU75hTnw/s1600-h/CIMG0226.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_eOhujvXdG1Y/SQe-finR3AI/AAAAAAAAABE/VeESU75hTnw/s320/CIMG0226.JPG" alt="" id="BLOGGER_PHOTO_ID_5262384138682489858" border="0" /&gt;&lt;/a&gt;Frankenstein's work bench, supporting the CNC router, (re)built from bench and desk parts salvaged from a skip. It's not really stiff enough: it wobbles at least 1cm when the router X axis starts or stops. I may stiffen it with X braces, or replace it, if I can see some evidence that the flex is actually a problem.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_eOhujvXdG1Y/SQe9Ocl6K7I/AAAAAAAAAA8/5XHk7A4FIio/s1600-h/CIMG0228.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_eOhujvXdG1Y/SQe9Ocl6K7I/AAAAAAAAAA8/5XHk7A4FIio/s320/CIMG0228.JPG" alt="" id="BLOGGER_PHOTO_ID_5262382745496726450" border="0" /&gt;&lt;/a&gt;CNC controls. Joystick to control jogging. I haven't set up the HAL (hardware abstraction layer) to make it work yet, but that shouldn't be hard. I'll post about it when it's done.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570438470257500735-7169676364184396435?l=fabricationsofthemind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fabricationsofthemind.blogspot.com/feeds/7169676364184396435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3570438470257500735&amp;postID=7169676364184396435' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/7169676364184396435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/7169676364184396435'/><link rel='alternate' type='text/html' href='http://fabricationsofthemind.blogspot.com/2008/10/in-praise-of-good-workshop.html' title='In praise of a good workshop'/><author><name>Leo Dearden</name><uri>http://www.blogger.com/profile/04947654308614394044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_eOhujvXdG1Y/SQew5qDko0I/AAAAAAAAAAM/8bt-xkmqap8/s72-c/CIMG0235.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3570438470257500735.post-3402385574020926046</id><published>2008-10-23T15:59:00.000-07:00</published><updated>2008-10-28T15:07:06.801-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='meta'/><title type='text'>Is this thing on?</title><content type='html'>Hello.&lt;br /&gt;&lt;br /&gt;This is a blog about making things.&lt;br /&gt;&lt;br /&gt;I find the transformation of idea into object uniquely satisfying, and oven the coming months I'll be sharing my projects with you as they bubble up in my fevered brain as ill-formed ideas, struggle and compete for the sunlight of my attention, and flower or wither by turns as may may be.&lt;br /&gt;&lt;br /&gt;I expect to write about CAD (especially SolidWorks), CAM, CNC (especially Linux and EMC2), milling and machining, casting, composites, resins, elastomers, programming and electronics. It's my intention to share useful insights, techniques, and lessons in these areas as I learn them, and my hope to receive similar in return.&lt;br /&gt;&lt;br /&gt;Some projects will be entirely for my personal amusement, while others may result in commercially exploitable products. I may be a little cagey about some of the latter.&lt;br /&gt;&lt;br /&gt;I'm currently working on, amongst other things, a light weight high performance geodesic dome made from advanced fibre composites and metalised polymer film, a totally silent high performance PC, and a costume for next years Burning Man that includes a 3000 channel 1kHz LED PWM dimmer and 1000 lightguides cast in clear elastomer in the shape of feathers.&lt;br /&gt;&lt;br /&gt;I hope that you get some part of the joy from reading about my projects that I get from working on them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3570438470257500735-3402385574020926046?l=fabricationsofthemind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fabricationsofthemind.blogspot.com/feeds/3402385574020926046/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3570438470257500735&amp;postID=3402385574020926046' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/3402385574020926046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3570438470257500735/posts/default/3402385574020926046'/><link rel='alternate' type='text/html' href='http://fabricationsofthemind.blogspot.com/2008/10/is-this-thing-on.html' title='Is this thing on?'/><author><name>Leo Dearden</name><uri>http://www.blogger.com/profile/04947654308614394044</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
