Showing posts with label robot blog. Show all posts
Showing posts with label robot blog. Show all posts

Tuesday, November 6, 2012

3-3. Basic Programming of the Android Controller/Camera

When I was trying to figure out what would be the brains of Porter, there were a few design considerations.
  • Computer Vision processing - a 640x480 raw RGB image takes up about a MB of memory, so if I wanted to do some object recognition or tracking with it, that put most "microcontrollers" like the Arduino off-limits.
  • Easily programmable - After poking around, I settled on Android as a platform OS, so I needed some hardware that had good support for Android.
  • Small form factor - It needs to fit into a small form factor to provide flexibility for the chassis design.
Freescale wired up for use
I finally have settled for my initial prototype on using Freescale's i.MX53 single board microprocessor (Their quick start kit costs $149).   It's about the size of a smartphone, is beefy enough to handle the computer vision with 1GB of RAM, and has multiple USB ports. Freescale used to be Motorola semiconductor, so they have a lot of history and a good user community. Also, Adeneo makes a nice BSP port of Android for the i.MX53, with driver support for cameras, mice, etc.  

There are a few other comparable boards on the market, most notably the PandaBoard ($161) and the Raspberry Pi ($35), which I might end up using for the final production robot, but I felt that at this point in development, Freescale's community and maturity of the Android port were enough to go with them.

i.MX53 hooked up to VGA monitor

Why Android?

Some of you might question why I'm using Android as the platform OS for Porterbot.  Aside from my desire to eventually create a custom OS for truly parallel and intuitive robot processing, Android attracts me because of Java.  Why is Java important?  Why not program in C++, or better yet, in some "hot" old language like Python or Ruby?  Here are my personal and highly biased reasons.
  • I've been using Java in my dayjob since 1997, so I'm inherently comfortable using it. 
  • Java gets a bad rap these days by programmers wanting to be more efficient but it was never intended to be the ultimate programming language.   It was written by James Gosling for the same reason I would; because cross-compiling C++ code and makefiles with endless dependencies  makes my skin crawl. 
  • I can create a robot DSL (domain specific language) in Groovy (a functional language wrapper around Java) and with a little bit of lifting, figure out how to make it work on Android.
  • It would be nice to bring the robot community into the 21st century in a good way (not in a Nightmare on Elm Street way like Microsoft's Robot Developer Studio monster).
Anyway, Android is Google's take on Java, it's reasonably open source, and the developer community is very large. 

Saturday, October 27, 2012

Who's building Porter?

In case you are wondering, Dave is not your average geek.  He is also a swing and now salsa dancer, scuba diver, runner, gourmet bread baker, permaculturist, dad to four under the age of nine and super humble guy (which is why I am writing this particular post without his permission).  


So how in the world does he get time to do robot stuff???

Below is his secret planning trick based on SCRUM, a time-management method used to manage multiple software projects at once.  At least that's what I think it does.  

This is our bedroom wall.

He also uses this nifty software called XMind alongside his Google Calendar which syncs with my own.  This ensures that he is not building Porter on nights that he is supposed to make us a sushi dinner.  

So who's building Porter?  Dave is, and he wants you to join him on his path of robot discovery.

Hello robot enthusiasts out there who want to show and tell!  We'd love to hear about any robot projects you have - big or small.

Wednesday, October 24, 2012

Stepper and DC Motors? What's the diff?

For purposes of mobile robotics, there are basically 2 different types of motors;
  • Stepper Motors - the stator windings are around the outside, there is a permanent magnet on the rotor. Electric current is repeatedly pulsed to windings to force the rotor to turn in steps.
  • DC Motors - the magnets are on the outside and the electric windings are around the rotor.  Electricity is applied to the core electromagnet.
I'm no electrical engineer (as I will probably repeat many times in this blog), but after doing some research on the torque needed to drive the wheels (to calculate torque, you use the weight, angle of incline, and radius of drive wheel), I settled on using stepper motors. 


Coming from a computer science background, it seemed desirable to be able to control stepper motors precisely using software.   

Stepper motors also provide holding torque (torque when the motors are not turning), which I thought might be useful on stairs.  

Tuesday, October 23, 2012

Porter Robot Blog begins!

I finally got around to kicking off this blog, the purpose of which is to document the development process I'm going through to create the Porter robot. 
We don't quite know what Porter will look like yet.
In the meantime, here's a "P" for Porter!

Porter is a handy guy, meant to act as its namesake; carrying heavy items up and down stairs and all around the house on a wheeled platform.  
Currently, I am working on this Roomba 
to serve as our prototype wheeled platform.  To be replaced soon...


Porter learns his way around the house using camera vision and ultrasound sensors, and is rugged enough to carry heavy objects.  
Currently, I am using the Kinnect to tinker with camera vision.
I got the idea for Porter as a commercial project as a way to learn practically how to build a robot, including how to design and build a chassis, drive and control the robot using electric motors, and map/navigate around a house using computer vision.  I tend to be rather optimistic, so I thought this project was doable while still being pretty innovative.  

I've come a long way, but still have a long way to go, so I thought it would be a good point to start tracking all the progress I'm making.  Perhaps some of this information will be of use to a future roboteur.  Enjoy!


The current set-up