<?xml version="1.0"?>
<rss version="2.0.">
  <channel>
    <title>robots.net blog for rudybrian</title>
    <link>http://robots.net/person/rudybrian/</link>
    <description>robots.net blog for rudybrian</description>
    <language>en-us</language>
    <generator>mod_virgule</generator>
    <pubDate>Fri, 16 May 2008 05:55:18 GMT</pubDate>
    <item>
      <pubDate>Sun, 14 Nov 2004 05:44:19 GMT</pubDate>
      <title>14 Nov 2004</title>
      <link>http://robots.net/person/rudybrian/diary.html?start=46</link>
      <guid>http://robots.net/person/rudybrian/diary.html?start=46</guid>
      <description>Whew! It's been a while since I last had a chance to post a
new diary entry.

&lt;p&gt; My new job demands a substantial amount of what had
previously been my free time to work on robotics projects.
But, that's life at a startup ;)

&lt;p&gt; I haven't been able to put in much time working on the Blue
Cube or Zaza in the last five months, but would very much
like to get back to doing so.

&lt;p&gt; I was able to spend a few hours at the Tech this weekend
working on Zaza, but it appears her batteries are in need of
replacement again, as the voltage never got much above
11.3V. It appears the maintenance technicians left the robot
connected to the charger w/o having the the robot power on
for a month or more. unfortunately the charger from RWI
isn't smart enough to reduce the charge current
proporionately, and managed to cook off a lot of the
hydrogen in the gell cells. Oh well, there goes another $500...
</description>
    </item>
    <item>
      <pubDate>Sat, 5 Jun 2004 23:18:23 GMT</pubDate>
      <title>5 Jun 2004</title>
      <link>http://robots.net/person/rudybrian/diary.html?start=45</link>
      <guid>http://robots.net/person/rudybrian/diary.html?start=45</guid>
      <description>I wrapped up installation and testing of a simple BASIC
Stamp 2 watchdog board for &lt;a
href="http://www.thetech.org/robots/zaza/"&gt;&lt;strong&gt;Zaza&lt;/strong&gt;&lt;/a&gt;'s
ACCESS.bus MSP network yesterday. The board has the ability
to detect when the ACCESS.bus is hung, and and can assert
the MSP reset line when directed to do so by the 'brain' CPU
(zaza1). I have begun work on a new version of the MSP
supervisor utility to take advantage of the enhanced
functionality that the new board provides. When completed,
the utility will allow fail-safe starts from power up,
eliminating the need to press the ACCESS.bus reset switch,
as well as detecting bus problems during normal operation. I
had considered adding code to support bus monitoring to the
baseServer, but this might break things, and make porting
the codebase to &lt;a
href="http://www-2.cs.cmu.edu/%7Ecarmen/"&gt;CARMEN&lt;/a&gt; more
difficult. Bus monitoring will be implimented via an
external supervisor utility that links with libmsp. This
will allow passive bus monitoring to occur regardless of
whether baseServer is running.

&lt;p&gt; The schematics (gEDA/gschem + additional custom symbols,
PNG) and current firmware are &lt;a
href="http://www.praecogito.com/~brudy/zaza/code/zaza1/ACCESS.bus_watchdog/"&gt;here&lt;/a&gt;.

</description>
    </item>
    <item>
      <pubDate>Fri, 16 Apr 2004 06:46:40 GMT</pubDate>
      <title>16 Apr 2004</title>
      <link>http://robots.net/person/rudybrian/diary.html?start=44</link>
      <guid>http://robots.net/person/rudybrian/diary.html?start=44</guid>
      <description>After several months of work I was finally able to migrate
&lt;a href="http://www.thetech.org/robots/zaza/" &gt;Zaza&lt;/a&gt;'s
main controller CPU (zaza1) to a more recent Linux
distribution/kernel. This allowed upgrading to the lastest
version of BeeSoft which should help improve reliability a
bit. The OS upgrade will also let us start experimenting
with &lt;a
href="http://www-2.cs.cmu.edu/%7Ecarmen/"&gt;CARMEN&lt;/a&gt;, and
begin the process of porting the current codebase to this
fully GPLed robotic navigation toolkit.

