The main purpose of this project was to build a robot that would differentiate itself from already existing robots, and that could be used in a real and innovative area.
Based on personal experience, it was decided to build a car-shaped robot that would be implemented in an Escape Game. Thanks to the different components, the players could switch on the car by solving a riddle on the controller, control the trajectory of the car, and get a key on the way in order to escape the room.
As this project was part of a Mechatronics course given at Université Libre de Bruxelles (U.L.B.) and Vrije Universiteit Brussel (V.U.B.), Belgium, a few requirements were presented at the beginning, such as :
- Using and combining fields of mechanics, electronics and programming
- A budget of 200€
- Having a finished and working robot that brings something new
And as it was going to be used in real-life escape game sessions, sometimes multiple sessions in a row, a few more requirements were needed to be fulfilled :
- Autonomy : finding a way to make the robot semi-autonomous to respect the game constraints
- User-friendly : easy to use, presence of a screen with feedback of the camera
- Robustness : strong materials capable of absorbing the shocks
- Safety : players not in direct contact with robot
Step 1: Main Concept & Motivation
As explained in the introduction, the main concept of this project is to create and build a semi-autonomous robot, first controlled by the players of the escape game, then capable of taking the control back from the players.
The principle is the following :
Imagine you are locked in a room with a group of friends. The only possibility to get out of the room is to find a key. The key is hidden in a maze located under your feet, in a dark intermediate floor. To get that key, you have in your possession three things : a remote controller, a map, and a screen. The remote controller enables you to control a car already in the intermediate floor, by solving a riddle imagined on the existing control buttons of the remote. Once you have solved that riddle, the car is turned on (cfr. Step 5: Coding - main function named 'loop()'), and you can start guiding the car through the maze with the help of the given map. The screen is there to display live what the car sees, thanks to a camera fixed in front of the robot, and therefore help you see the trajectories and more importantly the key. Once you have got the key thanks to a magnet on the bottom of the robot, and once you have reached the end of the maze, you are capable of taking the key and escaping from the room you were locked in.
The main components of the robot therefore are :
- Riddle to be solved on remote controller
- Control of the robot by the players with remote controller
- Control display based on video filmed live by the camera
Because in such games the main constraint is time (in most escape games you have between 30 minutes and 1 hour to get out to succeed), a sensor is attached and connected at the base of the robot so that if you, as players, exceed a given time (in our case 30 minutes), the robot takes the control back and finishes the parcours by itself, so that you have a chance of getting the key of the room before the timer of the game goes off (in our case 1 hour)
Also, as the car is in a completely dark room, LEDs are fixed not far from the sensor to help it read the signal from the ground.
The desire behind this group project was to base ourselves on what already exists on the market, modify it by adding a personal value, and be able to use it in some fun and interactive field. As a matter of fact, after being in contact with a successful Escape Room in Brussels, Belgium, we discovered that escape games are not only more and more famous, but that they often lack interactivity and that customers complain not to be enough "part of" the game.
We therefore tried to come up with an idea of a robot that would meet the given requirements while inviting the players to really be part of the game.
Here is a summary of what happens in the robot :
- The non-autonomous part : a remote controller is linked to Arduino through a receiver. Players control the remote and therefore control the Arduino which controls the motors. The Arduino is turned on before the game starts, but it enters the main function when players solve a riddle on the remote controller. An IR wireless camera is already turned on (turned on at the same time as the "whole" (controlled by the Arduino) when switch on/off turned on). Players guide the car with remote controller : they control the speed and the direction (cfr. Step 5: flowchart). When the timer that starts when the main function is entered is equal to 30 minutes, the control from the controller is disabled.
- The autonomous part : the control is then managed by the Arduino. After 30 minutes, the IR line tracker sensor starts following a line on the ground to finish the parcours.
Step 2: Material & Tools
- Microcontroller :
- Arduino UNO
- Arduino motor shield - Reichelt - 22.52€
- IR line tracker - Mc Hobby - 16.54€
- 6x 1.5V battery
- DIY car chassis kit - Amazon - 14.99€
- Used :
- 1x switch
- 1x castor wheel
- 2x wheels
- 2x DC motor
- 1x battery holder
- Used :
- 1x car chassis
- 4x M3*30 screw
- 4x L12 spacer
- 4x fasteners
- 8x M3*6 screw
- M3 nut
- all respective nuts
- 5x springs
- 2x motor fixation
- 1x L-shape line tracker fixation
- 2x round flat plate
- 5x rectangle small flat plate
- Machines :
- 3D printer
- Laser cutter
Step 3: (Laser) Cutting & (3D) Printing
We used both laser cutting and 3D printing techniques to obtain some of our components.
You can find all the CAD files in the file .step below.
The two main fixation pieces of the robot were laser cut :
(Material = MDF cardboard of 4mm)
- 2 round flat disks to make the basis (or chassis) of the robot
- Several holes on the two disks in order to accommodate mechanical and electronic components
- 5 rectangle small plates to fix the springs between the two chassis plates
3D printer (Ultimakers & Prusa)
Different elements of the robot were 3D printed, in order to give them resistance and flexibility at the same time :
(Material = PLA)
- 5 springs : note that the springs are printed as blocks, so that it is necessary to file them to give them their 'spring' shapes !
- 2 rectangular hollowed parts to fix the motors
- L-shape piece to accommodate the Line tracker
Step 4: Assembling the Electronics
As you can see on the electronic sketches, the Arduino is as expected the central piece of the electronic part.
Connexion Arduino - Line tracker :
(cfr. corresponding follower sketch)
Connexion Arduino - Motors :
(cfr. corresponding general sketch - left)
Connexion Arduino - Remote Control Receiver :
(cfr. corresponding general sketch - up)
Connexion Arduino - LEDs :
(cfr. corresponding general sketch - left)
A protoboard is used to increase the number of 5V and GND ports and facilitate all connections.
This step is not the easiest one, as it needs to fulfill the requirements highlighted above (autonomy, user-friendly, robustness, safety), and as electric circuit need particular attention and precaution.
Step 5: Coding
The coding part concerns the Arduino, motors, remote controller, line tracker, and LEDs.
You can find on the code :
1. Declaration of variables :
- Declaration of Pin used by RC Receiver
- Declaration of Pin used by DC Motors
- Declaration of Pin used by LEDs
- Declaration of variables used by function 'Riddle'
- Declaration of Pin used by IR Sensors
- Declaration of variables used by IR Deck
2. Initialization function : initialize the different pins and LEDs
- Function 'setup()'
3. Function for motors :
- Function 'turn_left()'
- Function 'turn_right()'
- Function 'CaliRobot()'
4. Function line tracker : uses the previous 'CaliRobot()' function during the semi-autonomous behavior of the robot
- Function 'Follower()'
5. Function for remote controller (riddle) : contains the right solution to the riddle presented to the players
- Function 'Riddle()'
6. Main loop function : enables the players to control the car once they have found the solution to the riddle, starts a timer, and switches the input from digital (remote controlled) to digital (autonomous) once the timer goes above 30 minutes
- Function 'loop()'
The main process of the code is explained in the flowchart here above, with the principal functions highlighted.
You can also find the whole code for this project in the file .ino attached, which was written using the development interface Arduino IDE.
Step 6: Assembling
Once we have all the components laser cut, 3D printed, and ready : we can assemble the whole thing !
First, we fix the 3D printed springs on their laser cut rectangle plates with bolts of diameter equal to the diameter of the holes inside the springs.
Once the 5 springs are fixed on their small plates, we can fix the latter on the lower chassis plate with smaller bolts.
Second, we can fix the motors to the 3D printed motor fixations, under the lower chassis plate with small bolts.
Once those are fixed, we can come fix the 2 wheels on the motors inside the holes of the lower chassis plate.
Third, we can fix the castor wheel, also under the lower chassis plate, with small bolts such that the lower chassis plate is horizontal
We can now fix all the other components
- Lower chassis plate :
- Below :
- Line tracker
- Below :
- Over :
- Remote controller receiver
- Arduino & Motor shield
- Below :
- Over :
- On/off switch
Finally, we can assemble the two chassis plates together.
Note : Be careful when assembling all the components together !
In our case, one of the small plates for the springs got damaged while assembling the two chassis plates, because it was too thin. We started again with a bigger width.
Be sure to use strong materials when using the laser cut (as well as the 3D printer), and verify the dimensions so that your pieces are not too thin or too fragile.
Step 7: Conclusion
Once all the components are assembled (make sure all the components are well fixed and do not risk to fall off), the receiver of the camera connected to a screen (i.e. tv screen), and the batteries (6x 1.5V) put on the battery holder, you are ready to test the whole thing !
We have tried to take the project one step further by replacing the batteries (6x 1.5V) by a portable battery, by :
- constructing a charging dock (wireless charger fixed in a laser cut charging station (see photos)) ;
- adding a receiver (Qi receiver) on the portable battery (see photos) ;
- writing a function on the Arduino asking the robot to follow the line on the ground in the opposite direction to reach the charging dock and recharge the battery so that the whole robot is autonomously ready for the next game session.
As we encountered problems in replacing the batteries by a portable battery right before the deadline of the project (reminder : this project was supervised by our professors of U.L.B./V.U.B., we therefore had a deadline to respect), we were unable to test the finalized robot. You can nonetheless find here a video of the robot powered from the computer (USB connexion) and controlled by the remote controller.
Nonetheless, we were able to reach all the added values we were targeting :
- Round shape
- Turn-on riddle
- Switch of control (remote -> autonomous)
If this project has retained your attention and your curiosity, we are therefore very curious of seeing what you did, seeing if you did some of the steps different than we did, and seeing if you succeeded in the autonomous charging process !
Don't hesitate to tell us what you think about this project !