Lab Session 3

Introduction

Last week, you programmed your robot to detect collisions with walls, and to detect white lines on the table, and take some action in each case.  If you have not yet completed Challenge 2 from last week, you should do this now - ask a demonstrator to help you to do it quickly.

This week, you will program your robot to follow a white line on the table.  You will then use a beacon receiver to detect the beacon signals on the table, and program your robot to drive towards one of them.

Line following

We discussed algorithms for following a line in the lecture this week.  For this exercise, you may use one or two optical sensors - you may build more sensors later, if you need them for your competition robot.

Task 1

Write a program to make your robot drive along a white line on the table, using information from one or two optical sensors.  It should continue until it hits an obstacle - you can use the switches already on your robot for this.

As a minimum, your robot should be able to follow a straight white line, but a robot which is able to drive in a straight line could do this without looking at the line!  To check that your robot is actually able to follow a line, you should test it on a line with corners, or on a curved line.  If it can follow a curved line, then it should be able to survive unexpected events in the competition, such as being knocked off course by the other robot.

Beacons

The beacons are mounted at each end of the table, as shown.  They transmit pulses of infra-red light at regular intervals - about 5ms at one end, about 12ms at the other.

A beacon receiver on your robot can detect these pulses, and we provide software to measure the time interval.

Full details are available on the beacons page.

 

Beacon software

If you are using a fixed computer, the beacon software should be installed already.  If you are using a laptop, you should download the beacon receiver software and save it with the filename  beacons.icb  in the  lib\handyboard  folder under Interactive C, or else in the folder where your programs are saved.  If the software is not in one of these places, the Interactive C compiler will not be able to find it!

See the beacon page or the lecture notes for details of the software and how to use it.

Task 2

The first step is to get your beacon receiver working.  You can use the receiver on the Handyboard, but only if it is high enough - it needs to be about 160mm above the table surface.  It will also be easier to use if it is facing towards the front of your robot.  Otherwise, you should add an external beacon receiver to your robot.  You can find this in Bag Z.  You should mount it at least 160mm above the table, facing towards the front of your robot.  You must connect it to port 8 on your Handyboard.

Download the example program, beacon-test.ic.  This will show you which beacon signal is being received, if any.  As given, it uses the internal beacon receiver on the Handyboard - you can modify it to use the external beacon receiver.  Use this program to test your beacon receiver.  It should "see" a 5ms signal from the beacon at one end of the table, and a 12ms signal from the other beacon.

The signals are quite strong - your receiver should be able to receive the beacon signal anywhere on the table, as long as there is no obstruction between the beacon and the receiver.  If it receives signals from both beacons at the same time, it will probably get a confused signal and report that it is seeing no beacon at all.

Shielding

You may have noticed that the beacon receiver accepts signals over a wide range of angles - even from behind, if the signal is strong!  This is no use if you are trying to figure out which way your robot is facing, or where the beacon is.  You need to put a shield around your receiver, so that it only receives light from a small range of angles.  

WARNING:  The infra-red receiver is delicate!  Take great care in fitting a shield over it, so that you do not break it off the Handyboard or the external circuit board! 

You will find some shielding parts in Bag Z, which you can fit over the beacon receiver.  The tubular shield has a slot into which the infra-red receiver should fit.  The open rectangular shield should fit over the infra-red receiver, but you will have to cut away one end of it to allow light in.  Use a small amount of black insulating tape to hold your shield in place.  Put some tape over the top of the shield also, to stop unwanted light coming in from above.

Use your program from Task 2 to test your shield.  If necessary, adjust the shield so that it allows in light over a suitable range of angles.  You need to be sure that if your robot "sees" the signal from the beacon, it is actually facing towards the beacon.

Task 3

Choose one of the beacon signals, and set a variable mybeacon to either 5 or 12 accordingly.  Get your robot to spin until it sees your chosen beacon signal, then stop.  Check that when your robot stops it is pointing straight at the correct beacon.  If necessary, you can adjust the shield or make the robot turn a little to correct any problems.  

Now add to this program so that the robot turns to face the beacon and then drives towards it.  It should continue checking the beacon signal as it drives - it may lose the signal as it drives towards the beacon, for example, if it is not driving in exactly the right direction, or if it is not driving in a straight line.  If it loses the signal, it should turn until it finds it again.  It should continue until it hits an obstacle - if all is well, this should be the wall below the beacon!

Task 4

Add timeouts to your program in task 3.  The idea is to ensure that your robot will not turn forever, looking for a beacon signal.  If it does not find a signal in a reasonable time, it should assume that there is an obstruction (perhaps another robot) and drive to another part of the table to try again.

Challenge 3

This combines your work in tasks 1 and 4.  Program your robot so that you can place it on a line, near one end of the table, and it will drive along the line until it hits something, then turn and drive to your chosen beacon.  It should stop when it hits the wall below the beacon.  It should be able to cope with an obstruction which blocks the beacon signal from a part of the table.

That is the basic requirement.  If you have time, you should consider refinements - for example:
beep and/or display messages to let humans know what is going on;
let the robot start anywhere on the table, and find a line to drive along...

When this program is working, show it to one of the staff in the lab, and get your team number recorded.

Report

Add a large comment at the start of your program for Challenge 3.  This should explain who you are, what your program was supposed to do, and how well it did it.  This report can be quite short, but it must provide enough information so that we can make sense of your program.  The program itself should have plenty of comments to help with this.

You can work on the report outside the laboratory - any text editor, such as Notepad, can open the program file and allow you to add comments.  The deadline for submission is 10am on Friday 8 February.  One submission from each team is sufficient - the author should be a different member of the team each week.  As the entire team will be assessed on the basis of this report and program, so you should all check that you are happy with it before it is submitted.

Submit the file containing your report and program by e-mail, to roborugby@ee.ucd.ie.  Add the entire file as an attachment - NOT in the body of the e-mail.  Put your team number in the subject line of the e-mail.

Tidying

Disconnect the white cable from the Handyboard, and make sure that the Handyboard is switched off.  These two steps are necessary to prevent the Handyboard battery from being discharged over the next few days.  We will charge these batteries for a few hours before the laboratory session next week, but there will not be time to re-charge them fully if you let them discharge completely!

Put all your Lego parts and your robot into the large plastic box.  Make sure the robot is accessible in the box, so that the Handyboard battery can be charged later.  Check the desk and the floor for stray pieces of Lego - you may need them for your competition robot!

If you were working at a desktop computer, you can leave the interface and charging unit on the desk.  If you were using a laptop computer, please disconnect the interface and charging unit from the computer, and put it and the power supply unit into the box with everything else.

 

Copyright 2008, UCD School of Electrical, Electronic and Mechanical Engineering. Contact