&lt;p&gt; Oh dear, it appears Arthur T. Murray has found robots.net.
If you have ever been curious who this guy really is, check
out this &lt;a
href="http://www.nothingisreal.com/mentifex"&gt;FAQ&lt;/a&gt;
assembled by Tristan Miller, I found it rather interesting.</description>
    </item>
    <item>
      <pubDate>Wed, 25 Feb 2004 01:12:28 GMT</pubDate>
      <title>25 Feb 2004</title>
      <link>http://robots.net/person/rudybrian/diary.html?start=43</link>
      <guid>http://robots.net/person/rudybrian/diary.html?start=43</guid>
      <description>I wrapped up work on a new version of &lt;strong&gt;&lt;a
href="http://www.thetech.org/robots/zaza/"&gt;Zaza&lt;/a&gt;&lt;/strong&gt;'s
voice server this weekend using the POE framework and
POE::Component::Festival. This version resolves some of the
more troubling architectural issues with the previous
single-threaded releases of the voiceServer. Cues are now
processed asynchronously with proper FIFO buffering so
rapidly submitted input cues are neither dropped nor mangled
as had been a problem when the voiceServer machine was under
heavy load (ie. running in tourguide mode). 
A number of museum visitors have asked about Zaza's
voice/face system recently and expressed interest in using
it for other applications. As a result, &lt;a
href="http://www.praecogito.com/~brudy/zaza/code/zaza2/voiceServer/1.00/"&gt;this
version&lt;/a&gt; is the
first to have actual documentation, not just source comments
;) As time permits, I'll do the same for the other voice
system components. I also threw together a basic &lt;a
href="http://www.praecogito.com/~brudy/zaza/code/zaza2/voiceServer/system_diagram.png"&gt;system
diagram&lt;/a&gt; that documents how all the voice/face components
fit together. </description>
    </item>
    <item>
      <pubDate>Tue, 27 Jan 2004 00:03:16 GMT</pubDate>
      <title>27 Jan 2004</title>
      <link>http://robots.net/person/rudybrian/diary.html?start=42</link>
      <guid>http://robots.net/person/rudybrian/diary.html?start=42</guid>
      <description>Hooboy... Lots of robotics related updates since the last
diary entry:

&lt;p&gt; &lt;strong&gt;&lt;a
href="http://www.thetech.org/robots/zaza/"&gt;Zaza&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
I managed to fix a logic bug in the &lt;a
href="http://www.praecogito.com/~brudy/zaza/info.html#Phase_IV"&gt;Phase
IV&lt;/a&gt; (tourguide)
button handling code that hadn't been debouncing the buttons
properly during tours. It was a problem because kids like to
press the buttons on Zaza's acrylic hood (repeatedly), which
caused a bunch of voice cues listing the intended exhibit
destinations (or information on the current exhibit if the
robot had arrived at an exhibit) to stack up, sounding a bit
like a broken record :P 

&lt;p&gt; I also fixed a problem with the &lt;a
href="http://www.praecogito.com/~brudy/zaza/code/zaza2/voiceServer/clients/POEfaceClient/"&gt;POE
face client&lt;/a&gt; (interfaces
remote &lt;a
href="http://www.praecogito.com/~brudy/zaza/code/zaza2/face-applet/"&gt;Java
face applet&lt;/a&gt;s with the &lt;a
href="http://www.praecogito.com/~brudy/zaza/code/zaza2/voiceServer/"&gt;voice
server&lt;/a&gt;) that would
occasionally cause remote face applets to 'loose sync' and
stop receiving new voice cues from the voiceServer. 

