Group 9 – Lab Report: A Stair Climbing Robot – By Olivier Vanhoedenaghe, Kevin Hamoir and Tom van Rijn


The purpose of this website is to give an insight into how we came to build our particular robot, named ‘The Turtle’. The most important steps and processes are explained.
This Stair climbing robot was made in the context of an assignment in the second bachelor year of Industrial Engineering at the Vrije Universiteit Brussel lead by Yannick Verbelen, Lieven Standaert and Ronald Van Ham. A box of parts and motors (small steppers and DC-motors) was given to us. To make the robot, all the machines present in the FabLab, including laser cutters, 3D printers, and PCB milling machines were available to us.
All files created by us or provided by our professors are available to download.

Our inventor files are in a separate zip-file.


Some videos



First, we were given the task to make a small robot, based on plans and files to laser cut the wooden parts. This was to learn how to use motors and program the Arduino to control these motors. Once this robot was completed, some research was done to get some inspiration for a design that would make it possible to climb stairs. A first design was drafted, which, after some thought, would not be possible to make. A new design was then considered, based on the robot shown in the video underneath.

After a first prototype was made, we found out that this would not work either unless we made a small change. This is when the section in the middle of the robot was added, allowing the robot to balance on the front and middle section while climbing the stairs.

Group 9 Photo 2 Balancing

Group 9 - Photo 1 middle section - Version 2
















After some calculations, we found out that the DC motors were strong enough without their gearbox, which had a ratio of 1:120. We thus removed the gearboxes from the motors. A set of gears was 3D-printed to drive the threaded rod with the DC-motors. Yet, they were not strong enough, so we tested a set of gears made out of MDF, which, were still not strong enough, so a set of birch gears was made. Each gear was made out of two layers of 3mm birch with teeth and two layers of support. Quickly, the robot was automated for the DC motors to prevent the robot from breaking itself. The DC-motors were strong enough to make the threaded rod go through the robot, and destroy the wooden gears. Unfortunately, with the additions the robot gained weight. The DC motors were not strong enough anymore, which forced us to put the gearboxes back onto the motors. Since we still wanted to speed up the robot, the gearboxes were hacked. Two gears were removed, and one other gear was moved up to allow for a new ratio of 1:15. At that point we had two wooden gears as well, with a ratio of 1:2,5. Since we now had plenty of torque, new wooden gears were made with a ratio of 1:1. We now had a robot that would climb the stairs, but we had to manually control the robot. Since this robot needs to go through six different phases to climb one step, we automated the robot until we would just have to push on one button to make it climb a whole staircase. This is the final configuration of the DC-motors.


How to make The Turtle

It is recommended to check if all the needed parts are present. To make this an easier task, a list of all the needed parts was made. The names of the wooden parts correspond with the names of the files needed to laser cut them. This is also the case for the following pictures with their legend.


Main Body Assembly
1 middenbody
2 switch
3 afstandsensor
4 DIN 6912 – M6 x 70 (Cylinder Head Cap Screw)
5 roller bearingsØ8mm-Ø 22mm – 7mm
6 houderlineairelagers
7 tandwielring
8 Spur Gear2  (Dc motor)
9 DC-motor
10 DIN 439 – M8 (Hex Nut)
11 Spur Gear1 (system)
12 tandwielring
13 roller bearingsØ8mm-Ø 22mm – 7mm
14 linear bearings Ø8mm – Ø15mm-24mm
15 houderlineairelagers1
16 houderlineairelagers
17 bovenstelangelagerhouder
18 linear bearings Ø8mm – Ø15mm-24mm
19 bovenstekortelagerhouder
20 houderlineairelagers2boven
21 switch
22 zijbody
23 voorachterkleinbody
24 onderbody-achter
25 onderbodymidden
26 onderbody-voor
27 voorachterbody
28 switch
29 batery
30 electronic pcb’s
31 bovenbody
32 DIN 555-5 – M6 (Hex Nut)


1 2 3 4 5 6 7 8 9 10





















































Wheels Assembly x2
1 zijkantwielhouder5
2 zijkantwielhouder
3 zijkantwielhouder1
4 bearing houder
5 roller bearingsØ8mm-Ø 22mm – 7mm
6 stepper nema17
7 staafhouder
8 hollow cold-rolled bars
9 threaded bars M8 for system
10 threaded bars M8 for wheels
11 DIN 555-5 – M6 (Hex Nut)
12 Spur Gears (stepmotor)
13 Spur Gears (wheels)
14 wheels (rubberwiel + velg)
15 zijkantwielhouder4
16 zijkantwielhouder3


