CE 432
Balancing Robot
Jesse Duran & James Ferguson
Introduction
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.
Methods
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.
Robot
Remote
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.
Results
The following video shows a demonstration of a user controlling the
robot with the remote.
Discussion
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.