# Real-Time FPGA-Based Balance Control Method for a Humanoid Robot Pushed by External Forces
## 1 Introduction  
Compared with wheeled robots, a biped structure and excellent athletic ability are given to humanoid robots. Many biped robot algorithms have been developed, such as balance control and inverse kinematics [1; 2; 3]. The zero moment point (ZMP) and walking dynamics analysis can be adopted to enable a robot to walk steadily [4; 5; 6; 7]. However, these methods require copious calculations; researchers must develop an approximate or simple dynamic model. However, because to an oversimplified dynamic model would result in estimation errors, an appropriate approximation model is needed to guarantee steady walking gaits. A linear inverted pendulum model [8; 9] was proposed, and developed a preview control which is integrated ZMP to modify for errors caused by the simplified model [10; 11]. However, the aforementioned methods cannot be applied to many small-sized humanoid robots that have limited computing capacities. Therefore, some biologically-inspired controls based on neural systems were proposed. The central pattern generators (CPGs) have been utilized to affect the movement of biological rhythms. Motor neurons produce spontaneous and steady oscillation signals through mutual inhibition networks and constant activation. The regular rhythmic motion is produced by the steady walking gaits so that the characteristics of the oscillator are suitable for presenting CPGs in the workspace [12]. Through the status of the self or feedback from the environment, motion models can be adjusted. Several kinds of research have employed ZMP or attitude estimation to examine whether the robot motion followed the walking model created by CPGs [13], and themotion was adjusted to maintain balance [14]. Additionally, some kinds of research have proposed to control dynamic changes of the robot by utilizing the center of mass (COM) and center of pressure (COP) [15; 16]. The walking method is also a kind of swinging behavior [17], which can be generated by an oscillator model, and can be composed by the left and right foot stepping [18]. Hence, the stepping gait can be described by the oscillator parameters. These studies have enabled robots to achieve ideal dynamic models. Similarly, CPGs have created ideal walking models and sensor compensations to enable robots to walk steadily. When an external force is strong enough to let the robot lose its balance and fall, the proposed balance control method will be enabled to compute against this unstable state. This proposed method is derived from the linear inverted pendulum model by incorporating a flywheel [19; 20] to avoid falling down, especially in the sagittal direction, which can swing greatly. When the robot is affected by a reasonable external force, a position on the ground, called the capture point, can be found to keep its balance. If the robot stretches out a foot and steps on that capture point, then balance can be regained. The proposed balance control method was completely tested on a real small-sized humanoid robot, and only one impact on the robot was adopted to illustrate its performance. There were also some simulations of humanoid robots [21; 22], and simulations of push recovery balance control [23; 24], but the verification data of real operation is scarce. The balance control system of the real robot is further implemented in this paper. The rest of this paper is organized as follows. In Section 2, a small-sized humanoid robot, which is used as an experimental platform for the proposed control method, and its specifications, are described. In Section 3, the main system architecture of this robot and the module structure of the proposed balance control method implemented on an FPGA (field-programmable gate array) chip are described. In Section 3.1, a gyroscope and an accelerometer are attached on the waist of the robot to measure its inclination angle. The Kalman filter is used to reduce the influence caused by the noise and detect the external force.