1 2 3 4
















To give an idea of the wooden parts that need to be laser cut, here are the drawings, with the same name as their DXF-file, which, can be found in the zip-file.































































































































For an overview of the assembly, videos are available.


Threaded rod assembly

Group 9 - Photo 7 Rod assemblyGroup 9 - Photo 6 Rod assembly



















First, a set of four 8mm diameter washers was 3D-printed. While the washers are being printed, the birch gears are laser-cut. Remember to check the 3D printer regularly and never leave a laser cutter unsupervised. These gear parts are glued-up using wood glue. The nuts are then smeared with wood glue before they are pressure-fitted into the gears and let to dry. The frame is then laser-cut out of MDF. Then, it is advised to assemble the parts that keep the slide bearings and roller bearings in place, as this makes for the structure of the robot.

Start by laying down two pieces of MDF that keep the assembly in place onto the base-plate. Add four M8 bolts from under the base-plate. A roller bearing and one slide bearing on either side of the roller bearing are slid into place. A 3D-printed washer is added on top of the roller bearing. The birch gear is then turned onto the threaded rod. Another washer is added on top of the gear. The second roller bearing is added. Two sets of four support plates are slid into place on either side of the gear. Four support panels are added on top. A larger panel is added. Two slide bearings are then added, along with their eight support panels. Four nuts are fastened onto the assembly.
Repeat this process on the other side of the base-plate. All the panels, except the front, rear and cover panel are then to be put in place. These panels are kept together using M3 nuts and bolts that have a length ranging from 9mm to 13mm.



DC hacking and assembly onto the frame

The gearbox is screwed off of the DC motor. Two gears are removed and the gear on the motor shaft is slid up.

Group 9 - Photo 3 Gears Group 9 - Photo 4 Gears Group 9 - Photo 5 Gears











The gearbox and the motor are screwed together. Repeat this process for the second DC motor. Solder one wire to each terminal of the DC motors. Using flat cables will keep the cables together and organised. The DC motors are screwed onto the frame using two 10mm M1 screws. Using hot glue, assemble the birch gear onto the gearbox shaft of the DC motor.


The wooden gears for the steppers are to be cut out of 3mm MDF. Once cut, the holes in the middle are aligned and the layers are glued-up. The gears on the axles of the wheels are made in a similar fashion to the gears with the nut from the DC motors.


The wheels are assembled in a similar fashion to the gears. A set of 32 slices of 3mm MDF-wheels are laser cut. These are then glued up by eight. To obtain more grip, a piece of rubber is glued onto the MDF. For even more grip, a mould could be made to pour in some silicone in the form of tires to go around rims. For these silicone tires it is important to stay in the 66mm diameter.




The power of the engine is: P = 0,66W

The power loss by friction: P = 0,66. 0,6 = 0,4W

The potential energy of a mass of 5 kg at a height of 17cm is: Ep = 5 kg. 9,81 m/s². 0,17m = 8J

Time needed for to climb one step: P = Ep/t

t = 8J/ 0,4W = 20 s

Calculation of the rotational speed of the bolt: 170mm/ 20s = 8,5mm/s

8,5 rot/s

The speed of the hacked motor is 8 rot/s

There is no need for a reduction.


Capacity: 2200mAh


Pulling the body up: 700mA       Total duration for one step: 25s
Driving forward: 2200mA                      Total duration for one step: 1s + 4s + 2s = 7s
Pulling one leg up: 350mA          Total duration for one step: 48s

Average usage when climbing stairs: (700mA.25s + 2200mA.7s + 350mA.48s) / (25s + 7s + 48s) = 621mA
2200mAh / 621mA = 3,54h = 3h32min

Average usage when climbing stairs and actively braking: (700mA.25s + 2200mA.(25s + 7s + 48s)  + 350mA.48s) / (25s + 7s + 48s) = 2629mA
2200mAh / 2629mA = 0,837h = 50min



For this robot, seven Printed Circuit Boards (PCB’s) were used. These are: the XBee-shield1, the five motor shields2  (three different shields) and a PCB to keep the cables organised.
Here are the schematics and the board lay-out.

Group 9 - Photo 9 Xbee Group 9 - Photo 8 Xbee





















Group 9 - Photo 15 bis bis Group 9 - Photo 15 bis


Group 9 - Photo 10 stepper Group 9 - Photo 11 stepper
















Group 9 - Photo 12 stepper Group 9 - Photo 13 stepper

Group 9 - Photo 15 stepper Group 9 - Photo 14 stepper















