Humanoid Robot Modeling and Simulation

My research focuses on the stability and motion simulation of a humanoid robot. A humanoid robot, also known as a biped walking robot, is a complex mechanical system designed to imitate human locomotion and interaction. The ultimate goal of this work is to verify the correctness and rationality of leg joint angle interpolation calculations through three-dimensional modeling, mathematical kinematic analysis, and dynamic simulation. Throughout this article, I will discuss the entire workflow: from constructing the solid model in Pro/E, establishing the mathematical model using the Denavit-Hartenberg convention, applying the Zero Moment Point stability criterion, deriving the inverse kinematics, and finally performing walking simulations in ADAMS. The humanoid robot considered in this study has 18 degrees of freedom in total: 6 in the upper limbs and 12 in the lower limbs. The lower limb configuration is particularly important because stable walking is the most fundamental and challenging capability of a humanoid robot.

The field of humanoid robotics has evolved dramatically over the past decades. The idea of creating machines that resemble humans dates back to ancient civilizations. In my review of the literature, I found that early automata were purely mechanical, while modern humanoid robots integrate sophisticated sensors, actuators, and control algorithms. A humanoid robot is not merely a mechanical toy; it is a platform for studying bipedal locomotion, artificial intelligence, and human-robot interaction. In industrial and service applications, a humanoid robot can replace humans in dangerous environments, such as disaster rescue, nuclear plant inspection, and space exploration. The stability of a humanoid robot during walking is a core issue, and numerous stability criteria have been proposed, including the momentum moment method, the Zero Moment Point method, the force-angle stability measure, and the energy stability margin. Among these, the ZMP criterion is widely accepted because it provides a clear physical interpretation and is relatively easy to implement in gait planning.

1. Introduction and Research Background

The history of robots is long and fascinating. In ancient China, during the Western Zhou Dynasty, a craftsman named Yanshi reportedly built a mechanical singer and dancer, which is considered the first recorded robot in Chinese history. Later, during the Spring and Autumn Period, the famous inventor Lu Ban created a wooden bird that could fly for three days. In the Western world, around the 2nd century BC, the ancient Greeks built statues that moved using water and steam pressure. In the 18th century, Swiss watchmakers built life-sized automata that could write, draw, and play music. These early examples demonstrate the enduring human desire to create artificial beings that mimic human actions.

In the 20th century, the development of electronics and computer science transformed these dreams into reality. The first industrial robots were introduced in the 1960s, and since then, robots have been widely used in manufacturing, medical surgery, military operations, and entertainment. A humanoid robot, as a special type of robot, presents unique challenges because its locomotion requires balancing a high-dimensional, nonlinear, strongly coupled system. The study of a humanoid robot not only advances robotics but also contributes to biomechanics, prosthetics, and neuroscience. For individuals with lower-limb disabilities, insights gained from humanoid robot research can lead to better prosthetic limbs and exoskeletons.

My research target is a humanoid robot built from the Bioloid kit, which includes AX-12 servo motors, brackets, and sensors. The robot has two legs, each with six degrees of freedom: three at the hip (roll, pitch, yaw), one at the knee (pitch), and two at the ankle (pitch and roll). The upper body has two arms, each with three degrees of freedom (shoulder, elbow, wrist). The head contains an infrared sensor for obstacle detection. The complete assembly is shown schematically in Table 1, which summarizes the degrees of freedom and their functions.

Body Part Joints Degrees of Freedom Function
Head Neck (sensor) 0 (sensor only) Obstacle detection
Arm Shoulder, elbow, wrist 3 per arm Manipulation
Leg Hip, knee, ankle 6 per leg Walking and support
Total 18

In the design phase, I used Pro/E (Pro/ENGINEER) for three-dimensional solid modeling. Pro/E is a parametric, feature-based CAD system that allows designers to create complex parts and assemblies. The software provides a wide range of modules, including part design, assembly design, drawing generation, manufacturing, and simulation. One of the key advantages of Pro/E is its single database architecture, which ensures that any modification in one module is automatically reflected in all related modules. This feature is particularly useful when iterating on the design of a humanoid robot, because a change in one joint bracket might affect the entire kinematic chain.

