Geekbot Demo 3 - Line Router

Pose Control

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!

  1. Project Parts List
  2. Assemble your Geekbot
  3. Download the Sketch
  4. Setting Up

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

Geekbot Sketches

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 geekbot-master 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 -> geekbotV3LineRouter
and upload the code to your Geekduino.

Setting Up

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 dark
For a dark line on light floor, leave mySensorBar.clearInvertBits(); uncommented. For a light line on dark floor, //comment out mySensorBar.clearInvertBits(); and uncomment mySensorBar.setInvertBits();


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!
4-Way Intersections
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!
3-Way Intersections
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.
T Intersections
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

Getting Started