Fuzzy Dynamic Gait Pattern Generation for Real-Time Push Recovery Control of a Teen-Sized Humanoid Robot

A fuzzy dynamic gait pattern generator, which allows a teen-sized humanoid robot to generate, in real-time, a suitable gait pattern when it is hit by an unexpected force, is proposed in this paper. Conventional gait pattern generators usually utilize the ideal Zero Moment Point (ZMP) to plan the trajectory of the Center of Mass (CoM), along with a cycloid to generate steps. However, pre-planned gait patterns cannot deal with unexpected situations, especially instances when the robot experiences an unknown force. Therefore, we propose a dynamic gait pattern generator that leverages the Virtual Force Linear Inverted Pendulum Model (VFLIPM) to adjust the trajectory of the CoM, and which detects balance status by estimating the trajectory of the ZMP using eight high-precision load cell pressure sensors mounted onto the robot’s soles. We integrate an accelerometer and the pressure sensors through a fuzzy controller to instantly respond to external forces and generate a suitable gait pattern. When the robot is pushed suddenly, it first adopts a pre-planned gait pattern to replace the current gait. At the same time, the fuzzy controller calculates the recovery gait, with appropriate strides and lean angles to absorb the impact. The proposed method is implemented on the teen-sized humanoid robot, David Junior II, for the Push Recovery event at RoboCup. David Junior II endured a hit with potential energy during walking, which is 1.3 times more robust than when standing.


