<?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-7194530525803495476</id><updated>2011-04-21T12:53:03.544-07:00</updated><title type='text'>Taming bruce</title><subtitle type='html'>This blog is dedicated to the renovation of "Bruce", a robot owned by the van Abbe museum Eindhoven. It's part of a work called "No ghost - just a shell. The Ann Lee project".</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tamingbruce.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7194530525803495476/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://tamingbruce.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>deeetz</name><uri>http://www.blogger.com/profile/01108595833779075544</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>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7194530525803495476.post-3706088943833550918</id><published>2008-03-09T10:46:00.000-07:00</published><updated>2008-03-09T10:52:24.094-07:00</updated><title type='text'>Take your positions!</title><content type='html'>Working on positioning the turrets started today - and I'm pretty satisfied. I get a positional precision within +/- 10 steps, which isn't even visible.&lt;br /&gt;&lt;br /&gt;And I found out something really great: the turrets have the index-hall-sensors aligned such that positioning the turret in the middle of the index gap means that they are aligned properly for driving straight. In other words: no calibration needs! Great!&lt;br /&gt;&lt;br /&gt;Bad news is though that turret number 4 fails to work with positioning and index-bits. Currently I have no idea why that is the case, hopefully nothing serious.&lt;br /&gt;&lt;br /&gt;And I found that the mechanical parameters of the different turrets differ greatly - what makes good values for the PID-controller for my primary turret 0 makes not necessarily sense for the others. But that's a question of configuration, I hopefully can overcome that.&lt;br /&gt;&lt;br /&gt;All in all, nice progress today!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7194530525803495476-3706088943833550918?l=tamingbruce.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tamingbruce.blogspot.com/feeds/3706088943833550918/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7194530525803495476&amp;postID=3706088943833550918' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7194530525803495476/posts/default/3706088943833550918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7194530525803495476/posts/default/3706088943833550918'/><link rel='alternate' type='text/html' href='http://tamingbruce.blogspot.com/2008/03/take-your-positions.html' title='Take your positions!'/><author><name>deeetz</name><uri>http://www.blogger.com/profile/01108595833779075544</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-7194530525803495476.post-5676972121420415916</id><published>2008-02-24T10:27:00.000-08:00</published><updated>2008-02-24T10:33:13.599-08:00</updated><title type='text'>speed bumps</title><content type='html'>After a couple of days work, I reached much better speed control. The control_loop now seems to work pretty much, in both directions, ramping up/down the speed as desired.&lt;br /&gt;&lt;br /&gt;Unfortunately, I'm getting pretty bad results still - but to be honest, I don't think this is due to errors on my part, but mainly because of mechanical properties of the robot.&lt;br /&gt;&lt;br /&gt;The turrets don't turn lightly and with the same resistance over the full 360 degrees. Instead, the force to be applied varies greatly, and even a sometimes pretty nasty screeching sound can bea heard.&lt;br /&gt;&lt;br /&gt;Yet I'm pretty satisfied - I ironed out quite a few wrinkles and am prepared now to tackle positional control as well. After that is reached, I hope I can measure the calibration values for the various turrets to make the robot controllable.&lt;br /&gt;&lt;br /&gt;And I also hope that the mechanical problems/properties change a bit if the robot is placed on the ground. That will make the intrinsic forces only be a fraction of the combined ones from friction and inertia - which will hopefully smoothen the ride considerably.&lt;br /&gt;&lt;br /&gt;So - as usual, small steps, but significant.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7194530525803495476-5676972121420415916?l=tamingbruce.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tamingbruce.blogspot.com/feeds/5676972121420415916/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7194530525803495476&amp;postID=5676972121420415916' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7194530525803495476/posts/default/5676972121420415916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7194530525803495476/posts/default/5676972121420415916'/><link rel='alternate' type='text/html' href='http://tamingbruce.blogspot.com/2008/02/speed-bumps.html' title='speed bumps'/><author><name>deeetz</name><uri>http://www.blogger.com/profile/01108595833779075544</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-7194530525803495476.post-664554686304974479</id><published>2008-02-16T12:18:00.000-08:00</published><updated>2008-02-16T12:27:25.620-08:00</updated><title type='text'>the joys of multi-threading</title><content type='html'>Finally found the error that caused the random segmentation fault in my control-server - lesson learned: be careful what you pass to a thread as argument, if it might be freed prematurely.&lt;br /&gt;&lt;br /&gt;Nothing I didn't know before, but because I removde the semaphore-based inter-locking of my main-thread with the control-loop - because semaphores require RTAI to be active, which caused the preemption-troubles of the past - perfectly working code became a subject of a race-condition: how's faster - the control-thread in fetching the data out of the passed argument, or the main-thread in releasing the argument because it's stackframe gets removed... depending on the winner, things work smoothly or segfault.&lt;br /&gt;&lt;br /&gt;Beside that I made the index-bit-stuff work, which suxors, btw - I don't get the current index-bit-state, but instead the bit is latched once and must be reset. Thus I can only gather the index-position on a rising edge, which makes measuring the index-gap only possible with reverting the direction. Something that will cause imprecisions in the gears to become part of the picture... &lt;span style="font-weight: bold;"&gt;sigh&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7194530525803495476-664554686304974479?l=tamingbruce.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tamingbruce.blogspot.com/feeds/664554686304974479/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7194530525803495476&amp;postID=664554686304974479' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7194530525803495476/posts/default/664554686304974479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7194530525803495476/posts/default/664554686304974479'/><link rel='alternate' type='text/html' href='http://tamingbruce.blogspot.com/2008/02/joys-of-multi-threading.html' title='the joys of multi-threading'/><author><name>deeetz</name><uri>http://www.blogger.com/profile/01108595833779075544</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-7194530525803495476.post-7644943102967367057</id><published>2008-02-03T09:21:00.000-08:00</published><updated>2008-02-03T09:37:06.875-08:00</updated><title type='text'></title><content type='html'>A few lessons learned in the past couple of days. Most of them are good, but it's still all laying tedious groundwork - I'm really skeptic regarding the desired may-release-date of the robot. But still, it's good to see at least some pieces falling together&lt;br /&gt;&lt;br /&gt;What did I learn?&lt;br /&gt;&lt;ul&gt;&lt;li&gt; How to create multiple instances of COCOA-InterfaceBuilder-created interfaces! That was a long-needed thing. What you essentially do is to create a NIB-file for your visual component. Then you can load that component using NSBundle.loadNibNamed:owner:. Whatever you attach to outlets of the owner will become available to you. Thanks to Kyle from cocoa-dev ML who teached me that.&lt;/li&gt;&lt;li&gt;There is no need to make the main-thread of my robot-controlling application a real-time-scheduled thread. Paolo suggested that only my control-loop needs to be real-time. I followed his suggestions - and voila, my previous problems with my main-thread eating up more or less every CPU-cycle has gone away. However, this somehow introduced a spurious segmentation-fault it appears, that makes my app die sometimes and even seems to have the potential to crash the whole system - it rebooted a few times today, without me doing anything else. I already began working on a solution, but so far to no avail - needs more attention it seems.&lt;/li&gt;&lt;li&gt;Bonjour/ZeroConf is out of the game for now. The reason is that I wasn't able to decouple it from the gobject-mainloop. And for some reason I don't get my Pyro-Nameserver reacting to broadcasts (or they aren't communicated properly). So currently I'm running on a fixed IP with my robot's WIFI-card. The bonjour-thing will resurface at some point, but right now there is more urgend stuff to do.&lt;/li&gt;&lt;li&gt;It seems that ctypes-Structure-objects aren't pickable. At least I can't send them over the wire using Pyro without them being null'ed - so not much sense in that.&lt;/li&gt;&lt;li&gt; And I found out that my all-knowing-physics-genius David can produce complex differential equations I'm going to need for the later path-controlling straight out of his head, even when he has the flu. Impressive, and a bit intimidating.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;So what's working? I got my OS X-based monitoring app connecting to the state-server so that motor-information is displayed. I did have the robot-control-program spawn a pyro-server that reacted to commands locally, but for some reason I can't fathom it won't work when invoked from the monitoring-app on the notebook. That will be the next thing to attend to.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7194530525803495476-7644943102967367057?l=tamingbruce.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tamingbruce.blogspot.com/feeds/7644943102967367057/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7194530525803495476&amp;postID=7644943102967367057' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7194530525803495476/posts/default/7644943102967367057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7194530525803495476/posts/default/7644943102967367057'/><link rel='alternate' type='text/html' href='http://tamingbruce.blogspot.com/2008/02/few-lessons-learned-in-past-couple-of.html' title=''/><author><name>deeetz</name><uri>http://www.blogger.com/profile/01108595833779075544</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-7194530525803495476.post-7379356040794409636</id><published>2008-01-31T08:58:00.000-08:00</published><updated>2008-01-31T09:15:02.062-08:00</updated><title type='text'>bonjour bruce</title><content type='html'>After a longer hiatus due to our &lt;a href="http://attomaaku.com/imm08+public+writing+lounge"&gt;giant keyboard project&lt;/a&gt;, I'm back fiddling with bruce.&lt;br /&gt;&lt;br /&gt;Today, I learned an important lesson about RTAI, which the &lt;a href="http://rtai.dk/cgi-bin/gratiswiki.pl?LXRT_Tips_And_Tricks"&gt;wiki&lt;/a&gt; as well as Paolo Mantegazza from RTAI helped to solve: Once a thread becomes real-time-scheduled, you need to explicitly pass control to the scheduler. Otherwise it will preempt any lower-priorised task (which, in my case, meant more or less everything including network traffic...)&lt;br /&gt;&lt;br /&gt;Paolo showed me a way to overcome this in my current API/Application design. I hopefully can try that out tomorrow.&lt;br /&gt;&lt;br /&gt;Additionally, I began thinking about and exploring &lt;a href="http://developer.apple.com/networking/bonjour/index.html"&gt;bonjour&lt;/a&gt;, and it's linux incarnation - &lt;a href="http://avahi.org/"&gt;avahi&lt;/a&gt;. I will use the excellent &lt;a href="http://pyro.sourceforge.net/"&gt;Pyro&lt;/a&gt; to communicate with the robot itself, controlling it and publishing position feedback. But to discover it, the pyro-nsd seems to be a bit more limited or unconvenient than I want it.&lt;br /&gt;&lt;br /&gt;So far, it seems to work rather nice, I can advertise a new service under linux. Now I need to figure out how to&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;get rid of the glib-mainloop in the &lt;a href="http://avahi.org/wiki/PythonPublishExample"&gt;avahi demo-code&lt;/a&gt;&lt;/li&gt;&lt;li&gt;find the service from OSX&lt;/li&gt;&lt;li&gt;communicate the pyro URI over bonjour&lt;/li&gt;&lt;/ul&gt;But I'm pretty positive none of the above will impose any greater hardship.&lt;br /&gt;&lt;br /&gt;Stay tuned...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7194530525803495476-7379356040794409636?l=tamingbruce.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tamingbruce.blogspot.com/feeds/7379356040794409636/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7194530525803495476&amp;postID=7379356040794409636' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7194530525803495476/posts/default/7379356040794409636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7194530525803495476/posts/default/7379356040794409636'/><link rel='alternate' type='text/html' href='http://tamingbruce.blogspot.com/2008/01/bonjour-bruce.html' title='bonjour bruce'/><author><name>deeetz</name><uri>http://www.blogger.com/profile/01108595833779075544</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-7194530525803495476.post-313186167783513655</id><published>2007-12-06T09:59:00.000-08:00</published><updated>2007-12-06T10:04:32.727-08:00</updated><title type='text'>RTAI scheduling works</title><content type='html'>Today I made it happen - the tight 1ms control loop is working. I have actually not the slightest idea why RTAI kept bugging me for so long. The testsuite worked flawlessly, and so I expected no troubles. Yet it crashed and kernel-dumped and generally bitched around. No offense to the really great folks that make RTAI! Paolo Mantegazza was helpful, and I bet it's been me all the time.&lt;br /&gt;&lt;br /&gt;Once I started creating a test-application step-by-step, I finally made it to the point where I had my control loop established.&lt;br /&gt;&lt;br /&gt;Now the work on the PID-controlling of the motors begins. I decided to go with a python-prototype first, as I don't see through my old code anymore. Nothing unheard of in the wonderful land of C.&lt;br /&gt;&lt;br /&gt;But always marvelling is the ctypes-python-to-C-bridge. Together with GCCXML, it's easy as cake to glue together the various bits &amp; pieces of my controlling functions to yield a really powerful control application. Or just some unit-tests.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7194530525803495476-313186167783513655?l=tamingbruce.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tamingbruce.blogspot.com/feeds/313186167783513655/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7194530525803495476&amp;postID=313186167783513655' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7194530525803495476/posts/default/313186167783513655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7194530525803495476/posts/default/313186167783513655'/><link rel='alternate' type='text/html' href='http://tamingbruce.blogspot.com/2007/12/rtai-scheduling-works.html' title='RTAI scheduling works'/><author><name>deeetz</name><uri>http://www.blogger.com/profile/01108595833779075544</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-7194530525803495476.post-7786846680295515275</id><published>2007-11-29T13:45:00.000-08:00</published><updated>2007-11-29T13:50:44.070-08:00</updated><title type='text'>Working WIFI</title><content type='html'>What can I say? One of my bigger fears - not getting the WIFI connection to work - turned out to be completely baseless.&lt;br /&gt;&lt;br /&gt;Once I found a decent &lt;a href="http://tuxhardware.de/"&gt;hardware distributor&lt;/a&gt; who actually sold me a NIC with atheros-chipset, I just followed the instructions at &lt;a href="http://www.madwifi.org/"&gt;madwifi&lt;/a&gt; and got connected without a hitch to our office-network.&lt;br /&gt;&lt;br /&gt;Gosh, if had known it would be so easy, I might even have bought a Linux-notebook instead of a Mac Book Pro. Just kidding....&lt;br /&gt;&lt;br /&gt;Tomorrow, the fight against RTAI will continue!&lt;br /&gt;&lt;a href="http://www.madwifi.org"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7194530525803495476-7786846680295515275?l=tamingbruce.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tamingbruce.blogspot.com/feeds/7786846680295515275/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7194530525803495476&amp;postID=7786846680295515275' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7194530525803495476/posts/default/7786846680295515275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7194530525803495476/posts/default/7786846680295515275'/><link rel='alternate' type='text/html' href='http://tamingbruce.blogspot.com/2007/11/working-wifi.html' title='Working WIFI'/><author><name>deeetz</name><uri>http://www.blogger.com/profile/01108595833779075544</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-7194530525803495476.post-5199483874209082229</id><published>2007-11-29T03:54:00.000-08:00</published><updated>2007-11-29T03:59:14.680-08:00</updated><title type='text'>basment under current</title><content type='html'>Ah, what a relief! Today I finally managed to get the motors and sensors located in the basement section of bruce running.&lt;br /&gt;&lt;br /&gt;This has given me troubles mainly because I don't own a wiring diagram of the robot. So I didn't have any detail knowledge about the emergency shutoff circuiting anymore.&lt;br /&gt;&lt;br /&gt;But now that I found the secret (again, all this I knew 2 1/2 years ago - but the GC obviously did a good job) of attaching the emergency switch connector to a stub on the robot that precisely is there for making it work without it's outer hull - the place where the actual switch is located - things got brighter within a second.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7194530525803495476-5199483874209082229?l=tamingbruce.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tamingbruce.blogspot.com/feeds/5199483874209082229/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7194530525803495476&amp;postID=5199483874209082229' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7194530525803495476/posts/default/5199483874209082229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7194530525803495476/posts/default/5199483874209082229'/><link rel='alternate' type='text/html' href='http://tamingbruce.blogspot.com/2007/11/basment-under-current.html' title='basment under current'/><author><name>deeetz</name><uri>http://www.blogger.com/profile/01108595833779075544</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-7194530525803495476.post-5931062869577646230</id><published>2007-11-23T06:15:00.001-08:00</published><updated>2007-11-23T06:26:18.710-08:00</updated><title type='text'>up and running</title><content type='html'>Yesterday I finally managed to get the NIC running. After the umpteenth building of the kernel, rebooting with the robot - and failing miserably.&lt;br /&gt;&lt;br /&gt;One of the main problems was the lack of a working keyboard on the robot itself. Thus I had to resort to the following procedure for creating new kernels &amp;amp; configs:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;plug the HD into my office PC&lt;/li&gt;&lt;li&gt;do whatever I intended to do&lt;/li&gt;&lt;li&gt;halt the machine&lt;/li&gt;&lt;li&gt;remove the HD, plugging it into the robot&lt;/li&gt;&lt;li&gt;reboot&lt;/li&gt;&lt;li&gt;fail miserably&lt;/li&gt;&lt;li&gt;goto 1.&lt;/li&gt;&lt;/ol&gt;At some point I became desperate and decided to attach a USB-controller to the robot. It even has ports on-board, but not as common USB ports - they need an extra cable.&lt;br /&gt;&lt;br /&gt;When booting a standard distro kernel (added complexity: not having a working keyboard means there is only one kernel to boot - the default one....), I got USB-support, and thus finally access to the machine.&lt;br /&gt;&lt;br /&gt;After reading some logfiles, I finally stumbled over &lt;a href="http://www.mail-archive.com/debian-boot@lists.debian.org/msg77135.html"&gt;this&lt;/a&gt;. I didn't realize that there is a&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;/etc/udev/rules.d/z25_persistent-net.rules&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="font-family: times new roman;"&gt;that pins the NIC to a certain &lt;/span&gt;&lt;/span&gt;MAC-address. And because of the exchange of the HD, of course my PC's NIC has a different one, resulting in the Robot's NIC being assigned (and of course not configured) to eth1 instead of eth0.&lt;br /&gt;&lt;br /&gt;Ok. Finally sorted that one out...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7194530525803495476-5931062869577646230?l=tamingbruce.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tamingbruce.blogspot.com/feeds/5931062869577646230/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7194530525803495476&amp;postID=5931062869577646230' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7194530525803495476/posts/default/5931062869577646230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7194530525803495476/posts/default/5931062869577646230'/><link rel='alternate' type='text/html' href='http://tamingbruce.blogspot.com/2007/11/up-and-running.html' title='up and running'/><author><name>deeetz</name><uri>http://www.blogger.com/profile/01108595833779075544</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-7194530525803495476.post-3500858042536852164</id><published>2007-11-18T05:20:00.000-08:00</published><updated>2007-11-30T05:51:53.355-08:00</updated><title type='text'>Kernel panics</title><content type='html'>Today, I tried and finished the &lt;a href="https://www.rtai.org/"&gt;RTAI&lt;/a&gt; kernel. First, I got hold of a vanilla &lt;a href="http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.1.tar.bz2"&gt;2.6.23&lt;/a&gt; kernel. It took quite a while to create a minimal, working configuration.  Part of that was because of me not realizing the sheer amount of new options which nest deeply in the configurations.&lt;br /&gt;&lt;br /&gt;When it finally ran, I got the latest &lt;a href="https://www.rtai.org/RTAI/rtai-3.6-test1.tar.bz2"&gt;RTAI-distribution&lt;/a&gt;, and tried to start. The RTAI-Wiki suggested some &lt;a href="http://home.gna.org/adeos/"&gt;ADEOS&lt;/a&gt;-patch to apply, so I investigated that. But it turns out that RTAI is based on it's own fork of ADEOS, which I grasped after finding &lt;a href="http://www.aao.gov.au/local/www/ks/documents/RTAI_Install.pdf"&gt;this fine RTAI-tutorial&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So I patched the kernel. Or tried to.For some reason some things called "ipipe" weren't working in the patch. Finally, I found that because of the misapplied original ADEOS-patch&lt;br /&gt;my vanilla kernel sources first had to make a run for themselves, with the effect of creating the files necessary for the "ipipe"-stuff. After that, the patching went flawlessly, and I was able to build a kernel.&lt;br /&gt;&lt;br /&gt;Rebooting into it, I started building RTAI itself. At this point, it puked on me for not having CONFIG_MODVERSIONS disabled. I'm sure that is told you somewhere, but I missed it. So it was recompiling the kernel again.&lt;br /&gt;&lt;br /&gt;After than, the next hurdle was that I used GCC 4.1, but the RTAI-Lab didn't work with that. I removed it from the configuration, as for now I'm not really interested in it. A view I got to question sometime in the future.&lt;br /&gt;&lt;br /&gt;Building went smooth afterwards. Naturally, that wasn't all there was to it. When trying to run the latency-tests, the loading of the kernel modules failed muttering about APIC being enabled but not available. I found &lt;a href="https://mail.rtai.org/pipermail/rtai/2005-September/012863.html"&gt;this discussion&lt;/a&gt; about it, but didn't get the enlightenment I hoped for.&lt;br /&gt;&lt;br /&gt;So I disabled the APIC in the kernel, and recompiled. I wish I had a Euro for each time I recompiled the kernel in the last few days...&lt;br /&gt;&lt;br /&gt;In the end, it didn't help - but after &lt;a href="http://www.captain.at/programming/rtai/apic.php"&gt;reading this,&lt;/a&gt; adding &lt;span style="font-weight: bold;"&gt;lapic&lt;/span&gt; to my kernel boot parameters did the trick.&lt;br /&gt;&lt;br /&gt;I finally have a working testsuite of RTAI. Whopee!&lt;br /&gt;&lt;br /&gt;Now all I need to do is to make that kernel run on the Robots own board. And then add WIFI support for it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7194530525803495476-3500858042536852164?l=tamingbruce.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tamingbruce.blogspot.com/feeds/3500858042536852164/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7194530525803495476&amp;postID=3500858042536852164' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7194530525803495476/posts/default/3500858042536852164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7194530525803495476/posts/default/3500858042536852164'/><link rel='alternate' type='text/html' href='http://tamingbruce.blogspot.com/2007/11/kernel-panics.html' title='Kernel panics'/><author><name>deeetz</name><uri>http://www.blogger.com/profile/01108595833779075544</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-7194530525803495476.post-3993934733089136450</id><published>2007-11-16T07:29:00.000-08:00</published><updated>2007-11-16T07:35:02.020-08:00</updated><title type='text'>return to the future - installing debian</title><content type='html'>I'm currently having troubles setting up the linux to become the real-time-OS for bruce. First, burning the installer CD failed. Then the installer crashed, until I found out that I had used some unstable one. Then the selected mirror (which was charite, the famous Berlin hospital I can actually see from my window) wasn't reachable. Doh. I presume real-life proximity doesn't correlate to much with network connectivity...&lt;br /&gt;&lt;br /&gt;So overall this feels a bit like the first linux installation troubles back in the mid 90ties, when I started using it. Oh well.&lt;br /&gt;&lt;br /&gt;Hopfully installing the RTAI-kernel will go somewhat smoother. I need a new 2.6-one, because I want WIFI on the robot - and from my sparse, but really annoying paste experiences with that under linux, I doubt I should try anything but the latest and greatest.&lt;br /&gt;&lt;br /&gt;If anybody has a tip on what networking card to use - I'd be all ears.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7194530525803495476-3993934733089136450?l=tamingbruce.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tamingbruce.blogspot.com/feeds/3993934733089136450/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7194530525803495476&amp;postID=3993934733089136450' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7194530525803495476/posts/default/3993934733089136450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7194530525803495476/posts/default/3993934733089136450'/><link rel='alternate' type='text/html' href='http://tamingbruce.blogspot.com/2007/11/return-to-future-installing-debian.html' title='return to the future - installing debian'/><author><name>deeetz</name><uri>http://www.blogger.com/profile/01108595833779075544</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-7194530525803495476.post-3788116280160819892</id><published>2007-11-16T07:13:00.000-08:00</published><updated>2008-12-08T19:19:21.545-08:00</updated><title type='text'></title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_6ww8oF5Ty14/Rz2z2Q1YtvI/AAAAAAAAAAM/sP7uMt1Xu20/s1600-h/16-11-07_1601.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://1.bp.blogspot.com/_6ww8oF5Ty14/Rz2z2Q1YtvI/AAAAAAAAAAM/sP7uMt1Xu20/s320/16-11-07_1601.jpg" alt="" id="BLOGGER_PHOTO_ID_5133456895085426418" border="0" /&gt;&lt;/a&gt;This is bruce. Stripped and naked. I will be posting in-detail-photos once I got hold of decent camera, and not that piece of c...amera built into my equally great phone. On top you can see the beamer, and the power cords. Left of them is the dreaded emergency controller thingy. Turning on the robot will make it emit a nerve-straining clicking. And unfortunately no power is available.&lt;br /&gt;&lt;br /&gt;Below is the section with the two PCs - you can dimly see a blue triangle, that's a control cable reaching down into the "basement" from the servo to go card. On the right is the MultiMediaPC.&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://3.bp.blogspot.com/_6ww8oF5Ty14/Rz20Aw1YtwI/AAAAAAAAAAU/VL5udsy8SEw/s1600-h/16-11-07_1602.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://3.bp.blogspot.com/_6ww8oF5Ty14/Rz20Aw1YtwI/AAAAAAAAAAU/VL5udsy8SEw/s320/16-11-07_1602.jpg" alt="" id="BLOGGER_PHOTO_ID_5133457075474052866" border="0" /&gt;&lt;/a&gt;This is the beast. You can turn it off, with just a few clicks - but that's needed every time the robot is boted. &lt;span style="font-weight: bold;"&gt;Sigh.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7194530525803495476-3788116280160819892?l=tamingbruce.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tamingbruce.blogspot.com/feeds/3788116280160819892/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7194530525803495476&amp;postID=3788116280160819892' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7194530525803495476/posts/default/3788116280160819892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7194530525803495476/posts/default/3788116280160819892'/><link rel='alternate' type='text/html' href='http://tamingbruce.blogspot.com/2007/11/this-is-bruce.html' title=''/><author><name>deeetz</name><uri>http://www.blogger.com/profile/01108595833779075544</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://1.bp.blogspot.com/_6ww8oF5Ty14/Rz2z2Q1YtvI/AAAAAAAAAAM/sP7uMt1Xu20/s72-c/16-11-07_1601.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7194530525803495476.post-1874888060517865507</id><published>2007-11-16T06:59:00.000-08:00</published><updated>2007-11-16T07:10:08.101-08:00</updated><title type='text'>Genesis</title><content type='html'>Today, I started the actual work on bruce - afte I got the harddisk from the &lt;a href="http://www.vanabbemuseum.nl/"&gt;van Abbe museum&lt;/a&gt;. Initial findings: apart from the wicked emergency switch stuff, everything seems to be in order. But my C-code from 2 1/2 years back sucks....&lt;br /&gt;&lt;br /&gt;Let the taming begin!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7194530525803495476-1874888060517865507?l=tamingbruce.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tamingbruce.blogspot.com/feeds/1874888060517865507/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7194530525803495476&amp;postID=1874888060517865507' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7194530525803495476/posts/default/1874888060517865507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7194530525803495476/posts/default/1874888060517865507'/><link rel='alternate' type='text/html' href='http://tamingbruce.blogspot.com/2007/11/genesis.html' title='Genesis'/><author><name>deeetz</name><uri>http://www.blogger.com/profile/01108595833779075544</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>
