CE 432
Balancing Robot
Jesse Duran & James Ferguson

The goal of this lab is to create a balancing two wheeled robot by following this tutorial by Dr. Li which was based on a robot by Joop Brokking. The robot should accept input from a user through a wireless remote and be able to balance even in the face of small disturbances.

The robot uses two Arduino Unos. One for the robot and the other for the remote. The remote uses an analog joystick for user input which then gets compressed into a single byte and sent over wireless serial to the robot. The code for the robot can be viewed here and the code for the remote can be viewed here.


This byte contains a single bit for each direction and one for the switch. The robot uses a proportional integral derivative (PID) based negative feedback loop to keep balanced. When the forward or backward bits are set the angle of the set point is adjusted to drive the robot backwards or forwards. When the left and right bits are set the PID output is adjusted separately for both motors which makes the robot turn. 3527490145 and 0346172337 where used for the transmitting and receiving addresses.

A PCB was also designed in Autodesk Eeagle PCB to replace the breadboard for the final design. However this has not been manufactured yet. The following shows the schematic and layout of the designed PCB.

No errors where detected after running both ERC and DRC checks.

The following video shows a demonstration of a user controlling the robot with the remote.

The robot can balance and move around however the maximum speed is quite slow. This should be improved upon. The physical design could also probably be improved upon by adjusting the center of mass and moment of inertia. No proper analysis was performed for these properties and adjusting them may net an improvement in its ability to balance.

Video Presentation