The main structure of the electronics is explained with this schematic.

Group 9 - Blokschema

1: The XBee-shield was designed by Yannick Verbelen.
2: The schematics for the shields were given to us and can be found in the zip-file containing all our files.


Extra features

The robot can drive at two speeds. The slower speed is used in the automated stair-climbing mode.


Group 9 - Photo 16 switchesGroup 9 - Photo 17 switches


Safety: The robot is equipped with seven switches in order to protect it to break itself.












The robot is fully automated to climb up the stairs.

Group 9 - Photo 18 cable PCB

Group 9 - Photo 19 cable PCB



A PCB was made to keep the cables organised and to protect the battery from unloading too far.

In order to keep the cables even more organised, flat cables were used where possible.






Group 9 - Photo 20 GUI




A separate graphical user interface was coded.

This program is very versatile and can be found in the zip-file.








Experimental: If a Leap Motion is available, a file needed for Gamewave is also available in the zip-file.  With these tools you can control the robot by moving your hand above the Leap Motion. Move your hand forward to go forward, up to go up etc.

Problems and their solutions


We first started out by 3D-printing a set of gears out of PLA for the DC-motors. These would need a screw perpendicular to the axle to keep it in place. Unfortunately, the screw would not stay in place. We then used MDF for these gears, but these were not strong enough. Finally, birch wood worked best for us.

Switches underneath

We quickly automated the robot to climb the stairs on its own. This means we added some additional switches underneath the robot. These clipped on the side of a step. We thus had to replace them, with something that would not need to touch the step to send a signal to go to the next phase of the stair climbing. Since we had infrared distance sensors to our disposal that is what we used.

Turning Group 9 - Photo 22 spring Group 9 - Photo 21 spring

The robot did not turn well. Therefore, we put a third small wheel underneath the backside of the robot. This wheel was perpendicular to the driving direction. The only problem is that this wheel does not touch the ground. We integrated one more switch to enable the rear axle to go up just a centimetre

The robot can now rest on the two front wheels and the small perpendicular wheel on the back.
To still be able to use the other switch, we used a spring.






As mentioned before, we started out with a fast robot, which was able to pull his body up the entire way in about three seconds. As we tweaked the robot, it became heavier and soon the DC motors were not strong enough anymore. Since we had removed the gearbox that came with the motors, we put those back. We now had more than enough torque, but this meant we lost a lot of speed. To remedy this, we removed two gears from the gearbox and made sure the gear on the axle of the DC was connected to the gearbox by pulling the gear a bit up on the axle.

Sliding off the stairs

Sometimes, when the robot did not have a lot of grip, he would slide a bit from the stairs, potentially falling off them. Our steppers were not braking when the robot was standing still of the DC motors were working. The solution to this was to program the steppers to brake whenever the robot should not be going forward nor backward.

A lot of cables

The solution for this was to make a PCB to which we could connect several sets of flat cables.


Lithium-Polymer batteries are sensitive to excessive unloading. If the battery is unloaded beneath a certain voltage, it cannot be reloaded again. To make sure our robot would not consume a great amount of power when coming close to this voltage, a voltage divider was placed onto the PCB to be able to read in the voltage of the battery in a safe way. If the battery is going to die soon, all the movements of the robot are stopped and a buzzer starts buzzing to indicate that the battery needs to be reloaded.



Since we have a lot of switches, one Arduino Uno did not have enough pins. We therefore used two Arduino’s who communicate via two separate cables using the function “mySerial” instead of “Serial”. This requires a library, which is included in the standard Arduino program. Each Arduino has different code, but they both consist mainly of a switch case that reads-in the data sent through their serial communication pins. The master Arduino receives the commands sent to the robot. This Arduino then looks at the state of the switches and sensors. With both the command and the information it can now decide which motor to drive. Since the motors are connected to the slave Arduino, the master Arduino sends information to the slave Arduino which then turns on one or several motor(s).
The programs that need to be uploaded are available in this zip-file.



Making this robot was a very instructive experience. Sometimes we had to take a step back to be able to go further. To be able to meet a deadline, we had to learn to include time for problems that might and did arise. Amongst the new things we have learned are; using a PCB milling machine, using a PCB etcher, use a 3D-printer, improve soldering abilities, improve Arduino coding in C, improve coding in C#, learn how to make two Arduino’s communicate with each other, and a lot more.


One Response to “Group 9 – Lab Report: A Stair Climbing Robot – By Olivier Vanhoedenaghe, Kevin Hamoir and Tom van Rijn”

Leave a Reply

You must be logged in to post a comment.