Jumping Motion Generation for Biped Humanoid Robot Based on Predefined Trajectory of Whole Body’s Centre of Mass and Angular Momentum Diah Puspito Wulandari *, and Taku Komura † * Jurusan Teknik Elektro, Institut Teknologi Sepuluh Nopember Surabaya Kampus ITS Keputih Sukolilo, Surabaya 60111, Indonesia e-mail : diah@ee.its.ac.id † Institute of Perception Action and Behavior, University of Edinburgh James Clerk Maxwell Building, King’s Buildings, Edinburgh e-mail : tkomura@inf.ed.ac.uk Abstract–This research attempts to improve the robot’s mobility by developing jumping motion. The problem arises in humanoid leg locomotion is how to define the posture of the robot for each frame during the motion, considering a number of degree of freedom. In jumping motion, all parameters should be predefined before jumping since the robot will have much less access to control the joints once it is in the air. The method introduced in this research has been based on generating trajectory of whole body’s centre of mass. This trajectory defined a set of body frames and inverse kinematics was used to find a set of joint angles that satisfied each frame. The angular momentum was designed to control the rotation of the body during jumping. We used open loop control, assuming there was no external perturbation occurred. The stability of robot during jumping was guaranteed by maintaining the zero moment point (ZMP) inside support polygon. The performance of the jumping motion was verified through a simulation. The results showed that robot left the ground when vertical acceleration was at least equal to the gravity while zero and negative angular momentums produced an upward and backward jumping motion respectively. Calculation of average absolute error of the motion shows that the robot is able to follow vertical trajectory and reaches errors below 10% for jumping backward and upward. Keywords– Whole body’s center of mass, ground reaction force, inverse kinematics, angular momentum, support polygon, zero moment point (ZMP) I. INTRODUCTION Leg locomotion is one of the most interesting fields in robotics as mobility has been acknowledged as significant aspect for a robot to perform its tasks. People from different backgrounds (i.e. robotics, biomechanics, etc.) have been developing basic motions such as walking, running and jumping. A research [2] used the 3D linear inverted pendulum method to generate walking pattern for 12 DOFs (degree of freedom) humanoid robot. The robot changed foot placements in order to modify walking speed and direction, satisfying motion equation of a linear inverted pendulum in 3D space. The reference X-Y frame was rotated from step to step and made the robot walked in a circle. They used open loop control and therefore predefined all the parameters. The distinct difference between running and walking is that there are aerial phases in running, wherein no foot is in contact with the ground. These phases are alternated in series with bouncing impacts of the foot with the ground [1]. Assuming the robot as one point mass with two telescopic legs, [3] generated running pattern for humanoid robot. Like the paper about walking, this time they again used inverted pendulum model to define the trajectory in horizontal space (X-Y), while the trajectory in vertical axis is determined by sinus function, representing the springy mechanism during stance phases. They considered the motion as continuous vertical hopping. This motion has similarity with running motion in the presence of aerial phase. In order to make the legs leave the ground, it also performs springy mechanism to the legs, storing energy and by the time generating linear acceleration to counter the gravity. A research conducted by [4] planned vertical jump, by maintaining the centre of mass above the ankles and forcing its trajectory in the vertical direction. It also imposed the trunk to maintain vertical position during aerial phase and the feet to maintain horizontal position so that the robot will land stably. It used closed loop control system and controlled the torque in order to make the centre of mass following the trajectories. In this research, I planned the joint angles in order to satisfy the trajectories, using inverse kinematics, which will be described in the next chapter. II. FOUNDATION THEORY Centre of Mass (COM) of Multi Segment Body The model I used to perform such a motion has the same properties as humans do, which consists of multi segments connected by joints. In human body, a particular part like foot, lower leg, upper leg, trunk, upper arm, lower arm, hand, neck or head, is considered as a segment. Each segment has its own mass with various shapes, but each of them is represented by one centre of mass, considering as if the mass is centered at one point. This system moves simultaneously, performing a maneuver, such as jumping motion. The motion’s trajectory and angular momentum are considered occurring on one centre of mass, of the whole body. Assuming 2D frame of X and Y, the position of centre of mass can be calculated as follows: m x m m y m i i xCOM i i yCOM (1) i i i i i (2) i Where xi and yi is the position of segment i in X and Y axis respectively, while mi is the mass of the corresponding segment. Ground Reaction Force Ground reaction force is the force exerted by the ground on the feet. It reflects the acceleration of the body’s center of mass during locomotion. It has the same value but it opposes the direction of the force acting on body’s centre of mass. In 2D space, it has both horizontal and vertical components. The vertical component is affected by the gravity and the vertical acceleration of body’s centre of mass. This component will be equal to zero if the feet leave the ground. For jumping motion, consequently the ground reaction force is affected by the trajectory which caused acceleration. The critical moment in this motion is when the feet leave the ground, entering the aerial phase. Equation (5) shows the minimum value required to make the body jumps. Fx max (3) Fy (max mg) (4) property of a rigid body with respect to rotational motion. Since a rigid body rotates with an axis as reference, moment of inertia of a rigid body is expressing how hard the object rotates with respect to the axis. The larger the moment of inertia of an object, the more difficult it is to rotate about the axis. The key point here is the concept in which the jumping motion is constrained. At initial stage, the robot will rotate its joints to follow the trajectory, changing the whole body’s moment of inertia to be smaller in order to obtain higher angular velocity. When the robot enters aerial phase, the robot will minimally rotate its joints, providing constant moment of inertia. During aerial phase the robot will have less control of its joints, so it is better not to try to control the joints much at this moment. Angular Momentum As translational motion has its momentum property which depends on its mass and linear velocity, rotational motion also has its angular momentum property. The angular momentum of rotating object is related to its mass, velocity and the distance of point mass to the axis [5]. Equation (6) represents the angular momentum for a rigid body consisting of particles (i) which rotate about the same axis. L ri pi mi ri vi i L mi ri i ri mi ri 2 In i L is the angular momentum of rotating rigid body, r is the distance of particle i to the axis of rotation, p is linear momentum, ω is the angular velocity, I is the moment of inertia and is a unit vector representing the rotational axis. In the case of humanoid robot, the angular momentum of the whole body is expressed as the accumulation of the angular momentum of each joint with respect to the whole body’s centre of mass (remote angular momentum, LR) and the angular momentum of each joint with respect to its own coordinate frame (local angular momentum, LL) [6]. L LRi LLi i L mi ri' vi' I i i i ' 0 (ma x mg ) a y g (6) (7) i ' i ri and v are the distance and velocity of each segment’s (5) Moment of Inertia Moment of inertia is also called mass moment of inertia or angular mass, because it is expressing mass point mass relative to the whole body’s centre of mass respectively. The value of angular momentum of an object will remain the same unless external perturbation occurs. In this research, the angular momentum of the robot will remain the same once it takes off. The presence of angular momentum will be used to make the whole body rotates. Many have realized and used angular momentum to control human locomotion, such as the research conducted by [7]. [8] generated whole body motion such as walking and kicking by specifying the angular momentum. On the contrary, [9] proposed a method called Angular momentum inducing inverted Pendulum Model (AMPM) which calculate the angular momentum of the whole body and generate action to counteract it in order to prevent the body from falling off. Figure 1 shows the graph of angular momentum during human motion obtained from biomechanical data [10]. The line on the left of p1 and on the right of p4 represents the angular momentum during uncontrolled phase, when no perturbation occurs. Consequently, the line between p1 and p4 shows the angular momentum during controlled phase. p1 is less than p4 and p2 is less than p3 showing the conservation of energy. Figure 1 The general form of angular momentum based on biomechanical data. Zero Moment Point Zero moment point (ZMP) is point on the ground about which the net moment of the inertial forces and the gravity forces has no component along the horizontal planes [11]. It guarantees the stability of locomotion as long as the ZMP is maintained inside the support polygon, as shown by Figure 2. This property was introduced by Vukobratovic and was used to control locomotion of robot. It is very important to note that ZMP is different from the projection of whole body’s centre of mass on the ground. Foot Contact Support polygon ZMP Figure 2 Stability of locomotion is guaranteed as long as the ZMP is maintained inside the support polygon. ZMP is widely used in leg locomotion. The idea is to design kinematics trajectories of whole body’s centre of mass and check whether ZMP is inside support polygon to test the stability. In this research, the vertical trajectories of whole body’s centre of mass and the angular momentum are pre defined. And then the trajectories of ZMP are defined to calculate the horizontal trajectories of whole body’s centre of mass using Equation (8). dh dt rF (8) Where τ, h, r, and F is the rotational torque, angular momentum, vector from ZMP to whole body’s centre of mass, and ground reaction force respectively. First, rotational torque as the rate of angular momentum is calculated along the motion. This rotational torque is equal to the cross product of the vector r and the ground reaction force F. Using the initial posture of the robot, the horizontal acceleration, horizontal velocity and horizontal trajectories of whole body’s centre of mass are calculated. In this paper I planned the motion by considering the robot in two dimensions following its sagittal plane. The vertical and horizontal axes are represented by y and z axes respectively. Therefore, the support polygon is expressed as the length of the foot sole in one dimension along z axis. Inverse Kinematics Inverse kinematics is a process of determining the joint angles of multi segment body, given a desired position of its end effecter, or its centre of mass. This method is being used in this research to calculate the joint angles in order to satisfy the trajectory of centre of mass. A well known method of inverse kinematics, called CCD kinematics, adjusts the joint angle of the segment connected to the base to approach the desired point as much as possible, and then it moves the next segment to do the same until it comes to the end effecter. Unfortunately, this method cannot simply be applied in humanoid robot, because every joint will have its limitation and the postures resulted from this method may cause instability of the body. A method adopting CCD kinematics has been introduced by [12] with some improvements, considering the limitations of human body. It divides the whole body into groups like head, trunk, and the limbs (arms and legs). In order to satisfy the desired centre of mass, it moves the lightest group first. The centre of mass of this particular group is adjusted by changing the length of the limb and rotating it (assuming it as a rigid body). Since the motion is considered in 2D frame, the inverse kinematics only takes into account the adjustment of vertical and horizontal direction. It defined few constraints: Adjusting vertical direction 1. If the actual COM < desired COM, it will extend the legs (enlarging the knees’ joint angles). 2. If the actual COM > desired COM, it will bend the legs more (reducing the knees’ joint angles). Adjusting horizontal direction It will rotate the ankles to the direction of desired COM. This procedure is done in turn and iteratively until both vertical and horizontal errors satisfy the limitations. III. MOTION PLANNING Environment Set Up I used the available Webots 5.1.7 in this research. It already has many simulation environments (which are called Webots worlds) and with the controller for each world. Furthermore, I chose hoap2_walk.wbt as the environment and hoap2.c as the controller (originally created by Pascal Cominolli, 2004) since it represents the real Fujitsu HOAP2 humanoid robot which is suitable with the concept of humanoid leg locomotion used in this research. Hoap-2 Humanoid Robot Hoap2 robot has in total twenty six joints, consist of two body joints, two head joints, five leg/right arm joints, and six left/right leg joints. But in the controller, only twenty five of them are considered and controlled, the second body joint is excluded. Two of the arm joints are representing both left and right wrist and these joints were not used in this jumping motion, assuming that they are not rotating in any condition during the motion. The other joints which were not used are both head joints. The remaining joints were manipulated to follow trajectory and to perform the jumping motion. Each joint has physical properties like mass, length of segment and its minimum and maximum angle of rotation. Every joint in Hoap-2 humanoid robot has its own coordinate system and is rotating with respect to one of the axis in this system and so the position of centre of mass for every joint is represented with respect to its own coordinate system. The rotation of each joint is performed in z axis of local coordinate system. The robot uses two touch sensors placed on the sole of its feet. These sensors can be set to act as bumper sensors or force sensors by specifying the type in its node. In both cases, they detect collision with solid object. For this simulation they have been set to be force sensors which also return the intensity of force applied during collision. This information is very useful to give feedback about the motion, when the foot is still in contact with the ground or when the robot is in its aerial phase during jumping. Planning the Vertical Trajectory of COM Observing the original human jumping motion, generally we will find out that among the various kind of jumping motions, humans tuck all the joints at one moment and then un-tucks them simultaneously at the next moment. This basic behavior is based on these following reasons: 1. Generating vertical linear acceleration From the normal standing position, when human start tucking all the joints, he is actually changing the position of whole body’s centre of mass in vertical direction more than the position in horizontal direction. The change of position will cause such velocity and acceleration. The vertical linear acceleration of whole body’s centre of mass must be large enough to counteract the gravity and generate the take off phase. 2. Minimizing moment of inertia Human’s body consists of all rotational joints so any motion performed by human can be explained as the accumulation of all joint’s rotation. In this case, the moment of inertia has an important role to determine how much the joints will rotate. As mentioned in the previous chapter, in order to increase the angular velocity, the moment of inertia of the body must be reduced as much as possible. 3. Generating angular momentum For some specific jumping motion, the whole body needs to rotate to make horizontal displacement at landing instead of changing the position of whole body’s centre of mass in horizontal direction. The horizontal position of whole body’s centre of mass for human has limitation in stability. The angular momentum generated by tucking all the joints will cause a rotation of the body which is also useful to generate particular kind of jumping motion. The vertical trajectory defined and the velocity function as its first derivation must not be a constant function because it obviously needs to have acceleration to counteract the gravity. Moreover, the acceleration must be varying with time because we want to decide when the body will jump at one moment. Generally, the motion during initial phase can be divided into two parts. First, while tucking all the joints, humans are actually lowering the position of whole body’s centre of mass. Second, the joints will be un-tucked at one time, increasing the height of whole body’s centre of mass. The velocity of the motion at the second part is much higher than that of the first part. At the first part the body is conserving the energy that will be used in the second part, to make a jump. When the vertical acceleration generated by the second part is greater than the gravity, then the body will jump. The first part of the motion is expressed as sine curve while the second part is expressed as linear function. The trajectory, velocity and acceleration function will have the form of: y (t ) H A sin t v(t ) A cos t (3.1) a(t ) A 2 sin t with these following parameters: H is the offset representing the height of whole body’s centre of mass in its initial standing posture. From the information given in the model and calculation of whole body’s centre of mass, it has the value of 0.2868 m. A is the amplitude representing vertical displacement of whole body’s centre of mass before jumping. It has limitation since the body has its maximum tucking condition. The height of whole body’s centre of mass cannot go lower than height of the centre of mass in this condition. ω is the speed of cycle of the motion. Both A and ω will affect the velocity and acceleration. The cycle cannot be set too high because the body needs to conserve the energy during this part. Planning the Angular Momentum The other constraint to be satisfied is the function of angular momentum. Based on the biomechanics data shown in Figure 1, the fluctuation of angular momentum during human motion has the sine-like shape. This has inspired me to set the angular momentum to follow sine function. When the body is tucking the joints to reduce the height and the moment of inertia, it will also rotate the arms backward. How much the arms rotated will be based on the desired angular momentum. This rotation, along with the other joints’ rotation will increase the angular momentum. The value of angular momentum can be increased by rotating the torso in the case if the arms are already maximally rotated backward. The rotation of the torso will affect much since it has the largest mass of all segments. During the second part, again the angular momentum is set to follow linear curve, directing the angular momentum to be negative by rotating the arms and/or the torso upward. The cycle of the sine curve is set to be a bit faster than the cycle of the vertical trajectory. This is done in order to allow more negative value of angular momentum when the robot is taking off the ground so the body will rotate more. Being able to control the rotation of jumping motion will enable us to define the jumping motion and how the robot will land on to the ground. Planning the Horizontal Trajectory of COM As previously explained, the horizontal trajectory of whole body’s centre of mass is more restricted by the foot’s support polygon in order to keep the motion stable. It is strongly related to the zero moment point (ZMP) which has to be inside the support polygon. For this reason, I defined the position of ZMP to be constant at -0.0190 m and obtained the horizontal trajectory of whole body’s centre of mass as shown in Figure 3 (blue line). Along the motion, it is always inside the support polygon (red lines) and is nearly constant, around 0.0190 m. Figure 3 Horizontal trajectory of whole body’s centre of mass (blue) exists inside the support polygon (red). IV. EXPERIMENTAL RESULTS Negative Angular Momentum As previously explained, the presence of angular momentum will make the body rotates during jumping. In this experiment, I tried to apply negative angular momentum to make the robot jumping and rotating backward, following vertical and horizontal trajectories of whole body’s centre of mass. Figure 4 - Figure 6 show the trajectory settings. The vertical trajectory of whole body’s centre of mass consisted of sine curve (from t = 0.5 s to t = 1.7 s) and a linear curve (from t = 1.7 s to t = 1.75 s). The first 0.5 s is the length of time needed by the robot to settle itself in the simulation. At t = 1.7 s the robot reached its lowest position of centre of mass and directly reached the highest position at t = 1.75 s. The take off moment occurred during this interval, which is when the vertical ground reaction force equally counteracts the gravity. Figure 4 Vertical trajectory of whole body’s centre of mass for jumping backward Figure 5 Angular momentum of whole body’s centre of mass for jumping backward The angular momentum consisted of sine curve and linear curve. The sine curve (from t = 0.5 s to t = 1.55 s) represented the energy conserved when the robot prepared itself to jump. It is continued by a linear curve (from t = 1.55 s to t = 1.75 s) so that angular momentum of the body at take off reached negative (non zero) value. The angular momentum of the body at take off moment should be around 0.025 – 0.3. step. The frames start at t = 0.5 s since the controller set the robot to stabilize its position in the world for half second. Figure 7 – Figure 11 represent all frames sequentially. Figure 7 – Figure 10 show the motion from frame to frame when the robot lowered its height by reducing the distance between its upper legs and lower legs which caused the knees to bend more. At the same time, the arms were swung backward to increase the angular momentum (to be more positive). Both vertical and horizontal trajectory of whole body’s centre of mass are satisfied, showed by the coincidence of desired (green square) and actual (red square) trajectory of whole body’s centre of mass along the motion. Finally, Figure 11 shows two last frames, when the robot reached its lowest position (0.1668 m) and then immediately increased to maximum (0.3268 m) to perform jumping. From the fifth frame in Figure 10 until the last frame in Figure 11 (from t = 1.55 s to t = 1.75 s) the robot made the angular momentum to be negative by swinging both arms forward. Figure 6 Horizontal trajectory of whole body’s centre of mass for jumping backward (blue) inside the support polygon (red) The horizontal trajectory of whole body’s centre of mass was obtained by defining the ZMP trajectory along the motion. Setting the ZMP to be constant at -0.0190 m (following body’s initial posture) resulted in nearly constant horizontal trajectory around -0.0190 m. Inverse Kinematics for Negative Angular Momentum There are twenty six frames calculated to perform the jumping motion. Each frame is performed in 50 ms time Figure 7 The frames for jumping backward from t = 0.500 s to t = 0.750 s Figure 8 The frames for jumping backward from t = 0.800 s to t = 1.050 s Figure 10 The frames for jumping backward from t = 1.400 s to t = 1.650 s Figure 11 The frames for jumping backward from t = 1.700 s to t = 1.750 s Figure 9 The frames following negative angular momentum from t = 1.100 s to t = 1.350 s Webots Simulation for Negative Angular Momentum All frames above are the result of inverse kinematics to find a set of joint angles which satisfies the planning. A process converts these joint angles in radian into joint angles which are readable for Webots. The results are represented in Figure 12 – Figure 14. The sequence expresses the motion when the robot lowered its position by bending its knees and at the same time gradually swinging the arms to the back to increase the angular momentum. The first nine snapshots in Figure 12 show the process from initial standing position until the robot reached its lowest position. After that the robot increased its height immediately and swung the arms to the front to reduce the angular momentum. In Figure 13 the robot was taking off the ground, though it did not reach significant height. Figure 14 zoomed the aerial phase and showed that it did really leave the ground in some interval of time. In general, we can see in this experiment that the robot successfully followed the trajectories of whole body’s centre of mass as shown in Figure 15 and Figure 16 except the last vertical position of whole body’s centre of mass at t = 1.7 s. There was significant error which was caused by the Webots limitation in simulating rotation of each joint. Webots could not simulate such big difference of position at one time step (0.05 s) so it performed the rotation in several time steps. The horizontal trajectory of whole body’s centre of mass guarantees the stability of the robot along the motion. Although the actual horizontal trajectories from t = 1.3 s had quite significant errors but they did not exceed the foot area at z = -0.0475 m. Maintaining the ZMP inside the support polygon will make the robot stable. These errors may be caused by the inaccuracy in using information available in Webots to calculate the horizontal position of whole body’s centre of mass. Significant errors occurred in actual horizontal trajectory of whole body’s centre of mass caused errors in angular momentum as well, as shown in Figure 17. This happened because the angular momentum was derived from both vertical and horizontal trajectory of whole body’s centre of mass. Figure 13 Webots simulation for jumping backward during aerial phase and landing Figure 14 Zooming in the aerial phase for jumping backward Table 1 and Table 2 show the errors between desired and actual values of vertical and horizontal trajectory of whole body’s centre of mass respectively. From Table 1 it is clear that errors are below 10% except at the last shot (t=1.700s) which has been explained previously. On the contrary, the errors in Table 2 are large and reach over 100% between 1.400s – 1.550s. Figure 12 Webots simulation for negative jumping backward during initial phase until take off moment 0.34 -0.01 0.32 -0.015 Horizontal Trajectory - (m) Vertical Trajectory - (m) 0.3 0.28 0.26 0.24 0.22 0.2 -0.02 -0.025 -0.03 -0.035 -0.04 0.18 0.16 0.4 -0.045 0.4 0.6 0.8 1 1.2 Time (s) 1.4 1.6 1.8 Figure 15 Desired (blue) and actual (red) vertical trajectory of whole body’s centre of mass Vertical Trajectory Desired Actual Abs. Err (%) 0.2868 0.2595 9.5098 0.2790 0.2556 8.4036 0.2712 0.2498 7.8964 0.2635 0.2429 7.8178 0.2560 0.2357 7.9250 0.2485 0.2285 8.0596 0.2412 0.2215 8.1526 0.2341 0.2147 8.2785 0.2272 0.2079 8.4894 0.2205 0.2016 8.5778 0.2142 0.1955 8.7460 0.2081 0.1901 8.6338 0.2024 0.1854 8.3982 0.1970 0.1815 7.8873 0.1921 0.1783 7.1879 0.1875 0.1757 6.3157 0.1833 0.1730 5.6361 0.1796 0.1703 5.1960 0.1763 0.1735 1.5808 0.1735 0.1716 1.0945 0.1712 0.1695 0.9685 0.1693 0.1665 1.6799 0.1680 0.1663 1.0030 0.1671 0.1724 3.1993 0.1668 0.2523 51.2590 8.0759 Table 1 Absolute errors of vertical trajectory of COM for jumping backwards for each time step (from 0.500s to 1.700s respectively) No 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0.6 0.8 2 1 1.2 Time (s) 1.4 1.6 1.8 2 Figure 16 Desired (blue) and actual (red) horizontal trajectory of whole body’s centre of mass No Horizontal Trajectory Desired Actual Abs. Err (%) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 -0.0190 -0.0190 -0.0190 -0.0190 -0.0190 -0.0190 -0.0190 -0.0189 -0.0189 -0.0189 -0.0189 -0.0189 -0.0189 -0.0189 -0.0189 -0.0189 -0.0189 -0.0189 -0.0189 -0.0190 -0.0190 -0.0190 -0.0191 -0.0192 -0.0193 -0.0139 -0.0156 -0.0171 -0.0181 -0.0184 -0.0187 -0.0188 -0.0188 -0.0193 -0.0199 -0.0202 -0.0201 -0.0202 -0.0210 -0.0232 -0.0265 -0.0310 -0.0360 -0.0444 -0.0436 -0.0403 -0.0327 -0.0252 -0.0244 -0.0338 27.0316 18.0632 9.8053 4.8737 3.1105 1.6421 1.1579 0.4550 1.9206 5.0741 6.7619 6.1534 6.8042 10.8942 22.7884 40.1852 63.8095 90.4339 135.1429 129.6263 112.2316 72.2526 31.9791 27.2448 75.0570 36.1800 Table 2 Absolute errors of horizontal trajectory for jumping backwards for each time step (from 0.500s to 1.700s respectively) Figure 17 Desired (blue) and actual (red) angular Figure 19 Angular momentum of whole body’s centre of mass for jumping upward momentum of whole body’s centre of mass Zero Angular Momentum This experiment was meant to apply constant zero angular momentum to the robot during motion and verify the result to see the effect of angular momentum to jumping motion. If the presence of angular momentum implies to the rotation of the body, then the absence of it should imply to null rotation, which means the robot should jump vertically upward because it does not rotate the body. Figure 18 – Figure 20 show planning for trajectory of whole body’s centre of mass and angular momentum. The significant difference from the previous jumping motion was in the design of angular momentum. In this experiment I used the same sinusoidal curve from t = 0.5 s to t = 1.5 s and continued the curve with constant zero values until t = 1.75 s in order to provide zero angular momentum at take off moment. Figure 18 Vertical trajectory of whole body’s centre of mass for jumping upward Figure 20 Horizontal trajectory of whole body’s centre of mass for jumping upward Inverse Kinematics for Zero Angular Momentum In general, the frames are similar with the previous jumping motion, except at t = 1.55 s to t = 1.75 s; because in this interval the robot followed zero angular momentum (instead of negative angular momentum). The difference can be clearly seen from the position of the arms. At t = 1.55 s to t = 1.7 s the robot did not change its arms’ position, showing that it applied zero angular momentum. At t = 1.75 s the robot changed its arms’ position because there was big transition of the position of whole body’s centre of mass which made the torso rotated much and affected the value of total angular momentum. Figure 21 The frames for jumping upward from t = 0.500 s to t = 0.750 s Figure 22 The frames for jumping upward from t = 0.800 s to t = 1.050 s Figure 23 The frames for jumping upward from t = 1.100 s to t = 1.350 s Figure 24 The frames for jumping upward from t = 1.400 s to t = 1.650 s Figure 25 The frames for jumping upward from t = 1.700 s to t = 1.750 s Webots Simulation for Zero Angular Momentum The results of simulating jumping motion with zero angular momentum are represented in Figure 26 – Figure 28, while the comparison between the desired and actual trajectory of whole body’s centre of mass are represented in Figure 29 and Figure 30. The simulation shows that the robot jumped vertically as expected without rotating the body. Figure 28 showed clearly that there was no rotation performed by the robot. Figure 27 Webots simulation for jumping upward during aerial phase and landing Figure 28 Zooming in the aerial phase for jumping upward 0.32 0.3 Vertical Trajectory - (m) 0.28 0.26 0.24 0.22 0.2 0.18 0.16 0.4 0.6 0.8 1 1.2 Time (s) 1.4 1.6 1.8 2 Figure 29 Desired (blue) and actual (red) vertical trajectory of whole body’s centre of mass Figure 26 Webots simulation for jumping upward during initial phase until take off moment The problem occurred on Webots simulation. A moment before the robot took off the ground, it should have rotated its arms more backward but because it had already exceeded the joint limitation, it remained in the -0.01 -0.02 Horizontal Trajectory - (m) same position. This fact caused difference between the trajectory of whole body’s centre of mass from inverse kinematics and the trajectory of whole body’s centre of mass in Webots simulation. Moreover, because the few last positions of arms were swung backward, they made the horizontal position of whole body’s centre of mass moved backward and it almost exceeded the support polygon (Figure 29). Although the relation between horizontal position of whole body’s centre of mass and ZMP had not been calculated, this might have cause instability before the robot entered its aerial phase. -0.03 -0.04 -0.05 -0.06 -0.07 0.4 No 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Vertical Trajectory Desired Actual Abs. Err (%) 0.2868 0.2790 0.2712 0.2635 0.2560 0.2485 0.2412 0.2341 0.2272 0.2205 0.2142 0.2081 0.2024 0.1970 0.1921 0.1875 0.1833 0.1796 0.1763 0.1735 0.1712 0.1693 0.1680 0.1671 0.1668 0.2595 0.2556 0.2498 0.2429 0.2357 0.2285 0.2215 0.2147 0.2079 0.2016 0.1955 0.1901 0.1854 0.1815 0.1783 0.1755 0.1732 0.1710 0.1715 0.1716 0.1717 0.1718 0.1717 0.1737 0.2351 9.5098 8.4036 7.8964 7.8178 7.9250 8.0596 8.1526 8.2785 8.4894 8.5778 8.7460 8.6338 8.3982 7.8853 7.1583 6.3797 5.5035 4.7706 2.7391 1.1205 0.2769 1.4566 2.1946 3.9569 40.9227 7.7301 Table 3 Absolute errors of vertical trajectory of COM for jumping upwards for each time step (from 0.500s to 1.700s respectively) 0.6 0.8 1 1.2 Time (s) 1.4 1.6 1.8 2 Figure 30 Desired (blue) and actual (red) horizontal trajectory of whole body’s centre of mass Horizontal Trajectory Desired Actual Abs. Err (%) -0.0190 -0.0139 27.0316 -0.0190 -0.0156 18.0632 -0.0190 -0.0171 9.8053 -0.0190 -0.0181 4.8737 -0.0190 -0.0184 3.1105 -0.0190 -0.0187 1.6421 -0.0190 -0.0188 1.1579 -0.0189 -0.0188 0.4550 -0.0189 -0.0193 1.9206 -0.0189 -0.0199 5.0741 -0.0189 -0.0202 6.7619 -0.0189 -0.0201 6.1534 -0.0189 -0.0202 6.8042 -0.0189 -0.0210 10.8677 -0.0189 -0.0231 22.2063 -0.0189 -0.0267 41.3122 -0.0189 -0.0309 63.6720 -0.0189 -0.0340 79.8836 -0.0189 -0.0359 89.9524 -0.0190 -0.0350 84.3053 -0.0190 -0.0362 90.5789 -0.0190 -0.0384 102.1842 -0.0191 -0.0407 113.3351 -0.0192 -0.0438 128.0313 -0.0193 -0.0626 224.3420 45.7410 Table 4 Absolute errors of horizontal trajectory for jumping upwards for each time step (from 0.500s to 1.700s respectively) No 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Figure 31 Desired (blue) and actual (red) angular momentum of whole body’s centre of mass Table 3 shows small errors resulted from comparing the desired and actual values of vertical trajectory of whole body’s centre of mass. These errors vary below 10% except at the last shot, it reaches 40%. The same factor caused significant errors in horizontal trajectory and angular momentum of whole body’s centre of mass, as shown by Figure 30 and Figure 31. The inaccuracy in using information in Webots to calculate the horizontal position of whole body’s centre of mass which also affects the calculation of angular momentum has caused significant errors as shown in Table 4. V. CONCLUSIONS The experiments above proved that defining the trajectory of whole body’s centre of mass would make the robot jumps and even more, setting the angular momentum would control the motion. The robot successfully left the ground at the specified moment and the angular momentum affected the rotation of body. Another important point is the stability of robot which was maintained during motion. Previous experiments showed that when the robot had lost its stability at one moment, it had fell on to the ground before it jumped. This method involves simpler computation than the other method like COG Jacobian. In order to find the inverse kinematics solution we can define the algorithm to satisfy all the constraints. The concept in this method is also flexible to be applied in various models of robot and objectives in the sense that it can be modified according to the conditions. Moreover, the use of ZMP approaches for leg locomotion has solved the problem of maintaining stability in locomotion. Though this approach might be time consuming and does not guarantee the uniqueness of solution, it is suitable to apply on expensive robots that should never fall. The average absolute error for following vertical trajectory of whole body’s centre of mass is below 10% for applying both negative and zero angular momentum (performing backwards and upwards jumping motion). Problems occurred in using information available in Webots’ Scene Tree to calculate the horizontal position of whole body’s centre of mass. This caused inaccuracy of both horizontal trajectory and angular momentum values and shown by the average absolute error which reaches 27% for jumping backward and reaches 45% for jumping upwards. Unless this problem is solved we will never be able to trace whether or not the robot deviate too much from its desired values. There are still many possibilities to improve the performance of this method to generate various kinds of jumping motion. This method can be modified to be applied in different model and environment. In order to anticipate the present of external perturbation, online control might be added to the system. REFERENCES [1] Farley, C. T., Ferris, D. P., Biomechanics of Walking and Running Center of Mass Movements to Muscle Action, Human Neuromechanics Laboratory Division of Kinesiology University of Michigan, 1998. [2] Kajita, S., Kanehiro, F., Kaneko, K., Yokoi, K., and Hirukawa, H., The 3D Linear Inverted Pendulum Mode: A Simple Modelling For a Biped Walking Pattern Generation, Proceedings of the 2001 IEEE/RSJ International Conference on Intelligent Robots and Systems, Maui, Hawaii, USA, Oct. 29 - Nov. 03, 2001. [3] Kajita, S., Nagasaki, T., Kaneko, K., Yokoi, K., and Tanie, K., Running Pattern Generation for Humanoid Robot, Proceedings of the 2002 IEEE International Conference on Robotics & Automation, Washington DC., May 2002. [4] Nunez, V, Nadjar-Gauthier, N., Control Strategy for Vertical Jump of Humanoid Robot, the IEEE/RSJ International Conference on Intelligent Robots and Systems, 2005. [5] Kajita, S., Nagasaki, T., Kaneko, K., Yokoi, K., and Tanie, K., Running Pattern Generation for Humanoid Robot, Proceedings of the 2002 IEEE International Conference on Robotics & Automation, Washington DC., May 2002. [6] Kajita, S., Tani, K., Study of Dynamic Biped Locomotion on Rugged Terrain, Proceedings of the 1991 IEEE International Conference on Robotics and Automation, Sacramento - California, April 1991. [7] Hodgins, J., Raibert, M. H., Biped Gymnastics, The International Journal of Robotics Research, Vol. 9, No. 2, April 1990. [8] Kajita, S., Kanehiro, F., Kaneko, K., Fujiwara, K., Harada, K., Yokoi, K., Hirukawa, K., Resolved Momentum Control: Humanoid Motion Planning based on the Linear and Angular Momentum, Proceedings of IEEE/RSJ International Conference on Intelligent Robots and Systems, Las Vegas Nevada, 2003. [9] Komura, T., Leung, H., Kudoh, S., Kuffner, J., A Feedback Controller for Biped Humanoid that Can Counteract Large Perturbations During Gait, Proceedings of IEEE International Conference on Robotics and Automation, Barcelona Spain, 2005. [10] Karen Liu, C., Popovic, Z., Synthesis of Complex Dynamic Character Motion From Simple Animations, ACM Transactions on Graphics, Proceedings of ACM SIGGRAPH 2002, Vol. 21 No. 3, July 2002. [11] Komura, T., Nagano, A., Leung, H., and Shinagawa, Y., Simulating Pathological Gait Using the Enhanced Linear Inverted Pendulum Model, IEEE transactions on biomedical Engineering, Vol. 52 No.9, September 2005. [12] Kulpa, R., Multon, Frank., Fast Inverse Kinematics and Kinetics Solver for Human-like Figures, Proceedings of 2005 5th IEEE-RAS International Conference on Humanoid Robots, 2005. [13] Cominoli, P., Development of a Physical Simulation of a Real Humanoid Robot, Diploma Thesis, BIRG Logic System Laboratory, School of Computer and Communication Sciences, Swiss Federal Institute of Technology, Lausanne, February 2005.