Skip to main content

Exploring Velocity - C++

Speedbot is ready to drive at different velocities!

This investigation will help you to learn more about programming the Speedbot to drive at speeds that are best suited for the task. In the Strike Challenge at the end, you will need to find a velocity for the Speedbot that allows it to be fast and have great momentum but remain in control in order to hit the ball at a good angle and with great force.

VEXcode V5 instructions that will be used in the first part of this investigation:

  • Drivetrain.setDriveVelocity(50, percent);
  • Drivetrain.driveFor(forward, 200, mm);
  • To find out more information about the instruction, select Help and then select the question mark icon next to a command to see more information.

    VEXcode Help menu for the Drive For command. The Help icon in the upper right corner is highlighted, illustrating what to select to open the Help Menu.

    Make sure you have the hardware required, your engineering notebook, and VEXcode V5  downloaded and ready.

Each group of students should get the hardware required and the group’s engineering notebook. Then open VEXcode V5.

Materials Required:
Quantity Materials Needed
1

Speedbot Robot

1

Charged Robot Battery

1

VEXcode V5

1

USB Cable (if using a computer)

1

Engineering Notebook

1

Ball (the size and shape of a soccer ball)

1

3m x 3m clear space

1

Meter stick or Ruler

1

Roll of tape

1

Data table

Step 1:  Preparing for the Exploration

Before you begin the activity, do you have each of these items ready?

  • Are all the motors plugged into the correct ports?

  • Are the smart cables fully inserted into all of the motors?

  • Is the Brain turned on?

  • Is the battery charged?

Step 2: Start a New Project

Complete the following steps to begin the project:

  • Open the File menu and select Open Examples.

    VEXcode V5 Toolbar with the File menu open and Open Examples highlighted in a red box. Open Examples is the fourth menu item beneath New Blocks Project, New Text Project, and Open.

     

  • Select and open the Speedbot (Drivetrain 2-motor, No Gyro) template project. The template project contains the Speedbot's motor configuration. If the template is not used, your robot will not run the project correctly.

    The 'Example Projects' menu is open, with the 'Templates' category selected. The Speedbot (Drivetrain 2-motor, No Gyro) project is highlighted with a red box, indicating which project to select and open.

     

  • Since you will be working on exploring velocity, you will name your project DriveVelocity. When finished, select Save.

    The renaming dropdown menu is opened from the Project Name button on the V5 VEXcode toolbar. The project is being renamed to 'Drive Velocity'.

     

 

 

  • Check to make sure the project name DriveVelocity is now in the window in the center of the toolbar.

    Project name reads Drive Velocity in the Toolbar and Slot 1 is selected.

Step 3: Drive Forward for 150 mm at Different Velocities

You are now ready to begin programming the robot to drive forward at different velocities!

  • Before we begin programming, we need to understand what an instruction is. There are three parts to an instruction. 

    A C++ command broken down into its components. Drivetrain is labeled as the device; Drive for is labeled as the commands; and forward, 100, and mm are labeled collectively as parameters.

  • Add the instructions to the project, so that your project looks like this:

    int main() {
      // Initializing Robot Configuration. DO NOT REMOVE!
      vexcodeInit();
      
      // Begin project code
      Drivetrain.driveFor(forward, 150, mm);
      Drivetrain.setDriveVelocity(25, percent);
      Drivetrain.driveFor(forward, 150, mm);
      Drivetrain.setDriveVelocity(75, percent);
      Drivetrain.driveFor(forward, 150, mm);
    
    }
  • Select the Slot icon to choose one of the eight available slots on the Robot Brain and select slot 1.

    VEXcode V5 Toolbar with the Slot menu opened to the left of the project name. The dropdown menu lists all of the available slots, from 1 to 8. The first slot is highlighted with a red box.

     

  • Connect the V5 Robot Brain to the computer using a micro USB cable and power on the V5 Robot Brain. The Brain icon in the toolbar turns green once a successful connection has been made.

    VEXcode V5 Toolbar with a red box around the green Brain icon, between the Controller and Download icons.

  • Select Download to download the project to the Brain.

    Download icon highlighted in a red box in the Toolbar between a green brain icon and the Run and Stop buttons.

     

  • Check to make sure your project has downloaded (C++) by looking at the Robot Brain’s screen. The project name DriveVelocity should be listed in Slot 1.

    V5 Brain Home Screen shows the Drive Velocity program in slot 1 in the lower left corner directly beneath the Drive icon.

  • Run(C++) the project on the robot by making sure the project is selected and then press the Run button on the Robot Brain. Congratulations on creating your first project!

    V5 Brain screen with the Drive Velocity program open and a red box around the Run button on the far left side. To the right of Run are buttons for Timed Run, Match, and Wiring.

