Concept Analysis
Initially we considered several different mechanical methods of producing walking motion. Although many different bipedal locomotion solutions exist, none of them are simple and extremely reliable. Our solution needed to provide a good combination of performance, reliability, and manufacturability.
Parallel 2DOF Mechanism
This concept uses a parallel 2-degree-of-freedom linkage to move a foot that stays parallel to the upper body but is free to move vertically and horizontally. The input to this linkage is two push-rods that could be controlled with a simple cam mechanism. It could produce any desired trajectory within its range of motion. A separate mechanism would be required for moving the robot's center of gravity. We abandoned this concept because of concerns about its structural stiffness and overall reliability.
Cable-Driven Mechanism
This concept uses full humanoid 5DOF legs, with joints driven individually by cables powered by a cam mechanism in the torso. This arrangement could be simplified by coupling the ankle roll to the pelvis roll and the ankle pitch to the pelvis pitch, decreasing our system to 3 independent DOFs per leg. It also has the added benefit that abduction/adduction of the leg enables this mechanism to produce both locomotion and balancing. However, this is an extraordinarily complex mechanism and we did not believe we would be able to complete it in the time available.
Four-Bar 1DOF Mechanism
This concept uses two four-bar mechanisms to move a single-piece "leg". The mechanisms are arranged so that the vector connecting their outputs is constant, allowing the "leg" connected there to be a single rigid part. This mechanism appears to provide good structural stiffness and relatively low complexity. Although it has a large number of moving parts, it is essentially one four-bar mechanism repeated two times for each leg. A separate balancing mechanism is also required. We decided to proceed with this concept.
Leg Analysis
Our first goal was optimizing our mechanism to produce the desired gait-cycle motion. The desired output, a simplified approximation of a natural bipedal walking gait, would be a smooth semicircle motion at the foot. Because our selected mechanism is a standard four-bar linkage, analytical analysis is fairly trivial. A simple vector loop analysis will give us our desired positions, velocities, and accelerations. However, the quantity of information we need for our design process would be difficult to derive using pencil and paper, so we quickly switched to numerical methods.
Position
We started with a standard four-bar linkage with an extension of the coupling bar. Drawing the mechanism's range of motion using our MATLAB script (drawFourBar.m), we manually optimized our link lengths to produce the desired semicircular output.
We soon produced the mechanism shown below, where a simple rotating circular input (red) produces a semicircular output with a flat floor (blue). Note that the mechanism drawn here is upside down with respect to how it would be installed in the robot. Soon after, we discovered that Chebyshev's Lambda Mechanism was almost identical to our manually optimized solution. It was the analytical equivalent to our empirical solution.
Ground | 5.5 | 5.4932 (7(5-√(7))/3) |
Input | 2.5 | 2.4797 (7(3-√(7))) |
Coupler | 7 | 7 |
Coupler Extension | 7 | 7 |
Output | 7 | 7 |
Velocity and Acceleration
We modified our MATLAB script to produce velocity and acceleration by differentiating position, enabling us to plot output position, velocity, and acceleration as a function of input position (mechanismAnalysis.m).
As expected, we see that during the center half of its range of motion our mechanism's output features a smooth, linear x velocity and a relatively constant y position, exactly what our robot needs. However, this data represents the motion of a single mechanism, whereas our robot contains four parallel mechanisms, two or four of which are in contact with the ground at a given point in time. Therefore, a more meaningful analysis would be a piece-wise combination of these plots.
We modify our MATLAB script again (robotAnalysis.m). Assuming that only the lower leg is in contact with the ground, our robot's position, velocity, and acceleration are functions of the lower leg only. (Keep in mind that these drawings show our mechanism upside down, so the "lower" leg is the one with the higher y position value.)
If we place two legs 180º apart and display only the grounded leg ... | we see that our x position is continuously linearly increasing and our y height remains approximately constant, ... | our x velocity is a relatively constant positive value and our y velocity is approximately zero, and ... | our x and y accelerations are always close to zero. (Note that the magnitudes for acceleration are tiny.) |
All of these features fit our robot's needs perfectly. Our combination of mechanisms produces near-constant forward motion at a near-constant vertical height.
Counterweight Analysis
Our balancing system will use a counterweight, moving it periodically to keep it above our robot's support polygon, which is the smallest convex shape containing all of the points at which the robot contacts the ground.
C. Tunca, N. Pehlivan, N. Ak, B. Arnrich, G. Salur, and C. Ersoy, “Inertial Sensor-Based Robust Gait Analysis in Non-Hospital Settings for Neurological Disorders,” Sensors, vol. 17, no. 4, p. 825, Apr. 2017. |
Our weight needs to rest over the grounded foot throughout the swing phase, then switch quickly to the landing foot during the double support phase. As our position analysis shows, this double support phase is only about 10º wide. If our robot walks at one step every two seconds, that means our counterweight has to shift in a fraction of a second.