2. Three-Dimensional Modeling of the Humanoid Robot in Pro/E

2.1 Modeling the Servo Motor

Each joint of the humanoid robot is actuated by an AX-12 servo motor. This motor can rotate continuously by 360 degrees and has a built-in control circuit. The physical dimensions of the motor are approximately 47 mm × 32 mm × 26 mm. To create a realistic model, I measured the actual motor and constructed a simplified version in Pro/E, which included the main body, a rotating disk, mounting holes, and side brackets. The modeling procedure is as follows:

First, create a new part in Pro/E using the “Mmns part solid” template. Then, on the FRONT plane, sketch a rectangle of dimensions 47 mm × 32 mm and extrude it to a thickness of 26 mm. Next, create a datum plane offset from the front surface to sketch a circle of diameter 22 mm, which represents the motor output shaft. Extrude this circle to form the rotating disk. On the disk face, create four holes of diameter 2 mm arranged at 90-degree intervals to match the mounting pattern. The lower part of the motor includes a web plate and several small protrusions for attaching brackets. These are generated by sketching on appropriate planes and extruding to the required depths. Finally, apply fillets and chamfers to smooth sharp edges, resulting in the 3D model shown in the earlier figure (not referenced here). The motor model served as the basic building block for the entire humanoid robot.

2.2 Modeling Connecting Brackets and Links

The humanoid robot uses various connection plates to link motors and structural members. These parts are designated F1 through F12 in my model, including the knee motor fixing plate (F1), forearm (F2), four-hole short side plate (F3), thigh (F4), foot (F5), single-side plate (F6), double-motor plate (F7), torso connector (F8), hand fixing plate (F9), spacer (F10), hand (F11), and foot sole (F12). Each of these parts was modeled separately using the same parametric approach: sketch a 2D profile on a reference plane, extrude to the desired thickness, add holes using dimensioned circles, and then apply patterns or mirrors where necessary. For example, the thigh link has a U-shaped cross-section to accommodate a motor, so I created a U-shaped profile and extruded it.

2.3 Assembly of the Humanoid Robot

After all parts were modeled, I assembled them in Pro/E using a bottom-up approach. In Pro/E, assembly constraints such as “Automatic”, “Mate”, and “Align” are used to position parts relative to each other. For dynamic assemblies, Pro/E provides joint definitions like “Pin”, “Slider”, “Cylinder”, “Planar”, and “Ball”. I used pin joints to model the revolute joints of the robot because they permit only one rotational degree of freedom, matching the motion of the servos.

The assembly process for the leg started with the lower U-shaped bracket that connects to the ankle. I placed this bracket as the base part with a “Default” constraint. Then I added the spacer and aligned its axis to the corresponding hole on the bracket. Next, I placed the knee motor, aligning its mounting holes with the spacer and matching the mating faces. After that, I added the connecting brackets, the thigh link, and the hip motor assembly. The hip joint required two perpendicular motors to provide both roll and pitch motions. Finally, the foot sole was attached to the end of the leg. Similar procedures were used for the arms and torso. The complete assembled humanoid robot is shown in Figure (not quoted in the text), which demonstrates a compact and realistic structure.

2.4 Interference Detection and Simplification

Interference checking is a critical step in any assembly. In Pro/E, the “Global Interference” analysis tool checks whether any two parts occupy the same space. In my initial assembly, I found interference between the ankle motor and the motor fixing plate. To resolve this, I modified the assembly sequence and the constraint definitions rather than changing the part dimensions. Specifically, I reordered the placement of the bracket and motor, aligning the correct faces, which eliminated the interference. After repeated checks, the model was free of interferences.

