| 
  • If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

  • Whenever you search in PBworks, Dokkio Sidebar (from the makers of PBworks) will run the same search in your Drive, Dropbox, OneDrive, Gmail, and Slack. Now you can find what you're looking for wherever it lives. Try Dokkio Sidebar for free.

View
 

Activity 4

Page history last edited by PBworks 14 years, 9 months ago

Getting the robot to move

 

Most simple wheeled robots have two independently driven wheels, one mounted each side of the robot. The power and direction of each motor can be independently varied. Robotocists call this a differential drive. Differential drives are often found on tanks, where instead of two indepdently driven wheels, there are two independently driven tracks.

 

For convenience, we shall assume a common configuration for the robot buggy.

 

For a LEGO RCX buggy:

  • Connect the motor on the left side of the robot as it faces forwards to output A on the RCX brick.
  • Connect the motor on the right side of the robot to output C.
  • Use the manifest LEGO.RCX.Vehicle.manifest.xml in your program.

 

For a LEGO NXT buggy (such as the Tribot):

  • Connect the motor on the left side of the robot as it faces forwards to output 1 on the NXT brick.
  • Connect the motor on the right side of the robot to output 2.
  • Use the manifest LEGO.NXT.Tribot.manifest.xml in your program.

(*** Need to check this config ***)

 

For a simulated buggy:

  • Use the manifest LEGO.NXT.Tribot.Simulation.manifest.xml in your program.

 

Exercise: Moving the robot forwards

 

How would you make the robot move forwards in a straight line for 1, 2 or 3 seconds and then stop?

 

 

What units of time does the wait action use?

 

What value does the SetDrivePower expect for full power?

 

Programming tips

  • Use a GenericDifferentialDrive service to represent the drive system of your robot.
  • You will need two copies of the same GenericDifferentialDrive object on your diagram; drag one from the Services toolbox, select it and then copy/paste to get the second copy. That way both blocks will represent the same physical drive.
  • If you click on either GenericDifferentialDrive block, you should see a "properties" panel for it in the sidebar at the right hand side of VPL window. If you change the name of the GenericDifferentialDrive (for example, to MyDiffDrive (no spaces in the name!) then you should see that both blocks get renamed in your program becuase they both refer to the same thing,
  • When you make the connection to SetDrivePower, make sure you set the data connection so that the value is sent to both LeftMotorPower and RightMotorPower.
  • To check data connections are correct, hover your mouse over the connection, or select it and check the Properties toolbox.

 

Configuration

  • You can configure the GenericDifferentialDrive using a manifest.
  • Try LEGO.RCX.Vehicle.manifest.xml for a LEGO RCX buggy
  • Try LEGO.NXT.Tribot.manifest.xml for a LEGO NXT Tribot or similar design.

 

Download this for a complete project configured for a LEGO RCX buggy: act 5 move fwd (rcx).zip

 

Exercise: Moving the robot backwards

 

How do you make the robot move backwards in a straight line?

 

 

Download this for a complete project configured for a LEGO RCX buggy: act 5 move bwd (rcx).zip

 

Exercise: Moving the robot forwards and then backwards

 

How do you make the robot drive forwards, and then backwards, for the same amount of time?

 

 

Download this for a complete project configured for a LEGO RCX buggy: act 5 move fwd and bwd (rcx).zip

 

How easy is it to change the time? Using a variable makes it easier to make changes consistently.

 

 

Download this for a complete project configured for a LEGO RCX buggy: act 5 move fwd and bwd with var.zip

 

Programming tips

  • Again, you will need several copies of the same GenericDifferentialDrive service on your diagram.
  • You will also need several Variable blocks. Note that one is sent a Set message to initialise the variable; the others receive Get messages to get the value of the variable.
  • Here we really are using the variable as a constant because we won't change its value once it is set. Some programming languages distinguish between constants and variables, but VPL doesn't -- it is up to you to decide whether to use a variable as a constant or a variable. Find out more about Constants and Variables.

 

Exercise: turning the robot

 

What happens if you power the left and right motors at different power levels?

 

What happens if you drive one motor and stop the other (power = 0)?

 

What happens if you drive one motor forward and the other backward?

 

 

Download this for a complete project (not configured): act 5 turn.zip

 

 

Discussion question

 

What differences are there between the behaviour of a simulated robot and the behaviour of a real robot?

 

Back to Home or on to Activity 5

 

Comments (0)

You don't have permission to comment on this page.