Student Labs
Student labs are guided activities where students edit code, run the robot, observe the result, and answer a short reflection question. Begin with 10 structured labs, with the curriculum expanding to 40.
Available now (Level 1 — Control)
Planned (Levels 2–4)
30 more labs are planned to complete the 40-lab curriculum. Level 2 working titles are listed below; Level 3 and 4 titles will be finalized as development continues — see Curriculum for the full roadmap.
Lab 01: Hello Robot Motion
Goal: Run your first safe robot motion and understand that code sends target positions to robot joints.
What students edit: Students change a small motion value or timing value after running the starter version.
Concepts
- Motion commands
- Neutral pose
- Safe movement
- Terminal command
- Observation before editing
Starter command
Steps
- Connect to the robot through VS Code and SSH.
- Open the lab file in your student project.
- Run the starter command without editing anything.
- Observe which part of the robot moves.
- Change one allowed value.
- Submit through the queue and wait for approval.
- Return the robot to idle.
Expected result
The robot performs a small safe motion, such as moving an arm or head, then returns to a neutral pose.
Reflection question
What changed physically when you changed the code value?
Extension challenge
Add a second safe motion after the first one, then return the robot to idle.
Lab 02: Servo Angles and Safe Limits
Goal: Understand that each joint has safe angle limits and that robot motion should stay inside tested ranges.
What students edit: Students adjust allowed servo target values inside a provided safe range.
Concepts
- Servo range
- Joint limits
- Mechanical safety
- Angle values
- Safe testing
Starter command
Steps
- Open the lab file and find the safe angle range.
- Run the starter motion.
- Change the angle slightly within the allowed range.
- Run the motion again.
- Compare small changes to larger changes.
- Return the joint to neutral.
- Write down why random angles are unsafe.
Expected result
Students see that small code changes can create visible joint movement, but only within safe mechanical limits.
Reflection question
Why should a robot program use safe limits instead of sending any angle directly to a servo?
Extension challenge
Create a helper function that rejects values outside the safe range.
Lab 03: Build a Gesture Sequence
Goal: Create a small gesture by combining multiple safe poses with timing delays.
What students edit: Students reorder poses, adjust delays, and add one extra gesture step.
Concepts
- Sequences
- Timing
- Poses
- Reusable functions
- Human-readable robot behavior
Starter command
Steps
- Run the starter gesture.
- Identify each pose in the sequence.
- Change one delay value.
- Add one new pose from the provided safe pose list.
- Run the new sequence.
- Check whether the gesture still looks smooth.
- Return the robot to idle.
Expected result
The robot performs a short custom gesture using multiple poses.
Reflection question
How does timing change the way a robot gesture feels to a person watching it?
Extension challenge
Create two versions of the same gesture: one that looks calm and one that looks excited.
Lab 04: Head Tracking Basics
Goal: Move the robot head left, center, or right based on a simple target position.
What students edit: Students adjust zone thresholds and head yaw values.
Concepts
- Neck yaw
- Neck pitch
- Camera target position
- Mapping input to motion
- Simple tracking behavior
Starter command
Steps
- Run the starter head tracking script.
- Move the target between left, center, and right zones.
- Observe how the head responds.
- Change one threshold value.
- Change one head yaw value within the safe range.
- Run the script again.
- Return the head to center.
Reflection question
What is the difference between detecting where something is and deciding how far the robot should move?
Extension challenge
Add a small delay so the head movement feels smoother and less twitchy.
Lab 05: Button-to-Motion Control
Goal: Connect a keyboard input or simple button event to a robot motion.
What students edit: Students map different inputs to different safe robot actions.
Concepts
- Events
- Input handling
- Calling robot actions
- Safety stop
- Simple control interface
Starter command
Steps
- Run the starter input script.
- Press the provided key to trigger a motion.
- Find where the input is checked in the code.
- Add a second input option.
- Map the second input to a different safe pose.
- Test both inputs.
- Use the stop key before ending the lab.
Reflection question
Why is it useful to separate input handling from the actual robot motion function?
Extension challenge
Add a simple menu that shows which keys trigger which motions.
Lab 06: RealSense Detection Basics
Goal: Use RealSense camera data as a trigger for a simple robot behavior.
What students edit: Students adjust a detection zone or distance threshold.
Concepts
- Camera input
- Detection zones
- Depth and distance
- Perception-triggered motion
- False positives
Starter command
Steps
- Start the camera-based lab.
- Place a target or user inside the detection area.
- Observe when the robot triggers a response.
- Adjust the detection distance or zone.
- Run the test again.
- Compare reliable and unreliable trigger conditions.
- Return the robot to idle.
Reflection question
Why should camera-based triggers be conservative when the robot is near people?
Extension challenge
Add a timeout so the robot returns to idle if the target disappears.
Lab 07: Hand Pose Timing
Goal: Adjust hand and finger timing to understand how small delays affect robot gestures.
What students edit: Students change finger pose timing, open/close delays, or gesture order.
Concepts
- Finger servo poses
- Timing
- Grip and release
- Gesture realism
- Small motion changes
Starter command
Steps
- Run the starter hand pose.
- Observe how quickly the fingers move.
- Change one timing delay.
- Run the gesture again.
- Change the order of two finger movements.
- Compare which version looks more natural.
- Return the hand to relaxed pose.
Reflection question
Why can timing make a robot motion feel more natural even if the final pose is the same?
Extension challenge
Create a small hand gesture that looks like a count-in or signal.
Lab 08: Base Rotation Basics
Goal: Command the robot's rotating base to turn left or right safely.
What students edit: Students adjust direction, duration, or speed values inside safe limits.
Concepts
- Base yaw
- Motor control
- Direction
- Speed
- Stop command
Starter command
Steps
- Make sure the robot base area is clear.
- Run the starter base rotation command.
- Observe direction and stopping behavior.
- Change the direction.
- Change the duration slightly.
- Run the test again.
- Send the stop command.
Reflection question
Why should base motion always include a clear stop condition?
Extension challenge
Create a turn-left, pause, turn-right sequence.
Lab 09: Behavior Priority and Motion Locking
Goal: Understand why one robot behavior should not interrupt another motion at the wrong time.
What students edit: Students test simple behavior priority rules and see how a motion lock protects a running action.
Concepts
- Motion lock
- Behavior priority
- State control
- Safe cancellation
- Competing commands
Starter command
Steps
- Run the starter behavior.
- Trigger a second behavior while the first is active.
- Observe whether the second behavior is blocked or delayed.
- Find the motion lock in the code.
- Change the priority of one behavior.
- Run the test again.
- Return the robot to idle.
Reflection question
What could go wrong if two scripts tried to control the same arm at the same time?
Extension challenge
Add a low-priority idle behavior that pauses when a higher-priority demo starts.
Lab 10: Mini Demo Challenge
Goal: Combine motion, timing, and optional perception into a small custom robot demo.
What students edit: Students create their own short behavior using safe poses and at least one idea from earlier labs.
Concepts
- Project planning
- Code reuse
- Debugging
- Demo presentation
- Behavior design
Starter command
Steps
- Choose a simple demo idea.
- Pick which robot parts will move.
- Start from a provided safe template.
- Add two or more motion steps.
- Add timing between steps.
- Test one part at a time.
- Prepare a short explanation of how the demo works.
Expected result
Students build and run a short custom robot behavior that they can explain.
Reflection question
What part of your demo was easiest to control, and what part needed the most debugging?
Extension challenge
Add camera input or user input to trigger the demo.