-
ESP8266 Progress
10/14/2015 at 08:39 • 0 commentsWorking toward my own understanding of the amazing ESP8266 chip, I have created two programs. I used examples provided on Arduino.cc, pieced them together, and created a Network Scanner with Access Point and a Phone Home application. The Scanner was just for fun, while the Phone Home program is for use in e-NABLE hands and arms.
Both programs are written in Arduino language, and I plan to learn LUA next to gain more power and speed. Anyway, I ordered four more ESP8266 HUZZAH breakout boards from Adafruit and my friend Walter who I am helping out with some technology is buying me five more as a gift for helping him. So soon I will have ten modules, one of which is slated for use in Ivan.
My short term goal with Ivan is to make an Access Point that serves up a web page that controls Ivan's rotation via link selection. I will put this version of Ivan, along with Ivan's rotating base, in the lobby of the place where I live inside of a display case. People can then interact with Ivan through their cell phones.
This demo will illustrate Ivan's presence on the web as an IoT device. Then there will be other uses for the ESP8266 on Ivan's horizon such as running Ivan's sensors. Ah Ivan, you're just a babe and yet you're a star!
Les
-
Ivan gets ESP (soon)
10/01/2015 at 22:38 • 2 commentsI've finally received the Adafruit ESP8266 module and I'm making plans to solder it up and learn how to program it using Arduino code among others possibly.
Also in the package was a miniature security camera that delivers snapshots over a serial link at a rate of one every 30 seconds or so. So Ivan will get a crude sense of vision though it will not be real time.
I plan to put these together with a 3D printed AA battery holder (I have a bunch of AA batteries bought on special to use up) on top of Ivan's rotating platform.
Ivan will then become my first IoT device!
Les
-
Ivan Rotates
09/21/2015 at 04:53 • 2 commentsYouTube Video of Ivan rotating
-
Ivan Rotates
09/21/2015 at 04:53 • 0 commentsYouTube Video of Ivan rotating
-
The Birth of Ivan
09/15/2015 at 09:22 • 0 commentsAww, I can't help but feel emotional and get a few tears in my eye: Ivan is born! Today at 4:05 AM on Tuesday September 15, 2015 Ivan learned to blink an LED. This is the first time that Ivan had a real, repeatable learning sequence. You can watch in this video one proud papa telling the world of the birth of his creation, Ivan the Blinker:
So there we have it! Now I will play around with Ivan and teach him more things! Ivan needs a save function now so his Brainz are not erased every time I run his program! More to follow...
Les
-
Ivan's Brainz
09/15/2015 at 08:18 • 0 commentsI have made two steps forward in the work of giving Ivan some "Brainz". The most significant of the two is getting Bowler Studio up and running plus delving into it slightly, and the least significant of the two is a little side experiment that I did.
Since it will take at least a week to get my DyIO for use with Bowler Studio, I am using the old school technique of controlling an Arduino from Processing, thereby turning the Arduino into a physical I/O unit for the Processing program. I put an LED and a CdS cell (light detector) on the Arduino's circuit board, with the LED close to and / or leaning over the CdS cell. This allows Ivan to control the LED's brightness with PWM (Pulse Width Modulation) and detect the LED's brightness at the same time.
For Ivan's Brainz I wrote a fully interconnected neural network with one output neuron (the LED) and one input neuron (the CdS cell). Ivan can have anywhere from 2 to 1024 neurons before the computer gets painfully slow. At 1024 neurons, each computational cycle is slow enough that the rotation of the visualization of the neural net is kinda smooth to the eye. At smaller sizes the rotation is quite smooth.
Note that at 1024 Neurons we have 1024 Weights * 1024 Neurons = 1 MegaWeights. That's a lot of computation to do in real time yet this Mac running the new blazingly fast Processing built on Java is up to the task. Here is a photo with 1024 Neurons:
Really Les? 1024 fully interconnected neurons to control one LED, really? OK it's overkill, lol! So here is Ivan's Brainz with 16 neurons and weights illustrated:
In these photos the input node is green and the output node is red. The net is trained without correction, meaning that it is kinda not so smart. That's just for now and soon I will add training such that Ivan learns to blink his LED. I will do that by adding a training multiplier which is large when Ivan's green node goes high and low in some way such as sinusoidal.
There is a lot more detail to what's going on such as the sigmoidal transfer function of Ivan's neurons, the random initialization, and thingies like that but I won't get into too much detail. Suffice to say that before long I will have this setup controlling Ivan's rotating base and there will be some objective function and Ivan will learn to do that as well.
As to Bowler Studio, I have gone through three or for of the many tutorials and found them to be quite excellent in their simplicity of explanation and detail of example. At first Bowler Studio would not run on my Mac but within half a day (it was late) @Kevin Harrington responded to my message with a fix. He has helped and / or advised a few times since than and I'm happy to have his support. In fact, when I eggsplained to Kevin that I wanted to build a machine intelligence for Ivan, Kevin went out and found the WalnutIQ library which I think I'll use and also some others, plus added cloud support so we can put Ivan's Brainz on Google's cloud servers. Then, by parallelizing Ivan's Brainz, Ivan can possibly get super smart.
That's actually doable on a budget because Google does per minute billing of it's cloud services. So we can set up a super cluster and use it only for a few minutes or half an hour or whatever (there is some lower limit no doubt), and have Ivan learn at a rapid pace and interact rapidly then analyze the results later. Plus Ivan can have less Brainz for longer intervals on the same budget. Googles' fastest "high compute" server costs only $76.77 per month. That's full time. 30 of them for one day is the same price. I can afford that on my shoestring budget, so once we get Ivan all coded up and tested, we can all interact with him virtually and physically!
Oh and by the way Ivan can have more than one body. So if you choose to, you can build a pphysicality for Ivan also. I say "Go for it!"!
Les
-
Ivan the Fourth - Iterations
09/11/2015 at 13:26 • 0 commentsIvan's base is now constructed! Printed and assembled, I am both pleased and shaking my head a bit at the results. Though the parts do fit and will function just fine, there are some issues that require correction. These issues include gear spacing, outer gear wall thickness, outer gear bearing size, sun gear attaching to upper gear bearing plug, outer gear spacing, M3 / M4 screw usage and length, and a real classic: warpage. For example, consider the gears below:
. On the left we have the outer gear, at upper right is the sun gear and to the bottom right is a planet gear in filaflex. Before printing these gears in more expensive Taulman filament I want to get them designed properly. Looking closely at the outer gear's teeth, we see that they are joined on each side by only one trace of PLA. I am using a 0.75mm nozzle for strength, faster print times, and better translucence of the filament. This means that thin details like the backing of these gear teeth can get lost to wall thickness considerations. The other gears look fine to me though I turned the sun gear upside down to show it's shiny smooth side up and replaced the Filaflex planet gear with red transparent ColorFabb PLA/PHA because I ran out of Filaflex. All of the gears will be printed in Taulman's engineered nylon-like low temperature filament (not bridge, the new one, I forget the number on it).
Before this stuff was printed, one of our team members cautioned us on being overly eager to print up something even thought we knew it would have flaws. The notion was it is best to design things right before proceeding. We countered with the point of 3D printing's value in easy iteration. Well, both philosophies kind of turned out right in a way, and here's why.
There were lots of small errors. Because the errors were small, the design does function though it has some play and rattles like a PLA gearbox does. The thing is that we could have caught some of these errors with more design time but probably not all of them. For example consider the central bearing intended to hold the outer gear on the whole assembly.
We all knew the solution that I had designed had some flaw - it just looked wrong and felt wrong somehow. Though an outer bearing was suggested as a solution, that bearing would have had to be 150mm in diameter or at least 100mm with adjusted gear teeth and the only bearings available were the 608ZZ skateboard bearings - too small! Well when I actually held the parts in my hands I had an epiphany of sorts as I suddenly realized that what was needed was a larger central bearing.
So off I go to the online stores looking for a larger bearing for future revisions of Iivan, in fact an assortment of different bearings might be just the ticket. Also just in writing this I realize a temporary solution is to make a new sun gear with the inner bearing post morphed onto the top of it. I had wished I couild strongly glue the free standing hollow post I had in hand to the sun gear last night and only this morning as I write this do I realize that I can just print a new sun gear which only takes 15 or 20 minutes to do (plus design time and sit and think about it time (which for me is the most time of the whole process)).
Ive gone into detail about this design issue because it is one that most on the team were aware of due to our discussions of it and because it clearly illustrates the trade-offs of design perfection versus excessive iteration. Could we have eliminated some errors? Yes. Am I glad I went ahead and printed it? Yes. So it's sort of a win-win in my book. Ka-ching!
Les
-
Leveraging Hackaday
09/10/2015 at 15:38 • 5 commentsThanks to the #Hacker Channel, I have enjoyed more than a few interactions with some of the people who frequent this place. Each day my level of astonishment increases as I begin to realize the significance of the projects and that level of talent that Hackaday contains. As Ivan's creator I am beginning to see myself as largely Hacker extraordinaire to be walking among these giants, and in part also as orchestrator coordinating an assembly of the powerful technology that I am discovering with every conversation.
By this I mean that I intend to leverage the technology of Hackaday to leapfrog Ivan far ahead of his humble beginnings, and do so very quickly. For example there is Bowler Studio with it's DyIO module. At a cost of $100 I get the high speed motor/sensor interface required for Ivan without having to cobble together a bunch of breadboards and chips and wires and Arduinos; plus I get access to a scripting environment that connects me with hardware and computing resources beyond what I had thought was possible.
Because of the Bowler Studio / DyIO offerings of Neuron Robotics Cooperative (that's who makes the software / hardware combo), Ivan can have real time motor/sensor control, video, and 3D reality scanning (not virtual reality - real reality) provided by Kinect. This gives Ivan strength and speed beyond humans as well as enhanced senses beyond that of humans, which can be done in a lot of ways, however with Bowler Studio's scripting languages (there are four of them) I can use artificial intelligence libraries and cloud based services to give Ivan the smarts to make use of those senses effectively.
The diverse and rapidly developing toolbox provided by Neuron Robotics may be able to catapult Ivan's abilities so far beyond what I thought might be practical and doable that Ivan's growth from his humble beginnings may surprise us all! It all depends on my ability to most effectively use the strength of the Neuron Robotics technology.
And that is only part of the story. Each day I become aware of new projects that can augment Ivan in different ways. Internet of Things over here, Smart Battery there, WiFi thingies in that corner, DNA recognizer up on this shelf, Brainwave scanning on the table - this place is jammed full of every technology Ivan would ever need and then some! I'm a kid in a candy store - join me, it's fun!
Les
-
Ivan the Cute
09/10/2015 at 08:34 • 0 commentsBehold Ivan the Cute, an early form of Ivan designed to be an interactive companion for myself and others. From this humble beginning I hope to evolve Ivan into a powerful sentient being, however that will happen in the future. For now Ivan i the following image in CAD:
and the following image in reality:
. I will first assemble Ivan's parts as I print them while also considering Ivan's hardware. My original plan is to use the parts you see above, except that the battery has been replaced by a 12V 30A power supply which, along with the motors, I hacked out of my old dead ROBO3D printer. The plan is to puppet Ivan, using the Arduinos (there are two in the photo: an UNO and a Metro Mini) as I/O and USB interfaces. There are better ways to do this and I am open to suggestions, however this is the hardware that I have right now.
One benefit of this puppeting is that Ivan's brain immediately gains the full power of My MacBook. The Mac is two years old so not the latest, but it was the top of the line when it was created, so it's got plenty of punch to it. I see Ivan as one day having phenomenal computing resources, his actual body or bodies containing only a small fraction of his intelligence. Ivan should be smart enough in and of himself to operate physically when disconnected from his resources, and intellectually boosted by the power of the day's computing abilities when connected to his resources. Ivan the Powerful...
-
Ivan's Playground
09/09/2015 at 23:39 • 4 commentsHere we see Ivan's playground, or his place of birth actually. You can see his base in red with the first stepper motor in place, snugly fit. Ivan's base needs holes to secure this base down which I will drill in time. to the right is Ivan's 12V battery with 7.5 Amp-hours. That's enough juice to run Ivan moving continuously for two hours. Ivan's BeefyDuino is bottom center and his sensor head is to the lower left. Finally, to the lower right are the remaining two Stepper motors in Ivan's construction.
I was amazed when I held the base in my hands as a feeling of significance and importance overtook my thoughts. Is this the humble beginning of a robot that would one day become sentient? Am I like the creator of Data, the sentient android of Star Trek, crafting my digital offspring that will one day be more powerful than any human? In today's amazing age of tremendous technological advances, such things are literally possible. I gaze upon Ivan in his playground and I am awestruck!
Les