I. INTRODUCTION
In recent years, the demand for humanoid robots has risen gradually with growing interests in safety, efficiency, and amiability. For instance, robots with high Degrees of Freedom (DoF) are being developed to imitate humans and to manipulate instruments in dangerous nuclear leakage situations. Though several motion planning methods are proposed, robust walking still represents a difficult threshold to pass in the development and commercialization of biped robots, not to mention that the robots may also encounter unexpected collisions during walking.
The common method is to use pre-determined gaits [1] since walking on two legs needs complex calculations and The associate editor coordinating the review of this manuscript and approving it for publication was Justin Zhang . takes some time. To further avoid worsening balance when the robot maintains the same gait pattern after suffering a disturbance, modifiable gait patterns [2], [3] are proposed for robots to adapt to different terrains.
Detecting disturbances gradually plays an important role in the stability of robots and this is achieved through sensors. However, deciding which sensor is the most reliable in each situation, and establishing suitable equilibrium criteria are some of the associated challenges; an intelligent feedback control system is required. All the functions mentioned above compose a more robust closed-loop system.
Hence, a Virtual Force Linear Inverted Pendulum Model (VFLIPM) is proposed in this paper to solve these problems and enhance the stability of humanoid robots when walking. The real-time Push Recovery control system is built based on this model and includes improvements in VOLUME 8, 2020 This work is licensed under a Creative Commons Attribution 4.0 License. For more information, see http://creativecommons.org/licenses/by/4.0/ Zero Moment Point (ZMP) estimation, Linear Inverted Pendulum Model (LIPM), Fuzzy Sensor Fusion [4]- [10], and a dynamic gait pattern generation strategy. The ZMP is the point where the sum of the moments produced by the inertia force and the reaction force is zero. Vukobratović [11] proposed that if the ZMP is maintained in the foot sole during the Single Support Phase (SSP) or the polygon formed by both feet during the Double Support Phase (DSP), the biped robot can walk stably. In the following years, several ways of detecting and planning ZMP trajectories are studied [12]- [17]. For example, the torque balance equation [18] is applied to solve the relationship between the trajectories of the ZMP and the CoM. Next, since detecting the torque of all low-cost actuators fast and precisely is very difficult, a widely used method is to make the Center of Pressure (CoP) represent the ZMP for feedback control [19]- [23]. However, these aforementioned researches assume ideal pressure perception and use the constant ZMP stable region [24], which cannot show the actual error in a ZMP trajectory. Therefore, an improved foot structure design for pressure sensors and a dynamic ZMP threshold are introduced in our work.
The LIPM has three assumptions [25]- [27]; first, that the weight of the body is concentrated in one point, the top of the inverted pendulum; second, that the mass of supporting leg is neglected; third, that the height of the CoM remains constant during walking. Through inverse kinematics, every joint position can be obtained. However, the LIPM only plans an ideal and constant gait. If the biped robot is pushed from the back, maintaining a constant gait only speeds up falling. Moreover, maintaining a constant CoM height is not the natural human reaction to an impact. Hence, our VFLIPM combines modifiable CoM height concepts [28], [29] and proposes new equations to plan trajectories of CoM during impact.
Response strategies for generating humanoid robots' gaits in the Push Recovery event are studied in several ways. Reference [30] used the arms of a robot to detect obstacles and keep balance. Harada et al. [31] added a time parameter to two-stage gait planning. Missura and Behnke [32] in the RoboCup competition saw the biped robot as a simple cart-pole system and used strides to absorb an impact in the Push Recovery technical challenge [33], [34]. CPG [35], [36] is like a neuronal circuit that uses a rhythmic pattern to imitate walking. Although it can plan the trajectories of joints, the process of generation is time-consuming and usually requires extra algorithms, such as Particle Swarm Optimization (PSO), the Genetic Algorithm (GA) [37], and Neural Networks (NN) [38], [39] for weight optimization [40]. Inspired by these ideas, the dynamic gait pattern generation strategy is introduced to speed up the response time of our biped robot.
The major contributions of this research are outlined as follows. First, the VFLIPM is an innovative mathematical model that makes a biped robot change its gait pattern according to external terrains. Compared to the conventional constant gait pattern system, the modifiable stride length, lean angle, and CoM height can help the robot absorb impacts and recover equilibrium. Second, a sensor fusion system with a fuzzy controller is used to analyze CoP and acceleration to adjust the parameters of the gait. Third, designing the mechanism and the control system of a teen-size humanoid robot enables faster response and more precise CoP measurement than traditional piezoresistive force sensors. Fourth, the new mathematical equations are applied to build the dynamic ZMP threshold and smooth the variable trajectory of CoM height. Fifth, the dynamic gait pattern generation strategy enhances the robustness of Push Recovery control.
This paper is organized as follows; Section II briefly introduces the innovative design of the double-layer foot structure and the whole system. The new LIPM concept, dynamic VFLIPM, is proposed in Section III. Experiments incorporating dynamic gait pattern generation with fuzzy control are described in Sections IV and V, and the conclusions are given in Section VI. Fig. 1 illustrates the design of the humanoid robot, David Junior II, which must overcome unexpected collisions and play soccer autonomously. David Junior II is 92.5 cm tall, weighs 8.6 kg and consists of 16 DOFs driven by servo motors. Every joint adopts one motor, except that the ankle and hip roll joints, which have high loads, adopt two motors. To decrease friction, parts of joints contain thrust-bearing needle rollers. The metal components of the robot are made of 5052, 6061, 7075 aluminum alloy, and S45C steel. As the number increases, so does the density and rigidity of aluminum alloy. S45C steel has the highest rigidity among them. Because sheet metal parts require bending, materials with high ductility and low density are suitable. Hence, the sheet metal parts in the arms and the body adopt 5052 and 6062 aluminum alloy. On the other hand, the metal parts of the legs require good rigidity and don't need bending. They are made of 7075 aluminum alloy. To increase torque, 34-tooth to 68-tooth gears are respectively mounted on motors and the legs. These gears are made of S45C steel which can avoid gears slipping or breaking when the robot falls. Last, the    support components in the head, legs, and arms are made of reinforced plastics, POM to reduce weight and enhance the rigidity. Fig. 2 presents three main components in the control system. First, the computer, a PICO880, is responsible for realtime calculations and image processing. The fuzzy controller and the gait pattern generator are programmed here. The computer integrates the information from sensors, including an accelerometer, gyroscopes, pressure sensors, and a camera. Through USB2Dynamixels, a new circuit board with fuses directly connects the computer to the servo motors in the legs for faster response. Second, the MCU, a STM32-F103ZET6, deals with sending motion commands to the motors in the upper body, and manages the human-machine interface to reduce the computer's computational burden. Third, the development board, Arduino Mega 2560, gathers data from pressure sensors and filters noise.  [41]. (b) The ADC converter HX711 [42]. (c) The operation principle of load cell [42]. Fig. 3 shows the design of feet, which are made of 7075 aluminum alloy with eight pressure sensors, TAL220 load cells. To reduce decreases errors of CoP measurement when the robot' sensors step on a small area of protrusion, the foot structure is double-layer. However, load cells mounted on double layers generate shear forces to disturb the pressure measurement. To eliminate the error caused by the shear forces, the upper structure leaves a larger margin of tolerance for eight screw holes to detect the pressure vertically. Although the sensors are big and made of mental, the new hollow-carved foot design with sensors only increases the weight of each foot by 105.3g. Fig.4 demonstrates the operating principle of the load cells is Wheatstone bridge, which gives a high linearity between voltage and weight. The TAL220 pressure sensors cooperate with 24-bit analog-to-digital converters, HX711. They can measure accurately down to 0.01g and sample fast high to 80 Hz. Then, the Arduino Mega 2560 is attached to the left foot to directly calculate the ZMP trajectory with a Kalm filter.

