Simulation of Standing Jump
Dan Xiao
This paper reports the course project I did for CPSC533B. The aim of this project is to add control to a 2D simulator and then simulate the dynamics (forces, torques) of human’s vertical jump. The pictures above show the real human’s jumping movements that I try to simulate. Due to the time limit, in this project, I only simulate a human’s vertical jumping. In this report, cyclic pose control graphs are used, and the choices for jumping parameters are discussed. Finally, I give an analysis on the results achieved.
Since motion is a topic covering many areas of science, a lot of research work has been carried in biomechanics and kinesiology. This work provides an abundant of valuable information about the kinematic and dynamic behaviors of animals [4]. However, to simulate the realistic human motions by far may seem quite ambitious since human’ control is a quite complicated and challenging research topic. Strategies for human’s balancing and walking are of great interest to many researchers [2], so do human’s jumping. There is a large body of work dealing with motion animation where people use different methods to simulate jumping motion.
The work in this paper builds upon some of the ideas presented by Van de Panne et al. in [1]. They use cyclic pose control graphs for control representation, while this representation is implemented with stochastic generate-and-test techniques.
Other methods can be applied to simulate jumping too. Liu and Popovic [3] apply spacetime constraints to produce relatively complex realistic motion such as a set of linear and angular momentum constraints. Hayashi and Tsujio[6] realize pendulum-type jumping machines while taking great consideration of swings of arms and counter movements of humans.
The approach mainly consists of three steps: (1) building a human’s model for jumping; (2) carrying a search algorithm for finding the parameters for simulation; (3) applying 2D dynamics simulator to obtain best trials for jumping, in this step, PD controller is used to calculate the torque and many limitations are added for controlling the jumping motion.
While human’s jumping motion can be well demonstrated by the side view, I am only concerned with human’s side view in this project. Because of human’s symmetry, I simplify the human’s model by reducing the number of model’s segments. The simulation model is shown in Figure 3, which illustrates the relative positions of each link. The parameters for human model are given in Table 1. This human model weights 70kg and is 1.78m in height. Though the model may seem quite simple and unrealistic, it has been assigned many necessary properties to carry the basic functions of human motion.
Segment |
Link Number |
Mass (kg) |
Length (m) |
Center of Gravity (m) |
Moment of Inertia (kg*m^2) |
Torso |
1 |
41.58 |
0.88 |
0 |
1.7526 |
Upper Leg |
2 |
14 |
0.47 |
0.2 |
0.248 |
Lower Leg |
3 |
6.3 |
0.43 |
0.22 |
0.1096 |
Feet |
4 |
2.1 |
0.2 |
0.05 |
0.0074 |
Upper Arm |
5 |
3.98 |
0.37 |
0.18 |
0.0228 |
Lower Arm |
6 |
2.24 |
0.34 |
0.12 |
0.0172 |
Table1. Human Model Parameters
Figure 5: Human Model for Simulation Figure 6: Vertical human jump
For the search algorithm for the values of parameters, I employ the algorithm in [4]. The flow chart is given in Figure 7.
The parameters in Table 1 are fixed, which reduces the domain for searching. Other parameters that need to be searched and their range are listed below, some of them are the same with [4]:
· Joint spring control constant: ranges from 500 to 1500 (N/m). This parameter is essential for simulating jumping.
· Joint damping control constant: ranges from 1 to 30 (N/m)
· Ground spring constant: ranges from 1000 to 50000 (N/m).
· Ground damping constant: ranges from 500 to 5000 (N/m).
· Segment joint angle: +/-0.5 (radians) ranging from the target angle.
· DTpose: ranges from 0.1 to 0.5 (seconds). Transition time between two interpolating poses.
· DTsim: fixed at 0.0002 (seconds). Tim step in simulation
·
Simulation time:
fixed at 2 (seconds)
Figure 8: Pose Control Graph for Human’s Jumping
The essential part for simulating human’s jumping is to build state machines for this model. Poses for human’s real jumping are shown in Figure 1, 2, 3 and 4 [7], while I set the pose graph for human jumping in Figure 8. In this pose control graph, the pose for each state defines a desired internal configuration, such as the character crouches down. Internal torques are calculated with proportional-derivative (PD). At any point in time, the measured poses (joint angles) are used to obtain the jumping motion by applying poses as control targets for the joint angles of the articulated figure. So with joint Ks and joint Ks being set, as well as the position and velocity being calculated each time, articulated torques can be achieved. A pose control graph with timed transitions produces open-loop control.
The PD controller used here is
Torque = JointKs * (TargetPos – CurrentPos) + JointKd * JointVel
It illustrates the how position and velocity affect torque. Joint spring control constant and joint damping control constant JointKs and JointKd can be obtained from experience and then be adjusted according to experiments result.
Some limitations that I set for jumping model are listed below:
· COG Limits: At first, human is standing still and I can calculate his COG according to his segments parameters, when human is falling from his standing position, human’s COG will deviate from this value by a relative large value. When simulating human’s jumping without falling too fast, I set the COG limit according to experiment result. Since the COG calculation in this system is still a time consuming task, I haven’t done this much. For the future work, if balance control is to be added for controlling human’s motion, COG will play an important role and needs to be calculated precisely.
· Joint Angles Limits: As we know, there are many limitations to the degrees of freedom of human’s model, such as we can’t bend backward the angle between torso and upper leg is restricted to a certain interval. So, I add constraints for many joint angles.
· JointKS Limits: The torques exerted by upper legs and lower legs are important for human’s jumping from the ground. When JointKS for these parts increase, the human is easy to jump from ground, however, they can’t be too large. From experience, the values range from 500 to 1500.
Stance Jump_1
Jump_2 Jump_3
Here are some videos of human’s jumping for the human model with 70kg in weight and 1.78m in height. At beginning of all the videos, the human is standing facing left.
Stance shows that this human model is tend to fall over when he stands still because we haven’t added balance control here.
Jump_1 shows a person’s jumping movement, the human jumps from ground and then jumps backward for some distance. After landing on the ground again, he tries to balance himself for some while and fall over with face to the ground.
Almost the same motion happens in Jump_2, except that the human falls backward.
These two jumping videos are successful ones and Jump_3 shows an unsuccessful jumping motion.
In this project, I simulated a human’s jumping in vertical direction, yet the results can be improved if time permits and some future work can be done. Because the human model in this simulation is tend to fall easily, to balance human in quiet standing for a long time is important. One thing is to add control balance so that human can stand still for a long time. Some work has been done for this using inverse pendulum [6]. Figure 6 shows human’s vertical jumping by swinging his hands to balance his body. A much challenging work is to balance human when he lands on ground after jumping.
I owe my great thanks to Michiel Van de Panne for his valuable advice to this project, as well as to Eddy Boxerman, Peng Zhao and Ken Alton for their help.
[1] M. van de Panne, R. Kim, and E. Fiume. Virtual Wind-Up Toys. Proceedings of Graphics Interface ’94, May 1994, 208-215.
[2] Laszlo, J. F., van de Panne, M., Fiume, E. Limited Cycle Control and its Application to the Animation of Balancing and Walking. In ACM SIGGRAPH Proceedings, 1996, 155-162.
[3]
C. Karen Liu, Zoran Popovic. Synthesis
of Complex Dynamic Character Motion from Simple Animations. In ACM SIGGRAPH Proceedings, July 2002.
[4] Blickhan, A.S.A.F.V.W.R. Dynamics of the
long jump. Journal of Biomechanics 32, 1999, 1259-1267.
.
[5] Eddy Boxerman. Dynamic Model of a horse Gallop in 2D. http://www.cs.ubc.ca/~eddybox/projects/533B/. 2002.
[6] R. Hayashi and S.Tsujio. High Performance Jumping Movements by Pendulum-type Jumping Machines. In Proc. IEEE/RSJ Int. conf on Intelligent Robots and Systems, 722-727, Maui, USA, 2001.
[7] Scott Weintraub. Jump tutorial. http://web.skatefaq.com:81/tutorials/jump/jump.tut.html.