To simplify the subsequent dynamic simulation, I reduced the number of parts in the leg model. Instead of modeling every screw, washer, and spacer, I represented the leg as a series of rigid links connected by revolute joints. The simplified leg structure is easier to import into ADAMS and reduces computational cost while preserving the essential kinematics. The simplified model includes the thigh link, shank link, foot, and the joint axes. This simplification is justified because the focus is on verifying joint angle interpolation rather than on stress analysis.

3. Kinematic Modeling and Mathematical Analysis

3.1 Stability Criterion: ZMP

Stable walking is the most important requirement for a humanoid robot. The ZMP (Zero Moment Point) criterion, introduced by Vukobratovic, is a well-established method. The ZMP is defined as the point on the ground where the resultant moment of the ground reaction forces has no horizontal components. For a robot to be dynamically balanced, the ZMP must lie strictly within the convex hull of the foot-ground contact area. In the single-support phase, this area is the support foot’s sole; in the double-support phase, it is the area bounded by both feet. The ZMP position can be computed from the robot’s center of mass (COM) and its accelerations.

The general expression for ZMP in the horizontal plane is given by:

$$
\begin{aligned}
x_{ZMP} &= \frac{\sum_{i=1}^{n} m_i \left[ (g + \ddot{z}_i) x_i – \ddot{x}_i z_i \right] + \sum_{i=1}^{n} J_{ix} \dot{\omega}_{ix}}{\sum_{i=1}^{n} m_i (g + \ddot{z}_i)} \\
y_{ZMP} &= \frac{\sum_{i=1}^{n} m_i \left[ (g + \ddot{z}_i) y_i – \ddot{y}_i z_i \right] + \sum_{i=1}^{n} J_{iy} \dot{\omega}_{iy}}{\sum_{i=1}^{n} m_i (g + \ddot{z}_i)}
\end{aligned}
$$

where \(m_i\) is the mass of link \(i\), \((x_i, y_i, z_i)\) is the location of its center of mass, \(\ddot{x}_i\), \(\ddot{y}_i\), \(\ddot{z}_i\) are the accelerations, \(g\) is the gravitational acceleration, and \(J_{ix}\), \(J_{iy}\) are the moments of inertia. For static walking, the accelerations are negligible, and the ZMP reduces to the projection of the COM onto the ground:

$$
x_{ZMP} = \frac{\sum_{i=1}^{n} m_i x_i}{\sum_{i=1}^{n} m_i}, \qquad y_{ZMP} = \frac{\sum_{i=1}^{n} m_i y_i}{\sum_{i=1}^{n} m_i}
$$

During a complete walking cycle, the ZMP trajectory follows a roughly S-shaped curve as the weight shifts from one foot to the other. In my gait planning, I ensured that the ZMP remained inside the support polygon at all times. The ideal ZMP trajectory is shown in Figure (not referenced), where the curve alternates between the left and right support feet.

3.2 Denavit-Hartenberg Parameters and Pose Matrices

I established a kinematic model of the lower limbs using the Denavit-Hartenberg (D-H) convention. The right leg coordinate frame attached to the robot’s pelvis is defined as frame {0}. The foot frame is frame {6} for the right leg and frame {13} for the left leg. The D-H parameters for the right leg are listed in Table 2.

Joint \(i\) \(\theta_i\) \(d_i\) \(a_i\) \(\alpha_i\)
1 (hip yaw) \(\theta_1\) 30 0 \(-90^\circ\)
2 (hip pitch) \(\theta_2\) 0 0 \(90^\circ\)
3 (hip roll) \(\theta_3\) 0 30 \(-90^\circ\)
4 (knee pitch) \(\theta_4\) 0 75 0
5 (ankle pitch) \(\theta_5\) 0 75 0
6 (ankle roll) \(\theta_6\) 0 0 \(90^\circ\)

The homogeneous transformation matrix between consecutive frames \(\{i-1\}\) and \(\{i\}\) is:

$$
T_i^{i-1} =
\begin{bmatrix}
\cos\theta_i & -\sin\theta_i \cos\alpha_i & \sin\theta_i \sin\alpha_i & a_i \cos\theta_i \\
\sin\theta_i & \cos\theta_i \cos\alpha_i & -\cos\theta_i \sin\alpha_i & a_i \sin\theta_i \\
0 & \sin\alpha_i & \cos\alpha_i & d_i \\
0 & 0 & 0 & 1
\end{bmatrix}
$$