III. DYNAMIC VIRTUAL FORCE LIPM
The traditional and constant Zero Moment Point (ZMP) threshold is replaced by a dynamic threshold. Combining the concept of virtual force with a double-link Linear Inverted Pendulum Model (LIPM) allows the humanoid robot to change its ZMP and Center of Mass (CoM) to eliminate disturbances from the environment.
In the conventional LIPM, the whole weight of the robot is assumed to be at a single point and the effects of the legs and arms are neglected. Although the LIPM can simplify the complex calculations involved in humanoid robots walking, the stability strongly depends on terrains and the mass distribution of the body. If the ratio of the upper body weight to leg weight is low, the conventional LIPM is inapplicable, not to mention the fact that a strong push will topple a robot with a constant and unmodifiable gait. Thus, the virtual force theory is proposed in a double-link LIPM to allow humanoid robots to adjust their gait patterns.
In other words, external forces are considered in the calculations that maintain the robot's equilibrium. Depending on different external disturbances, adjustable gaits allow the robot to quickly recover the ZMP from the edge to the center of the stable region. Thus, theoretically the combination of virtual forces and the double-link LIPM not only makes the model more flexible, but also brings its motion closer to that VOLUME 8, 2020 of a real human. Experiments in the real world verifies this model in Section V.

A. LIPM
When the humanoid robot is in the Single Support Phase (SSP) while walking, the dynamic situation can be depicted with a LIPM. The supporting leg provides a fulcrum for the robot to move its CoM forward and keep it at the same height. This way simplifies a complex multi-link problem so it becomes possible to calculate the position and speed of every joint.
First, the support force f can be divided into a horizontal force and a vertical force, as shown in Fig. 5. The horizontal force drives the body of the robots to move forward and the vertical force resists the gravity.
where M is the mass of body, x c is the forward distance of the CoM, g is the gravity constant (9.81 m/s 2 ), and θ is the tilt angle in x-z plane. A robot can utilize gravity to accelerate its walking speed, so increasing the x-z tilt angle means moving fast, and vice versa. When a robot walks faster, it needs more time for swinging the body and stepping big strides. Thus, the x-z tilt angle can be used to analogize the amplitude of x-y oscillation for simplifying the model, as shown in Fig.5 (b). Next, substituting (1) into (2) and keeping Z c , the height of the CoM, constant: To get the relation between time and the position of CoM, the equations are solved by the Laplace transformation as follows: where x c (0) and y c (0) are the initial position.ẋ c (0) anḋ y c (0) are the initial velocity. g Z c is replaced by ω 2 . After applying the inverse Laplace transformation, the functions of time and CoM are solved. Because the x-axis derivation process is the same as the y-axis, the only x-axis equation is shown as follows: Second, the relationship between the CoM and the ZMP is solved for the calculation of biped walking [43]. Fig. 6(a) demonstrates the torque equilibrium which combines these two factors. The balance equations with CoM and ZMP in the x-z plane and y-z plane can be obtained as follows: where P x and P y are the x-axis and y-axis ZMP trajectories. Through deriving from (7) and applying the inverse Laplace transformation, the torque equilibrium in the x-z plane can be rewritten as follows: After differentiating (9), the x-axis velocity of CoM is obtained as follows: Hence, deciding a ZMP trajectory can generate a CoM trajectory. The trajectories of ZMP can be illustrated by several functions, including the step, ramp, parabolic, cubic and sin/cos functions. Although the angle of each joint at every moment can be calculated by inverse kinematics and the Laplace transformation using the initial positions and velocities, this simplified model assumes that the upper body is much heavier than the legs and foot soles. However, the legs usually account for 40% of the robot's body weight. Therefore, VFLIPM extends from the double-link LIPM [44], [45] and considers the mass distribution of the legs.
The double-link Linear Inverted Pendulum Model (DLIPM) has two mass distributions, as shown in Fig. 6  attached to mass M is assumed perpendicular to the horizontal plane. Fig. 7 describes that the VFLIPM further considers an external force F to adjust gait patterns immediately according to the strength of impacts. Then, the dynamic model can be rewritten as: (11) where r M = r Mx r My r Mz = 2r mx 2r my 2r mz + l m .
The acceleration in the world coordinate system is the same as a local coordinate system here, so the equilibriums can be expressed asR Mx =r Mx andR My =r My . Equation (11) can be rearranged as follows: Since F x does not remain constant, the unit step function and the ramp function are hard to simplify after the Laplace transformation. Hence, the concept of a virtual force is proposed in this section. The horizontal force can be written as m fx ·R Mx , which is composed of the virtual mass, m fx and its acceleration,R Mx .
After applying the concept, F x can be eliminated by the Laplace transformation. The initial position and velocity are assumed to be zero. The second-order differential equation is solved as follows: In addition, the ideal ZMP trajectory can be illustrated as follows: where A and B are constant. Next, (14) can be abbreviated by defining Applying the Laplace transformation, (14), (15), and (16) can be rewritten as follows where R My (s) is derived in the same way as R Mx (s). Applying the inverse Laplace transformation to (19) and (20), the trajectory of the CoM can be obtained as follows: ω n is modifiable based on the external force m fx ·R Mx , where the acceleration,R Mx , is solved by the inverse Laplace transformation and the virtual mass, m fx , can be used to represent the virtual force. This means that the trajectory of the CoM changes depending on the scale of the impact. Hence, a suitable adjustment based on external force estimation becomes important for the real-time equilibrium of the biped robot and discussed in the following sections.

