Omni-directional Robot

The Omni-directional Robot is not any ordinary robot. This specialized robot can travel in any direction and rotate at any time. I used an Arduino Uno to program the robot, this robot also contains 3 omni wheels and a wooden structure. This project used a lot of math, like trigonometry and vectors, to coordinate the wheels’ movements.


Henok T

Area of Interest

Mechanical/Electrical Engineering


Dougherty Valley High School


Incoming Junior



Before I came into BlueStamp, I was worried about how I would do compared to others and was afraid that I would fall behind. That was completely not the case and I actually felt that I was doing really well based on progression. This was the case thanks to the truly amazing staff and overall company. They didn’t feed you answers yet they were able to support me in a non direct way. I had some challenges along my journey, as expected, like for example complications with code or mechanical work. Although I was able to troubleshoot and work through them, moments like these are vital skills/experiences BlueStamp has delivered to myself and others. Thanks to BlueStamp I now have a stronger belief in where I want to be as far as my major and career.


The 2 modifications that I was able to get done for my Omni-directional robot were an outside wooden body for my robot and a shelf on top that can be used to store small objects or a holder for an iphone 7 that can record videos/live stream. The wooden body for my robot required a lot of measurements and precise cutting which didn’t take me that long. I had to cut out a hexagonal top and rectangles for the walls on the side. As far as the shelf on the hexagonal top, this was more of a modification that wasn’t necessary, but I was just interested in having. I was always into robots that were equipped with cameras so after I got this done it was such a relief.

Third Milestone

For my 3rd milestone, I have completed the building and coding of my robot. The ps2 controllers are successfully configured to the receiver and the H bridges that control the motor. This milestone included sawing/shaping the wood for my robot. I decided to make a hexagonal shape for my base and I made another hexagon with 5 rectangles for an outside structure. For my wheels, I had to bend bars to fit nicely around the wheel and firmly on the hexagon base, which was a challenge of mine. Finally, I had a longer problem with the stop function in my code. For some reason my robot was not reading the stop function so it would move on in a loop as long as the button it corresponds to was pressed. After a dozen trials and errors, I put some extra brackets in the code so the computer could read the commands one at a time. This eventually solved the issue and it was a huge sigh of relief. This project was super fun and it’s taught me a lot of skills that are very useful in the future.

Second Milestone


For my Second Milestone, I controlled two motor controllers attached to a wheel using a ps2 controller. This milestone was a pretty exciting objective to complete because it reassured my progress on my main project. I was expecting to get it done in about a week but I got it done fairly quickly. The way I did it was I connected the motors to the output pins on my L298N module (H bridge), and the module was then connected to the Arduino through IN switches and PWM pins. On the ps2 controller side, I wired the Arduino to the input pins on the ps2 controller wireless receiver (data, command, clock, and attention). I had to use 2 H bridges because each H bridge holds 2 wheels and I have 3 wheels. With this in mind, I had to split up my 2 H bridges’ power supply on a breadboard. I did it this way because of complication issues and once that worked, everything was in shape. As far as the coding went, I  finalized the code for my motors to work as well as for my Arduino to read the ps2 receiver input pins. Once I had them working separately I combined both of them together. I basically coded the motors to rotate forward or backward based on what button was pressed on the ps2 controller.

First Milestone

Omni-Directional Wheels

As you can see, the wheels for my robot have wheels that rotate on itself whoch causes it to be Omni-directional

My first milestone for the Omni-directional Robot was to have one wheel work/rotate using just the Arduino code. This was a big step for me because it gave me a lot of confidence going into this project and it allowed me to have 3 working wheels and to also start working on the ps2 controller. I basically powered up a L298N module with a battery and connected the L298N’S switches and motors to the Arduino. Then I built the wheel and connected that to the H bridge (L298N) output pins. Not only did I have to do Mechanical work but Software (coding) as well. The way the coding worked was the Arduino uses a C language that interprets commands as High or Low. As explained in the video, the H bridge (L298N Module) has 4 switches in a open circuit that are opened and closed by the Arduino. I commanded those switches to be open or closed in a certain sequence for all motors using High or Low. It was also important to assign the pins to what switch I want for a specific motor.

Starter Project

My Starter Project is the customizable Arduino. I chose to use a fully customized Arduino using LEDs and a motion sensor. The three main components of my project are a motion sensor, an LED, and an Arduino Uno. I enjoyed this project because I was able to learn about the different electrical components and their roles in this circuit as well as how to use the Arduino.


How it works

The customizable Arduino is composed of 3 components, the Arduino Uno board, an LED, and a motion sensor. The Motion Sensor has 3 wires, the ground (white), the signal (black), and the power (red). The 5v that is provided to the Motion Sensor through the red wire is supplied from the Arduino power pin by the breadboard. The ground (white wire) is connected to the GND pin on the Arduino. Finally, the signal wire (black) cannot output 1’s and only outputs 0’s, which is what the C language interprets as inputs as the Arduino reads it, so it has to connect to a 5v source by default. This is done by using the breadboard and resistors to safely transport the 1’s as an 5v power through the resistor (on the breadboard) to the LED without burning it out. I also had to connect this  signal source back to where it was originally supposed to be connected, the signal pin on the Arduino (pin 2). As for the LED, it needed a output pin to be connected to which was pin 13 on the Arduino board.

These are the instructions

LED/Motion Sensor Customizable Arduino Schematic

Henok T.
Image Source:

Start typing and press Enter to search

Bluestamp Engineering