Lab Session 4

Introduction

If you have not yet completed Challenge 3 from last week, you should do this now.  If you are having trouble with programming concepts, ask a demonstrator for help - it is important to get to grips with these concepts now!  

Your first task in this session is to learn how to use the servo actuator - you may find this useful in your competition robot.  The rest of the tasks are concerned with finding balls on the RoboRugby table, using distance sensors.  You will have to write programs to use the information from these sensors to control how the robot behaves.

We will be expecting a high standard of programming in this session - it is more important to get it right than to get it finished!  There will be time at the start of the next lab session to finish the tasks from this session if necessary.  The deadline for report submission is long enough to allow for this.

Servo Actuator

The servo actuator allows you to position some part of your robot very precisely.  For example, you could use it to move some part of your robot to a different position at some point during a match.  You can find the servo actuator in bag X.  See the servo actuator page for details of what it can do and how to use it.

Task 1

The position of the servo actuator is controlled by setting a variable to a suitable value - an integer in the range from a few hundred to a few thousand.  Each servo will operate over a slightly different range of values, and it is important not to try to drive the actuator beyond its limits - it can damage itself trying to reach an impossible position.

The aim of this task is to find the limits of your particular servo actuator - you will need these values later, if you decide to use the servo in your competition robot.

First attach some Lego parts to the rotating wheel of your servo actuator, so that you can see clearly when it rotates.  There is no need to attach the actuator to your robot for this test.

Switch off your Handyboard and connect the servo cable to servo port 0 - the black wire should be on the left, nearest to the on-off switch, as shown in the picture above right.  Caution:  connecting this cable incorrectly will damage the servo actuator!

Download the  servo-test.ic  program and run it on your Handyboard.  With this program, you can adjust the position of your servo, in steps of 20, using the START and STOP buttons.  Use this to find the limits of movement of your servo.  Be conservative - if your servo seems to stop moving at a value of 420, take the lower limit as 440.  Record the upper and lower limits for future use.

Distance sensors

Find the distance sensors (bag Z) and add them to your robot.

One sensor should be about 20mm above the table surface - in line with the centre of a ball.  The other sensor should be either above the first or to one side or it, far enough away so that only one sensor at a time will "see" a ball.  If you decide to put the second sensor above the first, you should keep it low enough so that it will "see" the walls of the table.  Keeping it low should also reduce interference from the beacons.

It is important that the beam of light from the sensor is horizontal, or pointing slightly upwards - if it is pointing down, it will be reflected by the table surface, and cause problems.

Distance sensors can only be connected to analogue ports 4 and 5 on the Handyboard.  Details of how the sensors work and possible interference problems are on the distance sensor page.

Task 2

Download the  dist-sensor-test.ic  program.  Use it to test your distance sensors on the RoboRugby table, at various distances from a wall and from a ball.  Write down the values from the sensors - you will need them later.  Also note the difference between the two values - this may be useful in deciding whether a ball is present.

You should also try to get some idea of how reliable are the values from the sensors, or how much random variation you see.  As interference from the beacons is a possible cause of variation in the distance sensor values, make sure to do some tests with your robot facing a beacon (and with the beacons switched on).

Task 3

Choose a suitable criterion for your robot to use to decide if a ball (or other small object) is in front of it.  Download the  ball-find.ic  program, and modify it to include your chosen criterion.  Note that this program includes two different algorithms for ball-hunting - you only need one of them!  Experiment to see which algorithm works better for your robot.

Test your program on the table, with the beacons switched on.  Modify it as necessary to get reliable detection of balls at various distances from your robot.

Challenge 4

Program your robot to look for balls on the RoboRugby table.  When it detects a ball, it should drive towards it and hit it, to prove that it was pointing in the right direction.  Then it should turn through 180 degrees and drive away to start looking for another ball.  It should keep doing this until the STOP button is pressed.

That is the basic requirement for challenge 4.  To improve your program, and make it more useful for the competition, you could add these features:

If your robot is turning around, looking for a ball, but cannot find one, it should give up after a reasonable time and drive away to another part of the table.

When your robot is driving on the table, either to hit a ball or to move to a new location, it should monitor the bump sensors, and react appropriately if it hits something bigger than the ball.

Other useful features would be:
Messages on the display, and/or beeps or tones, to indicate what your robot is doing.
When your robot is driving towards a ball, it should only drive far enough to hit it.

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 4.  This should explain who you are, what your program was supposed to do, and how well it did it.  It should also explain which port you used for each sensor and motor, if they are not clearly defined using  #define.  Your report 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, and should be well laid out and easy to read.

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.  One submission from each team is sufficient, but 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 you submit it.

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.  The deadline for submission is 10am on Thursday 21 February.

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!  Please do not put balls, tools or tape into your box.

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