The Tricycle: two driven wheels at the back, one wheel at the front, and a motor for each rear wheel. It is the first model since Lesson 1 that genuinely drives around a room.
And it has no steering wheel. There is no servo, no rack, no linkage — nothing that points the front wheel anywhere. So how does it turn?
By running one rear wheel faster than the other. That is the whole mechanism, it is how almost every robot you will ever build steers, and today you learn to control it as a number rather than a guess.
In the real world 5 min
Where you have seen it
The trishaw — the beca in Melaka and Penang, and its cousins all across South and Southeast Asia. Three wheels, a rider, and passengers. Still working, still everywhere.
Cycle rickshaws — three wheels, two of them at the back. Photo: Bernard Gagnon / Wikimedia Commons (CC BY-SA 3.0).
Why it is built that way
Three wheels always sit flat. Three points define a plane, so a tricycle never rocks on an uneven road the way a four-wheeled cart does — which is worth a lot on a street that has never been level.
A trishaw steers with handlebars, turning the front wheel. Your robot cannot. But watch what happens when a trishaw turns: the outside rear wheel travels further than the inside one, because it is going round a bigger circle. Every turn is one wheel outrunning the other — the trishaw just gets there by pointing the front, and your robot gets there by driving the back.
What would go wrong without it
A robot that can only go straight is a robot that has to be picked up and re-aimed every time it needs to change direction. Useless on any course, and useless for anything that has to find its way.
Turning is not a separate skill from driving. It is driving, with the two wheels doing different amounts of it.
The main concept — two speeds, one path 6 min
One block, two numbers: the speed of the left wheel and the speed of the right. The difference between them is the steering.
move for (1) [rotations v] at (50) (50) % speed :: movement
Left 50, right 50. Equal, so it goes straight. Change one number and the path bends.
Left / right
What the robot does
50 / 50
Straight ahead. Both wheels travel the same distance.
50 / 25
A gentle curve to the right — towards the slower wheel.
50 / 0
A tight turn about the stopped wheel, which stays where it is and acts as the pivot.
50 / −50
A spin on the spot. The wheels go opposite ways and the robot turns without going anywhere.
Read that table as one idea rather than four cases. The robot always curves towards the slower wheel, and the bigger the gap between the two numbers, the tighter the curve. Straight is not a special mode — it is just the case where the gap happens to be zero.
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.
Drag the two numbers in the lab and watch the trail. Nothing in there is a “turn” command; there is only ever a left speed and a right speed.
A note about Lesson 25. On the Toddle Bot, two different speeds would have broken the model, because its motors were joined by one axle. Here the two motors drive separate wheels with the floor between them, so disagreeing is safe — the wheels just travel different distances. Same blocks, opposite advice, and the difference is in the build.
The robot curves towards the slower wheel. Everything else about steering follows from that one sentence.
▶Driving with two motorsThe full reference for the Movement blocks. Open it if the pair, the speeds or the units are not clear yet.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: “It turns towards whichever wheel is going slower.”
What’s in this build 4 min
Part
What it is doing here
EV3 Intelligent Brick
Runs the program and rides on the chassis. Where its weight sits decides how much grip each wheel gets.
Large Motor ×2
One per rear wheel, ports B and C. Separate wheels, so they are allowed to disagree.
The front wheel (no cable)
Not steered and not really driven — it goes where the back end sends it. Check it rolls and swivels freely.
Check the two sides match
A tricycle that will not drive straight is nearly always a build problem, not a program one.
Spin each rear wheel by hand. Do they spin equally freely, and coast for about as long as each other?
Are both rear tyres the same size and equally inflated-looking? A slightly different tyre is a permanent curve.
Push the tricycle across the table by hand. Does it run straight? If it curves with no power at all, fix that before you program anything.
Check the front wheel is not rubbing on the frame or dragging its rubber band.
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 rear motor
B
B is left, always. Today this matters more than it ever has: the first number in the block is B, so if B is on the right your robot will turn the wrong way every time.
Right rear motor
C
C is right, and it is the second number in the block.
Sensors
none
The tricycle drives blind. Everything it does, you planned in advance.
Check your own build now:
Sit behind the tricycle, facing the way it drives. Now decide which side is left. Deciding from the front gets it backwards, and this is the lesson where that shows.
Left motor in B, right motor in C.
Route both cables up and over so neither drags on the floor or winds round a wheel.
Find a big clear floor. This one goes places, and it will not stop at the edge of the table.
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, if you possibly can. A USB cable on a driving robot is a rope tied to one side of it: the tricycle will curve towards the cable and you will spend the lesson trying to correct a steering fault you did not write.
Confirm the connection 2 min
Check the Brick icon: connected, or not.
A Large Motor on B and one on C. Both the same kind.
Turn the LEFT wheel by hand and check tile B moves. Then the right wheel, and tile C.
If they are the wrong way round, swap the cables now. A left/right swap on a steering robot mirrors every turn it makes, and it is almost impossible to spot from the program.
Make it move 10 min
Five blocks: straight, curve, straight. Watch the numbers rather than the block names — they are the same block three times.
when program starts :: events hat
set movement motors to [B v] and [C v] :: movement
move for (3) [rotations v] at (40) (40) % speed :: movement
move for (2) [rotations v] at (40) (10) % speed :: movement
move for (3) [rotations v] at (40) (40) % speed :: movement
Equal numbers, then unequal, then equal again — a straight, a curve to the right, and a straight.
Walk it in the order the Brick runs it:
set movement motors to B and C — a setting. Left is B, right is C, and the block’s two numbers arrive in that order.
40 and 40 for 3 rotations — straight. Both wheels turning the same amount at the same rate.
40 and 10 for 2 rotations — the right wheel is much slower, so the tricycle swings round to the right. Note the rotations count the faster wheel.
40 and 40 for 3 rotations — straight again, on the new heading.
What success looks like: a clean straight run, a smooth curve to the right, and another straight — a path shaped like a wide letter L drawn with a curve at the corner.
If it curves the wrong way, your B and C are swapped. Go back to section 8 rather than changing the numbers — swapping the numbers hides the fault instead of fixing it, and every program you write afterwards will be mirrored too.
Change it and test 8 min
One change at a time, and predict before each run — and today, predict which way it will go before you predict how far.
Change the curve to 10 and 40. Predict the direction. The gap is the same size; only which wheel is slower has changed.
Try 40 and 30. A small gap. Predict whether the curve is tighter or wider than 40 and 10.
Try 40 and 0. One wheel stopped. Watch what the stopped wheel does — it stays put and the robot pivots around it.
Try 40 and −40. A negative number. The robot spins on the spot without travelling anywhere. Time how long a full circle takes.
Now use step 4 deliberately: make the tricycle drive forward, spin a half-turn on the spot, and drive back to where it started. Three blocks.
Step 5 is the one worth keeping. Forward, spin, forward is how almost every robot on a competition table gets from one place to another — and it is easier to plan than a curve, because a spin does not move the robot anywhere while it happens.
Curves are pretty. Straights and spins are predictable. On a course with things to hit, predictable wins.
The map 2 min
This model drives, so its challenges are run on a mat. Mats differ between branches — check you are looking at the one in your room.
WRO 2026 RoboMission Elementary — Robot Rockstars · official WRO game mat, 2362 × 1143 mm
The challenges name these places rather than distances, so the same challenge works on any mat:
✕The room (bottom left)
AConcert stage (left)
BTour trucks (bottom middle)
CCafé (top right)
DPark strip (top right)
EMain plaza (centre)
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
Drive from the start position to a station your teacher names on the mat, and stop with the whole tricycle inside it. Straights and curves only. Work out your speeds by testing rather than guessing, then prove it with three runs that all finish inside the station.
Challenge 2
Reach a station that is not in a straight line from the start — one that needs a genuine change of direction. Then do it a second way: once using a curve, and once using a straight, a spin on the spot, and another straight. Say which was easier to get right, and why.
Challenge 3
Make a repeatable turn. Find the numbers that spin your tricycle exactly a quarter turn on the spot, and prove it by driving a square: four straights and four quarter turns, finishing facing the way it started. Report how far off it ends up and what you think caused the drift.
Mission
Drive a route somebody else chooses, first time.
Your teacher will name three stations on the mat in an order you have not practised. Your tricycle must visit them in that order without being picked up, repositioned or nudged, starting from HOME.
Plan on paper before you drive. Work out your route as a list of straights and turns first, and note beside each one the numbers you will use. Programming a route you have not planned is how robots end up in the wrong half of the mat.
Two questions when you demonstrate it. Which wheel is slower during your turn, and how does that match the direction it goes? And where does your error build up most — in the straights or the turns — and what is your evidence?
This is what you are building: the Tricycle.
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.