&lt;p&gt; During Phase IV testing over the last two weekends I noticed
a problem with the voiceServer not rendering some voice cues
that list the exhibit destinations during a tour. It looks
like a race condition exists when there are more than one
active (unvisited) goal that causes the cues to be sent to
the voiceServer faster than it can handle them, causing the
first of the cues to be dropped. This has compelled me to
consider rewriting the voiceServer to use POE to manage the
threading issues. I had a quick glance at David
Huggins-Daines' POE::Component::Festival and it looks like
it could be used in place of direct access to
Festival::Client::Async for POE, but both the Perl module,
and the 'synth-poe' example needed to be tweaked before they
would work. 

&lt;p&gt; I stumbled across some new voices for Festival from CMU last
week. The &lt;a
href="http://festvox.org/cmu_arctic/dbs_slt.html"&gt;first&lt;/a&gt;
(&lt;a
href="http://zazaconsole.exhibits.thetech.org/~brudy/test_clunits.wav"&gt;sample&lt;/a&gt;)
uses 'cluster unit selection' which
basically assembles a synthesized waveform from components
of a database of pre-recorded, tagged speech. The results
can very from fantastic to horrible, and takes far too long
to render on existing hardware, eliminating the possibility
of real-time synthesis. It's unlikely we will be using this
one with Zaza. The &lt;a
href="http://hts.ics.nitech.ac.jp/"&gt;second&lt;/a&gt; (&lt;a
href="http://zazaconsole.exhibits.thetech.org/~brudy/test_hts.wav"&gt;sample&lt;/a&gt;)
uses the same ARCTIC
database, but is converted to diphones through HMM analysis.
It has less inflection than the current voice (&lt;a
href="http://zazaconsole.exhibits.thetech.org/~brudy/test_tll_diphone.wav"&gt;sample&lt;/a&gt;),
but
seems to be quite a bit more intelligible on Zaza's current
audio hardware. Due to some differences in text analysis,
using the slt_hts voice requires making some changes to both
the face applet, and the voiceServer. I have already updated
the face applet, and plan to do the same with the
voiceServer this Friday.
&lt;p&gt;&lt;p&gt;
&lt;strong&gt;&lt;a
href="http://www.praecogito.com/~brudy/blue_cube/"&gt;Blue
Cube&lt;/a&gt;&lt;/strong&gt;
&lt;br&gt;
I threw together some Makefiles, and updated the READMEs for
&lt;a
href="http://www.praecogito.com/~brudy/blue_cube/code/blue_move/"&gt;libnmc
and picservo-test&lt;/a&gt; to make the build process a little
easier. 

&lt;p&gt; I also started work on the &lt;a
href="http://www-2.cs.cmu.edu/%7Ecarmen/"&gt;CARMEN&lt;/a&gt;
interface, but need to
make some API decisions before progressing any further. I am
planning to duplicate the critical interfaces used with the
open-sourced version of the Nomadics Scout hardware
interface library. This should make it easier to integrate
with other robotics toolkits like &lt;a
href="http://playerstage.sourceforge.net/"&gt;Player/Stage&lt;/a&gt;.

&lt;p&gt; After a great deal of waiting, Thomas Baier finally released
a version of 3DWin that worked with a current version of
Moray, allowing me to export my &lt;a
href="http://www.praecogito.com/~brudy/blue_cube/models/robot/"&gt;model
of the Blue Cube&lt;/a&gt; that
I made a few years ago to VRML. I also put up the hamaPatch
model of one of the Blue Cube's '&lt;a
href="http://www.praecogito.com/~brudy/blue_cube/models/quarter_panel/"&gt;quarter
panels&lt;/a&gt;'. At some
point I'll rebuild the model using this more accurate model
with &lt;a
href="http://projects.blender.org/projects/blendercad/"&gt;BlenderCAD&lt;/a&gt;.

