Society of Robots
Search and Index Search Here

 Parts List
 Robot Forum
 Member Pages
 Axon MCU
 Robot Books

 How To Build
  A Robot




 Robot Journals
 Robot Theory

    How The FAQ Do I Build A Robot?

    Frequently Asked Robot Questions

    Read Me!
    If you have been linked to this page, it simply means that you have asked a Frequently Asked Question. The answer to your question can be found below, along with many other very commonly asked questions.

    Please don't feel offended for being sent this link. This is simply a way to reduce the workload of Admin and others who want to help you with your question.

    And remember, just because your question may not be here does not mean it hasn't already been asked. Please search this website before asking any questions in the robot forum! Also, to help us better help you, make sure you read this post before asking any questions.


    Can you give me detailed instructions on how to build a robot from scratch?
    It is entirely a myth that you can build a robot from 'scratch.' You cannot. What you really want to do is build a custom robot, instead of buying a kit off the shelf, right? What we recommend you to do is build the $50 Robot. This step-by-step robot tutorial will help you make a complete robot, custom to your design. This tutorial will teach you more than any kit ever could, and give you more 'I built it myself' pride, too.

    Can I scrap my old computer and other electronics to make a robot?
    Yes and no. BEAM robots can be made 100% from common scrapped electronics. However, you cannot make a programmable robot 100% from scrapped electronics. Probably not even 25%. Why is this? Because to program, you need such things as a microcontroller and a special programmer for it. You also will probably want to use servos, and some type of robot sensor that you just won't have otherwise. But there are things you can scrap to save you money, such as batteries, capacitors, and various hardware components (screws, wheels, casings, wiring). Check these two posts for more ideas, and to suggest ideas of your own.

    I want to make a robot that's fast and strong, what motor should I use?
    Well it depends on how you define 'fast' and 'strong'. Like all engineering problems, you cannot solve them with subjective questions. You need to first decide quantitatively how fast you want your robot to go, and how strong your robot needs to be. Put these exact numbers into an equation, and the math will tell you what motor can handle your exact specs. Remember, if you guess the answer, you could find yourself having spent wasted money on a motor that is way too weak. Now before you panic, don't worry I have you covered on the math. First, read my robot dynamics tutorial, then head over to my robot motor factor calculator to do all the math for you.

    What would be a good battery for my robot?
    Decide on how long you want your robot to run before a recharge, and determine (by using datasheets and experiments with a multimeter) how much current your electronics and motors draw. Then head over to the battery tutorial to learn about the different types of batteries. You will also find a battery calculator, and a list of places to buy your batteries from.

    What is the best microcontroller?
    A similar question would be, what is the best car? Well that depends on a lot! Microcontrollers have many different features. Some features you may need, others you won't, depending on what your robot does. If you don't know what features you plan to use, its really hard to answer this question. There are several points you need to consider. For example, is there a lot of source code already available on the web, or does hardly anyone use that particular microcontroller type? How much are you willing to pay? Is there a power bus on it, or do you need to do extra wiring? Does it have a built in programmer or do you need to buy one separately? Then you also need to consider the brand, the most common being PIC and AVR. I 'grew up' using PIC's, as they are (were?) really popular and have tons of available code. But compiling software for PIC's range in the $100's. I have since moved to AVR, as compiling software is free, the hardware is better, and they are starting to become really popular. My $50 Robot is made using AVR, so that could save you time figuring it out. I recommend browsing for available microcontrollers and reading up on the features before you make your decision.

    I personally wasn't happy with the microcontrollers available on the market, so I invented my own AVR-based Axon (for sale). This is what I currently use on all my latest robots.

    There is also a forum post worth reading discussing PIC's vs AVR's.

    How can I have my robot follow me?
    This is no simple task so do not underestimate it. The most reliable way to do this is using computer vision. If I were to do it, I would do middle mass detection on the color red, and wear a bright red shirt. As long as a Ferrari doesn't drive by, your robot will always follow you. You can easily do this with either a CMUcam, AVRcam, or using RoboRealm software with a webcam. Heck, I even wrote a RoboRealm file to do red tracking for you!

    Or, if you rather do audio tracking instead of visual tracking, check out this post on robot tracking with sound.

    I modified my servo but its still not working properly. What should I do?
    Check over the modify servo tutorial to make absolutely sure you didn't forget a step. Next, read past modify servo questions to make sure your question hasn't already been asked and solved. And if still no luck, check out the posts relating to gears in a servo.

    What are good books to learn how to make and/or program a robot?
    Check out the list of recommended robot books.

    What is the best language to learn for programming robots?
    The most common languages that robots are programmed in is C, C++, Java, BASIC, Python, XML, Lisp, and Assembly. In most languages, the concepts are exactly the same, its the syntax that is different. If you learn one of the basic languages, swapping to a different language will not be so hard. The programming language you need to use is determined by the compilers available for the hardware you wish to use. For example, if you want to program your robot in Java for a microcontroller, you need a compiler that converts Java to machine code specifically for that EXACT microcontroller. The most useful language, and the one I recommend for programming microcontrollers, is C. C can be considered the default robot language, and should be the one you learn to use. All source code I publish on this site will be in C.

    Where can I find a programming tutorial?
    There are a few programming tutorials in C posted. I also wrote a few other robot programming tutorials worth looking at.

    What's the difference between a servo and a motor?
    A servo is a DC motor but with tons of extra goodies, such as feedback control and a motor driver. I know what you are thinking, "I want a basic motor because it is cheaper than a servo." But if you want to use a basic motor for a robot, you MUST purchase and wire up a motor driver separately. Servos are much easier to use than a basic motor as this circuitry is already done for you, and at a very affordable price.

    How do I control a DC motor?
    Search for ESC, motor driver, and motor controller. These devices, all the same but under different names, take in a low current low voltage signal from your remote control, computer, or microcontroller output, and convert it to a high voltage high current signal for your DC motor. While you are at it, look up PWM too - a method of sending signals to control your motor.

    Why is my circuit not working?
    You would be amazed how many people ask this question without even posting a schematic or telling us what the circuit is supposed to do! 90% of the time these following steps will fix your circuit:

    First, check to make sure all of your grounds are common. If you have two circuits (say one for a sensor, and another for the microcontroller), they usually need a reference voltage so that they can work together. This would be referred to as grounding. Forgetting to ground circuits is a very common (and the most likely) mistake among beginners, so its why you often read 'don't forget to ground your circuit!' It is called 'ground' because back in the old days, dirt (earth) was considered the reference voltage.

    Check voltages all over your circuit. Get out your multimeter and verify that voltages are what you think they are. Check the battery voltage (to make sure its charged), check the voltage to your microcontroller, and the voltage coming out of your sensors. Make sure no component is receiving huge amounts of current or is overheating. Check for shorts. If your circuit isn't working, this will tell you exactly WHERE the problem is. Don't know what the voltages should be? Check the component datasheets and use Ohm's law =P

    Lastly, make sure your battery is fully charged and can output the required current you need. For example, don't use a cheap 9V battery to power your motors.

    Where do I find detailed information on my microcontroller? I have this robot sensor, which pin does what? How do I plug in my new motor controller? What current can my battery supply?
    Believe it or not, I do NOT memorize datasheets of your robot components (hehe). If I were to answer that question, I'd google search the part name and look for the datasheet. Pin-outs, voltages, everything you wanted to know is in the datasheet. I know, datasheets are huge and confusing, and mostly overwhelming at first look. But reading a datasheet is a required skill to build robots, and I promise you it will get much easier with just a few weeks of practice.

    What is the best college for robotics? What should I study for robots?
    These forum posts should get you thinking . . .
    1887 2791 3044 1434 1914 5884

    How do I automate my home?
    These forum posts should get you started: 4668 5511

    How do I give my robot perfect positioning?
    You want your robot to move a certain distance and have perfect positioning with zero error. You want your robot to just use encoders with zero drift. You want your robot arm to rotate with the gripper moving to an exact spot. Well to be frank, its impossible! You will never ever ever have 'perfect'. Error is something that will always exist - what, did you think your robot can actually align itself down to the very atom?

    So what you really need to ask yourself is, 'what is acceptable error?' 10%? 5%? 1%? Of course we all want .000001%, but that just isn't going to happen. Why is this? Well all sensors have some particular resolution, meaning at some point it can only sense some minimum amount of change. If the change is below that minimum, your robot will collect error. And over time, this error can add up to be rather huge.

    For example, lets say your robot car has a 1% error. If it drives 100 miles, the error will be 1 mile! Considering a road is only a few meters wide, you got a big problem there =P

    So what else can cause error? Well, imperfect terrain, friction, air resistance, vibration, electrical noise, gearing backlash, timing belt slippage, computational rounding of numbers (3.9 is just 3, etc.), and much more.

    Why can't you have .0000001% error? Well, the less error a sensor has, the more expensive it becomes and the more difficult it is to use. Computationally, your robot would have to store numbers with that many decimal places, too - a huge drain of memory and processing power. If your acceptable error is high, like 20% or even 90%, you can save quite a lot of time and money. But it really depends on your application.

    For example, what if your robot arm had to position a ball into a basket that's 1 foot wide. If the arm misses by ~3 inches, the ball is still going to go in the basket. So your acceptable error in this case would be 3 inches. No point in spending tons of money and effort in getting .00001 inch accuracy!

    So if error can't be avoided, how can robots ever work? Well, you need to use multiple sensors: local sensors and global sensors. Local sensors are encoders, range finders, cameras, etc. They can keep track in high resolution what's happening to your robot - but drift with error. Global sensors are a compass, GPS, pressure sensors, etc. Global sensors help your robot navigate because the error *never* drifts - however, the resolution tends to be fairly poor. Ideally, you'd use local sensors for most robot activities, and global sensors for comparison to detect and minimize drift.

    For example, if your 1% error robot car is driving around with GPS, the GPS error won't go above more than a few dozen meters. The local sensors keep the robot on the road, and the global sensor detects and eliminates drift. A Kalman filter is a common technique to combine sensor data.

    How do I attach a camera to my robot?
    Everyone wants a camera on their robot. But don't kid yourself, camera vision is *hard*. If you've never built a robot before, don't even think about it. But at some point you're going to be up for the challenge and I'm here to help you. First, read all about computer vision basics, Then when you're ready, let's continue on to go over your options:

    The first option is using a camera with a microcontroller. But a microcontroller alone won't have the processing power to do vision. Instead, you need to buy a camera that does dedicated onboard image processing. There are three on the market, the CMUcam (three versions), the AVRcam, and the Blackfin. Prices range from about $100 to $300, so they aren't for tight budgets. Your microcontroller will also require an available UART for interfacing (check the datasheet).

    The CMUcam has been around the longest, and in fact I've used it on two of my robots: Taurus2 and Pikachu. I've posted Taurus2 source code to interface the original CMUcam with the PIC16F877. My biggest complaint about the original CMUcam is a firmware bug that causes it to crash if the blue color maxes out (such as in bright sunlight) [download bug error]. The CMUcam2 and CMUcam3 are more 'open source' and come with more features, but are more expensive. I haven't used the newest versions, though. The creator of the CMUcam, at least a few years ago, answered my emails and helped me through my interfacing troubles.

    The AVRcam, in terms of features, is comparable to the CMUcam2. I almost ended up buying it too, but despite it being 'open source', there is no actual open source community on the web for it. I couldn't find any interface code for it, the AVRcam forum blocks new members, and the creator ignores my emails. No support, therefore I passed it up.

    The Blackfin is the newest of the bunch, and the one I'm currently using on my Experimental Robot Platform. I've also posted source code to interface the Blackfin with my Axon microcontroller. It's still lacking a bit in features and documentation as of this writing, but the creator is actively developing and improving it daily. He is also *very* responsive in terms of support. If you post a question in the SoR Forum, he'll be quick to answer it.

    Your second option is to interface a webcam with your laptop/PC. Since you probably own both of these already, this is your cheapest option. But you might not want to put your laptop on a robot that crashes into walls . . . Just download RoboRealm and you're set to go!

    Your last option, the easiest of the three, is best for remote control robots. In this option, you buy a wireless camera (you can find them really cheap on EBay). Then using the receiver that came with the camera, attach it to an old analog TV for viewing. Now that TV's are soon to be legally required to be digital, there will be tons of analog types available ultra cheap.

    More info can be found in this forum post.

    update: a new camera you should investigate is the NXTCam v2

    DC motors are cheaper than servos, so why use a servo?
    Servos are more than just DC motors. They contain a full motor driver, a gear box, a position sensor, a built in PID loop control algorithm, and only require a single wire hooked directly up to your microcontroller for full motor control.

    DC motors on the other hand cannot operate directly from a microcontroller. You'll need to buy/make a motor driver, buy/attach your own gears (yes, you need gears for a motor to work properly), wire everything up to a circuit board (servos are plug-n-play), and then program PWM. And unlike with a servo, this method will require more than one I/O pin.

    If you are making the $50 Robot, I highly recommend using servos because they are cheaper and much simpler to use - don't be fooled into the 'I only need a DC motor' trap!

    I want to make a robot arm, how do I control it? What motors are best?
    There are plenty of tutorials, just check these out:
    Robot Arm Tutorial
    Robot Arm Playing Card Dealer
    Making robot arms for my ERP
    Robot Arm Calculator

    How do I control a robot with a phone?
    Generally phones are best for talking to people, microcontrollers are best for controlling robots. But if you want to use your phone to control a robot, here are forum posts to help you research.
    2634 3161 4555 5037 5279 7170 7342

Get Your Ad Here

Has this site helped you with your robot? Give us credit - link back, and help others in the forums!
Society of Robots copyright 2005-2014
forum SMF post simple machines