The Lawnmower: a two-motor driving base with a Medium Motor spinning a cutter underneath. It drives, it cuts, and — for the first time in this level — it has to get round a corner.
A mower cannot just drive in straight lines. A lawn is an area, and covering an area means turning at the end of every run.
And not every turn is the same turn. A mower that swings round in a wide arc leaves an uncut crescent at the end of each strip. One that spins on the spot with the blade running scrubs a bare patch into the grass. Today you learn the difference, and how to pick.
In the real world 5 min
Where you have seen it
Robot mowers work football pitches and gardens now, quietly, for hours. Watch one long enough and the pattern gives it away: long straight runs, and a deliberate manoeuvre at each end.
A Husqvarna CEORA robotic mower maintaining a sports field. Photo: W.carter / Wikimedia Commons (CC BY-SA 4.0).
Why it is built that way
A mower is judged on coverage — whether every blade of grass got cut — and coverage is decided almost entirely at the ends of the runs. The straight bit is easy. The turn is where you either overlap neatly with the last strip or leave a stripe of long grass behind.
Which is why a groundsman mowing a pitch by hand does a three-point turn at the end of each strip rather than a sweeping arc. It takes longer and it puts the machine exactly where the next strip starts.
What would go wrong without it
Turn the wrong way for the job and you get one of two failures, both visible from across the garden: uncut crescents at every end, or a worn circle of mud where the machine pivots with its blade down.
The straight lines are not the hard part. Everything that goes wrong happens at the corners.
The main concept — three turns, three pivot points 6 min
The block is the one you met on the Tricycle: two numbers, a left speed and a right speed. What is new is knowing where the robot turns about for each pair, because that is what decides whether the manoeuvre is any use.
move for (1) [rotations v] at (40) (40) % speed :: movement
Left speed, then right speed. Equal is straight. Everything below is what happens when they are not.
Manoeuvre
Left / right
It turns about…
Use it when
Curved turn
40 / 20
A point outside the robot, off to the slow side. Both wheels move forward; the robot travels while it turns.
You want to change direction without stopping — smooth, and it covers ground.
Point turn
40 / 0
The stopped wheel. That wheel stays exactly where it is and the robot swings round it.
You need one particular corner of the machine to stay put.
Spin
40 / −40
The middle of the axle, between the two wheels. The robot rotates and goes nowhere.
You want a new heading from the same spot. The mower’s end-of-strip turn.
Read the third column rather than the second. The numbers are just how you ask; the pivot point is what you actually get, and it is the thing you should be choosing between.
Drag the robot, or use the arrow keys — it moves in half rotations. Rotations above the line, centimetres below.
1.5 rotations26.3 cm
1.5 — a half rotation past 1. Half a turn of the wheels is 8.75 cm, so halves matter.
cm=2rotations
35 ÷ 17.5 = 2. That is a number you can type straight into the block.
Set the two numbers in the lab and watch the trail. A curve, a swing about one wheel, and a rotation that leaves the robot where it started — three different shapes out of one block.
Turning by a measured amount
The block still ends on rotations, and those rotations count the faster wheel. So a spin of half a rotation is not half a circle — it is however much of a circle your robot happens to sweep in half a wheel-turn, which depends on how far apart its wheels are.
Nobody can tell you the number for a 90° turn. It depends on your wheel size and your track width, and it is different for every build in the room. You are going to find yours by testing, and then it will be right for every program you write on this model.
Choose the pivot first, the numbers second.
▶Driving a pairThe Movement blocks in full, from Lesson 6. Open it if the pairing needs a refresher.Show meHide
ComponentMotion6 min
Driving with two motors
A driving base has two Large Motors, one per wheel. You could drive them with two separate motor blocks — but they would never start at quite the same instant, and the robot would curve away. EV3 has a separate family of Movement blocks that treat the pair as a single driving base.
port B
port C
A driving base is two Large Motors, normally in ports B and C. The Movement blocks treat this pair as one machine rather than two separate motors.
Blocks reference
Block
What it does
set movement motors to [B v] and [C v] :: movement
Tells the Movement blocks which two ports are the driving wheels. Put it at the top of the program, before any movement.
move [forward v] for (2) [rotations v] :: movement
Drives both wheels together, so the robot travels in a straight line.
move for (1) [rotations v] at (75) (25) % speed :: movement
Drives the two wheels at different speeds, which makes the robot curve.
set movement speed to (50) % :: movement
Sets how fast the driving base travels from now on.
The letters must match the sockets
set movement motors to [B] and [C] is the block that decides which two motors every Movement block after it will drive. It does not look at the robot. It drives the two ports you name, whether or not there is a motor in them — so those two letters have to be the two sockets the cables are actually in.
This is the single commonest reason a driving base does nothing, and it is invisible in the program: every block is spelled correctly and the robot still will not go.
Two robots, and the very same program: drive the motors in ports B and C forward.Check the cables. The left robot's motors are in B and C — the two the block names. The right robot's are in A and B.Run it. On the left both wheels are driven and the robot goes straight. On the right only port B has a motor the block is talking to; port C is empty, and the motor in A is never mentioned.So one wheel turns and the other does not, and the robot swings round its dead wheel. Nothing failed, nothing was reported — the program drove the ports it was told to.Finished. Identical programs, identical robots — different sockets.
stopped
The yellow outline marks the two ports the block is driving. A robot only goes straight when both of them have a motor in them.
Both robots run the identical program. The left one has its motors in B and C, so both named ports have a motor and the robot drives straight. The right one is plugged into A and B: the block drives B, finds nothing in C, and never mentions the motor in A at all — so one wheel turns, one wheel sits there, and the robot swings round the dead one instead of driving.
If neither named port has a motor in it — cables in A and D, say, with the block still set to B and C — the robot does not move at all. The program runs happily to the end and the Brick reports nothing wrong, because as far as it is concerned it did exactly what it was told.
So before you look for a bug in the program, look at the cables: read the port letters off the Brick, then make the block say those two. B and C are only the usual choice, not a rule — if your build has the driving motors in A and D, set the block to A and D and everything works.
Straight, curved, and on the spot
Everything a driving base can do comes from those two speed numbers. Try each button below and watch the trail the robot leaves.
when program starts
set movement motors to B and C
move for 2rotations at 5050 % speed
50left wheel · B50right wheel · C
Equal speeds → a straight line
Both wheels are set to the same speed.Equal speeds, so the robot tracks straight — the trail is a straight line.Two rotations later it is exactly where it was pointed.Finished — it will run again in a moment.
stopped
The path is worked out from the two wheel speeds in the block, not drawn by hand — so changing the preset changes the numbers and the shape together.
Both wheels the same speed — the robot goes straight.
One wheel faster than the other — it curves towards the slower side. The bigger the difference, the tighter the curve.
One wheel forward, the other backward — it spins on the spot, which is how a robot turns in a space no wider than itself.
Notice there is no steering block anywhere in that program, and no steering part anywhere on the robot. The turn is made entirely by driving the two wheels different amounts.
when program starts :: events hat
set movement motors to [B v] and [C v] :: movement
move [forward v] for (2) [rotations v] :: movement
move for (1) [rotations v] at (50) (-50) % speed :: movement
How far is one rotation?
“Move forward 2 rotations” says nothing about the floor — it says how many times the wheels go round. How far the robot actually travels depends on how big the wheels are, and once round a standard EV3 driving wheel is about 17.5 cm.
Before doing any sums, get a feel for it. Drag the robot along and watch both scales at once — rotations on top, centimetres underneath, the same line. Land on the half marks: there is a number between 1 and 2, and it is 1.5.
Drag the robot, or use the arrow keys — it moves in half rotations. Rotations above the line, centimetres below.
1.5 rotations26.3 cm
1.5 — a half rotation past 1. Half a turn of the wheels is 8.75 cm, so halves matter.
cm=2rotations
35 ÷ 17.5 = 2. That is a number you can type straight into the block.
1 rotation = 17.5 cm. Two rotations is 35, three is 52.5.
Halves are real. 1.5 rotations is a perfectly good thing to type into the block, and it is 26.25 cm — right between the 1 and the 2 you already tried.
To go a distance you have chosen, divide by 17.5. The calculator does it, but do a few by hand first — 35 ÷ 17.5 = 2 is worth seeing.
Measure your own wheels before trusting the number. A base built with different wheels travels a different distance per rotation, and every calculation on this page moves with it.
set movement motors to [B v] and [C v] :: movement
set movement speed to (30) % :: movement
move [forward v] for (2) [rotations v] :: movement
Turning on the spot
Steering at right 100 or left 100 drives the two wheels in opposite directions, so the base stops travelling and pivots where it stands. The angle it sweeps is a simple doubling of the rotations:
Half a rotation is the one worth remembering: a square corner, 90°.
Rotations
The robot turns
0.25
45° — half a corner
0.5
90° — a square corner
1
180° — turn round and face back
2
360° — all the way round
The one to memorise is 0.5 rotations = 90°. Everything else follows from doubling or halving it.
set movement speed to (20) % :: movement
move [right: 100] for (0.5) [rotations v] :: movement
Turn slowly. The wheels on a driving base are big and the robot carries a lot of weight, so at full speed it keeps going after the motors stop and lands past the angle you asked for. Somewhere between 15% and 30% speed is where turns become repeatable. A turn that overshoots is almost always a turn taken too fast, not a wrong number.
These figures belong to your robot. The distance depends on the wheels and the angle depends on how far apart they are, so a wider base needs a different number for 90°. Test it, measure what actually happened, and adjust — the same discipline as the Gyro Sensor tolerance.
Why it matters
Every wheeled vehicle steers this way — a tank, a digger, an office chair with two driven castors. Cars use a steering rack instead, but a robot that turns by driving its wheels at different speeds needs no steering mechanism at all.
Say this back before moving on: “Opposite speeds spin about the middle.”
What’s in this build 4 min
Part
What it is doing here
EV3 Intelligent Brick
Keeps the drive pair matched. Where its weight sits decides how cleanly the mower spins — weight over the axle spins tidily, weight out at one end drags.
Large Motor ×2 — the drive
Ports B and C. Today they are deliberately allowed to disagree, and the size of the disagreement is the manoeuvre.
Medium Motor — the cutter
Spins the blade. Runs the whole time, at its own speed, using the non-waiting start from Lesson 7.
The track width (not electronic)
The distance between the two driving wheels. It is not a part you fitted, but it decides every turn this robot will ever make.
Measure your machine before you turn it
Measure the distance between the middles of the two driving wheels. Write it down. A wide robot needs more wheel-turning to sweep the same angle than a narrow one.
Push the mower forward by hand. Does it track straight, with no power at all? Fix that first — a machine that pulls to one side turns differently left and right.
Spin it on the spot by hand and watch the middle of the axle. It should stay roughly on one spot.
Find a large clear floor and mark a starting corner with tape. You will be coming back to it.
Ports — and the rule 4 min
Sensors go in ports 1, 2, 3, 4. Motors go in ports A, B, C, D. They are not interchangeable, and nothing will tell you politely if you swap them.
Part
Port
Why this one
Left drive (Large)
B
B is left, and B is the first of the two numbers in the block. Get this wrong and every turn mirrors.
Right drive (Large)
C
C is right, and the second number.
Cutter (Medium)
D
Off the movement pair entirely, so a Movement block can never drive the blade by accident.
Check your own build now:
Sit behind the mower, facing the way it drives, and decide left from there. Deciding from the front gets it backwards, and this is the lesson where that shows.
Left in B, right in C, cutter in D.
Route all three cables up and over. A cable under a spinning cutter lasts about a second.
Nothing on the floor you mind being driven over. This one goes places.
Connect the Brick 4 min
Two routes, and either is fine. USB is the reliable one and the one to fall back on when a room’s Bluetooth is busy; Bluetooth leaves the robot free to move, which some models need.
▶How to connect the BrickUSB and Bluetooth, step by step, with a photograph of every screen. Open it if you have not done this before — or if pairing is not working.Show meHide
USB — the reliable one
Switch the Brick on with the dark grey centre button.
Cable into the Brick’s PC port — the small square socket beside the numbered ports, not one of the numbered ones.
Other end into the computer.
Bluetooth — name it first
Do these in order. Naming the Brick after you go looking for it in the list is how groups end up driving each other’s robots.
Name your Brick. On the Brick: Settings (the spanner) → Brick Name. Type something nobody else will pick, then press the tick. Every Brick is called EV3 until somebody changes it.
Turn Bluetooth on. Settings → Bluetooth. Tick Bluetooth and Visibility. Leave iPhone/iPad/iPod unticked.
Connect from EV3 Classroom. Click the Brick icon at the top of the programming area, find your Brick by name, and click Connect.
Say yes on the Brick. It asks “Connect?” with the computer’s name — choose the tick, then accept the passkey, which is already 1234.
Where to read it. The name sits in the bar across the very top of the screen, on every screen — so you can check which Brick you are holding at any moment without going into a menu. This one is EV3VE. A Brick nobody has renamed says EV3.Step 3, and the reason step 1 exists. Three Bricks in range — read the name before you click Connect. Pairing with the wrong one is not an error: it works perfectly, on somebody else’s robot.
Step 2.Bluetooth switches the radio on; Visibility is what lets the computer find you. With Visibility off your Brick works perfectly and simply never appears in the list.Step 4. Look at the Brick. It asks whether to accept and names the computer. Choose the tick.Then the passkey, already 1234. Press the tick again and you are connected.
The two failures, every class, every time. The Brick has gone to sleep while you were building — press the centre button to wake it. Or you have paired with the group at the next table, which is why the name matters.
The long version, including Port View and how to read the port tiles, is in the Brick & Bluetooth guide.
Bluetooth. A tethered mower drags its cable through its own turns, and a cable pulling on one side is indistinguishable from a steering error you did not write.
Confirm the connection 2 min
Check the Brick icon: connected, or not.
Three motor tiles — Large on B and C, Medium on D.
Turn the LEFT wheel and check tile B moves. Then the right wheel and tile C. If they are swapped, swap the cables — never the numbers.
Spin the cutter by hand and check tile D counts.
Make it move 10 min
One square lap of the lawn: four straight runs with a spin at each corner, cutter running throughout.
when program starts :: events hat
set movement motors to [B v] and [C v] :: movement
[D v] start motor at (85) % speed :: motors
repeat (4)
move for (4) [rotations v] at (40) (40) % speed :: movement
move for (0.5) [rotations v] at (35) (-35) % speed :: movement
end
[D v] stop motor :: motors
Straight, spin, four times. The 0.5 is a guess — yours will be different, and finding it is the job.
start motor at 85% on the cutter — non-waiting, so the blade spins for the whole lap while the drive blocks run.
4 rotations at 40 / 40 — one side of the square. Both numbers equal, so it runs straight.
0.5 rotations at 35 / −35 — the corner. Opposite speeds, so it spins about the middle of its axle and stays on the corner instead of swinging into the next strip.
repeat 4 — four sides and four corners is a closed square.
What success looks like: the mower finishes back on its starting tape, facing the way it started. That is the test, and it is a strict one — four corners means any error in your turn gets multiplied by four, which is exactly what makes it easy to see.
Tune the corner, not the straight. If it finishes turned too far clockwise, your spin is too big — try 0.45. Too far the other way, try 0.55. Change one thing, run the whole square, look at where it ends. Three or four goes will get you within a few degrees.
Change it and test 8 min
Same starting tape every run, and watch where the machine ends up rather than watching it go round.
Write your tuned 90° number on the board. Every program you write on this model from now on will use it.
Change the corner to a point turn — 35 / 0 instead of 35 / −35. You will need roughly twice the rotations for the same angle. Why? Watch which wheel stays still.
Change the corner to a curved turn — 40 / 15. Run the square. It is not a square any more. Describe the shape it drew.
Put the spin back and change the straight to 2 rotations. A smaller square, same corners. Does your turn number still work?
Run the square twice by changing the repeat to 8. Does it come back to the tape the second time, or has the error added up?
Step 5 is the honest one. A turn that is one degree out is invisible on one corner, obvious after eight, and the reason competition robots eventually stop counting rotations and start using a gyro — which is waiting for you later in this level.
A small error you cannot see is still there. Run it four more times and it will introduce itself.
This is what you are building: the Lawnmower.
Build it 15 min
Build the model before you read any further. Everything after this is about making it do something, and none of it will make much sense with nothing on the table in front of you.
Use the viewer's own controls to zoom and turn pages. Fullscreen makes it big enough to build from.
Check the finished build against the picture before you switch anything on. A motor mounted the wrong way round is far easier to spot now than it is to debug later, when it looks like a program fault.
Challenges & mission 27 min
Work through the challenges in order — each is harder than the last. The mission comes after all three, and it is meant to make you plan before you build.
Challenge 1
Tune your 90 degree turn. Run the square lap and adjust only the corner number until the mower finishes on its starting tape, facing the way it began. Write the number on the board — it belongs to your machine and you will use it all level.
Challenge 2
Mow a rectangle instead of a square. Two long sides and two short ones, corners still square. The turn number does not change; work out what does.
Challenge 3
Cover an area, not a line. Mow three parallel strips that sit next to each other with no uncut grass between them and no strip mown twice. You will need a turn, a short shift sideways, and another turn at each end — draw the route before you build it.
Mission
Mow a lawn with something in the middle of it.
Mark out an area about a metre square and put an obstacle somewhere inside it — a box, a book, a shoe. Your mower has to cut the whole lawn and never touch the obstacle.
Plan the route on paper first, as a drawing with arrows and the obstacle marked. Decide at every corner which of the three manoeuvres you are using and why. A curved turn covers ground and needs room; a spin needs none but leaves the machine standing still. There is no single right answer, which is why you have to justify yours.
Then run it, and mark on your drawing anywhere it missed or anywhere it hit.
Two questions when you present it. Which corner gave you the most trouble, and did you fix it by changing the turn or by changing the route? And your mower does not know the obstacle is there — it only avoids it because you counted rotations correctly. Describe what you would add so it could find one it had not been told about.