  This paper aims for a controller that can stabilize a position-controlled
humanoid robot when standing still or walking on synthetic grass even when
subjected to external disturbances. Two types of controllers are designed and
implemented: ankle strategy and stepping strategy. The robot's joints consist
of position-controlled servos which can be complicated to model analytically
due to nonlinearities and non-measurable parameters, hence the dynamic model of
the humanoid robot is acquired using a non-recursive least squares system
identification. This model is also used to design a Kalman Filter to estimate
the system states from noisy inertial measurement unit (IMU) sensor and design
a linear quadratic regulator (LQR) controller. To handle the nonlinearities,
the LQR controller is extended with fuzzy logic algorithm that changes the LQR
gain value based on angle and angular velocity membership functions. The
proposed control system can maintain the humanoid robot's stability around the
pitch axis when subject to pendulum disturbances or even restraining force from
a spring balance.