Multiplying these matrices from frame {0} to frame {6} gives the forward kinematics of the right leg:

$$
T_6^0 = T_1^0 T_2^1 T_3^2 T_4^3 T_5^4 T_6^5
$$

This matrix describes the position and orientation of the right foot relative to the hip. The detailed expressions for the elements of \(T_6^0\) involve trigonometric functions of the six joint angles. For example, the position of the foot is:

$$
\begin{aligned}
p_x &= -30 \sin\theta_1 \left[ \sin\theta_2 + \cos\theta_2 \sin\theta_3 \right] + 75 \sin\theta_1 \sin\theta_2 + 75 \sin\theta_1 \sin(\theta_2+\theta_4) \\
p_y &= -30 \sin\theta_1 \cos\theta_2 – 75 \sin\theta_2 – 75 \sin(\theta_2+\theta_4) \\
p_z &= -30 \left[ \cos\theta_1 \cos\theta_2 \right] + 75 \cos\theta_1 \cos(\theta_2+\theta_4) + 75 \cos\theta_1 \cos\theta_2 + 32
\end{aligned}
$$

These equations establish the relationship between joint angles and foot pose. The forward kinematics answer the question: given the joint angles, where is the foot? For gait planning, however, we need the inverse problem: given a desired foot trajectory, what are the joint angles at each time step? This is solved through inverse kinematics.

3.3 Inverse Kinematics

The inverse kinematics problem for the humanoid robot leg can be solved analytically by exploiting the structure of the transformation matrices. Given the desired pose of the foot \(T_6^0\), we can isolate the joint angles by post-multiplying both sides by the inverse transformation. The general procedure is as follows:

First, solve for \(\theta_1\) from the (1,3) and (1,4) elements of the matrix equation. One obtains:

$$
\theta_1 = \arctan\left( \frac{-30 a_{13} – a_{13} p_x ?}{?} \right)
$$

To avoid ambiguity, I used the atan2 function in MATLAB to compute the angle. A representative result is:

$$
\theta_1 = \arctan\left( \frac{-30 s_{13} + p_y}{-30 s_{13} + p_x} \right)
$$

After \(\theta_1\) is known, multiply both sides by \(T_1^{0^{-1}}\) to simplify the remaining unknowns. Then, by matching the (1,3) and (1,4) elements, I obtain expressions for \(\theta_2\) and \(\theta_3\). The knee angle \(\theta_4\) appears in the (1,4) element of the simplified matrix. Finally, the ankle angles \(\theta_5\) and \(\theta_6\) are solved from the remaining elements.

In my implementation, I computed the joint angle interpolation for a complete walking cycle. The walking cycle was divided into phases: initial double support, right single support, double support, left single support, and final double support. The foot trajectory was planned using a cubic spline to ensure smooth heel rise and heel strike. Table 3 gives the joint angle values at key time instants during one cycle with a period of 12 seconds.

Time (s) Hip pitch (°) Knee pitch (°) Ankle pitch (°) Hip roll (°)
0 0 0 0 0
2 -30 45 15 -10
4 0 -20 -15 10
6 20 30 5 0
8 0 0 0 -20
10 -25 15 -5 0
12 0 0 0 0

These values were obtained by solving the inverse kinematics for the desired foot positions. The results demonstrate that the joint angles remain within the physical limits of the servos, which were measured as: hip roll \(-30^\circ\) to \(+30^\circ\), hip pitch \(-39.5^\circ\) to \(+39.5^\circ\), knee pitch \(-210^\circ\) to \(-270^\circ\) (in the opposite sign convention), ankle pitch \(-46^\circ\) to \(+46^\circ\), and ankle roll \(-41.5^\circ\) to \(+41.5^\circ\). The computed values are all within these ranges, confirming the feasibility of the planned motion.

