Requirements
Concept Analysis
Initially we considered several different methods of producing walking motion. Although many different bipedal locomotion solutions exist, none of them are simple or 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 discarded this concept because of concerns about its structural stiffness and overall reliability.
Cable-Driven Mechanism
This concept uses full humanoid 5DOF legs, with every joint driven 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 challenge was making a mechanism that was capable of making a smooth, gait cycle motion. We wanted to start with a four bar mechanism and the ideal driving input as a crank because coordinating both legs with a single motor was going to be a second challenge. The desired output, designed to match the flat portion of the stance phase of the human gait cycle would be a smooth semicircle motion at the foot.
Because our 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). 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. Once the kinematics gave us the optimal dimensions and design for the mechanism, we were able to flip the mechanism upright and attach multiple mechanisms to drive the output links (feet).
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 output, 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 an almost 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.