This Instructable is about building a robotic base to support your experiments or quest for World domination.
[INote: Still working to complete this Instructable in the next 2 days, I will be updating it daily. Refresh your browser if you’ve visited this link before.]
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.
I’ve always been fascinated by robots, but I personally started building robots because I wanted to learn Python. Well, I’m still learning Python, and I’m still learning how to build robots. 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.
Since I wanted learn the basics of the C programming language 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 getting a platform for robotic experimentation fully operational. 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.
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.
Fear not the Robot!
Task 1: 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.
A passion for wanting to learn things (like Python,) but before getting to the fun of writing code we need a stable base. Have a goal to build something useful and practical
I’ve always wanted to build something useful. 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.
Stay Organized & Make Space
Sometimes I take apart junk, old robots, electronics 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.
Take breaks: This is every important, if you get stuck and aren’t getting anywhere remember to breath! Take a break, go for a walk, get something healthy a human would eat.
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.
Inventory: 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 until you have a reliably working prototype. Then you can progress to add-ons.
1. Mobile Base
2. Batteries (Power Source)
5. Add-ons (Microcontrollers, computers, cameras, etc…)
Use all your resources, there might be something right in front of you that could be used for your next robot.
Task 2: 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.
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.
Task 3: 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.
Task 4: Choose your base & find parts
The focus of this type of robot will be a differential drive robot with tank steering.
This means find whatever junk or piece of metal, piece of wood, or old robot that you can repurpose maybe even an RC car, automated floor vacuum cleaners, 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
NOTES: Try http://www.jameco.com for electronics parts. http://hobbyking.com for RC parts.
Task 5: Wire up a power supply & motor control to your motors
You’ll want to find a device to control the power to your motors. Since we may program our robots movements a microcontroller + motor shield combination might work. For basic low powered bots a Raspberry Pi device (or similar) can be used with WiringPi to control an Arduino that controls your motor controller. For more complex bots 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.
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: http://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.
Task 6: 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.
Task 7: 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:
Cloud Connected Control Method of Tele-op
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 microcontroller 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.
Task 8: Connect your Hardware
This step will vary from robot to robot. Essentially, at this step you may want to decide 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.
If you have DC motors only, then you will have two leads for connecting the positive + and negative – leads of your power source. 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 servos for arm movements.
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.
Task 9: 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 tools for my robot at the command line so that I can later use those tools in other programs. So a method for something like this might be using Pyserial, 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 using an IR sensor to control the motion of a robot using Python:
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
Task 10: Advanced topics
When your mobile robot is finally working and able to move you will be ready for more advanced experimentation.
The list is endless but here are some ideas:
– 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.
robots – How to make a Mobile Robot platform, in category: technology