The Problem

I built this remote controlled driving robot as part of a group final project for my electromechanical systems class. The goal of the project was to create a remote controlled robot which could drive to the elevator, press elevator buttons and give a high five to the head of the Mechanical Engineering department. We were given a raspberry pi, a power source, a motor driver, and two DC motors.

The Process

  • We used a Raspberry Pi to control the two DC motors and host a Flask web server which the user could interact with from their phone or computer.
  • The robot itself was made out of laser-cut acrylic, with two wheels each driven by a DC motor. The third omnidirectional wheel at the back provided stability while making turning easy. To turn the robot would drive the two outer wheels in opposite directions, causing the robot to rotate in place.
  • I contributed mostly to the Python code which ran the Flask server and controlled the Raspberry Pi outputs, as well as the overall design of the robot. My two group mates were in charge of fabricating the parts and assembling the electronics.
  • I coded an HTML webpage which the user could interact with to send commands to the Raspberry pi remotely. The webpage had 5 buttons: Forward, Left, Right, Backwards, and Stop. Each button would send a different command to the raspberry pi which would drive the two DC motors at different speeds and directions.


Our robot was able to successfully drive to the elevator, press the correct buttons, and make it to the dean of Mechanical Engineering’s office to give him a high-five. Since the wifi was spotty in different locations in the building, we would lose connection and the robot would start driving away or spinning endlessly. If I were to improve on the design I would implement a system where pressing the turn buttons would cause it to turn for only half a second, and then wait for another turn command to turn farther. This way the user wouldn’t have to precisely time hitting the “stop” button in order to orient the robot in the desired direction.

Overall, I am proud of the work our team did and I think this was was excellent experience with the team approach to solving an open-ended engineering problem as well as learning about electronics and microcontrollers.