Only this pageAll pages
Powered by GitBook
1 of 39

REV Professional Development: Technical Path

Loading...

Getting Started with the Curriculum

Loading...

Loading...

Loading...

Getting Started

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

First Time Programming

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Blocks Programming Boot Camp

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Engineering Design Process

Loading...

Loading...

Loading...

Intro to Robotics V2 Curriculum

Intro to Robotics V2 is an adaptable and ready-to-teach semester long course (50+ hours) for high school (9th-12th) classrooms. It is designed to align with ISTE and ITEEA standards. For information on individual state or district standards alignment, please reach out to us at education@revrobotics.com.

The version 2.0 of the curriculum has been rebuilt from the ground up to be accessible for both new and returning educators, with clear guidance and resources to support you every step of the way.

Highlights:

  • 6 units mapped to ISTE and ITEEA standards

  • Emphasis on programming, with step-by-step walkthroughs scaffolded to build student knowledge

  • Hands-on activities ranging from exploring gear trains to designing sensor-driven autonomous robots

  • Real-world themed learning, including a larger challenge in each unit

  • Educator resources, including Unit Plans, Lesson Plans, and Activity Guides

  • Each unit includes a full walkthrough, with scripts and expanded explanations, to help new teachers teach with confidence!

  • LMS compatible

Hover over the document type for additional information!

Unit Resources:

  • Unit Lesson Breakdown

  • Unit Plan

Hover over a unit title for more information!

  • Unit 1: Introduction to Robotics

  • Unit 2: Mechanical Motion: Gearing and Gear Trains

  • Unit 3:

Welcome to REV Robotics Education Professional Development!

This self-guided professional development training is a new program from REV Robotics designed to aid educators as they get started with educational robotics and the DUO Control System.

These trainings are intended to pair with the Intro to Robotics V2 Curriculum and EDU Kit V2.

Within the professional development, there are currently two groups of lessons available:

