A Programmer's First Arduino

Hey guys, nice to meetcha! I'm a .NET programmer by day, but I've always wanted to get into robotics. I just ordered the Uno, and I'm excited about getting started. I want to make a challenge out of going as cheap as possible and using tools and materials I already have. I've got some basic PC repair tools, soldering iron, and random electronic bits lying around. I've also got an HP Mini 1000 netbook that I've been struggling to find a use for, and an extra HTC Nexus One to toss into the mix. At this point, I've done a lot more thinking about "Wow, wouldn't it be cool if it could do XYZ?" than researching into what is possible and what isn't. Some of these goals will be very challenging to say the least, especially for a software guy with no robotics experience, but this should be a long-term project (and quite educational) so why not shoot for the moon? Here's a list of goals and sub-goals just off the top of my head.

Goal 1: Create an autonomous, indoor roverbot to be used as a platform for other experiments in machine learning, human interaction, data collection, etc. Sub-goals include:

  • Safely navigate an indoor environment. (Not necessarily perform SLAM)
  • Self-charge. (I'm not starting with an iRobot Create because I'd like a more scalable platform. Plus, self-charge is a challenge.)

Goal 2: Add capability to perform data collection and store feedback from its environment by remote control over the web, including things like:

  • Video
  • Audio
  • Trigger by motion or noise
  • Temperature

Goal 3: Add capability to manipulate objects in the environment via arm or gripper.

  • Determine the weight of an object in its grip.
  • Attempt to pick up an object and take pictures of it from several angles.

Goal 4: This is the pie-in-the-sky goal. I'd like to bring all the functionality together and allow the robot to rove around its environment and collect data about "objects of interest". It would compare the attributes of an unknown object against stored attributes of known objects in its database, and store the new object as similar if so. Generally, having the robot say "Hey what's that thing?" and then carrying out its own process for identifying it. As I understand it, this is the "correspondence problem" in robotics and has not yet been elegantly solved.

I've got a few more goals, but these should keep me busy for the rest of my life so I'll cover them later. Using the MS Kinect to perform SLAM would be awesome. I've found a few great resources for parts and info, but if you guys have any tips or general guidance for my project it would be much appreciated. There is still much to learn about the Force, and I am but a young padawan.

-E

I'm not sure where to start with this, but you don't seem to indicate what level of electronics experience you have? What have you built in the past? Do you understand Ohm's law? Are you familiar with a multimeter (do you even own one)? Are you familiar with troubleshooting electronic circuits? Do you understand how to read a schematic? Do you understand basic electronic components and how they work (ie, resistors, diodes, capacitors, transistors, etc)?

If the answer to any of the above is "no" - then before you should even attempt "Goal 1", "Goal 0" should be to acquire the above knowledge (and then some).

Without that level of knowledge, you'll be spending gobs of money as you burn up, blow up, short out, etc - parts and other systems, without understanding why such things are occurring. Note that even with that knowledge, you will still have such incidents; hopefully at a much lower rate, though. Just realize that electronics, and especially robotics, can get expensive quickly, depending on how and where you go with it.

I would urge you for your first robot platform, to start out small, and pre-built: Look for an old radio-controlled car toy (look for Nikko or New Bright R/C truck chassis - they form great platforms; alternatively, if you can find one, a small radio or remote controlled differentially steered tank platform is a great option) at a thrift store or Goodwill or such (shouldn't cost more than $5-10.00 USD), and build your first robot on that platform. Just make sure that you "test" the drive train and steering system by carefully and slowly moving the parts, listening and feeling for the "bad sounds or movements" of broken components; if it's broken, skip it and look for something else. Make sure, though, that you only buy something that looks kinda like a standard vehicle - as noted, a truck or a tank works best; skip any strange looking toys; you might also want to skip it if it is a low-slung car, or something that looks like a dune-buggy or sand-rail vehicle; low-slung cars can't work well on carpeting, and the others might have too much speed. You don't want "snails-pace", but you don't want something "out of control", either.

Attempting to build a robot platform from scratch (that is, buying the materials, motors, gearboxes, wheels, etc - then machining/assembling them using hand and power tools), if you don't have any experience at such mechanical construction, can become an object lesson in severe frustration. Of course, if you have this experience (you don't say), then it becomes easier. If not - building small robot based on a pre-existing platform will relieve you of this frustration, as the work is already done for you. All you have to worry about is interfacing the motors and steering system to the Arduino.

One other thing to mention once you get to the point of developing your robot platform: Perform all testing and development at the beginning with the "wheels off the ground" - put the chassis up on a small stand or something. This will keep you from accidentally driving it off the desk, dragging you soldering iron and everything else off as well, and destroying your Arduino. This kind of advice applies whether you are building a small desktop rover, or a full-size autonomous automobile. In many cases, though, you can perform testing without being connected to the drive motors at all; just substitute in LEDs for indicators of direction and control outputs.

There's a ton more than this, though - I could go on for ages on this subject. There are a ton of books out there that you would do well to pick up and read, not to mention magazines (and of course, web sites). I hope this helps, and good luck with your projects.

:slight_smile:

You are setting yourself quite high goals!
Like cr0sh said, make sure your electronics knowledge is very, very good before you get working with expensive parts.

I've been working with electronics all my life, but had to take a few years break (no time, no cash) and forgot a whole lot.
I stumbled into Arduino with the same ideas in my head, I wants robot!
I bought a starterkit with the idea, it will come back when I have it in my hands. Trust me, it doesn't.
Start of easy, blinking LED's and playing with cheap sensors, examine the results, see what you can do better or more efficient (efficiency is key with memory as small as the ATMega chips).

I'm 'playing' for nearly a week now and the electronics stuff is coming back slowly.

Good luck and show us what you make :slight_smile:

You said that you were a .NET programmer by day. This might interest you: http://netduino.com/ I have never used it, but it could be useful if it is using a language you are familiar with.