MAAHR (Most Advanced Amateur Humanoid Robot) Project

Update 2012.06.26

The Brain has been off for several months.  (That's not good for a brain) So I'm warming it up.  There is an additional reason to start the brain up.  I have been trying to get a CI (Jenkins Continuous Integeration) Server up and running in the cloud.  Regretfully, since I can only afford the micro-free images from EC2 these systems can not handle the testing.  They kill the build because its using to much memory.  

So the brain is going to build its own software !

I'm just going to scrape off the Fedora with that irritating Gnome3 put on Ubuntu + Jenkins, then start the continuous integration there.  Hmmm maybe testing with real visual feeds..  might be fun.


The goal is to design, build and program a robot which is nearly as sophisticated as ASIMO ($1,000,000) or WilloGarage's PR2 ($400,000) at a faction of the cost with off the shelf components. The project is completely open source, everybody can participate.


  • Design: Ro-Bot-X, cr0c0, MarkusB
  • Mechanics: TinHead, JoeBTheKing, Jad-Berro, MarkusB
  • Electronic: MarkusB, Jad-Berro
  • Software: GroG, AgentBurn
  • Web presence: JoeBTheKing
  • You?




Part Quantity Purpose Cost Shipping Link


Intel D525MW 1 Main Brain $83.94 $7.22


M2 - ATX PSU 1 Power for Brain $72.50 $8.72


Memory 2 G Memory for Brain $21.84 $0.00


Drive 1 T   $75.48 $0.00


Kinect     $90.00 $0.00 Craigslist


Webcam Logitec C600   $39.48


USB Wifi          




Total     $383.24 $15.94 $399.18


Intel Info Link -

Current Milestones


  • Assemble brains in a protective case
  • Install all software
  • Verify working of Battery and Power Supply Unit
  • Attach Webcam
  • Attach Kinect - OpenCV Kinect update
  • Attach Bare Bones Board Arduino Clone
  • Design Base

Build Log Most Current At Top


Mobile Platform Progress

I am loading a (way too big) speaker set on Audrey and had to re-wire/re-boot the system.  In the process I realized that I was not sure of the "power on" jumper.  It took an unacceptable 30 minute search to track down the user manual :-(

Front Panel Header Reference

Here is the portal to the board for future reference :


I have put together a basic mobile platform.  The deck has a ATX power supply on it for tethered power operations, as power brown-outs during development are something to be avoided.


The kitchen tall garbage pale works well as a cowling.

Some lessons learned:
The wireless router I have has a DNS service, but it does not actually work ... thanks QWest..
When the router gives out a wirless IP address it does not actually bother to make a route to that IP.. traffic must come from the ip address - I don't know how the persistance of the route is handled at this point.

Oh, and I moved this site to Amazon's EC2, where it is effectively free and I have full control over it (unlike GoDaddy) YAY !

OpenCV / Kinect Progress :


I created a couple more filters and added some functionality to the OpenCV Service.  I have also created a new Service  called FSMTest for "Finite State Machine Test".  Not much is implemented as I wanted to get the Sphinx and Google speech recognition Services in a useful state.

Now that the housekeeping is done, I have uploaded a quick video of the progress.

What happens :

  • The FSM starts up - the Speech recognition services will begin listening for commands (I disabled them currently, because they take a lot of "start up" time which hinders debugging
  • I will command it to look for an object
  • It will rapidly go through various filters and techniques for object segmentation ... "Finding the Object"
  • It will then go through its associative memory looking for a match - if it finds a match it will "Report the Object"
  • If it does not find a match it will query for associative information from me.  This wil be "Resolving the Object". I will use with Sphinx speech recognition initially, but I am very interested in hooking into the Google speech recognizer Service I created recently.
  • This test shows a guitar case lying against the wall
  • Segmentation is only done with the kinect.  The kinect can range distances and a depth from 4' to 4' 3 inches is segmented off and turned into a polygon.
  • The polygon's bounding area is found then a template is created.
  • The Matching template filter is put into place, then the object is matched and locked.
  • The matching template will be associated with speech recognized words and put into memory, which can be serialized.
  • When an object leave the field of vision, and later returns to it, the robot will "Resolve the Object" and its associations.  It will be able to "Report the Object" by saying such briliant things as "Why did you put a guitar case in front of me?" .. which in turn may lead to other associations?




Remote Connectivity:

It is nice to have options.  A full X desktop would be nice to have with this project.
It would be necessary to start and use the X desktop from the command line.  Here are the step necessary to accomplish this.

  • Fedora 15 default will not have the sshd daemon running on boot - to change this option use the following commands
    # systemctl start sshd.service  # - will start the sshd daemon
    # systemctl enable sshd.service  # - will autostart the daemon on boot
  • X11vnc is a vnc server - a nice decription of the various flavors of vnc server is here
  • VNC a number of ports opened on the firewall - 5800 5900 6000  for display 0 - for each display N a new set of ports 580N 590N 600N would need to be opened
  • The command line to start the vnc server on the MAAHR brain is 
    sudo x11vnc -safer -ncache 10 -once -display :0
  • This starts the vnc server so a login is a vailable - that is why root needs to start it.  You must make sure that display :0 is not being used by a current login.
  • TADA ! Fedora Core 15 running remotely on maahrBot 
  • I will be communicating to MRL directly so I needed to open up port 6161 UDP on the firewall too
  • The tower has grown a bit - It now includes the SLA Battery & a Power Supply.  The idea is I would like to keep this system on with 100% uptime.  So, when the system is charging it can still be online.  I don't know when Markus's base will be here, so I'm working on a temporary with some old H-Bridges I created a long time ago.

    It's simple, allows extensibility with more decks, cheap, and should be modular enough to "bolt on" to a variety of platforms.
  • It's "nice" to have a desktop to work on but MRL can run headless and the video feeds can be sent to other MRLs running on different computers.
  • I downloaded MRL-00013 unzipped and ran the following command line for headless operation, remote connectivity, and opencv

    $ java -classpath ":myrobotlab.jar:./lib/*" -Dja.library.path=./bin org.myrobotlab.service.Invoker -service OpenCV opencv RemoteAdapter remote
     This starts the OpenCV service and the RemoteAdapter service
    On my desktop I started just a gui service instances and connected to the maahrBot.
  • After refreshing MRL services local the remote services on the maahrBot appeared as green tabs
  • The control is the same as if the service was running locally to my desktop - it worked well with a high frame rate.
  • A few more little updates and I should be able to switch from webcam to kinect on the maahrBot

Brain Arrives:


PSU Unit Arrives, unfortunately it was missing a 2 X 2 12v processor core cable

Simples protective Brain Case I could think of is a series of wood decks supported by 1/4" bolts.
I had some scrap 1/4" panelling for the decks.  Wood is nice because you can screw in the components anywhere and its non conductive.

Deck 1 - Mini-ITX Computer

Deck 2 - Drive and Power Supply Unit

Deck 3 - Tagged Cover.

Software Install

  • Connected Brain to a regular ATX power supply - this is important to do on the install - for example you can brick it if power goes out during a BIOS update
  • Jacked in the EtherPort (I don't like wireless during installs)
  • Update BIOS (Link)
  • Installed Fedora 15 from Live USB - Use Basic Video Mode (Problems with GNOME3)
  • Installed RPMFusion and Livna Repos
  • Disabled SELinux
  • Rebooted
  •  yum -y groupinstall 'Development Tools' 'Java Development' 'Adminitration Tools' Eclipse 'Sound and Video' Graphics
  • _go do something - this will take a while_
  • # uname -a returns (have not rebuilt the kernel yet)
    Linux #1 SMP Mon Jun 13 20:01:50 UTC 2011 i686 i686 i386
  • Installed Chrome
  • Started Eclipse - was pleasantly suprised to see it had loaded with SVN support
  • Browsed to SVN URL -   right-click "check out" - finish - ready to Rock 'n Roll
  • yum -y groupinstall Robotics
  • yum -y install cmake cmake-gui
  • New version of OpenCV 2.3 (they are much more productive now) - downloaded


make opencv 2.3 build - get latest javacv


Markus Bindhammer (MarkusB) Project Founder, Designer, Electronics, Mechanics - has promised $15K support
Greg Perry (GroG) MRL Founder, Software Engineer, Electronics