This demonstration shows how to run the Geekbot Line Router, which allows you to input a series of turn commands on an LCD Control Panel to be carried out by the Geekbot. You'll be laying down paths with intersections that you can give your geekbot directions to navigate through! This is a step up from the simple line follower, and a meaningful step toward automating your geekbot! With the introduction of intersections, your geekbot will be able to travel intelligently! This is a great project for students, because it allows for temporary route programming that teaches the logical steps that a robot takes when navigating, and can help develop an understanding of programming routines. This demonstration also serves as a building block for our next lesson that will cover hard coding a map. Once you have routes that work well with this code, you can easily translate them into map directions that should work for the next demonstration. Let's get going!Contents:
Project Parts List:
RobotGeek Geekbot Kit
Everything you'll need to get started with this demo is included in the RobotGeek Geekbot Kit! We'll be using the Sparkfun Line Follower Array on the standard Geekbot Base.
Assemble your Geekbot
Geekbot V3 Assembly Guide
Follow and complete the Geekbot V3 Assembly Guide, making sure to follow the directions for mounting the Line Follower Array. If you haven't already done so, go through the Geekduino Getting Started Guide and the Geekbot Getting Started Guide.
Download the Sketch
A .zip file with all of the Geekbot Sketches can be found here.
If you haven't already done so, download and install the RobotGeek Libraries and Tools here.
Unzip the file and you will have a folder called
We recommend that you find the
RobotGeek Sketches folder in your Arduino user folder and put the
geekbot-master in there. The rest of this guide will assume you've placed your sketches in the following folder.
Arduino -> RobotGeek Sketches -> geekbot-master
This will be the same 'Arduino' folder you put your libraries and robotgeek tools in, and NOT the folder where the Arduino application is.
File -> Sketchbook -> RobotGeek Sketches -> geekbot-master -> Geekbot_V3 -> geekbotV3LineRouterand upload the code to your Geekduino.
You'll need to place a black line on light flooring, or a white line on dark flooring for the geekbot to follow. We use Electrical Tape to lay down the lines because it adheres well, has bold color that the sensor reads well, and doesn't leave any residue on the floor! A good test pattern is an infinity ∞ line. This gives you a single 4 way intersection that feeds back into itself, so you can make sure your geekbot is taking intersections If you have a light line on dark flooring, you'll have to set invert bits in the code. Check out lines 18-19 in LineSensorArray.cpp:
mySensorBar.clearInvertBits(); //Default: dark on light //mySensorBar.setInvertBits(); //Alternate option: light line on darkFor a dark line on light floor, leave
mySensorBar.clearInvertBits();uncommented. For a light line on dark floor, //comment out
Once you have the sensor bar configured, all you have to do is turn on the geekbot, set it on the line, and use the prompts on the screen to give it directions! You can adjust the trim on the fly with the Rotation Knob. If your geekbot is having trouble finding the line, you can adjust the sensitivity of the Line Following Array by turning the blue knob on it.
Setting up intersections:
The main function of this code allows you to navigate lines with intersections. To have a properly functioning robot, let's go over what it can handle!
The Geekbot navigates in terms of 90 degree turns. The highest number of paths that can be a part of a single intersection is 4. 4-Way intersections are great middle points for any map you want to navigate!
A 3-way Intersection is a good way to have an offshoot of a main path to a single destination. Notice that the tape overshoots the line, dead ending on one of the paths. This is so that when the geekbot is coming from either side, the line sensor array can see that this is an intersection and act accordingly.
These should only be used as endpoints. This is a great way to mark a single path for the Geekbot to end on and U-Turn!
Though the Intersections should be 90 degree turns from each other, there's no reason that long lines can't be curved!
Make yourself a map and have fun sending the Geekbot through it!
PC Control These demos and projects allow the robot to be controlled via a computer.
ArbotiX Commander Control - These demos and projects control the Robot using the ArbotiX Commander, the handheld Arduino based remote control.
Direct Control - These demos and projects control the Robot directly from sensors connected directly to the Robot's control board.
Pose Control - These demos and projects allow you to create and playback a sequence of poses.
Serial Control - These demos and projects control the robot using a serial packet protocol.
Standalone - These demos and projects are deisgned to let your robot function without a computer or additional microcontroller.
Wireless Control - These demos and projects allow you to control the robot wirelessly - usually by replacing the Serial Connection with XBee modules.
Reference - These articles have technical details regarding the control and operation of the robot.
More info here