&lt;p&gt; I finally decided on i2c as the sensor bus, allowing
relatively simple interfaces to sensor nodes like the SRF08.
Since the Blue Cube's mainboard doesn't have a built-in i2c
interface like the VIA EPIA M motherboards do, I needed to
find another sufficiently fast means of interfacing with the
i2c network. I had a look at &lt;a href="http://robots.net/person/dafyddwalters/" &gt;dafyddwalters&lt;/a&gt;'
&lt;a href="http://oap.sourceforge.net/" &gt;OAP&lt;/a&gt; parallel port
i2c interface, but the lack of proper isolation on
the SCL line, and the nonlinearities of using transistors
for switching concerned me. I found an &lt;a
href=&#x201D;http://www.voxel.at/prj/i2c/LM-Artikel/&#x201D;&gt;old
article&lt;/a&gt; by Simon G. Vogl that used a slightly better
design and made a &lt;a
href="http://www.praecogito.com/~brudy/blue_cube/schematics/i2c/"&gt;few
modifications&lt;/a&gt;. The latest &lt;a
href="http://www.praecogito.com/~brudy/blue_cube/block_diagram.png"&gt;block
diagram&lt;/a&gt; shows all of the current/planned systems on the
robot.

&lt;p&gt; I have an initial design for the power distribution board,
but need to do some testing before building it. The circuit
allows peripheral power to be controlled by the power
management uC, as well as automatically switching to battery
power when the external +24V dock supply is disconnected.</description>
    </item>
    <item>
      <pubDate>Fri, 9 Jan 2004 07:59:43 GMT</pubDate>
      <title>9 Jan 2004</title>
      <link>http://robots.net/person/rudybrian/diary.html?start=41</link>
      <guid>http://robots.net/person/rudybrian/diary.html?start=41</guid>
      <description>I finally got around to porting &lt;a
href="http://www.jrkerr.com/"&gt;JR Kerr&lt;/a&gt;'s NMC library
(supports the &lt;a
href="http://www.jrkerr.com/products.html#PICSERVO"&gt;PIC-SERVO&lt;/a&gt;,
&lt;a
href="http://www.jrkerr.com/products.html#PICIO"&gt;PIC-IO&lt;/a&gt;
and &lt;a
href="http://www.jrkerr.com/products.html#PICSTEP"&gt;PIC-STEP&lt;/a&gt;)
to Linux for use on the &lt;a
href="http://www.praecogito.com/~brudy/blue_cube/"&gt;Blue
Cube&lt;/a&gt;. A few years ago I hacked together a driver based
on some example code, but the performance was sub-optimal
and it was littered with bugs. I was inspired after running
across&lt;a
href="http://www.robots.net/person/rudybrian/diary.html?start=36"&gt;
Alan Kilian's code from his Circuit Cellar article&lt;/a&gt;, and
decided to just rewrite the whole thing. As far as compiling
is concerned, it's still a bit of a mess, but if you are
interested you can get it &lt;a
href="http://www.praecogito.com/~brudy/blue_cube/code/blue_move/"&gt;here&lt;/a&gt;.
At some point I'll throw together some GNU Autotools
scripts, but it's usable as-is. Now that I have a working
motion controll system, it's time to start writing an
interface for &lt;a
href="http://www-2.cs.cmu.edu/%7Ecarmen/"&gt;CARMEN&lt;/a&gt;.  </description>
    </item>
    <item>
      <pubDate>Mon, 29 Dec 2003 06:19:30 GMT</pubDate>
      <title>29 Dec 2003</title>
      <link>http://robots.net/person/rudybrian/diary.html?start=40</link>
      <guid>http://robots.net/person/rudybrian/diary.html?start=40</guid>
      <description>The good, the bad and the ugly...

&lt;p&gt; First the good:
I finally got Robbie Stone's updated CATC Access Bus card
Linux kernel driver working on Redhat 6.2. This means that
it's finally possible to upgrade the OS on &lt;a
href="http://www.thetech.org/robots/zaza"&gt;&lt;strong&gt;Zaza&lt;/strong&gt;&lt;/a&gt;'s
'brain' CPU. This will allow the use of a smaller/more
efficient motherboard, and begin experimenting and porting
the current codebase to &lt;a
href="http://www-2.cs.cmu.edu/~carmen/"&gt;CARMEN&lt;/a&gt;.

