Escape Robot : RC Car for an Escape Game

by EscaBot in Circuits > Arduino

3946 Views, 17 Favorites, 0 Comments

Escape Robot : RC Car for an Escape Game

step6.13.jpg
step1.1.png

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

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 :

  1. Riddle to be solved on remote controller
  2. Control of the robot by the players with remote controller
  3. 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.

Material & Tools

Capture d’écran 2019-01-02 à 12.48.25.png
Capture d’écran 2019-01-02 à 12.48.59.png
Capture d’écran 2019-01-02 à 12.52.40.png
Capture d’écran 2019-01-02 à 13.00.15.png
Capture d’écran 2019-01-02 à 13.31.48.png
Arduino-uno.jpg
Capture d’écran 2019-01-02 à 13.34.29.png
Capture d’écran 2019-01-02 à 13.35.11.png
Capture d’écran 2019-01-02 à 13.35.57.png

MATERIAL

Electronic parts

  • Microcontroller :
    • Arduino UNO
    • Arduino motor shield - Reichelt - 22.52€
  • Sensors :
  • Batteries :
    • 6x 1.5V battery
  • Other :
    • Protoboard
    • Wireless camera (receiver) - Banggood - 21.63€
    • Remote controller (transmitter + receiver) - Amazon - 36.99€
    • Charging dock (Qi receiver) - Reichelt - 22.33€ (not used - cfr. Step 7: Conclusion)
    • LED - Amazon - 23.60€

Mechanical part

  • DIY car chassis kit - Amazon - 14.99€
    • Used :
      • 1x switch
      • 1x castor wheel
      • 2x wheels
      • 2x DC motor
      • 1x battery holder
    • Not used :
      • 1x car chassis
      • 4x M3*30 screw
      • 4x L12 spacer
      • 4x fasteners
      • 8x M3*6 screw
      • M3 nut
  • Magnet - Amazon - 9.99€
  • Bolts, nuts, screws
    • M2*20
    • M3*12
    • M4*40
    • M12*30
    • all respective nuts
  • 3D printed pieces :
    • 5x springs
    • 2x motor fixation
    • 1x L-shape line tracker fixation
  • Laser cut pieces :
    • 2x round flat plate
    • 5x rectangle small flat plate

TOOL

  • Machines :
    • 3D printer
    • Laser cutter
  • Screwdrivers
  • Hand driller
  • Lime
  • Electronics solder

(Laser) Cutting & (3D) Printing

Mechatronics - laser cut - plate - step 3.6
step3.3.jpg
step3.4.jpg
step3.5.jpg
Mechatronics - 3D printer - spring - step 3.1
Mechatronics - 3D printer - spring - step3.2
step3.7.png
step3.8.png
step3.9.png
step3.10.png
step3.11.png

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.

Laser cutter

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

Assembling the Electronics

ElectronicsFritzingMechatronics-2.JPG
Follower Branchement.JPG
step4.jpg

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.

Coding

Flowchart_new.png

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.

Assembling

step6.6.jpg
step6.1.jpg
step6.4.jpg
step6.5.jpg
step6.9.jpg
Capture d’écran 2019-01-03 à 14.03.39.png
step6.7.jpg
step6.11.jpg
step6.10.jpg
step6.8.JPG
step6.3.jpg
step6.15.jpg
step6.16.jpg
step6.13.jpg
step6.2.jpg

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
      • LED
    • Over :
      • Remote controller receiver
      • Arduino & Motor shield
      • LED
  • Upper chassis plate :
    • Below :
      • Camera
    • Over :
      • Batteries
      • 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.

Conclusion

Mechatronics - final result - step7.1
EscapeRobot
step7.2.jpg
step7.3.jpg
step7.4.jpg
step7.5.jpg
step7.6.jpg

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 :
- Robustness
- 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 !