Base Mission
3 points Live judgedAn Orange Pom satisfies the definition.
Discovery · Coding Project 6
Four missions. Sixteen points. No claw — you push.
Student PIN:
Your robot cannot pick anything up yet. It can only drive and turn.
That turns out to be enough for four whole missions, because those missions do not ask you to hold anything. They just ask you to get things off the black line.
Everything in this project depends on one word. Read it carefully.
The Definition
An object is a line, , or zone edge when no portion of the object is that line, boundary, or zone edge.
No portion. A cube resting with one corner on the line is not . A cone leaning so its base just grazes the line is not . Close does not count.
Before you write anything, go look. Find each of these on the field and fill in the table.
| Object | Which way is the shortest push to get it ? | How far, roughly? |
|---|---|---|
| Large Red Cube + | ||
| Small Red Cubes | ||
| Unstraight Cubes (3) | ||
| Traffic Cones (2) | ||
| Orange Pom | ||
| Blue Pom |
Which two objects are closest together? Could one push move both?
Look at the front of your robot. How wide is the part that would do the pushing, and does that width help or hurt you?
Pushing looks like the easy version of picking something up. It is not — it is a different problem with its own rules.
| Point of contact | What it means |
|---|---|
| Dead center | The object slides forward in a straight line, roughly where you aimed. This is what you want. |
| Off to one side | The object spins away at an angle. It may end up somewhere you cannot reach again. |
| Too high | Tall objects tip over instead of sliding. A tipped cone still counts as — but only if the whole thing cleared the line. |
| At an angle | The object skids sideways. Hard to predict, hard to repeat. |
Square Up Before You Push
This is why Project 5 spent so long on turns. Arriving pointed the right way matters more than arriving in exactly the right spot. A robot that is square to the object and an inch off center will still push it straight. A robot in the perfect spot but angled 20° will send it sideways.
You cannot see the line edge from inside your program. Your robot pushes for a set time and stops, and whatever happened, happened.
So on purpose. If the object needs to travel four inches to clear the line, push it six. There is no penalty for being further , and there is a big penalty for being one millimeter short.
⚠ But Not Into Somewhere Worse
Do not push an object into a wall, off the field, or something you need later. Look at where it will end up before you decide how hard to shove.
Mission 4
An Orange Pom satisfies the definition.
An Orange Pom and a Blue Pom simultaneously satisfy the definition.
Mission 4’s bonus does not just ask for an orange pom and a blue pom . It asks for both — true at the same moment.
That last one is the whole problem. Clear one pom, come back, clear the other, and if the first one rolled back onto the line in between, you get the base and not the bonus.
The reliable answer is one push that takes both. That is a positioning problem, not a programming problem.
Build each mission on its own first. Get it working. Then join them together.
The order matters — after every push, your robot is somewhere new, facing a new direction, and the next section has to start from there.
// ---- Mission 13: unstraight cubes ----
// drive, push, back off
// ---- Mission 14: cones ----
// turn, drive, push
// ---- Mission 2: red cubes ----
// ...
Use banners like these to mark each section. When one mission stops working, you will know exactly which of code to look at.
One mission at a time. New project for each, then a combined one at the end.
Mission 13 All three Unstraight Cubes satisfy the definition (cubes are the black line). Two Unstraight Cubes form a scoring stack — one Unstraight Cube is another. All three Unstraight Cubes form a scoring stack. All cubes must originate from the Unstraight Cube area.Rebuild the Shipment
Watch Mission 13 video
Base Mission
1 point
Live judgedBonus Mission
7 points
Live judgedAdvanced Bonus
13 points
Final judgedScores
Does Not Score
| Try | Push msleep | How many cubes ended up ? |
|---|---|---|
| 1 | ||
| 2 | ||
| 3 |
Mission 14 Both Traffic Cones satisfy the definition. A Traffic Cone is the Loading Zone. The Base Mission must be satisfied to score the Bonus Mission.Traffic Control
Watch Mission 14 video
Base Mission
3 points
Live judgedBonus Mission
7 points
Final judgedScores
Does Not Score
⚠ A Tipped Cone Still Has to Be Clear
Cones tip easily. That is fine — a cone on its side can still be . But a tipped cone takes up more floor, so the part that lands might reach back onto the line. Push further than feels necessary.
Did one push clear both cones, or did you need two moves? Describe what you did.
Mission 2 The Large Red Cube and its pallet are both the black line. Both Small Red Cubes are the black line. The Small Red Cubes are not required to remain stacked.Relocate the Red Cube
Watch Mission 2 video
Base Mission
1 point
Live judgedBonus Mission
3 points
Live judgedScores
Does Not Score
Two Objects, Judged Separately
The cube and the pallet are checked independently. Both must be . Shoving the cube off while the pallet stays behind on the line scores nothing — so push low enough to move them together, or move the pallet after.
Good news on the bonus: the small red cubes do not have to stay stacked. Knocking them apart is fine as long as both end up .
Mission 4 An Orange Pom satisfies the definition. An Orange Pom and a Blue Pom simultaneously satisfy the definition.Remove the Hazard
Watch Mission 4 video
Base Mission
3 points
Live judgedBonus Mission
5 points
Live judgedScores
Does Not Score
Get the base first: one orange pom, completely . Then work out how to take a blue one with it in the same motion.
| Try | What I changed | Orange ? Blue ? Same time? |
|---|---|---|
| 1 | ||
| 2 | ||
| 3 | ||
| 4 |
Create a new project called Bulldoze. Copy your four working programs into it, one after another, with a comment banner above each section.
Now the hard part: the end of one section is the start of the next. After a push, your robot is not where it began — you need to drive it from wherever it ended up to wherever the next mission starts.
Add One Section at a Time
Get mission one working from the starting box. Then add mission two and test the whole thing. Then add three. Never add two sections between tests — if it breaks you will not know which one did it.
What order did you put the four missions in, and why that order?
Same standard as always. Reset the field between runs. Time each one with a stopwatch.
| Run | M13 | M14 | M2 | M4 | Points | Time |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | ||||||
| 3 | ||||||
| 4 | ||||||
| 5 |
Which mission failed most often across your five runs, and what do you think caused it?
You have been stopping with ao() — all off. It cuts power to
every motor and lets them coast to a halt.
That has been fine so far. From the next project it will not be, because you are about to add an arm, and an arm changes where the weight sits. A robot that coasts is a robot that keeps creeping after you told it to stop.
Setting a motor’s power to zero is not the same as switching it off. Zero power is still a command — the motor actively holds position instead of rolling free.
| This | Does | Robot behaves like |
|---|---|---|
ao(); | Cuts the power | A bike with the pedals let go — it rolls on |
motor(0, 0); motor(3, 0); | Commands zero | A bike with the brakes held — it stops where it is |
So from Project 7 onwards, every stop looks like this:
motor(0, 0);
motor(3, 0);
msleep(30);Three lines instead of one. You still give it the thirty milliseconds to settle, because even a held motor takes a moment for the robot to stop rocking.
Try Both, Right Now
Drive forward for two seconds and stop with ao();. Mark where the robot ends up.
Reset, run it again, and stop with the three-line freeze instead. Mark that spot too.
| Stopped with | Where it finished | Any creep after stopping? |
|---|---|---|
ao(); | ||
| the three-line freeze |
⚠ From Here On
Every project after this one uses the freeze. If you go back and reuse code you wrote in Projects 3 to 6,
swap the ao(); for the three lines before you trust it.
| Mission part | Scored? | Points |
|---|---|---|
| Mission 13 — Base (all three cubes ) | 1 | |
| Mission 2 — Base (large cube + pallet ) | 1 | |
| Mission 2 — Bonus (both small red cubes ) | 3 | |
| Mission 14 — Base (both cones ) | 3 | |
| Mission 4 — Base (orange pom ) | 3 | |
| Mission 4 — Bonus (orange + blue simultaneously) | 5 | |
| My total | 16 |
| Question | My answer |
|---|---|
| Fastest run that scored all six parts | |
| Total commands in my program | |
| Which section takes the longest? |
Your program is getting long, and big chunks of it are nearly identical — drive, turn, drive, push, back off, over and over. What is annoying about that?
You change one msleep() near the start of the run. What happens to every mission that comes after it, and why?
A team at a tournament has a robot that scores 16 points in practice and 3 points in the actual match. Nothing about the program changed. Give two possible explanations.
You have taken pushing about as far as it goes. Everything left on the field has to be lifted — and that needs a claw.
Before Project 7 — Your Robot’s Arm, go build one. The claw build lives in the Systems strand, and this is the one place where the two strands have to meet.
KIPR · Botball Explorer — Discovery Projects · © KISS Institute for Practical Robotics 1997–2026
When you are finished, press the button to turn in your work and save a copy.
KIPR · Botball Explorer · Discovery