&lt;p&gt; The bad:
As of January 2004 iRobot/RWI is discontinuing research
robot sales, and will only be continuing support through the
end of the year. This will pose a support problem for
ongoing use of the robot...

&lt;p&gt; The ugly:
I finally got around to fixing one of the beeSoft conversion
utilities that converts images into maps. Using beeSoft's
map editor is painful to say the least, so having the
ability to re-import a map image to a map allows use an
image manipulation program to add virtual obstacles to a map
much more easily.</description>
    </item>
    <item>
      <pubDate>Wed, 3 Dec 2003 20:16:50 GMT</pubDate>
      <title>3 Dec 2003</title>
      <link>http://robots.net/person/rudybrian/diary.html?start=39</link>
      <guid>http://robots.net/person/rudybrian/diary.html?start=39</guid>
      <description>I got some bad news this morning regarding ASIMO's planned
visit to the Tech Museum at the end of January. Due to some
poor planning and coordination on the part of both the Tech
and Honda, the visit has been canceled. Honda is looking for
alternate venues in Northern California but hasn't managed
to secure one yet. Bummer...</description>
    </item>
    <item>
      <pubDate>Sat, 8 Nov 2003 21:42:10 GMT</pubDate>
      <title>8 Nov 2003</title>
      <link>http://robots.net/person/rudybrian/diary.html?start=38</link>
      <guid>http://robots.net/person/rudybrian/diary.html?start=38</guid>
      <description>I got some good news from the &lt;a
href="http://www.thetech.org"&gt;Tech Museum&lt;/a&gt;'s Public
Programs folks last week. They are planning to do a bunch of
robotics-related activities in January leading up to &lt;a
href="http://www.asimo.honda.com/index.asp"&gt;ASIMO&lt;/a&gt;'s &lt;a
href="http://www.asimo.honda.com/ASIMO_DCTM/Events/Pre-Event_0042.asp"&gt;visit
at the end of the month&lt;/a&gt;. Since &lt;strong&gt;&lt;a
href="http://www.thetech.org/robots/zaza"&gt;Zaza&lt;/a&gt;&lt;/strong&gt;'s
&lt;a
href="http://www.praecogito.com/~brudy/zaza/info.html#Phase_IV"&gt;Phase
IV&lt;/a&gt; (tourguide) functionality is stable, we are planning
to run tours on the last three weekends in January. We still
need to work out the scheduling and facilitation details so
nothing has been posted on the website yet.

&lt;p&gt; From a development standpoint, I am freezing the feature set
until after January and concentrating on performance and
resource utilization improvements for the client interface.
Since many web visitors won't have the necessary JRE
installed to run the applets prior to the tour, I'll be
writing a 'browser prequalification' applet with the
requesite Java plugin Javascript/HTML to auto-download the
JRE for the Windows platform, or link to the appropriate
site for other platforms.

&lt;p&gt; Since my last post I made a few updates to the map applet
and posServer CGI to support auto startup/shutdown of the
client applet. Last weekends test revealed a bug that
occasionally causes the shared memory segment, used for
signalling the showmap CGI to return the Java plugin HTML,
not to be updated after poslibtcx starts up. My current
theory on the cause is that the &lt;a
href="http://www.praecogito.com/~brudy/zaza/code/web-interface/posServer/"&gt;posServer&lt;/a&gt;
CGI updates the
segment too early, it immediately gets flushed by
&lt;a
href="http://www.praecogito.com/~brudy/zaza/code/web-interface/poslib/"&gt;poslib&lt;/a&gt;::poslibinit()
during the startup sequence of &lt;a
href="http://www.praecogito.com/~brudy/zaza/code/web-interface/poslibtcx/"&gt;poslibtcx&lt;/a&gt;.
I also finally remembered to take screen shots of the current
versions of both the &lt;a
href="http://www.praecogito.com/~brudy/zaza/pictures/thumb/zaza-control-interface-4-0.shtml"&gt;control&lt;/a&gt;
and &lt;a
href="http://www.praecogito.com/~brudy/zaza/pictures/thumb/public-web-interface-screenshot-4-0.shtml"&gt;user
interface&lt;/a&gt; screens.</description>
    </item>
    <item>
      <pubDate>Tue, 14 Oct 2003 06:23:15 GMT</pubDate>
      <title>14 Oct 2003</title>
      <link>http://robots.net/person/rudybrian/diary.html?start=37</link>
      <guid>http://robots.net/person/rudybrian/diary.html?start=37</guid>
      <description>Last Friday I finished off work on the first working version