B. VIRTUAL FORCE ESTIMATION
The VFLIPM takes an impact into consideration and the force can be estimated for the Laplace transformation using the virtual mass. As shown in Fig. 8, when the biped robot is pushed from the back, ω n increases and the CoM moves forward faster in the x-axis than in the original gait. On the contrary, the CoM moves more slowly along the x-axis when the robot bumps into a frontal obstacle. In these situations, the robot adapts and stabilizes instead of rebounding or falling. In the y-axis, the CoM vibrates widely when stricken from behind to ease the energy of the impact. In contrast, when the robot bumps into an obstacle, the CoM slows down in the y-axis to avoid collision.
Depending on the scales of push forces, the virtual mass varies and changes the CoM trajectory to adjust gait patterns for restoring balance. Hence, diverse gaits can absorb impacts more easily than a constant gait.

C. DYNAMIC ZMP THRESHOLD
According to [46], all the components of a basic bipedal robot can be simply categorized in terms of the seven linkages [47] and the torque balance equations is displayed as: (24) However, finding the ZMP is very difficult without highprecision torque sensors in every joint, not to mention the high cost of these multi-function motors. Hence, Sardain and Bessonnet [19] proposed the Center of Pressure (CoP), which can represent the ZMP. By attaching eight pressure sensors to the two feet of the biped robot, the variable ZMP trajectory can be estimated and calculated, as shown in Fig. 9 (a): where F Ri and F Li are the forces measured by pressure sensors. The subscripts Ri and Li represent the right sole and the left sole. The number, i, illustrates four sensors in each sole. In the conventional model, the support polygon formed by the foot soles is usually considered a stable region, as shown in Fig. 9 (b)-(c). However, this static threshold limits sensitivity in detecting an impact. For example, it is easy to misjudge a collision when the biped robot moves from the double support phase to the single support phase, because the X ZMP moves forward and the upper limitation contracts at the same time. It is also difficult to detect an impact when the robot plants a foot, entering the double support phase, because Y ZMP moves into the space between the two feet, and the limitation expands at the same time.
Therefore, a dynamic ZMP threshold is proposed in this section. Every part of the walking cycle can have the same sensitivity because the new threshold varies at every moment and continuously throughout each stride, as shown in Fig. 9 (d). The red line is the actual ZMP trajectory, which is recorded when a robot walks without disturbance. The blue lines are the upper boundary and lower boundary, which are set by users predicting the strength of impacts. When the biped robot is impacted suddenly, the error and differential error of the ZMP can be analyzed as soon as possible. Moreover, this information can be used as an input for the fuzzy controller, as explained in the next chapter.

