### 1.Gait Introduction and Analysis

1）Introduction

Recently, we have developed a mini desktop robot dog-PuppyPi. And our top priority is to make this robot walk and run, which lays the foundation for designing more interesting robot games, such as stair negotiating, object recognition and face recognition. How to make PuppyPi run involves gait planning of quadruped robot. To realize gait planning, the first step is to analyze the common gait patterns of quadruped robot so as to obtain the duration of swing phase and support phase. Next plan the trajectory of each foot and the motion sequence of each leg.

2）Analysis

Take dog for example, and its gait patterns are as pictures show.

Compared with other complicated gaits, walk, amble and trot are more suitable to apply in this mini desktop robot dog. And the subsequent analysis is mainly based on these three gaits. For better explanation, number the dog’s legs first as follow.

NO.1 is the right front leg

NO.2 is the left front leg

NO.3 is the right hind leg

NO.4 is the left hind leg

The analysis of gait planing is divided into two parts.

The first part: the motion trajectory of each foot, which contains foot lifting off and touching the ground in cycle. The speed of the dog’s movement depends on the time spent on lifting off and touching the ground.

The second part: the movement of 4 legs i.e. the motion sequence of 4 legs, which is a cyclic process. The sequence and time allocation of 4 legs’ movement determines the gait patterns of the dog.

To simplify the analysis, the picture below is used to depict the time of motion trajectory and phase of 4 legs.

Numbers at left indicate dog’s legs.

t1: represented by a rising slash and a falling slash. It refers to the time the legs are hovering over the ground containing lifting off and touching the ground, which is called swing_time.

t2: the interval between the moment the legs at the diagonal opposite ends of the body are just lifted, which is considered as clearance_time. No.1 and No.4 legs are the first diagonal pair, and No.2 and No.3 legs are the second diagonal pair.

t3: the time taken for all 4 legs to touch the ground. It is called overlap_time.

T：the time taken for each leg to complete one cycle of movement. It is equal to the result of (t1 + t2 + t3) * 2.

In the above figure, we can find that the motion cycle of each leg, the time each leg is in the air and on the ground, are the same. The only difference lies in the moment when each leg is lifted, that is, the phase is different.

Walk, amble and trot mainly follows the rule that the first diagonal pair of legs step out first in a certain rhythm, and then the second pair goes in the same rhythm. Hence we just need to change the time allocation between t1, t2 and t3 to generate diverse gaits.

### 1.Walk

Walk belongs to static gait in which three legs are in contact with the ground at least and one leg lifts off at most. In other words, three legs are in support phase at least and one leg is in swing phase at most. Only when t2 ≥ t1 and t3 ≥ 0, can this effect be reached, as the picture shown.

Set the gait mode as Walk.

`gait = 'Walk'`

According to the features of Walk, adjust the following parameters.

overlap_time: the time all 4 legs touch the ground in second

swing_time：the time each leg lifts off in second

clearance_time：the phase interval between the legs at the diagonal opposite ends of the body in second

z_clearance：the height that the toes should be raised when walking, in cm

```elif gait == 'Walk':
GaitConfig = {'overlap_time':0.1, 'swing_time':0.2, 'clearance_time':0.3,
'z_clearance':5}
PuppyPose['x_shift'] = -0.65```

Then publish the adjusted parameters to the corresponding service to adjust the gait.

```PuppyGaitConfigPub.publish(overlap_time = GaitConfig['overlap_time'], swing_time =
GaitConfig['swing_time'], clearance_time...```