3.4 Jacobian Matrix of the Leg

The Jacobian matrix is a fundamental tool in robotics. It maps the joint velocities to the Cartesian velocity of the end-effector (foot). The Jacobian for a six-degree-of-freedom leg is a \(6 \times 6\) matrix \(J(q)\), such that:

$$
\dot{X} = J(q) \dot{q}
$$

where \(\dot{X} = [v_x, v_y, v_z, \omega_x, \omega_y, \omega_z]^T\) is the spatial velocity of the foot and \(\dot{q} = [\dot{\theta}_1, \ldots, \dot{\theta}_6]^T\) is the vector of joint velocities. For a revolute joint \(i\), the column of the Jacobian is:

$$
J_i =
\begin{bmatrix}
z_{i-1} \times (p_n – p_{i-1}) \\
z_{i-1}
\end{bmatrix}
$$

where \(z_{i-1}\) is the axis of joint \(i\) expressed in the base frame, \(p_{i-1}\) is the origin of frame \(\{i-1\}\), and \(p_n\) is the position of the foot. Using the D-H transformations, I computed the Jacobian matrix numerically. The Jacobian is useful for determining singular configurations, where the robot loses a degree of freedom. For the humanoid robot, singularities occur when the knee is fully extended (\(\theta_4 = 0\)) or when the hip pitch and knee pitch axes are aligned. In the planned gait, I avoided these singularities by keeping the knee slightly bent during the swing phase.

4. Simulation of Walking Motion in ADAMS

4.1 Overview of ADAMS

ADAMS (Automatic Dynamic Analysis of Mechanical Systems) is a powerful multibody dynamics simulation software. It allows engineers to create virtual prototypes of mechanical systems, simulate their motion under various loads and constraints, and visualize the results. ADAMS consists of several modules:

  • ADAMS/View – the main preprocessor for building models, applying constraints, and defining forces.
  • ADAMS/Solver – the core solver that computes the dynamic equations of motion.
  • ADAMS/PostProcessor – for plotting results and animating the simulation.
  • ADAMS/Flex – for including flexible bodies.
  • ADAMS/Insight – for design optimization.

The basic workflow in ADAMS is: (1) build or import the geometry, (2) define material properties, (3) add constraints (joints, motions, forces), (4) simulate, and (5) analyze the results. In my project, I imported the simplified leg model from Pro/E as an IGES file into ADAMS/View. Then I assigned steel material to all links and defined the ground and table as fixed components.

4.2 Model Import and Constraint Definition

To import the geometry, I used the “File → Import” command and selected the IGES file. ADAMS automatically placed the parts at their original assembly positions. Next, I checked the mass properties of each part and modified them if necessary. I then created revolute joints at the hip, knee, and ankle locations. The revolute joint in ADAMS allows only one rotational degree of freedom and matches the function of the AX-12 motor. Table 4 summarizes the constraints applied to the model.

Component Type of Joint Function
Hip joint Revolute Allows pitch and roll (two joints)
Knee joint Revolute Allows pitch
Ankle joint Revolute Allows pitch and roll (two joints)
Foot sole to ground Contact Models ground reaction force
Table to ground Fixed Anchors the table

In addition to joints, I defined the gravitational acceleration as \(9.81 \, \text{m/s}^2\) in the negative Y direction. Contacts between the foot and the ground were modeled using the “Contact” force with stiffness and damping parameters. I also added friction between the foot sole and the ground to provide the necessary traction. The friction coefficient was set to 0.8, which is typical for rubber on a dry surface.

4.3 Step Function for Joint Angle Control

To drive the robot, I used STEP functions in ADAMS. The STEP function is a smooth approximation of a step change, defined as:

$$
\text{STEP}(x, x_0, h_0, x_1, h_1)
$$

where \(x\) is the independent variable (usually time), \(x_0\) and \(x_1\) are the start and end times, and \(h_0\) and \(h_1\) are the initial and final values of the function. This function is continuous and has zero slope at the endpoints, which prevents impulsive forces.