D. VARIABLE COM HEIGHT
In the conventional LIPM, the constant CoM height limits stride length, so it is difficult for humanoid robots to take sudden big strides. By contrast, in the real world, when people suffer sudden impacts from behind, they tend to both lower their CoMs and take big strides forward. Thus, a variable CoM height is proposed here to help humanoid robots change potential energy into kinetic energy and absorb the impact. We adopt the hyperbolic tangent function, which can smoothly adjust the height of CoM. (28) where H decline , H rise , and D, are the decrease, the increase and the rate of change in CoM height. The period of each walking cycle (two steps), T period , and the number of steps, N step , are used to decide when to change the height of the CoM.  In addition, human beings actually change their CoM using natural vibration [48]. Thus, a sinusoid wave is also considered, as shown in Fig. 10, with Z c,amp as the amplitude of the sinusoid wave, and Z c,initial as the initial z-axis position of the CoM.
Z c,sin = Z c,initial − Z c,amp · cos 2π t T period (29) The motion of the biped robot is scheduled based on the relative coordinates of the feet, found using (30) and (31), which are convenient for inverse kinematics calculations. Last, Fig. 11 demonstrates that the variable heights of the CoM affect the trajectories of the two feet.
where FootR z,global and FootL z,global are the positions of feet in the world coordinate system and are illustrated by the Heaviside step function in section IV. In short, the dynamic VFLIPM is proposed for adjusting the trajectory of the CoM when the biped robot receives an impact while walking. This modifiable LIPM not only gives the biped robot the ability to walk in diverse situations, but also allows users to easily adjust the gait pattern depending on the strength of an impact. Moreover, the robot can adjust its CoM height in response to an impact, which is similar to a real human being's natural reaction. Last, the dynamic ZMP threshold offers biped robots more reliable criteria for detecting a sudden impact, even during continuous walking.

IV. DYNAMIC GPG WITH FUZZY CONTROL
First, the dynamic Gait Pattern Generations (GPG) adopts a natural reference generation method [49], [50] to plan the trajectories of feet in the world coordinate. Second, to modify the GPG's input parameters, a dynamic strategy with a fuzzy controller is proposed to deal with information from pressure sensors and an accelerometer, as shown in Fig. 12.

