UBC Undergraduate Research

Self balancing robot Balasubramanian, Siddhartha; Lathiff, Mohamed Nabil


The objective of this project was to design and implement a self- balancing algorithm using the Cricket embedded processor. The implementation utilized both an accelerometer and a rate-gyroscope built into the micro-controller in order to achieve a vertical balance. The fusion of both sensor data into a single usable value was achieved through a complementary filter. Consequently, the output of the complementary filter was designed to be primarily dependent on the gyroscope data, to which a fraction of the accelerometer data was added to compensate for the gyroscopic drift. An 8-inch robot with a single plate aluminum chassis was powered through a high-current H-bridge circuit connected directly to the Cricket board. The control loop, which included both the software implementation of the complementary filter and the PID controller, was measured to run at 530 Hz (±20Hz). Additionally, a pulse-width-modulation signal generator was implemented in software using the interrupt service routines of the micro-controller. Consequently, this resulted in a robust code-base which was able to achieve a self-balance with an oscillatory amplitude of 1 cm (± 0.3 cm) and a balance time of about 15 seconds.

Item Citations and Data


Attribution-NonCommercial-NoDerivatives 4.0 International