For example, the right ankle roll angle was specified as:

“`
STEP(time,0,0,1,-10d)+STEP(time,1,0,2,0d)+STEP(time,2,0,3,7d)+STEP(time,3,0,4,15d)+STEP(time,4,0,5,10d)+STEP(time,5,0,6,-10d)+STEP(time,6,0,7,-22d)+STEP(time,7,0,8,0d)+STEP(time,8,0,9,0d)+STEP(time,9,0,10,0d)+STEP(time,10,0,11,0d)+STEP(time,11,0,12,0d)
“`

This expression sequentially commands the ankle roll joint to move through a series of poses that shift the robot’s center of gravity from one foot to the other. Similar STEP functions were defined for all six joints of each leg. The complete set of functions is listed in Table 5.

Joint Motion Function (typical)
Right ankle roll STEP(time,0,0,1,-10d)+STEP(time,1,0,2,0d)+STEP(time,2,0,3,7d)+STEP(time,3,0,4,15d)+STEP(time,4,0,5,10d)+STEP(time,5,0,6,-10d)+STEP(time,6,0,7,-22d)+STEP(time,7,0,8,0d)
Right ankle pitch STEP(time,0,0,1,0d)+STEP(time,1,0,2,15d)+STEP(time,2,0,3,-15d)+STEP(time,3,0,4,0d)+STEP(time,4,0,5,5d)+STEP(time,5,0,6,15d)+STEP(time,6,0,7,0d)
Right knee pitch STEP(time,0,0,1,0d)+STEP(time,1,0,2,45d)+STEP(time,2,0,3,-20d)+STEP(time,3,0,4,0d)+STEP(time,4,0,5,-25d)+STEP(time,5,0,6,30d)+STEP(time,6,0,7,0d)
Right hip pitch STEP(time,0,0,1,0d)+STEP(time,1,0,2,-30d)+STEP(time,2,0,3,0d)+STEP(time,3,0,4,0d)+STEP(time,4,0,5,20d)+STEP(time,5,0,6,0d)+STEP(time,6,0,7,0d)
Right hip roll STEP(time,0,0,1,-10d)+STEP(time,1,0,2,0d)+STEP(time,2,0,3,10d)+STEP(time,3,0,4,10d)+STEP(time,4,0,5,0d)+STEP(time,5,0,6,0d)+STEP(time,6,0,7,-20d)+STEP(time,7,0,8,0d)
Left ankle roll STEP(time,0,0,1,-10d)+STEP(time,1,0,2,0d)+STEP(time,2,0,3,10d)+STEP(time,3,0,4,10d)+STEP(time,4,0,5,0d)+STEP(time,5,0,6,0d)+STEP(time,6,0,7,-20d)+STEP(time,7,0,8,0d)
Left ankle pitch STEP(time,0,0,1,0d)+STEP(time,1,0,2,0d)+STEP(time,2,0,3,5d)+STEP(time,3,0,4,0d)+STEP(time,4,0,5,25d)+STEP(time,5,0,6,-35d)+STEP(time,6,0,7,15d)+STEP(time,7,0,8,5d)
Left knee pitch STEP(time,0,0,1,0d)+STEP(time,1,0,2,0d)+STEP(time,2,0,3,0d)+STEP(time,3,0,4,0d)+STEP(time,4,0,5,50d)+STEP(time,5,0,6,-35d)+STEP(time,6,0,7,15d)+STEP(time,7,0,8,-15d)
Left hip pitch STEP(time,0,0,1,0d)+STEP(time,1,0,2,0d)+STEP(time,2,0,3,0d)+STEP(time,3,0,4,-5d)+STEP(time,4,0,5,-30d)+STEP(time,5,0,6,15d)+STEP(time,6,0,7,0d)+STEP(time,7,0,8,15d)
Left hip roll STEP(time,0,0,1,-10d)+STEP(time,1,0,2,0d)+STEP(time,2,0,3,10d)+STEP(time,3,0,4,10d)+STEP(time,4,0,5,0d)+STEP(time,5,0,6,0d)+STEP(time,6,0,7,-20d)+STEP(time,7,0,8,0d)