A. PARAMETER SETTINGS OF THE VFLIPM AND GPG
The parameters of the VFLIPM and GPG are adjustable by the fuzzy controller. To demonstrate trajectories of feet in the world coordinate, these parameters are first set as follows: the period of each walking cycle (two steps) is 1.8 seconds, the period of the single support phase is 1.098 seconds, and the period of the double support phase VOLUME 8, 2020   is 0.702 seconds. The upper body mass, M , is about 3.58 kg and the mass, m, of each leg is 2.51 kg. Since the VFLIPM only solves the trajectory of the support leg, we need to decide the trajectory of the swing leg. It is usually designed as a cycloid or an oval in Fig. 13. According to the strength of the impact, the radius of the rolling circle is modifiable and affects the stride length.
After adopting a rolling circle model and the natural reference generation method, Fig. 14 can demonstrate the CoM, ZMP, and foot trajectories with the pre-determined parameters, including a stride length of 60 mm, step height of 45 mm, step width of 90 mm and a virtual force of 0.22 kg.

B. DYNAMIC GAIT PATTERN GENERATION STRATEGY
First, David Junior II walks over 20 steps (10 sets) to build a threshold for detecting external disturbances. Eight pressure sensors record ZMP trajectories as follows: where N is the set number of steps sampled. One set represents walking over 2 steps and one colored line in Fig. 15. These ZMP trajectories follow similar patterns, except for the first and last ones, because these trajectories are affected by the initial and stationary conditions. Before walking, the biped robot needs to lean forward and accelerate the CoM from a stationary status to a dynamic status. Therefore, the first and last trajectories are not taken into consideration, due to the status switch. The rest of the trajectories, from 2 to 9, are summed up and averaged. The averages added by the upper boundary or the lower boundary can establish the dynamic threshold. Second, a fuzzy controller adjusts the sensors' inertia weights to affect the GPG, according to the variation of acceleration, and the deviation or differential error from the ZMP threshold. This fuzzy logic system includes the fuzzification interface (FI), knowledge base (KB), decision-making logic state (DML), and the defuzzification interface (DFI) as shown in Fig. 16.
The inputs of the fuzzy logic system are divided into two catalogs as follows: where C e , Cė, and C Acc are fuzzy gains, confidence factors, to judge how influential the IMU and the pressure sensors are in different situations. It is worth noticing that some items here are marked with the order i, such as ZMP x,i , ZMP x,threshold,i ,ė ZMPx,i , etc. This order provides an accurate reference between time and the dynamic ZMP threshold. Since one walking cycle consists of 35 to 36 commands, according to the initial walking period setting, the order i can point out what the ideal value of ZMP should be during walking. T command is the interval time of every command. The fuzzy rule table for the decision-making logic is displayed in Fig. 17 and applied to find the relationship between an impact and parameters for generating a gait. These output parameters include the lean angle, stride length, and a virtual mass, m fx . If the error of ZMP and acceleration are large, the stride output is large for restoring balance fast, and vice versa. Thus, we design a symmetrical rule table here.
In the aspect of membership functions, Fig. 18(a) depicts the fuzzification interface. After normalizing inputs, the membership function range is set from -1 to 1. Seven fuzzy subsets are used to keep sensitivity. The defuzzification interface has two membership functions. For the stride length, its membership function is positive because walking forward is an ideal gait pattern the impact is expectedly from the back, as shown in Fig. 18(b). However, if the direction of the impact cannot be expected or the lean angle needs omnidirectional  movements, another output range is from negative to positive, as shown in Fig. 18 (c).
In order to further use modifiable gaits for balance, Fig. 19 depicts the flowchart of the dynamic gait pattern generation strategy, which includes four main procedures. The first step is to build up a database of gait patterns. The stride length is set between 30 mm and 80 mm, and the stride length chosen will partly depend on the initial height of the CoM; a lower COM height allows for a longer extension.
Moreover, different virtual masses represent the strength of impact. By adjusting virtual mass from 0 to 3 kg, these gait patterns can be generated through VFLIPM. However, Fig. 20 illustrates that the time taken generating a gait with VFLIPM and inverse kinematics is about 0.45 seconds, and the period of two steps is about 1.8 seconds. In detail, the total number of motion commands in a walking cycle is about thirty-six. Every command is sent with an interval of 50 ms. The efficiency of the computer limits the robot's response speed.
Thus, the second step involves judging whether an impact is strong and fast. If yes, the robot immediately adopts these pre-training gaits, based on high virtual mass, to replace nine original motion commands, about 0.45 seconds, to restore balance. At the same time, the fuzzy controller integrates the sensors' feedback and adjusts the input parameters of   VFLIPM to generate next suitable steps. If no, the pressure sensors detect whether the ZMP trajectory is still in a stable region. Because the maximum sampling rate of the pressure sensors is about 80 Hz, the IMU, with a sampling rate of 256 Hz, is more suitable for detecting a sudden impact. By contrast, the pressure sensors are used to detect minor and slow impacts. In other words, when the biped robot walks, the pressure sensors can detect small and slow pushes and recover the robot's posture, like eliminating a disturbance. If the biped robot receives a strong and fast impact, the IMU can tell the  robot to first adopt a pre-determined gait pattern to escape the moving obstacle.
In the situation that the ZMP trajectory is out of the stable region, the third step is to adjust the CoM and generate steps according to the fuzzy rule based on the variation of ZMP and acceleration. Depending on the stride length, the robot keeps walking or stepping.
In the case that the robot hit by sudden impacts, the fourth step is to make robots walk with gradually decreasing stride length, which is positive or negative according to the direction of impacts. Hence, the robot can walk forward or backward away from the obstacles. Last, the angular positions of every joint are derived through inverse kinematics.