of &lt;strong&gt;Zaza&lt;/strong&gt;'s &lt;a
href="http://www.praecogito.com/~brudy/zaza/code/web-interface/mapselect/"&gt;selectmap
CGI&lt;/a&gt;. I ended up using the &lt;a
href="http://www.imagemagick.org/www/perl.html"&gt;Perl
interface to ImageMagick&lt;/a&gt; for auto-generation of the
start position thumbnails, but the performance is
sub-optimal. The antialiasing functions perform poorly. The
image-shearing-based rotation algorithm doesn't work well on
small images, so the robot image looks pretty bad (See &lt;a
href="http://zazaconsole.exhibits.thetech.org/mapselect/Exploration.001_startpos_0.png"&gt;here&lt;/a&gt;,
&lt;a
href="http://zazaconsole.exhibits.thetech.org/mapselect/Exploration.001_startpos_1.png"&gt;here&lt;/a&gt;,
and &lt;a
href="http://zazaconsole.exhibits.thetech.org/mapselect/Exploration.001_startpos_2.png"&gt;here&lt;/a&gt;).
 To top it all off, it chews up 100% of the server's CPU for
three seconds while generating images. Yuck...

&lt;p&gt; I also successfully tested auto-generation of the
map.initprobs and map.laserDist.1.1000 files (the
map.planmap file could also be auto-generated, but would
need to be edited to include unseen obstacles for the
obstacleServer.) This simplifies some of the aspects of
running with new maps. The first two files are used by the
localizer system to determine the robot's initial pose on
startup, and to pre-load the Bayesian position estimation
routines of the localizer for faster position estimation
than interpreting a BeeSoft-format map in real-time would
allow. &lt;a
href="http://www-2.cs.cmu.edu/~carmen/"&gt;Carmen&lt;/a&gt;'s new
mapping system/localizer are all integrated, so all the data
included in these files are included in a single map. I look
forward to the simplicity this allows ;)

&lt;p&gt; For some reason Redhat included some changes in the last
eratta version of mod_perl for Apache 1.3.27 that reduced
the scope of subroutine references and broke external
references to poslib functions in the posServer CGI and
C-language wrapper for poslib used by poslibtcx. To work
around this poslib needed to be defined as a package, and
all functions updated to explicitly reference the package
functions. I guess this is the proper way to do it, but I
had to waste a few hours resolving the problem instead of
finishing off the applet/Java plugin auto-generation CGI.

&lt;p&gt; I made a few additions to poslib, and started work on
another CGI (showmap) to add support for auto-content
generation for the map applet frame. When finished, it will
automatically cut-over to the map applet after selectmap
starts up all of the Phase IV components, or a status page
with the time of the next scheduled run.  I'll also need to
update posServer to provide functionality for status polling
with the ZazaMap applet.


&lt;p&gt; On another front, the &lt;a
href="http://www.praecogito.com/~brudy/blue_cube/"&gt;Blue
Cube&lt;/a&gt;'s batteries are badly sulfated and have been on the
charger in float mode for two weeks with all showing signs
of improvement, but only three of the five returning to a
reasonable voltage in the last few days. Gotta be patient I
guess ;)  Last week I added a simple 250ms RC delay to the
'power good' line of the motherboard's power supply which
should help improve startup reliability.</description>
    </item>
  </channel>
</rss>
