Friday, January 20, 2012

Choosing my first robot

Where to start when robotics field is so wide? Where to start with so many kinds of robots and possibilities?

Step #1: Establish my criteria.

I started by asking myself: Do I want to build from scratch my robot or do I want to buy a built one? After some deep thinking and reading a lot of people’s experiences on the web, I went to the conclusion that for the first robotic project it's better to buy at least the robot hardware, creating it would take a lot of time and at most probably you want to start putting into the robot some logic right away.  
I remember from the time I was in college the painful debugging sessions when you have a low quality hardware structure, having to adjust electrical control and software with after every mechanical adjustment. So during my research I placed strong emphasis on looking for a sturdy and robust mechanical hardware that would give me reproducible and stable results.
Finally, another positive characteristic about buying the structural hardware in that way is that I can concentrate myself on getting familiar with the electrical hardware (servo motors, sensors, and controller).  Later I can have a project regarding mechanical part, but not now.

Next question was: What Kind of robot do I want? Also a though question, the type of robot to use would define some of the challenges I would face (e.g. equilibrium for walking robots). Keeping in mind that this is my first robot I didn't want to go for the most complex type of robot right away, I better master a medium range type of robot and then I will go on to most complex ones.
I decided for a robotic arm since it's a medium complexity structure that has a wide range of possibilities. A lot of studies have been done with this type of robot which can support my learning process and it’s still very used for investigation of intelligent systems.

Step #2: Choose mechanical hardware.

With all my criteria established, I surfed the web looking robot sites. For structural hardware and motors I decided myself for a Lynmotion Robotic Arm Kit ( like the one in the picture below. These modular kits have a strong finish in aluminum and they have very good reviews on different websites.

Step #3:  Choose a controller.

Lynxmotion offers a control solution for its robotics arm, but I was not very attracted to it since I was looking for a control solution that is more widespread and standardized, giving me the possibility of exchanging experiences and projects (one of current challenges in robotics field is standardization). If you would like the software solution they provide you will face the same issue, it's a customized solution that works well for this specific robot (besides it is a little expensive), it lets you move the robot, create sequences and even some type of closed loops projects; but it keeps you limited to that, there's no option for communication to other PCs, mobile phones, or other controllers. At the end point I'm looking for something without those boundaries, I know it may imply developing interfaces and logic for the robot by me, but that's exactly what I'm looking for!
During the last year I have been hearing everywhere about Arduino boards, the open source hardware project. I went and checked the specs and those boards had the capabilities to control servomotors and receive feedback from sensors (there are many videos about it on youtube), there are even lots of libraries for all kind of projects, makings things like motor control easier so you don't have to do everything from scratch (not doing what it's already done, thus focusing on new things). That's the kind of collaborating platform I was looking for; Arduino is widely used and has a large community of contributors.

In particular I went for the Arduino Uno Board (the basic board, see below picture) for the same reasons I choose a robotic arm. I have worked with microcontrollers in the past but with this board you already have everything you need for the microcontroller to work and Arduino have a programming environment based on C/C++ where you don't have to program in low level C for microcontrollers, for example you don't have to configure crystal (oscillator) frequency and deal with any bug about it. This board can supply current for one or two servo motors, but as the Arduino site states, if you are going to use more motors (that's my case) you have to source them from a different power supply. It's important to separate sources from logic and power to avoid weird issues (leading to painful debugging).

I got my Arduino board and robotic Arm a couple of weeks ago, so happy to finally have the hardware here. I have been playing a little bit with the Arduino board; my next post will be about it. 


  1. Hello Juan Carlos

    I see your blog is starting well. I wish you good luck on this project. I hope you can do something cool with your robotic arm.
    Once you master it, you can put on a mobile platform to pick up objects around.

  2. Thanks Sebastien! Yes I have great projects in mind for the robot, I'll go one step at a time, but I hope to be doing some cool stuff in some months.