V. EXPERIMENTAL RESULTS
The experimental setup follows the formal rule of the RoboCup technical challenge contest, Push Recovery, given in Fig. 21. Humanoid robots keep stepping in one spot and endure impacts. The strength of impact is determined by a chosen distance, D c . The competition score is given based on (34), and the potential energy of the impact is represented as follows: The parameter settings for the initial walking status and the push-recovery strategy are listed in Table 1. Fig. 22 (a) records that while receiving an impact from the back, the robot's x-axis ZMP trajectory first rises suddenly over the threshold of stability, 10 cm. Then, because the dynamic gait pattern generation strategy starts to adopt pre-determined gait generated by VFLIPM, the y-axis ZMP trajectory immediately rises to absorb the force. This way can change the part of x-axis kinetic energy to the y-axis swinging motion. At the same time, the fuzzy controller collects sensors' feedback and adjusts m fx , the stride length and the lean angle. These parameters are used to generate the next steps with higher ω n , so that the robot's CoM moves away from the obstacle quickly. By observing the x-, y-axis acceleration and ZMP trajectory in Fig. 22 (a)-(c), we can find that David Junior II gradually restores balance and keep stepping stably. The movements are photographed in Fig. 23.
The whole experimental video can be accessed in [52] and the uploaded supplementary video file. This video includes: first, introducing the system design of the robot; at 1:06 of the video, testing the sensitivity of the robot; at 2:32, testing the adaptivity of the robot, changing gaits while bumping into an obstacle; at 4:21, showing the maximum endurance of an impact while the robot stands or walks without control; at 4:39, pushing the robot while standing with control; at 5:26, establishing the dynamic ZMP threshold; at 6:02, pushing the robot while walking with control.

VI. CONCLUSION
In this study, a virtual force linear inverted pendulum model (VFLIPM) is proposed to generate real-time gait patterns. Compared to the conventional LIPM, this way considers external disturbance and mass distributions of the robot. Thus, the humanoid robot can change gaits to restore balance while walking and suffering from impacts. In addition, the humanoid robot and the improved foot structure are designed to adopt load cells as pressure sensors for estimating the ZMP trajectory precisely. To overcome the diverse strength of push forces, the strategy with the fuzzy controller integrates the feedback of pressure sensors and an accelerometer. Last, in the Push Recovery event of the international RoboCup, David Junior II realized dynamic balance and won a prize. Thus, the results of this study verify the feasibility and effectiveness of the proposed methods.