Update 11/04/2012 @ 6:30 P.M. EST:
I've been very busy but here is a very quick update:
I've finished the construction of the decks. The motors; driver; arduino; computer; power supplies,etc. are all mounted and wired up.
I now need to experiment with finding an ideal height at which to mount the xtion sensor and then i will move on to programming.
A few Pictures:
Hopefully it won't be too long before i get Him up and running. Charging and power up work well and the base seems solid so It shouldn't be too dificult to get some simple obstacle avoidance up and running.
He's come a long way from an arduino stuffed into an old computer.
Update 9/16/2012@3:14 EST:
I've tweaked the caster mount to make things more level and mounted the second deck. Next I'll either wire the power/motor systems back up or mount the third deck.
Update 8/19/2012 @ 3:04 EST:
Last Night I mounted the motors and the caster wheel to the lower deck. The caster had to be mounted on spacers to get it level but i think i did pretty well. I again wired the motor driver to one motor and a trimpot and set the battery on top to give it a whirl. I took a quick video of it with my phone.
Next up; using serial to talk to the motor driver rather than a trimpot (used for testing); and wiring up both motors with the encoders. Then i can hopefully work on the power distribution and getting the brains (mini-itx board) mounted soon.
Update 8/18/2012 @ 12:46 EST:
This morning I went out in the garage with my dad and got out the old craftsman table saw. I measured out the first deck with a ruler and pencil (yes i measured more than twice) and then we cut the first deck, then using that deck as a guide (it cut to roughly 12"x12" as hoped) I marked the next deck; which we then cut; and then repeated untill we had 3 nice decks and one remaining peice that was about 3/4" shorter than the rest (because of the wood that was cut into sawdust).
Next comes mounting the motors and wheels to the first deck, along with the battery and motor driver. Hopefully soon i should have a working base on which i can then mount the rest of the gear (with at least one more of the decks for sure).
Some sanding is also in order but currently not necessary. The sides of the wood that were cut could do with a little but they are in pretty good shape.
More info later,
Update 8/12/2012 @ 9:44 EST:
I purchased the caster wheel (a nice metal bearing one with a rubber? wheel rated for 125 lb, it rotates smoothly) as well as some wood that should let me make several 12"x12" decks.
Hopefully I should start construction relatively soon and get some pictures, etc. up. I haven't posted many as of yet because i'm sure all of you have seen computer parts and motors and my pictures aren't very good.
Anyways, I have collected and tested pretty much everything I need now; time to get back to business.
More updates Soon! :)
Update 8/11/2012 @ 1:20 EST:
I have succesfully tested the m4-atx (powered by a salvaged molex connector wired to another hacked atx psu for testing) as well as the Xtion Pro live. I modifed some sample code provided (C# simpleviewer) with openni after fighting with the install scripts for a while (they were written for ubuntu 10.10). It works smoothly as long as i dont try to render the data as an image to the screen. The atom has rather weak graphics especially considering its running without a proper graphics driver (stupid proprietary drivers...). There is a possible driver for 12.04 but i wish to continued using 10.04 and i dont need the graphics anyhow.
I also took a little bit of time and whipped up a small logo for the project:
I still need to test the picoUps and obtain the rear caster and wood for the physical platform.
Things however, are going very smoothly so far.
Update 8/5/2012 @ 12:02 EST:
All of the parts that I ordered arrived by thursday night but, with school now in session i didn't have time to work with them untill this weekend. So far i have successfully Tested the Mini-Itx board (which is working fantastically) as well as the motors and motor driver, and the Xtion Sensor (though i tested it from my big windows desktop and not from the linux board yet.
My father also picked up a logitech c270 webcam on sale for me which i've tested up to 720p viewing on the Atom board (!) running ubuntu 10.04 from a usb-live disk. So far everything is going smoothly. I have yet to test the car-computer-power-supply (m4-atx) or the picoUps (charger/dc-dc converter [12v out]) yet but I should be doing that soon. Hopefully Once i have everything tested i'll get some pictures or maybe even a video up but right now my free time has been spent on testing everything out and experimenting a bit while i look towards fabricating the actual Platform. I've been a bit busy with a cold and school, etc so hopefully I'll be able to get around to putting some more up once those things settle down.
Meanwhile I have more testing to do :)
Update 7/9/2012 @ 4:05 Pm EST:
Ok So i made a quick fix to a bug i hadnt even posted yet :P
So As I already said the Arduino has a small circuit attached that allows it to boot the Computer. Well the issue with that is i had it running in setup for testing. Which meant if usb was attached it got garbage serial data when the computer powered on and then the arduino promptly reset and shut it down. I planned to simply start coding the proper timing mechanism (using an alarm clock style program on the arduino) when i realized reseting it randomly would reset the timer and i didnt have any easy way to get a real time clock for the arduino.. I was going to sycn the clock over serial...:S
So i came up with the idea of adding a 'saftey check' to see if the computer is already on (a good idea regardless).
To keep things simple and to remove the chances of frying the ardru etc; while also adding some ambient lighting to the controller box i simply added an led wired to the case power led pins (using one scrapped from an old; dead [I mean it cant even POST and the psu is fine...] computer) and then wired a simple circuit with a photocell to check if the LED is on or not before attempting to power on the computer.
After accidentaly wiring the gnd wire with a red one and the +5v with a red one (not an issue really except that to get it working cleanly you have to wire it 'backwards', and a quick fix (resoldering the wires) I got it working based around the schematic from here ( i wanted to check for a safe circuit for the arduino analog pins so i knew i could find one on that very helpful site).
As well as some code i knocked up which checks the value 10 times very quickly and then decides wether it should power on or not. Next comes using serial from the C# app to tell it WHEN it should power on as well as synchronizing the time to the real time clock handily available to the 'onboard' linux computer.
Things i neglected to Mention Previously:
-Edwin already has a c# app capable of taking logins to various 'accounts' with stored hashed passwords; the app is capable of checking and replying to email; chatting via console (i wrote a simple chat system based around xml style markup files that contain phrases and appropriate responses); calculating things via google's calculate (Yes, I do ScreenScrape with a faked Chrome Browser User Agent :P <i found many sites give me a better version of the site if i use that agent in the headers lol>); as well as using ConceptNet5 (currently Broken...? I'll have to check into that. Something with the json on linux i think..) to search for concepts.
That app also displays an ascii logo followed by what i find to be very handy.. An automated counter that shows how long it has been under development in days (since i wrote the first version and compiled it) Currently it is 132 days.. I highly reccomend using such a system :)
Also Edwin uses the FMOD sound system to play just about any music i drop into his 'music' directory upon request. I plan to add playlists and shuffling at some point but right now its mostly just for making sure the sound system works.
Even more fun I have Festival TTS working which means that unless i launch edwin with parameters specifying "/mute" then he synthesizes responses as well as prints them to console.
The most important feature to me by far is that i have coded a Worker Node system based around a modified version of the wonderfull MPAPI. In my implementation of it; everything (input as well as console output) are logged to a timestamped file including all errors as well as special extraneous debug that i dont wish to print to console. A Root node is first spun up which then holds the main thread and runs two worker nodes. Each node is aware of its number and performs given tasks; if a node crashes then it is promplty spun back up and the error logged. This means that even with a critical runtime error Edwin would potentially plod along while warning me of the error from the main thread. It also means even a system exception does not crash Edwin. Edwin however can easily be shutdown via a shutdown command that is understood by the main thread. An example of this being usefull is if the email system 'bugs out' (which it has done so in early versions many times..) the program itself does not crash ONLY the worker node which then trys to run again. Eventually i hope to add a system to keep track of what the worker was doing to a certain degree so the worker can resume its task when it is spun up.
Phew that was lengthy :P I think thats about it so far. Hope that both clears things up and wasn't too hard on your eyes to read XD
Edwin Is a Platform i have Been building to get into 'serious' robotics development. I've played with Roborealm; c#, python, java, and both the lego NXT and RCX systems as well as the Vex Robotics systems (vex owned by the local high school) to name a few. I've been very into robots since i got my Robosapien (which was promptly hacked :3 ) and then RCX when i was much younger and have toyed with them off and on since then.
My goal with Edwin is to take things a bit further:
Edwin is to be a 'fully-autonomous' system that needs no human intervention to operate normally. I hope to get him working 24/7/365. Currently It he is based around a Computer built with parts I salvaged and an arduino which is both interfaced to the internal usb and to the Case power switch pins on the motherboard in order to allow the arduino to boot the computer (so that the main computer bit can be powered down at night to save power or potentially allow charging; yet it can power itself on later meanwhile only running a lowly micro-processor).
Eventually I plan to make Edwin a fully Featured Mobile Platform but for now I'm just coding some core stuff up in Mono/C# on Ubuntu 10.04 to operate the arduino syncing and a few other things. I'll be experimenting with this simple non-mobile platform (possibly with a robot arm and camera built around the lego stuff?) while i look into finalizing choices for the other components and earning the nessecary cash :P
Here are some Pictures of the Current State of things:
Mounting of controller:
Testing breadboarded prototype power switch for computer:
Test fit (the metal plate is the lower bit of the case from a broken,discarded optical drive):
(Sorry about the quality here. Didnt get The focus right or something.I only had my phone handy at the time and i was a little distracted)....
Everything Wired up in the Case(for testing; as you can see everything is desinged to be torn down and reused for a later iteration [I'm a huge fan of recycled/salvaged parts for use in builds and it saves money to not have to get fresh parts every time; even the resistor in the npn circuit was desoldered from an old clock radio that didnt survive an electrical storm..]) :