Step-by-Step Lesson Plans
  • Lesson Slideshows

  • Build and Programming Guides

  • Unit Key Terms Glossary (Blank and Filled-in)

  • Unit Activity Guide

  • Elaborated Unit Teacher Guide

  • Student Activity Handouts and Answer Sheets

  • Robots in Motion: Building a Drivable Robot
  • Unit 4: Thinking Like a Robot: Intro to Autonomous

  • Unit 5: Sensor Exploration

  • Unit 6: Bringing it All Together

  • Click here to fill out the curriculum response form for a coupon code to receive it free!

    Unit Information:

    Unit Titles:

    This collection of lessons focuses on using DUO Mechanical and Control Systems, as well as general robotics principles, getting hands-on with the robots

    This collection of lessons focuses on the ins and outs of running a robotics or technology education classroom with open-ended projects

    While there is overlap between using the DUO system in the classroom and FTC or FGC competitions, these trainings are intended to provide simplified onboarding support to new educators.

    This means there is less heavily technical or complex materials provided, such as in depth pinouts, schematics, or references to competition formats. Please see the appropriate technical documentation for that information.

    Additionally, these trainings include callouts for pairing with the Intro to Robotics V2 curriculum, such as relevant lessons or projects.

    Ready to get started? Click the tabs to explore the course catalog below!

    How is this training different than other documentation?

    Technical

    Classroom (Coming Soon)

    Click here to learn more about the free Intro to Robotics V2 Curriculum!

    Sample Lesson

    About the Lesson

    The sample lesson provided here is Lesson 2 from Unit 1 of the Intro to Robotics V2 curriculum. Within this lesson, the mechanical parts of the EDU Kit V2 are introduced followed by a small building activity to aid with student exploration and growing familiarity.

    A selection of documents have been provided here, additional supporting material may be available within the full curriculum download.

    Lesson Plan

    The lesson plan provides the learning outcomes, materials list, standards, activities, and a step-by-step simplified walkthrough for the lesson.

    Lesson 2 Lesson Plan.pdf
    PDF · 70KB
    Open

    Teacher Guide

    The teacher guide provides similar information to the lesson plan, such as learning outcomes, but provides additional elaboration on running the lesson to include scripts, time breakdowns, and activity tips.

    Lesson 2 Teacher Guide.pdf
    PDF · 370KB
    Open

    Slideshow

    The slideshow for Lesson 2 introduces different mechanical parts for the EDU Kit V2 intended for students to view while having a kit accessible to look up close.

    The goal is to grow familiarity with the part names and terms, as well as their purposes to cut down on the risk of things feeling overwhelming as the course move towards building.

    Lesson 2 - Mechanical Basics.pptx
    5MB
    Open

    Lesson Activity

    In this activity, students are building a simple launcher in their groups. No programming required! For now the focus is to practice using tools and manipulating the parts in a fun way.

    Once they finish, students can try launching crumpled paper balls or something like tennis/stress balls. We tried launching our small dino plushie ourselves.

    Lesson 2 includes the recommendation to have students practice inventory their kits. While the kits include a bill of materials, a version with checkboxes has been included in the curriculum and is available here:

    Accessing the Curriculum

    1. Go to

    2. Click "Get Your Coupon Code" on the page

    1. Fill out the Curriculum Response Form

    Inventorying

    Lesson 2 EDU Launcher Build Guide.pdf
    PDF · 1MB
    Open
    EDU Kit V2 Inventory Checklist.pdf
    PDF · 55KB
    Open

    Submit the completed form and the code will appear on the page! Note: You may need to scroll up to see it. The code will also be sent to the submitted email address.

    1. Start at the

    2. Click to add the curriculum to your cart

    3. If no other items will be added, proceed to check out.

    1. Add the coupon code on the right hand side under summary.

    1. After the coupon code is added and applied, you should see the discount applied making the curriculum free!

    1. Proceed with checking out as normal. If the curriculum is the only item on this purchase, a payment method will not be required after applying the coupon

    If adding the, be sure to click the add on before checking out!

    After following the steps above, you will receive an email receipt that includes a link to go to the downloads page!

    Download the curriculum by clicking the zip file. This may take several minutes to download due to the file size.

    1. While signed in to your REV account, click account at the top of the page

    1. This will show your order history. Locate the order containing the curriculum.

    1. Click the download arrow to return to the downloads page

    1. Download the curriculum files by clicking the zip file.

    The curriculum can be downloaded multiple times and does not require a new purchase!

    While in the downloads section, you will see several files available for download.

    Editable Version

    The zip file labeled as "Editable" contains standard documents and slideshows for the curriculum that can be used in programs such as Microsoft Office or Google Drive. This is the version most users will be familiar with.

    The curriculum was originally created using Google Drive formatting, which may lead to slight variation in other office software.

    SCORM Files

    The individual unit files are SCORM files. These are intended to be uploaded to a compatible LMS, such as Moodle or Canvas (if enabled), as an all-in-one package of the unit.

    SCORM files cannot be opened from the file explorer and are not able to be edited.

    The SCORM files for each unit can be uploaded to a compatible LMS as an all-in-one option for accessing materials:

    There are two pathways available within the files: Student Learning Path or Teacher Learning Path

    On the teacher side, the Lesson Plan and slideshows are available to be viewed directly within the LMS while other documents, such as the full Teacher Guide, are available for download from within the LMS:

    The teacher path also includes a resource list that includes the unit glossary and needed answer sheets:

    On the student side, the slideshows will be available along with handouts for activities:

    Both pathways include a Table of Contents with all the lessons in that unit:

    Getting the Coupon Code for the Free Download

    revrobotics.com/curriculum

    Engineering Design in the Classroom

    There are a lot of different ways to teach documenting progress for the Engineering Design Process or project work in general. The use of engineering notebooks is perhaps the most common and, while not specifically used in the Intro to Robotics V2 curriculum, can be great for students to have available for noting ideas and sketches.

    For the curriculum, a step-by-step handout is provided for each project with guiding questions. A more universal version is provided here:

    Engineering Design Handout.pdf
    PDF · 89KB
    Open

    This handout may be given all at once or broken into parts based on where students are in a project. Each student group should have a shared copy as their final to turn in. Scrap paper for additional sketches and brainstorming are also handy to have available.

    Purchasing

    It's recommended to sign in or create a REV account before purchasing to ensure the files are repeatedly accessible and connected to the correct account. File access will be emailed as well after purchase.

    Accessing the Files

    Accessing Files Through Your REV Account

    Intro to Robotics V1 and Intro to Robotics V2 have different SKUs. As of March 2026, small updates to the Intro to Robotics V2 curriculum will become available automatically in the downloads area seen above.

    Intro to Robotics V1 has been discontinued and will not receive additional updates.

    Curriculum File Types

    LMS Files

    Teacher Path

    Student Path

    Check your LMS's documentation for compatibility information and how-to for uploading SCORM files as activities.

    Intro to Robotics V2 curriculum product page
    SCORM File for a LMS
    SCORM File add on option
    Download menu without the SCORM add-on
    Download options with SCORM file add-on
    SCORM Files demoed in Moodle
    SCORM Pathways
    Lesson Plan displayed in the Moodle LMS
    Slideshow displayed in the Moodle LMS
    Resource section for the teacher path
    Student Activity Instructions in the Moodle LMS
    Table of Contents

    What's what?

    This professional development is intended to pair with the and the free curriculum. Those using a different kit, such as the FTC Starter Kit, may have additional parts.

    Before diving in, let's take a look at what's in the EDU Kit V2 to review some key terms and what's what!

    EDU Kit V2 Parts

    The next few pages are intended to be a quick visual reference for parts and names to be looked back upon for those new to the DUO System!

    Quick Jump

    Planning with Pseudocode

    Sometimes it can feel like the robot is just not doing what we want it to. We don't speak the same language after all, making it feel like something is lost in translation.

    With practice we can better understand what we're programming the robot to ACTUALLY do vs. what we THINK we've asked the robot to do. Especially after growing more familiar with how the robot interprets certain movements and actions.

    A pseudocode represents a program, but is described using everyday familiar wording. It's a way to break things down in a more digestible way while thinking through what we want the program to do without getting lost in technical jargon.

    When working on a large project, creating a pseudocode during planning can help students think about what they expect the robot to do and what the end goal will be.

    Writing a pseudocode is like writing directions for how to make your favorite snack. The directions need to be clear, but simple so someone else can easily follow along.

    Connecting Devices

    If it's not already open, tap the Driver Station Application on the home screen of the Driver Hub to open it.

    Look for the 3 dots in the upper right hand corner of the Driver Station Application to tap open the menu.

    In the dropdown menu, select Settings.

    Select Pair with Robot Controller

    Select Wi-Fi Settings.

    From the list of Wi-Fi networks, look for the Control Hub's assigned name that was decided during the last step of set up.

    Actuators

    There are two types of actuators available in the EDU Kit V2, servos and DC motors. Actuators convert energy into a form of motion by applying a force. In this case, they are convert electrical energy into motion by applying torque.

    Servos are a form of actuator often used for more specialized movements between positions. Servos include built-in sensors that allow them to automatically know their position without any outside programming

    These servos are capable of two modes:

    • Angular Mode: Sets the servo to move to specified positions within a 270° range of motion

    Sensors

    A touch sensor is a form of digital sensor that responds to some form of physical touch. The touch sensor found in the EDU Kit V2 uses a simple push button to switch between on or off. Within the Blocks programming language, this appears as True or False.

    A color sensor is a form of I2C sensor. This type of sensor measures reflected light, allowing it to determine how much light is being seen, the distance to a surface, and what color is in front of it. The color sensor found in the EDU Kit V2 uses a HSV model

    to determine color.

    Touch Sensor

    Color Sensor

    Actuators

    Sensors

    Mechanical Overview

    Control System
    Power and Wires
    EDU Kit V2
    Intro to Robotics (v2)

    Use important keywords/statements (if/then or if/else, while the loop, assign the variable, etc)

  • Think about the order of operations and logic

  • Notate a clear structure of where a program starts and stops

  • Keep it simple!

  • The above provides key things to keep in mind when writing pseudocode, but there's no one right way to write one. How we thinking through a program changes per person and task!

    The easiest way to practice writing pseudocode is to pick a simple task for the robot to complete and writing from there. Let's look at the field for the Unit 4 activity from the Intro to Robotics V2 curriculum as an example:

    Example field set up for Robot Lunch Rush

    Let's start simple. Maybe we want the robot to stop at the first bin on the left. How would it get there? Try writing a pseudocode before looking at the sample answer below!

    For the rough draft of the pseudocode, the timings and movements do not need to be perfect. In fact it's likely it won't be perfect the first time.

    This is about building a framework to make adjustments from!

    Consider more challenging movements like:

    • The robot drives to the far bin, then back to one of the side bins.

    • The robot moves between two of the side bins.

    • The robot stops at the first bin on the left then the upper bin on the right.

    Have students partner up with one student being the "robot" and one being the "programmer". Next, choose a simple task, like the robot walking across the room and picking up an item, that the programmer will write a pseudocode for.

    Once ready the student "robot" will follow the written directions!

    While completing this activity, student "robots" should do their best to follow the directions provided to the best of their abilities, however they should also be encouraged to be silly and have fun with it if there are key things missing, like units of measurement. Students will likely observe differences in what someone considers a "step" or even how they count seconds.

    Note: They do not need to feel restricted by the limitations of Blocks or OnBot Java!

    After "testing" their program, students should swap roles and may repeat this activity for practice.

    What is Pseudocode?

    When Writing Pseudocode:

    Robots and us don't speak the same language
    An example of a pseudocode alongside the Blocks code

    When writing a pseudocode, students should still consider directions AND measurements. For example, "turn right 90 degrees" vs. just "turn right".

    If we're thinking like a robot, "turn right" may mean to turn forever to the right in a circle!

    Pseudocode Practice Activities:

    Pick a Task

    Example Pseudocode
    • Start Program

    • Drive forward for 2 seconds

    • Stop moving for 1 second

    Paperless Programming

    Example Pseudocode
    • Start program

    • Robot turn right 90 degrees

    • Robot walk forward for 5 seconds

    Enter the password to the Wi-Fi network in the password field that was decided during the last step of set up. Then press CONNECT.

    Press the back arrow at the bottom of the display until you return to the main driver station screen.

    After a couple of seconds, the Driver Station page will indicate the network name, a ping time, and battery voltage. The robot may appear to restart (sound effect will play) before finalizing the connection.

    Your Driver Hub is now paired with your Control Hub!

    The Driver Station Application allows for the connection of two gamepads. When working with the Driver Hub these gamepads can be plugged into any of the three USB 2.0 ports. Once the gamepads are plugged in, you will need to initialize them.

    To initialize the gamepad that will act as User 1 (gamepad1, in code) press the options button and the Xbutton on the gamepad at the same time. To initialize User 2 ( gamepad2, in code) press the options button and the O button at the same time.

    Connecting the Driver Hub to the Control Hub

    Connecting Devices Walkthrough Video

    Connecting Gamepads

    The EDU Kit V2 includes a REV USB PS4 Compatible Gamepad. For the Logitech F310 Gaming Controller and Xbox 360 Controller for Windows, press start and A at the same time to initialize User 1 and start and B at the same time to initialize User 2.

    Continuous Mode: Allows for the servo to rotate a full 360°, either direction, indefinitely similar to a standard motor

    DC Motors are a type of electrical motor that use direct current, or DC, to rotate and produce the mechanical force needed to move an attached mechanism. There are two DC Motors available in the kit.

    The Core Hex Motor is a DC Motor that includes a built-in encoder . The Core Hex has a 90° orientation and a through-bore design

    The HD Hex Motor is a DC Motor that includes a built-in encoder. The HD Hex Motor includes a pressed-fit pinion to be ready for meshing with a gearbox system.

    Actuators

    Servos

    Smart Robot Servo

    DC Motors

    Core Hex Motor

    HD Hex Motor

    Wiring Diagrams

    Wiring Diagrams are a visual aid that show where everything is wired in an electrical system. Students can think of them like a map showing the pathways between the Control Hub and each device location.

    Right now our testbed uses a very simple wiring set up that's easy to track, but imagine if every motor and servo port was in use. That's 9 devices and sets of wires going across the robot before adding sensors!

    Encourage students to create a wiring diagram for their own projects and to update it as they work. A blank template is below that includes the parts for the EDU Kit V2.

    EDU Kit V2 Blank Wiring Diagram.pdf
    PDF · 188KB
    Open

    Wiring Tips

    Along with wiring diagrams, here are a couple additional good practices to make encourage to prevent part damage and confusion while working with the robot.

    Label Wires

    Individual wires or wire pairs (ex: a motor's encoder and power wires), can be labeled using things like printed labels, small pieces of tape, colored zip ties, etc. It's recommended to label both ends for easy identification.

    Labels may include port numbers, letters, device names, or whichever system works best for your classroom. When using something like colors, letters, or another code these can be added to the wiring diagram for the robot!

    Wire Paths

    While designing a robot or build, it's important to plan ahead where electronics will sit and wires will run. It's best to keep the Control Hub easily accessible and where the lights can be viewed. For wires, consider potential pinch points and moving components where they may become caught or tangled.

    Damaged wires may lead to parts not working as expected, causing shorts and damage, and pose a safety risk. While the robot is disconnected from power, encourage students to regularly check wires.

    This should also be a first step while troubleshooting, both to check things are wired correctly, but also securely with proper wires.

    Wires with exposed metal or fraying should be replaced.

    Advanced Loops

    Looking back at our loop program, we have the program end after the inner loop repeats 10 times.

    Counting loop code from the last section

    What if we instead set up the "while loop" to continue until the count is equal to 10 or another number?

    We need to always have the call for opModeIsActive, but that doesn't mean we can't add a second exit condition!

    Adding an Exit Condition

    OpMode with the loop code removed

    To start, I removed the existing code from the "while loop". Next I need to find the "and" option from the Logic menu. This will snap to the "while loop" with the call if opModeIsActive being added to one side.

    Adding the "and" statement to the loop

    Let's start by having the robot check if the opModeIsActive AND if the count variable currently equals 10 or less. We can use blocks from the Logic and Math menus to create our statement:

    Check if "count" is less than or equal to 10

    Then add this to the "and" statement attached to the loop:

    All that's left is to add the same set up we had before so that with each loop the count increases by 1! Remember a program cycles incredibly fast, so we'll add our sleep block again to help be able to see what happens.

    Save the OpMode and test!

    Try setting the goal to different numbers!

    Welcome to Blocks Boot Camp!

    Learning the fundamentals of programming can be one of the biggest hurdles to conquer before feeling ready to teach programming to a class. We want students to practice good habits as they learn so we need to understand them first ourselves.

    TREV agrees programming can be scary

    This Professional Development section focuses on exploring key concepts of programming in quick bites that will carry between Blocks, Java, and beyond.

    We'll start by discussing pseudocode, a technique used to help students think through how a program functions, then move into looking at Logic, Variables, and Loops!

    Use the table below to quick jump to the different sections:

    Table of Contents

    Introduction to Variables

    What is a Variable?

    In math, it's common to see problems like below:

    a+8=15a + 8 = 15a+8=15

    We can solve for "a" to determine a = 7, right? Then we could solve a variety of additional calculations with that knowledge like:

    a+10=?a + 10 = ?a+10=?
    2a=?2a = ?2a=?
    34/a=?34/a = ?34/a=?

    Variables in programming serve the same role! We use a variable to represent a value, or other information, that then can be used throughout the program.

    Why use a Variable?

    Consider for a moment: Why would we use a variable when we could simply use the number on its own?

    While there are several reasons, one of the biggest is that variables can greatly help with organization in a program and streamline making changes.

    Rather than having to hunt down every place a value has been used in a program, if we need to make a change we can adjust just the variable and be done! This helps to prevent mismatches that could come from one value being updated, but another missed.

    An example of a variable used in multiple places

    Variables might also be used to store the results of a calculation in a program to then be used wherever it's needed, such as the values from joystick movements on the gamepad.

    Types of Variables

    Constant variables do not change after being set. These are often set during initialization or at the start of an OpMode.

    These variables might include something like a target velocity, position, or power that will be reused or other settings that need to remain consistent whenever called.

    Non-constant variables are often just called variables. These change throughout the program, but may be set during initialization or the beginning of an OpMode to a default.

    These variables, for example, may store the results of a calculation run in the OpMode or data collected by a sensor.

    Keeping Track of Configurations

    Multiple configurations can be created on the Control Hub to be switched between for different projects or classes.

    Creating a new configuration may be better than attempting edit an existing one, especially if it is being created to test an idea, for example, or certain devices are being added.

    Some sensors, like the color sensor, once added to the configuration will cause a program to error out if they are removed physically, but not from the configuration!

    How to keep track?

    Keeping track of configurations can be as easy as making a small table record with the type of part, the port it's connected to, and the assigned named. If parts are changed or renamed, this chart can be updated.

    Here is an example format we commonly follow when creating guides we want others to follow:

    Port
    Device Type
    Device Name

    A handout is provided here to use with students or while continuing through this training:

    Space has been provided on this tracker for sensors and parts not found in the EDU Kit V2.

    Wiring Actuators

    Let's start by taking a look at the ports on the HD Hex Motor and Core Hex Motor:

    Each motor has a power and encoder port. Encoders are a form of sensor built into the motor that can send information back to the Control Hub to be used during programming. Specifically, these motors use incremental encoders, which count the number of revolutions or "ticks".

    Red provides power while black serves as the ground. These wires are keyed, meaning they are meant to only attach to the motor and Control Hub one way as dictated by the clip on the connector.

    In the event a power wire is connected backwards, the motor will spin the opposite expected direction!

    Similarly to the power wires, red provides power while black serves as ground. The blue and white wires transmute signal between the motor and the Control Hub. These wires can be used with various sensors, not just motor encoders. The wires are keyed with the intention of only connecting one way.

    When connecting the wires to both the motor and the Control Hub it should be a snug fit. Giving a small, light tug is a recommended practice to help wires are seated correctly.

    What is the Engineering Design Process?

    The Engineering Design Process is one of the most fundamental concepts taught within Technology Education or Robotics classes.

    While there are many versions that exist, most follow similar steps and flow with the goal of helping students think through solving a large process.

    Below is the REV's Engineering Design Process from the Intro to Robotics V2 curriculum:

    Before looking at each steps, let's discuss why teaching the Engineering Design Process, in some form, matters.

    Robotics often involves large, open-ended projects that can be hard to visualize with all the moving components (figuratively and physically). The goal of the Engineering Design Process is to create more digestible steps for going from concept to tested solution. It also reinforces the idea of having a plan before excitement taking hold becomes "winging it" and pure "trial and error" followed by frustration.

    But it also doubles as a useful check-in tool for teachers and a way to help communicate the mindset that lead from point A to B.

    In real life, engineers will follow a similar process as they communicate and plan across multiple steps and with various departments before reaching a final solution.

    Power and Wires

    The Control Hub powers off a single 12V Slim Battery. Using an approved battery is the ONLY way the Control Hub should be powered. It cannot be powered directly from a charger or via USB.

    Adding a switch cable is recommended to allow the Control Hub to be easily powered on and off without removing the battery.

    These cables are used to provide power to the motors connected to the Control Hub.

    Used with the motors in the EDU Kit V2 to send information from the encoders to the Control Hub.

    PWM, or pulse-width modulation, is a signal type used to communicate with different devices, such as the servos found in the EDU Kit V2.

    What is a Testbed?

    A testbed is a testing environment for hardware and software components. Testbeds are a fantastic tool to practice programming, troubleshoot parts, collect data, and continue to grow familiar with the EDU Kit V2.

    Similar setups are used by professional engineers and companies as part of the development, quality control, and refinement processes! Depending on the end goal, these testbeds can be designed a variety of different ways. For example, if a company is gathering data on how much weight a part can handle, the testbed may be designed to continually move over a period of time while adding new amounts of weight.

    Let's take a look at the testbed used within Unit 1 of the curriculum:

    The goals of our testbed are:

    • Provide a base frame that can be reused

    Introduction to Logic

    In programming, logic refers to a set of rules we create within the code for the robot to follow. It allows the robot to make decisions based on the information it gathers rather than going only through a single step-by-step process of execution.

    In Blocks, the Logic menu includes options to create comparison statements, like to check if one thing is greater than the other, and the option to make something the opposite with the "not" block. But for this section we'll be focusing on if/else Statements!

    One of the key concepts of logic in programming are if/else statements, also referred to as if/then statements.

    In its most simple format an if/else statement asks the robot to check IF something is happening and if the answer is yes, or true in the robot's mind, THEN it will DO what has been asked.

    In this format, the robot hasn't been told what to do if the statement is false. That's where the else comes in to play. Same as before the robot checks IF something is true, and if so, THEN

    12V Slim Battery

    Switch Cable

    Motor Wires

    JST VH 2-pin Motor Cable

    JST PH 4-pin Sensor Cables

    PWM Cable

    Turn left for 1 second then stop

  • Drive forward for 1 second

  • Stop Program

  • Robot lift right arm for 1 second

  • Robot close hand on book

  • Robot lift right arm for 1 second

  • Robot turn left 180 degrees

  • Robot walk forward for 5 seconds

  • Stop program

  • Check Wires for Damage

    PWM wires with exposed inner metal wiring

    The telemetry will show the count = 11 before stopping due to the current logic checking for if the variable is equal to or less than 10.

    The loop will check if "count" is less or equal to 10 AND if the opModeIsActive

    Planning with Pseudocode

    Introduction to Logic

    Introduction to Variables

    Introduction to Loops

    Example of Constant Variables in Blocks
    Example of Non-Constant Variables in Blocks

    Touch Sensor

    touchSensor

    Motor Port 0

    Core Hex Motor

    coreHex

    Motor Port 1

    HD Hex Motor

    ultraHex

    Servo Port 0

    Smart Robot Servo

    servo

    Remember that device names in configuration are case sensitive!

    Configuration Tracker.pdf
    PDF · 97KB
    Open

    Digital Sensor Port 1

    Allow mounting of 3 different kinds of actuators

  • Demonstrate using actuator brackets for the different kinds of actuators

  • Safely secure moving parts while creating our first OpMode

  • Create an easy to move platform for organizing and storing student projects outside of class

  • This testbed can additionally be used for testing new actuators, Control Hubs, batteries, or sensors upon receiving them. This is a recommended best practice even if they may not be used yet!

    Completing the Testbed build takes 20-30 minutes.

    This section is intended to pair with Unit 1, Lesson 4 of the Intro to Robotics V2 curriculum.

    In the Classroom:

    Building the Testbed

    DUO Testbed Build Guide.pdf
    PDF · 2MB
    Open

    On the servo end, the needed wire is already built-in. Unlike the motor wires, the power and ground are both black while white is the signal wire. On the Control Hub, signal is labeled as S.

    These wires are not keyed meaning students will have to be careful which direction they are connecting them. While reversing the wire is unlikely to damage the servo, it will prevent it from working as expected.

    Often times there may be a need to extend the built-in wire of the servo. To do so we can use a standard PWM cable.

    The PWM wires available within the EDU Kit V2 are red for power, black for ground, and white for signal. When connecting a PWM cable to the servo's built-in cable, its easiest to focus on lining up the white signal wire to ensure the correct orientation.

    Motor ports are located on the left side of the Control Hub and servo ports along the bottom.

    For motors, each port pairs a power connector, the more square option, and an encoder connector, the more rectangular option.

    The servo ports include a label to help with orienting the cable while connected since these are often not keyed.

    When completing the configuration process, we tell the Control Hub what is connected and where.

    It is NOT able to autodetect or correct once parts are wired meaning which port a motor is connected to DOES matter and should match the configuration.

    For the testbed, the wiring layout is below:

    Port
    Actuator

    Motor Port 0

    Core Hex Motor

    Motor Port 1

    HD Hex Motor

    Servo Port 0

    After wiring your testbed, you will need to create a configuration before starting programming. Give this a try or review the Creating a Configuration section!

    Recall that device names should be easily recognizable even, when creating test configs, to reduce future confusion. The names used from curriculum are below:

    Actuator
    Name

    Core Hex Motor

    coreHex

    HD Hex Motor

    ultraHex

    Smart Robot Servo

    DC Motors

    Power Wires

    Encoder Wires

    Connecting the Wires

    Servos

    PWM Wires

    On the Control Hub

    Testbed Wiring

    However it can be noted in reality, the process is going to look more like this:

    And that's okay!

    Click each step for information on what students will be doing during the step and tips to help them along.

    The Engineering Design Process is introduced in Lesson 8 at the start of Unit 2 of the Intro to Robotics V2 curriculum.

    Why Teach this Process?

    Engineering Design Process Steps

    Step 1: Identify the Problem

    Before going too far, students need to first consider what problem they are even trying to solve? This may be assigned to them or something they've chosen. Regardless, it should be defined in their own words as a problem statement. From there, they should think about their criteria and constraints.

    • Criteria is how students will measure that their solution was a success and that all goals were met. Part of this will typically be given to them in the form of a rubric.

    Step 2: Ideate

    This step is all about brainstorming. During this phase it's good to encourage the mindset that no idea is "bad". Even wild or unrealistic ideas can become inspiration for a solution!

    Ideate is about creating a comfortable environment for open discussion, creativity, and exploration.

    Step 3: Plan

    Here all the big ideas are gathered and evaluated until a final plan is set to move forward. This is the step where goals should be set leading into initial sketches and models, as well as plans for needed materials, resources, components, etc.

    Depending on the project, this is where things such as dimensions, features, and appearances may be set.

    To help with collaboration, groups should also think about who's doing what. For example, who wants to build? Who wants to program? Who wants to try making sketches?

    Step 4: Create

    As the name suggests, this is the "building" phase of the project. This may include physically or digitally building, programming, designing, as well as making adjustments as parts of the plan may change.

    It's not uncommon during this step for there to be need for some change to the initial plan. The important thing is reminding students to document those changes!

    Step 5: Test & Evaluate

    Before testing, students should check back over their requirements, whether it be with the rubric or reviewing their constraints. They should not assume all their criteria is met until after testing, even if they have completed testing of individual parts.

    Success should be easily repeatable. As students evaluate their testing, encourage them to identify small things to improve on and to focus on one problem at a time.

    Step 6: Improve

    There is always room for innovation and improvement.

    This mindset can be hard to embrace when grades are involved, but encourage students to think about even fun things like decorating or expanding on their design. Or hypothetical "What would you do next/on a larger scale?"

    Final Step: Share

    A solution kept secret won't solve a problem. Encourage students to share with and learn from each other. This might include having students give brief presentations or watch each other complete a challenge.

    Sharing during the earlier steps of the design process is equally important to allow for inspiration. However, if there is concern of students copying each other's work too closely here is a tip: Use a "patent" system.

    As students have their designs signed off during the planning and creation steps their designs become "patented" by that group. What this means is other groups may take inspiration, but not one-to-one copy their ideas.

    If a group is making something too similar, ask them questions on what makes it different and unique. This may range in materials used, to how its programmed, which actuators are used, etc. Encourage them to find their own twist on the idea.

    executes a command,
    ELSE
    it executes a different command.
    Full If/Else Statement

    Let's look at an example. Looking at the code below, the robot is checking IF the gamepad's A button has been pressed. If the check returns true, meaning the button is pressed, THEN it will spin the servo at a power of 1, but if it returns false the servo's power will be set to 0.

    If the gamepad button A is pressed then turn on the servo, else turn off the servo.

    Multiple things can be checked at once, such as various buttons on a gamepad, by expanding the statement to include an else if:

    If/else else if statement

    By adding an else if, our robot now has multiple things to check for if it's true or false.

    In the following example, we've added to our check for if A is pressed on the gamepad to alternatively check if B is pressed. IF B is pressed, THEN the servo will spin in reverse at -1 power. Our else remains the same so the servo turns off if neither button is pressed.

    If A is pressed, spin the servo. Else if B is pressed, spin the servo in reverse.

    Try creating this program yourself and give it a try!

    Full If/Else Example OpMode

    Consider:

    • What happens when A or B is pressed?

    • What happens if both are pressed at the same time?

    • What happens if we control a different actuator with B?

    In Blocks, there are only a few if/else statements available by default:

    Blocks Logic Menu

    But, if we need something different then we can click the blue gear icon to customize the if/else block!

    The menu for the if/else statements

    We can add multiple else if options to expand the statement as long as we need.

    Expanding if/else statements

    Keep in mind, there's appropriate times for when to have checks all together in one statement and when to have multiple individual statements. What works best will vary per project, person, and how an OpMode is organized.

    What is Logic?

    If/Else Statements

    Example of Logic Blocks in Use
    Simplest If/Else Statement

    Else If

    Your servo name may differ than the example, which shows as crServo from the configuration.

    Editing If/Else Statements in Blocks

    Block Categories Overview

    Blocks is designed to hide the excess options that are not actively in use based on the configuration. This makes it easier to navigate, but there remains some mystery behind what and where everything is.

    Well we can't go into every block available, let's take a look at the different categories and some use cases for the blocks within them.

    Changing Based on Configuration

    Before going too far, recall that the active configuration on the Control Hub will effect which blocks are available for certain categories.

    An example of how a configuration file changes Blocks

    For example, having a servo configured for angular mode will show blocks for setting positions, while having a servo configured for continuous rotation will show options for setting power.

    Some categories, like Other Devices or Java Classes, will no longer be clickable or completely hidden depending on your set up.

    Java Classes will be hidden when not in use

    Categories

    LinearOpMode

    The LinearOpMode category list various call blocks for the OpMode, such as the check for if it is active and to wait for the Driver Hub's play button to be pressed. The call to sleep can also be found here.

    The gamepad menu is where all the blocks related to gamepad inputs can be found. The gamepad blocks are grouped based on if they are a float or Boolean input.

    The Actuators menu options will change based on the active configuration file. Some default blocks will always be available, such as some PWM options under ServoController.

    When a motor is added to a configuration, the blocks to set its power, mode, direction, and more will become available. For servos, those configured for angular mode will show blocks for setting positions while those set to continous rotation will show power and direction.

    What sensors are available will change based on the active configuration file. Once a sensor is added, different options will appear based on the sensor. Some will have two menu options for more generic sensor use or for a specific manufacturer.

    Analog Sensors, if configured, will appear under Other Devices. Other device's controls, like the Blinkin LED Driver, will also be available here if configured. If no relevant devices are configured, this menu will not be accessible.

    The Utilities category is a mix of tools built-in to the SDK to pair with different blocks while building out the full OpMode. For example, when using a color sensor blocks related to Color, such as finding the Hue, can be found under Utilities to define how the sensor is being used and what kind of data is being collected.

    Additionally, here you will find the Telemetry menu to send information to the Driver Hub.

    The Logic Category is the first set of categories that make up the colorful section of Blocks for the bottom half of the list. In this menu we'll find the options for making if/else statements, setting something to "not", and blocks for creating comparison statements, like checking if something is greater than something else.

    The green Loops category includes the list for blocks to create repeats within the program. Loops can have different exit conditions, such as only repeating a set number of times or until Stop is pressed on the Driver Hub.

    Under the Math category there is blocks to make something negative, to add a number to a program, and several options for completing different calculations in the program.

    Similar to Math, the Text category allows the addition of text entries to a code that the robot will read for executing, unlike Comments, as well as formatting options and ways to change the text based on a situation.

    The blocks found in the Lists category can be used to compile data into one list as it is collected by the robot.

    The Variables category will initially show as blank until a new variable is created, then the options for setting and using the variable will appear. If a variable goes unused when the program is saved and closed, it will be removed upon reopening the OpMode.

    The Function blocks allow for code to be separated into smaller chunks making Blocks a little easier to organize and read. Once a new function is created and named, additional blocks will become available to call the function.

    The Miscellaneous category includes blocks to assist with formatting in the code and to add comments. Comments allow a programmer to make notes without the robot reading them!

    Adding Gamepad Control

    Motors

    We have our motors running autonomously, but now let's add some manual control with a gamepad.

    The Gamepad menu is always available in Blocks to search for the desired button or joystick control.

    For our motors, we can set the power of the motor to be equal to the movement of the joystick. As the joystick moves up and down along the y-axis, it's value changes from -1 to 1 with 0 being off.

    Click the gamepad block for the LeftStickY to the motor power block of the Core Hex Motor.

    Before testing, it's good to note that by default the direction of the Y-axis on the gamepad is inverted, meaning if I moved the joystick up expecting the robot to move "forward" the motor will actually spin in reverse.

    While programming, we can adjust this by adding a negative symbol from the Math menu.

    It will snap between setting the motor power and the joystick calls:

    Save your OpMode and test it out!

    When you are ready, add similar controls for the HD Hex Motor on the RightStickY.

    Because our servos are moving between positions rather than setting a power, they must be bond to a Boolean button on the gamepad, such as the D-Pad, bumpers, or symbol buttons.

    What happens if we try to connect one of these gamepad buttons direction to where we set the servo position?

    Blocks will not allow this connection since it would not be functional. We need to instead use a Logic block to say "If the gamepad button is pressed, do ________"

    If/Else statements are one of the most common and fundamental logic statements in programming. As the name suggestion, this allows us to program a check for the robot to see if something is happening then react based on the options available.

    In this instance, let's set our If/Else to be if the Triangle button on the gamepad is pressed move the servo to Position 1.

    Save your OpMode and give it a test!

    If If/Else block is editable to add additional checks all together! To do so click the gear to open the block's menu.

    Adding additional "else ifs" extends the blue block:

    Give this a try to set a variety of servo positions based on which button is pressed!

    Let's take a look an example of how an If/Else Statement reads in a human friendly way.

    The above can be read "If the Y button is pressed then move the servo to position 0, else if the A button is pressed move the servo to position 1."

    Each pair contains the check or "if" and what should happen, the "do". Since there are multiple checks, after the first is reported as false the robot moves on to the next one, "else if".

    Control System

    Control Hub

    Control Hub

    The Control Hub is the brain of the robot. It runs what is know as the Robot Controller Console, which stores all programs, configurations, and log files.

    Even when programming in the REV Hardware Client or a browser this is just acting as a tool to access the Control Hub's software!

    Driver Hub

    Driver Hub

    The Driver Hub is how we communicate with the Control Hub when we're ready to run a program and control the robot. It functions similar to an Android phone and runs the Driver Station Application to allow communication.

    The Driver Hub connects to the Control Hub's Wi-Fi network to communicate.

    Navigating the Driver Station Application

    After setting the Driver Hub for the first time, you will have access to the Driver Station Application. There is a lot of information displayed by the Driver Hub so let's take a closer look.

    While connected to a Control Hub, the application will appear similar to below:

    DUO Control System Set Up

    Before getting started, you will need to have the REV Hardware Client or REV Hardware Client 2 installed. It's recommended for new users to install (Released August 2026 for Windows, Mac, and Linux).

    The programming interface (Blocks and OnBot Java) is the same for both versions.

    Setting up the DUO Control System for the first time can be broken into 4 steps:

    1. Powering Up

    2. Updating

    3. Managing settings

    4. Connecting the Driver Hub to the Control Hub

    Before getting started you will need:

    From the kit:

    Additional items:

    The Control Hub is powered with a 12V Slim Battery. The battery connects to the yellow XT30 port labeled as "Battery".

    When first powering on, the light on the Control Hub will illuminate blue then change to green when fully booted.

    At this point it's ready for use!

    To power on the Driver Hub, hold the power button for a couple seconds until the REV logo appears on the screen. During boot up, a white light will flash and the green light beside the power button will appear.

    The Driver Hub will take a few moments to reach the lock screen. The white light will no longer illuminate.

    If this is the first time powering on the Driver Hub, the set up screen will appear.

    When the Driver Hub is first powered up, or a factory reset is performed, an initial set up process is needed. Start by selecting next on the main screen to continue.

    For now, it's recommended to skip the step connecting the Driver Hub to a local Wi-Fi network.

    On the next screen, set the date and time before continuing.

    Initial set up is complete! Select Finish to go to the Driver Hub's homescreen.

    Introduction to Loops

    When it comes to programming, there's often times we want a robot to do something over and over again until we tell it to do something else. It might be a movement, a continual check of a sensor, or so many different things at once.

    We could attempt to program each instance manually. In fact let's see if we can have our robot move a couple of feet using just the block setting the power fully.

    My OpMode is already becoming quite long yet the robot is barely moving anywhere!

    The Control Hub reads through each line of code provided incredibly fast. So fast it may not even provide enough time for a motor to fully turn on before it's off to the next if there's nothing in place to allow a buffer or repeat.

    There are options for adding timers to help, but in this tutorial we're going to focus on using loops!

    Loops control the flow of a program by repeating the execution of the code within the loop until an

    Updating

    Connect the Control Hub to the computer using the orange USB cable that came with the Control Hub. The USB-C (oval) side connects to the Control Hub while the USB-A (rectangle) connects to the PC.

    A different cable, or USB C-to-C cable may be used but MUST be able to do both power and data.

    Note: Some generic cables only provide power.

    Open the REV Hardware Client 2 (RHC2) once connected. The Control Hub should appear on the home screen.

    Click on the Control Hub to open the navigation menu.

    Click the Update tab

    There are 3 options for items listed that may need updating:

    Managing Settings

    Navigate to the Control Hub in the REV Hardware Client 2. Click the device to open the Navigation menu.

    Select Open Console under Program & Manage to open the Robot Control Console (RCC) for the Control Hub. This will open in a new window.

    In the Robot Control Console, select Manage.

    Here you'll find all the options for updating the Wi-Fi settings. For now we will focus only on the name and password. It's recommended to give each Control Hub an easily recognizable name.

    This might be a group name, student names, a color, a number, or similar that fits your classroom needs for assigning robots. This is the name that will be displayed as the network to connect to later using the Driver Hub.

    The default password is password. Consider allowing student groups to pick their own password to secure their robot. If the password is forgotten, it can be changed here again later.

    Mechanical Overview

    The EDU Kit V2 contains over 180 parts! This page is intended to be a brief overview for some of the major part categories to reference while first exploring.

    Metal extrusion makes up the core of the structural system for the EDU Kit V2. It is available in different lengths that can be cut to size.

    There are many different brackets available designed to fulfill different roles in providing connections between items or extra support. Within the EDU Kit V2 there are structural, motion, and actuator brackets.

    Smart Robot Servo

    servo

    Constraints are limitations that effect the solution. This might be things like dimensions, materials, or may also be assigned in part for the project (ex: only 2 motors allowed).

    Gamepad

    Actuators

    Sensors

    Other Devices

    Utilities

    Logic

    Loops

    Math

    Text

    Lists

    Variables

    Functions

    Miscellaneous

    Example of LinearOpMode Blocks in Use
    Example of Gamepad Blocks in Use
    Example of Actuator Blocks in Use
    An Example of the Touch Sensor Blocks in Use
    An Example of the Color Sensor Blocks in Use
    Example of Other Device Blocks in Use
    Example of the Color Blocks in Use
    Example of the ElapsedTime Blocks and Telemetry from Utilities in Use
    Example of Logic in Use
    Example of Loops in Use
    An Example of a Text Blocks in Use
    Example of a List in Use
    Example of Variables in Use
    An Example of an Added Function in Use
    Example of Comments in Use

    Displays which configuration file is currently active.

    If this section says <no config file> you will need to .

    4

    Network information

    Displays Control Hub SSID Name, signal strength, and ping time.

    5

    Gamepad connections

    Show currently connected gamepads

    6

    Autonomous dropdown menu

    Dropdown menu that displays all autonomous programs saved on the Control Hub.

    7

    Teleop dropdown menu

    Dropdown menu that displays all teleop programs saved on the Control Hub.

    8

    System power display

    Displays the amount of battery voltage powering the robot, when connected to a Control Hub.

    9

    Settings dropdown menu

    Access settings, configure the robot, restart the robot, check to see if your system meets competition inspection requirements and more.

    10

    Practice Timer

    A built in timer that can be used to to practice for different portions of a match.

    1

    Initialize, start, and stop programs

    Only available when a program has been selected.

    2

    Telemetry display

    Displays telemetry outputs.

    Displays any system warnings and error codes

    3

    Active configuration

    exit condition
    is met.

    When using the recommended "BasicOpMode" sample in Blocks, the template provides a "while loop" by default that will continue after Play is pressed on the Driver Hub and until Stop is pressed.

    The default loop in the BasicOpMode sample

    This is where most of the OpMode will live creating what's known as an iterative program structure. What matters most with this loop is the call for if opModeIsActive.

    Call for if the opModeIsActive

    This call checks that the OpMode should still be running, meaning Stop has not been pressed, and should ALWAYS be included with "while loops", even if there is another condition being checked. This is intended to be a safety feature to ensure everything shuts down properly when Stop is pressed OR in the event of a disconnect/malfunction.

    Example of the loop checking two conditions

    Programs running without this check may cause an error on the Driver Hub or crash.

    In Blocks, there are a few loop options, but we'll be focusing on the options to repeat a number of times and the "while loop":

    Repeat and while loops in Blocks

    In this practice exercise, we're going to have the robot count so first we need to create a new variable called "count".

    Creating a "count" variable

    This variable needs to be to 0 during initialization before we use it in the loop.

    Adding the "count" variable to initiliazation

    From the loop menu, we'll use the option to repeat 10 times. Then use our variable and math blocks so that the final count goes up by 1 each repeat.

    Adding a repeat 10 times and math for increasing the count

    Lastly, we need to add telemetry so we can see what the count currently is on the Driver Hub's screen. The telemetry AND telemetry update blocks must be in the repeat loop.

    Adding telemetry to see the current count

    Save and test the OpMode!

    Likely, you saw the number for the count rapidly increasing much more than 10 times. We can see just how fast the program cycles through each loop!

    But why does it continue past 10 times?

    Let's look closer at our program. Right now we have two loops going!

    The two loops: while loop and repeat 10 times

    Recall, our larger loop will continue until Stop is pressed since there is no other exit condition given. Each time the 10 count ends, the "while loop" starts again doing another 10 counts and again and again and again... until Stop is pressed.

    To remedy this, we can tell the OpMode to stop once the 10 counts have ended.

    Adding a call to request the OpMode stops once the 10 counts finish

    Save the OpMode and try again!

    The program ended... but it was so fast we could hardly see it work!

    Let's add a delay for this experiment to make it easier to watch. From the LinearOpMode menu, look for the sleep block:

    Add the sleep block below the telemetry update. The default is a 1 second delay, which works well for this test!

    Save your OpMode and test a final time!

    Adding multiple drive blocks to a program
    Looping a drive block so long as the OpMode is active

    Loops in Blocks

    If students experience a problem where their code appears to start then immediately stop, double check they have a loop in their OpMode! In OnBot Java, this appears as while (opModeIsActive()) followed by the code.

    Loops Practice

    What happened?

    What happened?

    Control Hub Operating System: This is the main software of the Control Hub. It receives rare updates, but likely will need updating upon first use.

    The Control Hub's Update menu showing the Robot Controller App
    • Robot Controller App: This is the software tied to the Robot Controller Console that allows for programming the Control Hub and communication with the Driver Hub. This software updates most frequently!

    The Control Hub's Update menu showing the Hub Firmware
    • Hub Firmware: This is the core firmware for the electronics of the Hub to function. It should be up to date on first use and receives very rare updates.

    Once you are ready you can select "Install", or "Download & Install" if the update needs to be downloaded first, to update. Be aware the first time updating may take some time depending on your network environment. The Control Hub may need to be power cycled to finish the install.

    The Control Hub can remain connected or be unplugged while updating the Driver Hub next.

    Connect the Driver Hub to the computer using the orange USB cable that came with the device. This is the same kind of cable used for the Control Hub.

    The USB-C (oval) end connects to the Driver Hub and USB-A (rectangle) end connects to the computer. Once connected, the Driver Hub will appear in the REV Hardware Client 2 similar to the Control Hub.

    The Driver Hub on the RHC2 home screen

    Clicking the Driver Hub will open the Update menu.

    The Driver Hub update menu showing the Driver Hub OS.

    There are two types of software available for updating on the Driver Hub:

    • Driver Hub Operating System: This is the core Android OS that runs on the Driver Hub. It receives occasional updates and may require updating on first boot up.

    The Driver Hub updates menu showing the Driver Station App.
    • Driver Station App: This allows the Driver Hub to communicate with the Control Hub. This app and the Robot Controller App always receive updates at the same time.

    Once you are ready you can select "Install", or "Download & Install" if the update needs to download first. Be aware the first time updating may take some time depending on your network environment.

    Connect the Control Hub to the Windows computer using the orange USB cable that came with the Control Hub. The USB-C (oval) side connects to the Control Hub while the USB-A (rectangle) connects to the PC.

    A different cable, or USB C-to-C cable may be used but MUST be able to do both power and data. Note: Some generic cables only provide power.

    Open the REV Hardware Client once connected. The Control Hub should appear on the home screen (Hardware tab).

    The Control Hub in RHC1.

    Click on the Control Hub to open the update menu.

    The Control Hub updates menu in RHC1.

    There are 3 options for items listed that may need updating:

    • Control Hub Operating System: This is the main software of the Control Hub. It receives rare updates, but likely will need updating upon first use.

    • Robot Controller App: This is the software tied to the Robot Controller Console that allows for programming the Control Hub and communication with the Driver Hub. This software updates most frequently!

    • Hub Firmware: This is the core firmware for the electronics of the Hub to function. It should be up to date on first use and receives very rare updates.

    Once you are ready to update you can select "Update All to Latest Version". Be aware the first time updating may take some time depending on your network environment.

    The Control Hub can remain connected or be unplugged while updating the Driver Hub next.

    Connect the Driver Hub to the Windows computer using the orange USB cable that came with the device. This is the same kind of cable used for the Control Hub.

    The USB-C (oval) end connects to the Driver Hub and USB-A (rectangle) end connects to the computer. Once connected, the Driver Hub will appear in the REV Hardware Client similar to the Control Hub.

    The Driver Hub in RHC1.

    Clicking the Driver Hub will open the Update menu.

    The Driver Hub updates menu in RHC1.

    There are two types of software available for updating on the Driver Hub:

    • Driver Hub Operating System: This is the core Android OS that runs on the Driver Hub. It receives occasional updates and may require updating on first boot up.

    • Driver Station App: This allows the Driver Hub to communicate with the Control Hub. This app and the Robot Controller App always receive updates at the same time.

    Once you are ready to update you can select "Update". Be aware the first time updating may take some time depending on your network environment.

    Before getting started, you will need either REV Hardware Client 1 or 2 installed. It's recommended to install REV Hardware Client 2 for new users. Directions for updating are available for both versions on this page.

    REV Hardware Client 2

    Control Hub

    The Control Hub showing on the RHC2 home screen
    The Navigation menu for the Control Hub in RHC2.
    The Control Hub's Update menu showing the Control Hub OS

    Driver Hub

    REV Hardware Client 1

    The REV Hardware Client 1 (RHC1) is for Windows computers only.

    Control Hub (RHC1)

    Driver Hub (RHC1)

    How to Update Walkthrough Video (RHC1)

    Wi-Fi Settings for the Control Hub in the RCC

    Click Apply Wi-Fi Settings once all changes have been made. The Wi-Fi Band settings can be left on the default (5Ghz and auto Wi-Fi Channel) for most classroom environments.

    The files on the Control Hub can be backed up using the REV Hardware Client 2. Remember all programming files and configurations are stored directly on the Control Hub so it is good to regularly back it up!

    From the Control Hub's Navigation menu, select Backup.

    The Control Hub Backup menu

    Select Backup Files to download a zip folder containing the listed files. You can check the backup location by clicking Open Backup Folder and move files to a preferred location.

    A pop up will appear when a successful backup is completed

    Files may also be restored from this menu or individually uploaded.

    Option to restore files to the Control Hub from backups.

    Navigate to the Control Hub in the REV Hardware Client 1. If currently viewing a different device, click Hardware to return to the home screen.

    The Control Hub in the RHC1.

    Select the Program and Manage tab once in the Control Hub's menus.

    Selecting Program and Manage in RHC1.

    This menu contains the options for programming as well, but for now click on the Manage option.

    Selecting Manage in the RHC1.

    Here you'll find all the options for updating the Wi-Fi settings. For now we will focus only on the name and password. It's recommended to give each Control Hub an easily recognizable name.

    This might be a group name, student names, a color, a number, or similar that fits your classroom needs for assigning robots. This is the name that will be displayed in the REV Hardware Client and as the network to connect to later using the Driver Hub.

    The default password is password. Consider allowing student groups to pick their own password to secure their robot. If the password is forgotten, it can be changed here again later.

    The Wi-Fi Settings for the Control Hub

    Click Apply Wi-Fi Settings once all changes have been made. The Wi-Fi Band settings can be left on the default (5 Ghz and auto Wi-Fi Channel) for most classroom environments.

    The files on the Control Hub can be backed up using the REV Hardware Client. Remember all programming files and configurations are stored directly on the Control Hub so it is good to regularly back it up!

    Select Backup/Restore

    Selecting the Backup/Restore menu in RHC1.

    Select Backup Files

    The Backup menu for the Control Hub in RHC1.

    The saved zip file's name will appear after the backup runs. Click this to open the file location.

    A pop up will appear when the Control Hub has been successfully backed up.

    It's recommended to move this zip to an easy to find location, such as Documents.

    This tutorial is focused on changing the Wi-Fi settings for a classroom setting. Those participating in FTC, FGC, or another competition should check the latest game manual for rules on device names.

    Version 10.2 and newer of the Driver Station App/Robot Controller App now shows a warning if the names used on the Control Hub and Driver Hub do not match the current FTC rules. This is a cosmetic warning that does not prevent normal operation.

    REV Hardware Client 2

    Control Hub

    If the RHC2 window is exited out, the Robot Control Console will also close.

    Naming the Control Hub

    The Control Hub's Navigation menu.
    The Robot Control Console on the Control Hub used to Program and Manage.
    Selecting the Manage option in the Console.

    Backing Up the Control Hub

    REV Hardware Client 1

    Control Hub (RHC1)

    Naming the Control Hub (RHC1)

    Backing Up the Control Hub (RHC1)

    Managing Settings Walkthrough Video (RHC1)

    Omni Wheels have rollers mounted around the outside that passively rotate at 90 degrees to the powered direction of the wheel. This can aid with the robot turning as the rollers allow the wheel to more easily glide at an angle.

    The Traction Wheels in the EDU Kit V2 are standard 90mm wheels with a thread around the outside made of TPU rubber.

    Gears are a rotating mechanical part used to transmit motion using the “teeth” around the outer edge to engage with other gears or parts. All the gears in the EDU Kit V2 are spur gears with various numbers of teeth and sizes available.

    Pillow Blocks are a form of bracket designed to support a bearing or hex shaft. Hex Pillow Blocks have the same shape opening as the shaft to prevent movement. Bearing Pillow Blocks allow rotation while using a bearing.

    Bearings reduce friction to help an axle better rotate within a bracket or other support. A short and long length of the through bore bearing is available in the EDU Kit V2.

    5mm Hex Shaft is used with wheels, gears, motors, and servos to create an axle for motion.

    The term hardware is commonly used to describe the small parts used to fasten, connect, and secure structural elements together.

    The difference in T-Slot Screws and Hex Cap Screws is the shape of their “head” and how they are added to extrusion. Hex Cap screws must slide in from the end of the extrusion while T-Slot screws are able to be added to areas without easy access points.

    Nyloc nuts, a type of locknut, are used to secure screws and their attached components with the help of a nylon collar inside the nut.

    Shaft Collars use a small set screw to slip onto an axle or shaft and, once tightened, lock into place to prevent sliding.

    This page pairs with Lesson 2 of the Into to Robotics V2 curriculum, which provides a more in depth explanation for the different mechanical parts.

    Structural

    T-slotted Extrusion

    Brackets

    Bracket Name List
    • UltraPlanetary Flat Mounting Bracket

    • 15mm Plastic Motion Bracket

    • 15mm Plastic 45 Degree Bracket

    • 15mm Plastic 120 Degree Bracket

    • 15mm Gearbox Motion Bracket

    • 15mm Plastic Inside Corner Bracket

    • 15mm Metal Bent Core Hex Motor Bracket V2

    • 15mm Metal Bent Servo Bracket V2

    • UltraPlanetary Bent Mounting Bracket

    Motion

    Omni Wheels

    Traction Wheels

    Gears

    Pillow Blocks

    Through Bore Bearings

    Shafts

    Hardware

    M3 Hex Cap and T-Slot Screws

    M3 Nyloc Nut

    Shaft Collars

    Example Code

    Angular Servos

    If/Else Statements

    If I want to add a second button for the servo to respond to, do I need a separate If/Else?

    Reading If/Else Statements:

    Materials

    Locations with restricted internet access, such as a school with a firewall/web filtering, may experience trouble installing the REV Hardware Client 2 or updating devices. Please contact your IT for assistance.

    Powering Up

    Control Hub

    Driver Hub

    Driver Hub Set Up Screen

    Powering Up Walkthrough Video

    REV Hardware Client 2

    Introducing Engineering Design

    Getting Started

    Before introducing the steps of the Engineering Design Process, consider giving students a simple hypothetical problem to work through in a group.

    The problem should not be something they have to build a full solution for, but should be something that allows some brainstorming, discussion, minor research or questioning, and general creativity. Consider something local in the community or school. Maybe students have vocalized wanting a new learning space or the lighting outside the building doesn't feel safe at night.

    This could also be left open for students to identify their own problem as the first step. Students are often very perceptive or have ideas they aren't sure how to address.

    Asking "If you could solve any one problem about the school, what would you pick?" can be a great starting point!

    Below are some examples students have come up with in my experience teaching:

    • Not enough picnic tables

    • Paper towels on the bathroom floors

    • Desiring a quiet space to work

    • Adding new clubs/after school activities

    • Mud in the hallways

    • Lack of project storage/organization

    • Wanting a student garden

    • Flooding in the parking lot

    The Intro to Robotics V2 curriculum provides an example that is robotics focused.

    Some problems are bigger than others, but the goal for this initial task is to allow students freedom to begin planning and solving the problem how they naturally would with their group. Everybody thinks a little differently so likely there will be a variety in approaches. Some may naturally fall into a flow similar to the Engineering Design Process while others may end up stuck thinking "what's next".

    This is intended to be a short exercise of 15-20 minutes. Afterwards, allow students time to share as a full class or individually with you.

    Consider asking questions like:

    • What problem are you trying to solve?

    • How did you decide on your solution?

    • What other solutions or ideas did you think about?

    • What would your first steps be to implement this solution?

    Well also getting students thinking critically, this will also help you gain an idea of how students think through presented problems.

    Once the class regroups, have a discussion on how students thought through the problem by taking volunteers to share or pointing out observations you made.

    Continue into growing the problem situation by asking how students would communicate their idea if they were on a team of 100 people, or needed to talk to someone they don't know, and how they would track all the moving parts in a way that if someone asked to see their work they could share it.

    This will segue into presenting the Engineering Design Process and its importance.

    Keep in mind while moving forward: The Engineering Design Process should be thought of less as a "one size fits all" solution to solving problems and more of a way to help make sure everyone is on the same page for a project as it proceeds. (And provides documentation to reference later when ideas and plans are forgotten in excitement.)

    The next section introduces how Engineering Design may appear in the classroom as a trackable assignment during project work!

    Creating a Configuration

    Before we can begin any programming we need to help our Control Hub know what is connected to it and where. Through the configuration process we can tell the Control Hub which port sensors, motors, servos, and any other connected devices can be found.

    This is one of the most important steps to always complete BEFORE you can start programming!

    Let's look first where the configuration menu is found on the Driver Hub. Start by selecting the 3 dots menu in the top right corner of the Driver Station App. Then select Configure Robot.

    If any configurations have been created, they will be listed here. For a new configuration, select New.

    In the USB Devices in configuration page select the Control Hub Portal.

    Within the Hub Portal select the device you want to configure. In this use case, select the Control Hub.

    Let's get Spinning!

    The telemetry block from the last section can be removed from our OpMode.

    Let's start by getting our Core Hex Motor spinning on the testbed. Under the Actuators menu look for DcMotor:

    When looking at the options, the names of the motors will typically appear in alphabetical order. In the pictures used for this guide coreHex shows as the default option. If you named your motors differently, there will be variation.

    First, we'll add a power block to our loop:

    With that we can save our program and run it to see what happens!

    The max power for spinning forward is 1. The max power for spinning in reverse is -1. Going above these values will not make the motor spin any faster. However, it also will not damage the motor so students can be encouraged to explore what happens!

    activate or create a configuration file

    Are there any challenges you think your solution might have?

  • How would you communicate your idea with others (to build it or just to share)?

  • Click to view the example problem from the curriculum

    The town is working to help people walking at night feel safer by providing better illumination along paths. One suggested solution is to create a robot that can emit light while tagging along with someone and may be able to provide other services, such as directions, in the future.

    (Lesson 8, Unit 2)

    First Activity

    What's Next?

    This will open a list of various device types that can be configured depending on the application! Within each type, there is a list of available ports, except for I2C sensors which are listed as busses in the main menu instead.

    Let's configure a Core Hex Motor, a servo, and a touch sensor for this demonstration.

    For this example, the devices do not need to be connected to the Control Hub to complete the configuration process.

    First, select Motors.

    The Motor page will allow you to configure all four motor ports on the Hub. On Port 0 open the dropdown menu and select REV Robotics Core Hex Motor.

    With the motor type selected, we can now give it a name. Device names should be easily recognizable! For example, a name like leftMotor is easier to identify in code than motor1.

    For now, we'll name the motor coreHex.

    Note: Names are case sensitive!

    Select Done to return to the device menu.

    Configuring servos is similar to a motor. Give it a try before continuing with the directions below!

    The touch sensor is a digital sensor. When looking at the Control Hub, you can see the digital sensor ports are labeled as a pair of numbers: 0-1, 2-3, 4-5, 6-7. Different sensors require being configured different ways based on their electronics.

    For the REV Touch Sensor found in EDU Kit V2 it must always be configured to an odd number port.

    First, select Digital Devices from the menu list.

    The Digital Devices page will allow you to configure all eight digital ports on the Hub. On Port 1 open the dropdown menu and select REV Touch Sensor.

    For this example, name the sensor touchSensor then confirm. Tap Done to return to the main device menu.

    From the main device menu, select done twice. You'll return first to the Control Hub Portal then the USB menu.

    From here select Save

    Select a name for the configuration file. Similar to device names, this should be easily recognizable. For this example, we'll name it demoConfig. Select Ok after creating the name.

    Press back to activate the saved configuration. The Control Hub will restart once you activate a new configuration.

    Your first configuration is done! The currently activated configuration will appear on the home screen of the Driver Station Application.

    When programming in Blocks, some blocks may be hidden UNTIL the configuration process is completed and activated on the Driver Hub.

    Accessing the Configuration Utility

    USB Devices, such as cameras, may be added to the Control Hub, but are not used within the Intro to Robotics curriculum.

    Example Configuration

    Core Hex Motor

    Servo

    Configuring Servos

    On the main device menu select Servos

    The Servo page will allow you to configure all six servo ports on the Hub. On Port 0 open the drop down menu and select Servo.

    For this example, name the servo servo then confirm.

    Select Done to return to the main device list.

    Touch Sensor

    Saving the Configuration File

    Creating a Configuration Walkthrough Video

    Take a moment to try adjusting the power of the Core Hex motor then add the HD Hex Motor to spin in a similar fashion.

    The HD Hex Motor's name can be selected from the dropdown on the power block.

    While in angular mode, servos are programmed a little different than motors. Rather than assigning a power, we'll be setting positions for them to move between.

    Note: This menu will appear differently if there is a continuous servo listed in the current configuration file.

    When looking at the options, the names of the servos will typically appear in alphabetical order. In the pictures used for this guide servo show as the default option. If you named your servos differently, there will be variation.

    Let's start by adding a block to set our servo's position to 1.

    With that we can save our program and run it to see what happens! After running the program once, stop and try to run it again.

    If we want our servo to move each time our program runs, we need it to first reset to a different position. In this example, we can do this during initialization.

    Add a position block for 0 under Put initialization blocks here.

    Now save the OpMode and run the program again.

    Take a moment to try different positions for your servo to move between.

    In the next section we'll add a gamepad to control the movements of our actuators!

    DC Motors

    Changing Power Level

    Code Example

    Servos

    What happened?

    Likely, the servo moved once to the new position then didn't move again when the program was reset.

    It is possible the servo did not move at all if it happened to already be at what it considers "1". Try a different position value then test again.

    Resetting to Zero

    What happens differently?

    When initializing, likely you saw the servo move to its 0 position, then once play is pressed it moves back to 1 again.

    Navigating Blocks

    This section pairs with Unit 1, Lesson 6 from the Intro to Robotics V2 curriculum.

    Before getting started, you will need to have the REV Hardware Client or REV Hardware Client 2 installed. It's recommended for new users to install (Released August 2026 for Windows, Mac, and Linux).

    The programming interface (Blocks and OnBot Java) is the same for both versions.

    Blocks is a visual programming language designed to be new programmer friendly by helping to streamline parts of the process and cut down the risk of common syntax errors. While it appears similar to other visual languages, such as Scratch or Blockly, it is designed specifically for use with the DUO Control System.

    Accessing Blocks

    REV Hardware Client 2

    While connected to a powered Control Hub via USB, open the REV Hardware Client2 . Select the Control Hub to be programmed then Open Console under the Program & Manage option in the Navigation menu.

    Program & Manage option in the RHC2

    The Robot Control Console (RCC) will open in a separate window.

    The Robot Control Console opening as a separate window.

    The options for Blocks and OnBot Java should appear at the top alongside the manage option.

    The programming and manage options in the RHC2.

    REV Hardware Client 1

    While connected to a powered Control Hub via USB, open the REV Hardware Client 1. Select the Control Hub to be programmed then the Program and Manage menu.

    The options for Blocks and OnBot Java should appear at the top alongside the manage option.

    Select Blocks. Let's take a look at the landing page below:

    1. Create a new OpMode

    2. Upload an OpMode

    3. Download all saved OpModes

    4. All currently saved OpModes and information

    While on the home screen, existing OpModes can be modified or downloaded. Downloading a copy of an important OpMode is recommended to help prevent a project being lost in the event of accidental deletion, change, or equipment failure. Blocks DOES NOT autosave.

    Select the checkbox beside the OpMode you would like to modify first. Then you can select what you would like to do, such as download, delete, rename, or copy.

    To create a brand new OpMode, select Create New OpMode.

    This will open the menu to name the OpMode and select a sample program. For now the sample should remain BasicOpMode as this will give us an easy to work with foundation to get started.

    The name of our OpMode should be easily recognizable and give some indication of what it's used for. When working with a class, it may be helpful to include student or group names in the OpMode to aid with grading later.

    This first OpMode we will use for a couple activities in this training section so we can name it myFirstOpMode.

    Once we click OK, Blocks will fully open.

    Let's take a tour of the Blocks user interface.

    1. Save OpMode - Click this button to save an OpMode to the robot. It is important to save the OpMode any time you stop working on a code, so that progress is not lost. Blocks does not have an autosave feature!

    2. TeleOp/Autonomous - This section of blocks allows users to change between the two types of OpMode: teleop and autonomous.

    3. Categorized Blocks - This section of the screen is where the programming blocks are categorized and accessible. For instance, clicking Logic will open access to programming blocks like if/else statements.

    The OnBot Java editor will open as well on the righthand side. Click the checkbox to close this for extra space in the programming area.

    In the next section, we'll take a closer look at the different categories of Blocks available. Remember if the correct configuration is not active, some Blocks may be hidden, such as those for motors and sensors.

    Variables Practice in Blocks

    In Blocks, the Variable menu will first appear empty.

    Once variables are created, they will populate in the menu.

    HOWEVER, if a variable is not used when a program is saved then exited, it will be removed from the list again upon reopening the program. This is helpful for clearing unused or variables made by mistake, but may cause confusion for students of why something has been deleted.

    In a new OpMode, locate the telemetry blocks under Utilities. Add two for displaying numerical data to the OpMode's loop.

    The keys will be set to "Answer 1" and "Answer 2" as seen below:

    Create a variable called "A" and one called "B". Make "A" the number for the first telemetry and "B" for the second:

    Enable/Disable OpModes

    Programming Space - This space is where blocks are added to build programs. Blocks not currently in the use may be dragged off to the side to be clicked back in later or deleted.

  • Greeting Message - This intro information message may appear when creating a new, empty OpMode. Clicking the ? icon will close this message.

  • Robot Control Console

    Deleting, Renaming, and Downloading OpModes

    Creating a New OpMode

    Navigating Blocks

    OnBot Java Editor

    Navigating Blocks Walkthrough Video

    REV Hardware Client 2
    Navigating to the Program and Manage menu in the RHC1.
    The programming and manage options in RHC1.
    Right now, our variables don't equal anything. Try saving your OpMode and seeing what happens when trying to run it.

    Let's start with using Constant Variables. We're set the variables during initialization so need to add the appropriate blocks here from the Variable menu:

    Adding blocks to set the variables during initialization

    Now "A" and "B" can be set to a value using a number block from the Math menu. For this example, "A" is being set to 5 and "B" to 23:

    Add a value to the variables

    What happens if you save and test the OpMode now?

    With our variables set, we can have the robot do some math for us to test out our variables!

    Using the Math menu we can choose different equations to add to our telemetry:

    Example of math added to the telemetry blocks

    Save and test your OpMode!

    Consider:

    Variable Activity

    Default Variable menu
    Variable menu with created variables
    Telemetry blocks added to the OpMode
    Variables added to the telemetry

    Setting Variables

    Adding Math

    Programming Your First Blocks OpMode

    This section pairs with Unit 1, Lesson 6 from the Intro to Robotics V2 curriculum.

    OpMode Structure

    Let's take a look at the basic structure and key blocks of the OpMode. This what is provided when using the sample BasicOpMode:

    This sample is recommended as it provides the needed basic structure for a program to run properly with the Driver Hub, but it can be modified to best fit the current needs of the project.

    The marked comments also help give direction for where different blocks should be added depending on their purpose.

    • Put Initialization blocks here - shows us where we will be setting up some variables, resetting encoders, setting motor directions, and anything else that needs to happen when the code is first activated.

    • Put run blocks here - is where anything that will be used when hitting the play button on our Driver Hub should be added.

    • Put loop blocks here - is similar to our last comment, but is for anything that needs to be repeated the entire time our program is running and will be halted when pressing the stop button.

    This contains the components of the program of the designated name. Anything sitting loose in the programming space, unless in a created function, will not be read when the program is run.

    When the Robot Controller reaches the block it will stop and wait until it receives a Start command from the Driver Hub. Any code after this block will get executed only after the Start button has been pressed.

    Whenever there is a call opModeIsActive, the Control Hub is checking that the OpMode is supposed to be running and has not been shut down by the Driver Hub. If something happens, for example the Driver Hub shuts off, this will change from true to false since it can no longer be checked, shutting down the current program.

    In more complex programs, this call must be included in added loops alongside any other conditions, such as a count, sensor information, or time limit.

    This sample Blocks program defaults to being in an iterative control structure, meaning it's intended to continue looping until Stop is pressed on the Driver Hub or a different condition is met.

    Code that should continually run so long as the OpMode is active, will be placed in the loop. If a program starts and immediately stops, students may need to double check their code is set to loop.

    Let's create our first OpMode to do something similar to how we get started in other programming languages. Let's have the robot read out "Hello World!" on the Driver Hub.

    To do this we can make use of telemetry.

    Telemetry is the process of collecting and transmitting data. In robotics, telemetry is used to output internal data, such as from the actuators and sensors, to the Driver Hub. It is a way for the robot to communicate back to the programmer what the robot thinks its doing or seeing.

    From our Telemetry menu look for the call to add telemetry with a key and text.

    The "key" is how we label the data being shown on the Driver Hub. In this case we'll set it to "Robot Says"

    The "text" is then our output. This might be data from a sensor or just instructions serving as a reminder for running the code. We can manually enter "Hello World!" for this example.

    Snap this block into the loop above the call to update the telemetry.

    From here we will click Save OpMode and are ready to give it a try!

    To run a program in the Driver Hub, first check it's connected to the intended Control Hub. The name will appear on the Driver Station App as seen here:

    Then select the program from the dropdown menu. We will be sticking to TeleOp programs stored in the right menu.

    Select the OpMode from the list.

    Now we can click Initialize, which let the robot run any set up code we made.

    And press Play when ready.

    In this example, we can see the message on the right! Pressing Stop will halt the code at any time.

    Let's briefly look at what happens if our telemetry block is not in the loop of our OpMode. Try dragging it to be below "Put initialization blocks here" and test it out after saving!

    Now try moving the call to update telemetry with it in the initialization area.

    In the next section, we'll get the actuators on the testbed spinning!

    runOpMode

    Call waitForStart

    Call opModeIsActive

    Main Loop

    Creating our First OpMode

    Running a Program

    What happens if the code is not in the loop?

    What happened?

    Likely when you pressed to initialize the code on the Driver Hub, nothing appeared to happen differently. The message continued to only appear after pressing play.

    What happened?

    Since the call to update telemetry is now before the call to waitForStart, our message will appear after initialize has been pressed, but will continue to be present after hitting play since no other command has been given.

    When using telemetry, a call to update block is key to allow the information to be continually reported back, accurate, and available on the Driver Hub.

    Creating Your First OpMode Walkthrough Video

    This video uses REV Hardware Client 1
    This video uses REV Hardware Client 1
    This video uses REV Hardware Client 1.
    This video uses the REV Hardware Client 1.
    This video uses REV Hardware Client 1.