Self-balancing Robot Arduino:
A Self-balancing robot is a future technology. They can move by avoiding the obstacles and balanced by the Gyro sensor. This is similar to the pendulum concept. This is difficult to balance similarly robot is also difficult to control. The main aim is to balance the center of gravity. We have to balance the robot in the direction of falling. To balance the robot, the motor adjusted. This is an effect from some information about the state of the robot-like falling direction, the tilt of the robot etc., These parameters looked and these act as data input for Arduino and the motor driver activated, which keeps the robot balanced.
The accelerometer measures acceleration along the three axes and the gyroscope measure angular rate about the three axes. The 3-axis gyroscope of MPU6050 measure angular rate (rotational velocity) along the three axes. For a self-balancing robot, the angular velocity along the x-axis alone is sufficient to measure the rate of fall of the robot.
The position of the MPU6050 when the program starts running is the zero inclination point. The angle of inclination measured with respect to this point.
Keep the robot steady at a fixed angle and we will observe that the angle will gradually increase or decrease. It won’t stay steady. This is due to the drift, which is inherent to the gyroscope.
To get accurate, a Complementary filter used. The complementary filter is essentially a high pass filter acting on the gyroscope and a low pass filter acting on the accelerometer to filter out the drift and noise from the measurement.
currentAngle = 0.9934 * (previousAngle + gyroAngle) + 0.0066 * (accAngle)
The Robot controlled by PID Controller. P is a Proportional Controller generates an output proportional to the error, I is an Integral Controller generates output by summing up the errors and D is a Derivative generates a derivative of the error.
PID Tuned properly to perform the action. Ultrasonic Sensor used to detect the obstacle.