Sensing & control

Balance is
a moving target.

Estimate the tilt. Move the wheels. Correct again. Our team explored the loop between sensing and physical motion.

01 · Sense

Start with
a better signal.

An Arduino Nano 33 BLE Sense reads the IMU. Calibration and complementary filtering help estimate the robot’s tilt.

02 · Correct

Turn an angle
into action.

The proportional controller drives two DC motors through an L298N. Deadband, saturation and motor friction all affect the response.

03 · Test

The work is
in the tuning.

Power delivery, wiring, batteries and chassis mechanics shaped the behavior we saw during testing.

04 · Reported outcome

About 30 seconds.
More to learn.

The team report records best runs around 30 seconds. Our one-minute objective was not consistently achieved.

Blender concept of a two-wheeled balancing robot with a layered chassis, controller board and motor driver.
TWO-WHEELED BALANCING ROBOTIllustrative hardware model · movement is not measured
Read the case study
Scroll or use arrow keys on the slider

Team course project · ROBO 205 · April 2026

Two-Wheeled Balancing Robot

Finding balance through sensing, control, and a lot of tuning.

ArduinoMicroPythonIMUMotor control

01 / Purpose

What we set out to do.

Build a two-wheeled robot that can estimate its own tilt and correct it through motor control. Our course objective was to balance for one minute. Reaching that objective meant working across sensing, software, assembly, and power delivery.

02 / Approach

How it came together.

An Arduino Nano 33 BLE Sense reads its LSM9DS1 inertial measurement unit. A complementary filter combines the accelerometer's estimate of gravity with short-term angular changes measured by the gyroscope. The resulting tilt estimate feeds the motor controller.

The submitted implementation uses MicroPython, a proportional controller, a deadband, output saturation, and a minimum PWM level to help overcome motor friction. It drives two DC motors through an L298N driver. This was a proportional-control prototype; it was not a fully tuned PID implementation.

The report describes a complementary-filter weight of 0.7, a 300-sample gyro calibration, and a control loop targeting approximately 100 Hz. These are implementation settings documented by the team, not independently measured timing guarantees.

03 / Contribution

The work, and the team.

I worked on this project in a four-person team with Mohammed Muqeet, Obaid Alaleeli, and Ibrahim Alhammadi. The work combined hardware assembly, sensor processing, motor control, and practical testing. The available report does not establish a reliable individual division of every task, so the implementation and results are credited to the team.

04 / Demonstration

What the visuals show.

The recorded prototype test below shows the physical build in use. It is a short demonstration, not evidence of a full 30-second balancing run. The Blender introduction explains sensing, hardware and correction using an illustrative model; its movement is not measured.

Balancing robot · prototype testWatch the recorded demonstration

Two-wheeled balancing robot prototype test. ROBO 205 team project, April 2026.

Husain Altelly, Mohammed Muqeet, Obaid Alaleeli, Ibrahim AlhammadiOpen on YouTube

05 / Results

What we can say.

The submitted team report records best balancing runs of approximately 30 seconds on a hard, flat surface. The one-minute objective was not consistently achieved. This is a reported result from the coursework, not a new test reproduced for this portfolio.

06 / Limitations

Where the limits are.

The robot remained sensitive to controller tuning, battery condition, and the mechanics of the chassis. The report describes shakiness, a defective screw terminal, and power interruptions. Those issues made stable, repeatable behavior difficult to achieve.

The recorded best run should not be read as a guarantee across surfaces, battery levels, or repeated trials. A stronger evaluation would log tilt and motor commands, use a consistent starting condition, and repeat trials under controlled conditions.

07 / Lessons learned

What I’m taking forward.

This project made the relationship between software and hardware tangible. Filtering a signal is only useful when calibration, power, wiring, and the motor response are also dependable. The next useful step would be to improve those foundations, then tune and evaluate the controller with repeatable measurements.

Next project

Robot Motion Planning

Visual sources & attribution

Blender visuals explain the projects. Balancing-robot geometry, the planning environment, Flowra interface and AURORA lander are original illustrative concepts made for this portfolio. Their movement, example text and layouts are not recorded results, original course CAD, production screenshots or gameplay.

The T42 scene uses Yale OpenHand Model T42 CAD from the OpenHand repository, licensed CC BY-NC 3.0. The assembly, materials, actuator housings, tendon path and deformation are illustrative. Cast contact materials are not reconstructed.

R. R. Ma, L. U. Odhner, A. M. Dollar, “A Modular, Open-Source 3D Printed Underactuated Hand,” ICRA 2013.

The Yale OpenHand Project is an initiative to advance the design and use of robotic hands designed and built through rapid-prototyping techniques in order to encourage more variation and innovation in mechanical hardware. Please visit the Yale OpenHand site for more details.