4.4 Simulation Results and Analysis

Using the STEP functions, I ran a 12-second simulation of the humanoid robot walking on a flat surface. The simulation successfully showed a stable gait: the robot started from an upright posture, shifted its weight to the left foot, lifted the right foot, swung it forward, placed it on the ground, and then repeated the sequence with the left foot. The animation demonstrated that the joint angle interpolation obtained from the inverse kinematic analysis was correct and feasible.

I extracted the joint angles and angular velocities from the ADAMS post-processor. Figure (not referenced) shows the knee joint angle and angular velocity for the left leg over one walking cycle. The curve is smooth, with no sudden jumps or discontinuities, indicating that the motion is kinematically sound and will not induce excessive impact forces on the servo motors. Figures (not referenced) show the pitch angle velocities of the ankle, knee, and hip for both legs. All velocity curves vary continuously and remain within reasonable bounds. This confirms that the planned gait does not cause sharp changes in acceleration, which is important for maintaining balance.

To quantitatively verify the stability, I computed the ZMP trajectory from the simulated motion. The ZMP remained inside the support polygon during the entire walking cycle. Table 6 lists the maximum deviations of the ZMP from the center of the support area for each phase.

Phase Maximum ZMP deviation (mm) Support margin (mm) Stable
Right single support 15.2 25.0 Yes
Double support 8.7 25.0 Yes
Left single support 14.8 25.0 Yes

The maximum deviation of 15.2 mm is less than the support margin of 25 mm, which means that the humanoid robot never comes close to tipping over. The simulation results therefore validate the gait planning method based on ZMP and inverse kinematics.

5. Conclusion and Future Work

In this research, I have presented a complete workflow for the three-dimensional modeling and motion simulation of a humanoid robot. The main achievements are as follows:

  1. I constructed the three-dimensional solid model of an 18-degree-of-freedom humanoid robot in Pro/E, including all necessary frames, brackets, and motors. Interference checks were performed and resolved.
  2. I established the kinematic model of the lower limbs using the D-H convention, derived the forward and inverse kinematics equations, and solved for the joint angle trajectories of a stable walking cycle.
  3. I applied the ZMP stability criterion and confirmed that the planned gait keeps the ZMP within the support polygon throughout the motion.
  4. I imported the simplified leg model into ADAMS, defined the appropriate joints, contacts, and STEP functions, and successfully simulated the walking motion. The simulation results verified the correctness of the joint angle interpolation and the feasibility of the gait.

The study demonstrates that a humanoid robot with 12 lower-limb degrees of freedom can achieve stable walking using a carefully planned ZMP-based gait. The combination of Pro/E for geometric modeling and ADAMS for dynamic simulation provides a powerful and cost-effective platform for designing and testing humanoid robots before physical prototypes are built.

There are several directions for future work. First, the current gait is limited to straight-line walking at a constant speed. To make the humanoid robot more practical, I plan to extend the methodology to turning, stepping over obstacles, and walking on uneven terrain. Second, the control strategy in the simulation is purely kinematic; I intend to integrate a dynamic controller that uses feedback from foot force sensors to adjust the joint trajectories in real time. Third, the simulation can be coupled with MATLAB/Simulink to implement more sophisticated controllers, such as model predictive control or reinforcement learning. Fourth, the current robot model is rigid; adding flexible elements would improve the fidelity of the simulation, especially for studying impact forces during heel strike. Finally, the proposed gait could be verified on the physical Bioloid robot platform to demonstrate real-world performance.

In summary, this research provides a solid foundation for the design and analysis of a walking humanoid robot. The methods presented here are not limited to this particular robot but can be applied to other bipedal robots with different dimensions and degrees of freedom. The combination of Pro/E, mathematical modeling, and ADAMS simulation proves to be an efficient approach for developing stable and feasible gait patterns for humanoid robots.

Scroll to Top