Step 4: Drive Forward and Reverse for 150 mm at Different Velocities

Now that you have programmed your robot to drive forward at different velocities, program it to now drive forward and in reverse at different velocities.

  • Change the parameter in the second driveFor instruction to reverse, so your project looks like this:

    int main() {
      // Initializing Robot Configuration. DO NOT REMOVE!
      vexcodeInit();
      
      // Begin project code
      Drivetrain.driveFor(forward, 150, mm);
      Drivetrain.setDriveVelocity(25, percent);
      Drivetrain.driveFor(reverse, 150, mm);
      Drivetrain.setDriveVelocity(75, percent);
      Drivetrain.driveFor(forward, 150, mm);
    
    }
  • Select the Project Name to change it from DriveVelocity to ReverseVelocity.

    Project name dialog box in VEXcode V5 reads Reverse Velocity and shows that Slot 1 is selected.

  • Select the Slot icon to choose a new slot. Select slot 2.

    Slot selection in VEXcode V5 open with slot 2 selected and highlighted with a red box.

  • Download (C++) the project.

    Download button in the Toolbar of VEXcode V5 highlighted with a red box to the left of a green brain icon and to the right of the Run and Stop buttons.

  • Check to make sure your project has downloaded (C++) by looking at the Robot Brain’s screen. The project name ReverseVelocity should be listed in Slot 2.

    V5 Brain Home Screen shows the Reverse Velocity project in Slot 2, the second icon from the left in the bottom row, beside the Drive project in Slot 1.

  • Run (C++) the project on the robot by making sure the project is selected and then press the Run button on the Robot Brain.

    V5 Brain Screen with the Reverse Velocity project open and the Run button highlighted in a red box to the far left. To the right of Run are buttons for Timed Run, Match, and Wiring.

Step 5: Setting Up Your Testing Area

A diagram showing evenly spaced vertical lines representing distances marked at 0 cm, 50 cm, 100 cm, 150 cm, 200 cm, 250 cm, and 3 meters along a horizontal scale

Example testing area layout

  • Use tape and a meter stick, to create a 3m line on the floor like the horizontal line shown in the image above.
    • After the line is created, use tape and your meter stick once more to create 1m lines across the 3m line like the vertical lines in the image above. Tape a 1m line at every 50cm mark on the vertical line by starting at 0cm.
    • The shorter horizontal lines should be centered on the longer vertical line.
  • While the area is being set up, one or two members of your team should create a new project named Momentum. Set the velocity at 50% and have the Speedbot drive forward to the first line at 50 cm. Keep in mind 1 cm = 10 mm, so the robot will travel forward for 50 cm or 500 millimeters.

Step 6: Testing the Transfer of Energy during Collisions

A diagram showing a robot on the left side positioned at 0 cm on a horizontal scale, with a ball placed at the 50 cm mark. Vertical lines are drawn at intervals of 50 cm, labeled from 0 cm to 3 meters.

Bowling challenge test area with robot and ball

Center the ball on the horizontal line at 50cm and place your robot so that the front of it is centered on the horizontal line at 0cm. Make sure the front of the robot is facing the direction of the ball. Run your first Momentum project that has the velocity set to 50% and pay close attention as the robot collides with the ball.

Record the set velocity, the distance driven, and the distance the ball traveled in this Data Table (Google / .pdf). The first row of the table has been started for you based on the Momentum project you worked on in the previous step. Continue to add data to this table as you try setting different velocities. You can then add other teams' data as you discuss your findings as a class.

A table with three columns labeled Distance Driven by Speedbot, Set Velocity of Speedbot, and Distance Traveled by the Ball. The first three rows under Distance Driven by Speedbot are filled with 500mm, the first row under Set Velocity of Speedbot is filled with 50 percent, and the Distance Traveled by the Ball column is blank

Think about and respond to the questions below in your engineering notebook as you collect your data:

  • How can you tell that the momentum of the robot transferred energy to the ball during the collision? Explain with details.
  • Repeat the test at least twice more. Try a velocity less than 50%. Reset the ball in its position and record in the table how far the ball travels. Also, try a velocity more than 50%. Reset the ball in its position and record in the table how far the ball travels.
  • When all groups have completed their three tests, discuss the velocities that the other groups chose and how far the ball traveled in their tests. As teams share their data, add their findings to your table.
  • Look for pattern(s) in the data. Does the distance traveled by the ball increase or decrease as the set velocity increases?