Introduction: How to Make a Low Cost Mobile Robot Platform
This Instructable is about building a robotic base to support your experiments.
This Instructable is intended for anyone getting started on a low voltage mobile platform. Other readers might find something interesting here too, your mileage may vary. Even if I help just one person with their project, or to move forward on something, then I will have achieved my primary objective with this Instructable, to help humanity. Robots can be used for good, to help us.
I have always been fascinated by robots, but I personally started building robots because I wanted to learn Python. I started learning that I could make things move and affect the environment around me in the real world by writing code. That's when I found out Arduino micro-controllers were being used for small robots, so I became interested in microcontrollers.
I decided I wanted something practical to work on to keep me interested in this arcane subject of robots. I didn't want to build battle bots, I wanted something I could use in every day life. One day while planning what I would use I found some electronics that already had motors, and the rest is history.
This guide is intended for the beginner and will be focused on making a platform for robotic experimentation. This guide will not go into detail on the robot operating system used for autonomous mode.
For more details on a cool advanced robot operating system visit the ROS homepage: http://www.ros.org/
Once you have a stable platform you can use ROS as the operating system for an autonomous robot, or maybe even use an Arduino, or a Raspberry Pi with some Bash, C, and/or Python code. There are now many options to choose from when it comes to micro-controllers and computers in these early days of amateur robot builders.
Using a mobile robot sometimes requires manual control. In tele-op (https://en.wikipedia.org/wiki/Mobile_robot) mode you can take full manual control of your robot as your robot's intelligence grows. Manual or tele-op - A manually tele-operated robot is totally under control of a driver with a joystick, RC remote, or other control device.
Benefits of using this robot building approach:
- Long run times
- Mobile helper
- Large payload capability
Advanced Capabilities of the robot platform described:
- Mobile Media Player
- Mobile Wifi Hacking
- Video and Audio Surveillance
- Robotic Arm
- Charging Station
- Amplified Music
- Volt Meter
- Mobile Linux Workstation
- Mobile Windows Workstation
- Mobile OS X Workstation
- Temperature & other sensors
This Instructable keeps in mind Asimov’s zeroth law: A robot may not harm humanity, or, by inaction, allow humanity to come to harm. Human safety is the most important element in the way robots should be built. The only limits to building should be your imagination. We always use the kiss (keep it simple stupid) principle.
P.S. I'm sharing some pictures to hopefully make your journey more interesting you can use them for reference or just for laugh. Here's some videos of some of the results of my work and the Bots that I made for my dog Benji.
And finally, like I like to say "Fear not the Bot."
Step 1: Preparing to Build a Working Model
In this step I start building the foundation of my robot.
Basic Tools Required:
- Cutting tools (such as a dremel or a hacksaw if need be)
- Crimping tool
- Wire Strippers
- Soldering Iron
- Small Phillips screwdriver
- Small screwdriver
- Jumper Wires (with Banana Clips)
Advanced Tools Required:
- a Computer Mac, PC, or Linux for programming and finding reference material like schematics
- small cordless power drill (very handy to attach mechanical parts with ease and accuracy)
- an IDE (Integrated Development Environment) for writing some code
- a version control system, as your robot evolves you may want to use Github or SVN to track changes to your code especially if you are working with others and share code.
1. Mobile Base
2. Batteries (Power Source)
5. Add-ons (Microcontrollers, computers, cameras, etc...)
NOTES: The thing that has made my projects so enjoyable is that I have taken the time to make my rig as reliable as possible. This might mean taking extra time to secure something like a piece of hardware or extra time to make wiring look neat (and safe.) Avoid using tape on your robot for any electrical connections.
For example, choosing the right fuses to protect your circuits. Choosing connectors that will stay connected even while moving. These safety measures will be important while you work on your robot, as you turn it on, and if you want to protect your equipment and the safety of people around it.
Step 2: Gather Your Notes and Parts List and Build Something
1. What kind of Robot will it be?
Will it carry 300 ounces or 300 lbs -- plan ahead
2. How much power will you need?
Will you need 9v, or 12v, 14v, 24v, etc...? So many choices. -- I find it's best to overpower your projects so that you have room for growth. I wanted my robot to carry my dog, a sound system, some drinks, tools, and a sandwich. So I built a robot that carries 300lbs (it ended up running on 24v.) Since my load is only about 100lbs my robot is well overpowered. This means I will have a longer run time.
If you start with 24 volts you can use a DC-DC converter to convert it to 5 volts for your Raspberry Pi or Arduino microcontroller. Some ITX motherboards support variable voltage DC-DC converters that you can power from your 24 volt robot base. This will allow you to use a single power source. LEDs will usually be 12v or 5v.
3. How will your robot be built to withstand movement?
This is one of the more important points for why you would want to take your time to build carefully. As your robot moves around things may become loose, wiggle, or even fall off. This could even be a safety issue.
4. Make written notes and build --In the initial stages of building something from scratch I try and brainstorm my writing/drawing my ideas on paper.
If there's some hardware laying around I will play with some parts to try and develop a prototype and get a better idea of how the mechanical engineering of my project will take shape. I might even take apart some junk electronics to see what might work together.
Step 3: Choose Your Base & Find Parts
The focus of this type of robot will be a home made differential drive robot with tank steering. You can build your base or find something that already has a platform to build from.
This means find whatever surplus, junk, or piece of metal, wood, or old electronics that you can repurpose maybe even an RC car, automated floor vacuum cleaner, electric wheelchair, etc... Use your imagination.
If you can find a pair of identical motors you can mount them on a board in a parallel fashion and make your own base. My advice on this is to find a source of base that you can find replacement parts for.
I believe you will find the best satisfaction if you can reuse something for your robot to try and be eco-friendly.
1. Mobile Base (with wheels, tracked vehicle, etc..)
2. Power Supply (choose from LiPo, NiMH, choose rechargeable, lightweight affordable batteries.)
3. Motor Controller
4. Central Processing Unit (CPU) (e.g. Intel ITX, Raspberry Pi, Arduino, Beaglebone)
5. Connecting Wire, Hookup Wire (you will need a variety of gauges 18g, 14g, 12g)
6. Connectors - choosing the right connections for your robot will be super important
Step 4: Wire Up a Power Supply and Controllers
You'll want to find a device to control the power to your motors. There are many options to choose from, even combustion engine. But, we will focus on a simple tank steering style robot with two motors.
Since we may program our robots movements, a micro-controller + motor shield combination might work. For basic low powered robots a Raspberry Pi device (or similar) can be used with WiringPi http://wiringpi.com/ to control an Arduino that controls your motor controller. For more complex robots you might opt for an Intel ITX system with a high power motor controller.
Before choosing motor control you will want to check the requirements for your motors. Check the voltage and current requirements by looking at the labels or model number of your hardware and and cross reference this on the web.
If you are building your robot from scratch you may opt to buy an off the shelf device to control the motors for your robot. I find that as a "Maker" you have to find a balance between making it yourself and buying it...
For an Arduino based robot choose a motor shield. Here is a nice Instructable on the Arduino Motor Shield: https://www.instructables.com/id/Arduino-Motor-Shie...
For larger bots you need something that will handle larger current and voltage needs such as products from Pololu and others (do your research or ask) https://www.pololu.com/category/10/brushed-dc-moto...
If you've chosen an existing mobile platform to hack then you're halfway there you just need to figure out how to control the electric motors. I typically end up with platforms that use 12 & 24 volts of DC voltage and motors. Smaller robots could use any voltage but you'll probably want to stay with at least a 5 volt base. Keep in mind that for larger payloads and run time you will want to choose a 12 or 24 volt base.
At this point you should know how to measure voltage. If not, here are some links for reference:
NOTES: The power in your automobile and many electronics devices is 12 volts, so you will find a good selection of connectors and power sources for this low voltage. I find that many of the connectors will work for the lower 5 volts or even higher 24 volts. At 24 volts you will need thicker gauge wire, fuses, and switches as the high current may burn out equipment only designed for 12 volts or lower. High quality auto electrical components should be considered. Automotive (& truck supply shops) will also carry fuses for high current applications used in larger 12v and 24v robots. Trossen Robotics http://www.trossenrobotics.com/store/c/3407-Robot-...
carries a nice selection of components specifically for robotic applications as does http://www.robotshop.com.
The components you choose will depend on the complexity of your robot. Will it support autonomous or tele-op mode or both? The more you add to your robot the more complex it will be, start with the basics.
Step 5: Do Some Testing & Take Measurements
In the early stages you will want to test the durability of the platform you have built or chosen. It's ok to take your half built work of art for a spin. I learned some of my best lessons while testing.
Find out if you're robot will hold together. Find out if your batteries last long enough, or if you have any loose connections. Sometimes this means taking it out on the road or down the hallway using tele-op mode.
Measure the run time of your batteries to find out what kind of experiments you will be able to run and for how long.
Step 6: Determine Your Mode of Operation (RC, Cloud, Autonomous, )
You have many choices to choose from in Tele-op mode. A popular method is by way of RC. In mobile robots many times the method we use for movement is called tank steering.
Here is a good explanation at MIT http://groups.csail.mit.edu/drl/courses/cs54-2001s...
With this tank steering style of operation you will generally have two motors one on each side of the robot.
If you have established this style, then we move on to sending commands to your robot for manual control. IT can be a serial communication to your Arduino fired off from your Raspberry Pi.
RC (Remote Control) Method of Tele-op
Using the RC Remote Control method you can RC Remote controllers and receivers at Hobby King http://www.hobbyking.com
Consider using these transmitter/receiver combos:
Choosing an RC remote that will be comfortable in your hands or with single handed operation. Useful features might be:
- Auto shutoff if the transmitter loses contact with the receiver (for safety)
- Good battery options
Cloud Connected Control Method of Tele-op
The cloud control method of teleoperation of your robot is a very popular option. You can control it from just about anywhere from a mobile phone, browser, etc... And having the programmability from a remote location also means you can keep making progress when you are away.
The folks over at Dexter Industries http://www.dexterindustries.com/BrickPi/projects/b... have a nice visual of another method through your Raspberry Pi or other micro-controller or computer.
Using a web interface you can send commands to your Raspberry Pi and either use the GPIO on the Pi use those commands to interface to your Arduino via USB cable.
You can use a secure tunnel or VPN to control it from anywhere in the world with this method (not just your local Wifi network.)
To get to Autonomous mode we will want our mobile base fully functioning first. Then, we must choose a computer program and possibly sensors to automate the commands that the robot will use to function. For example, if you want an obstacle avoidance robot we will need something as basic as a PIR sensor or as advanced as https://en.wikipedia.org/wiki/Lidar Lidar.
Another subject of interest might be human-robot interaction
Human-robot interaction is an area where AI (Artifical Intelligence) is helping humans progress. By combing the learning skills of a robot and movement, sound, or video we can create interactions with our robot that could be useful or just entertaining.
Step 7: Connect Your Hardware
Connecting your hardware is where the careful planning might come in handy. At this point you have a list of what you are going to install. This step will vary from robot to robot.
You may want to determine at this step if you will use encoders on the wheels to enable a form of localization called "Dead Reckoning" https://en.wikipedia.org/wiki/Dead_reckoning With Dead reckoning you can determine your robot's location from a previous location based on the number of revolutions the wheels have made.
First secure the main power leads coming from the battery pack. Then you will have two leads for connecting the positive + and negative - leads of your power source that will be connected to your controller. The controller will supply the correct power to the motors. Secure the leads to your motors from the controller. On some mobile platforms there will be an additional lead/wire that you may have to apply a positive + voltage to release the wheel lock.
This may also be a time to connect any robotic claws, amplified speakers, etc... to get some testing with a full load.
A place for central wire distribution for each subsystem is always a good idea. This will usually allow for better placement of fuses. Use good high quality components to avoid loose or broken connections. I use CAT5 wire and connectors and distribute central power from terminal blocks http://www.jameco.com/webapp/wcs/stores/servlet/Pr... then I adapt the CAT5 components to that for distribution.
Step 8: Write Some Code
At some point, you will code.
If you will be using an Arduino you will need the IDE (integrated development environment) for Arduino here:
I like to develop some of tools for my robot at the command line so that I can later use those tools in other programs from a script. A method for something like this might be using Pyserial, a serial port extension to send command to the Arduino using Python.
Here is a description for using the GPIO pins on the Raspberry Pi to control the Arduino as a slave here:
Here's some sample code to control the motion of a robot using Python:
# This sample code is not complete, but will you get you started
import RPi.GPIO as GPIO
GPIO.setup(5,GPIO.OUT) #Left motor input A
GPIO.setup(7,GPIO.OUT) #Left motor input B
GPIO.setup(11,GPIO.OUT) #Right motor input A
GPIO.setup(13,GPIO.OUT) #Right motor input B
print "Rotating both motors in clockwise direction"
time.sleep(1) #One second delay
print "Rotating both motors in anticlockwise direction"
#One second delay
Step 9: Get & Stay Organized, Taking Notes, Prototype
Building robots will take a substantial investment of your time. It pays to plan ahead and be organized. I found that the best way to progress was to have a goal in mind to stay focused and stay organized to save time.
Before getting to the fun of writing code we need a stable base. It helps to have a goal to build something useful and practical. Personally, when I began I wasn't really interested in building battle bots, or play toys. I wanted something that could carry my tools or maybe even my dog.
Make a written list of the goals you want to accomplish with your robot, this will help you visualize. Notes on the best vendors if you need to buy hardware, electronics, or even where to get free junk
Make some hand written drawings to help you visualize what you are building ahead of time. Use a CAD program, Visio, or Omnigraffle if you know how and have the extra time. This helps to get the thinking process going and will allow you to think of things that you might have otherwise overlooked.
You may find interest in taking apart surplus electronics, old robots, anything and build something. It doesn't always work out, but the experience is well worth it. Sometimes I come back to these broken ideas with more experience and I am able to improve on the ideas that initially did not work out. I usually throw everything in clear plastic bags or clear plastic bins to stay organized when I'm not using them. One of the challenges of building robots is the amount of space you will need for your project. As your robot grows, so will the need for storage space, and transporting your robot-- keep this in mind as you choose your base and find something practical to use.
Keep your lab organized, usually after building something I find that my tools are out, and there is a mess. This is not the best way to brainstorm about robots. Keep your tools put away and organized so that you can find them when you need them. Removing unnecessary clutter, will help you think clearly and allow you to progress faster.
It helps to keep an inventory of the parts available for your project, by keeping things organized sometimes a visual inventory will be enough for some things. I break my robot down into different subsystems to make it easier to work on one thing at a time. Use the "kiss" (keep it simple stupid) principle at all times. Then you can progress to add-ons. Use all your resources, there might be something right in front of you that could be used for your next robot.
Step 10: Advanced Topics
When your mobile robot is finally working and able to move you will be ready for more advanced experimentation. I sometimes use objects in nature for inspiration when I am building the physical shape. The software for your robot might resemble a small computer network when it is done consider this as you plan for the overall load.
The list is endless but here are some ideas to consider for making your robot useful:
- Integrate ROS the advanced Robot Operating System for autonomous mode using localization and mapping for obstacle avoidance.
- Make it cloud connected so that you can control your robot from the web, a mobile phone, or a Bash script.
- Log video, audio, and wifi surveillance with GPS points.
- Use bluetooth for basic local controls from a mobile phone.
- Use secure methods for connecting back to a central command and control computer.