I embarked on my Wall-E robot personal project to explore miniture robotics. Along the way, I discovered why many Wall-E recreaters don't include the facially simple shoulder movement which I find to be a salient feature of a lively and expressive Wall-E.
In the movie, Wall-E's shoulder moves along an L-shaped path on his side, and I think adds a lot to his expressiveness. In the early stages of this project, I decided this was one of the degrees of freedom I wanted to robotically articulate. Although this is a very simple mechanism for the movie's animators to create, they were not limited by the harsh realities of the physical world.
I quickly discovered that this motion was going to be the greatest challenge of the project, and most of my effort thus far has been to engineer a suitable solution.
In order to achieve the required motion, I determined that some sort of "cart" mechanism would be required. This cart would be able to move along an L-shaped track, and contain mechanisms for the shoulder to move in/out and up/down. Regardless of the specific mechanisms used for those shoulder motions, the cart would need to satisfy a few requirements:
My initial prototype utilized cheap v-bearings sitting with a track on either side, and the shoulder pivot going between the tracks, as pictured above. After 3d printing the components and doing preliminary testing, I determined that the v-bearings I purchased had an unacceptable amount of wobble to them, which prevented the cart from moving rigidly as intended. Furthermore, I realized that regardless of how much I spend on v-bearings, they would still have some amount of rotational play to them which would prevent the cart from running rigidly on the track without an additional restraint. Additionally, because the v-bearings took up so much space, it was not practical to have more than two (one front, one back) bearings on the cart, meaning that there was no way to ensure that the bearings have good contact all the time, and no way to create pressure on the rails.
To remedy this, I moved to a different design using small POM balls wedged between the tracks, acting as a much more compact version of the v-bearings which I could preload with springs and, importantly, include on the top and bottom of the cart (2 on the top, 2 on bottom). This design has a few advantages over the v-bearing design, including an easier-to-modify footprint, the option to preload the balls with springs to ensure good contact with the tracks, and better overall strength and rigidity because the bearings had very small inner diameters that were prone to breaking due to twisting loads, especially during assembly, and the ball bearings can be made to have as tight of a fit as I require, and don't depend on thin 3d prints for support.
After designing and prototyping design V2, I thought of a different design that would solve a few problems yet to be solved in V2. In V2, as the cart moves around the curved corner from top to bottom, the arm has to be rotated by the servo in the opposite direction, in order to remain in the same absolute orientation. Because of the limited performance and lack of planned closed-loop feedback on the angle, this would have posed a challenge on the software side. Additionally, I'm not very happy with the large corner radius required to fit the mechanism, which doesn't align with the sharp corner shown in the movie character.
The latest design uses two sets of straight rails, perpendicular to eachother, with each rail having its own "pusher" that interacts with the main shoulder-carrying cart. The shoulder's cart is locked into one pusher at a time, so that the up/down and forward/back motions are conducted by two different sets of actuators. While this does increase some of the complexity, it does allow the shoulder to move in a sharp corner motion, and eliminates the issue of coordinating the rotation of the arm with the position along a curved track.
In order to fit two rotational DOF into the small sholder joint (30mm diameter), and ensure the mechanism would fit between the narrow tracks, I originally went with a bowden cable and spring return mechanism. In this configuration, a cable would pull on the shoulder to swing the arm out like a t-pose, and when the cable is released, a torsion spring would return the arm to its more forward-facing position. While this design could have worked, the small scale and 3d printed parts meant that the arm didn't have the necessary swing range due to the spring inner diameter shrinking as it gets twisted (crushing a critical support), and the spring gave far too much resistance for the cheap servo to handle.
To get around these limitations, I redesigned the entire shoulder to utilize a bevel gear differential system. This combines the motion of two servos into the two motions the arm needs to conduct, which provides a few benefits. First, the combined torque of two servos is used to lift the arm up and down, which should theoretically improve the max weight capacity of the arm. Second, it means that there are zero parasitic forces (like a spring) requiring a constant torque to be provided by a servo other than the weight of the arm. This should improve the performance of the arm.
After testing with a purely 3d printed and high-surface-contact design, I determined that the friction within the system would significantly inhibit the ability for a servo to rotate the arm outward. To remedy this, I plan to replace much of the plastic-plastic contacts with metal ball bearings which have the potential to drastically reduce friction in the system, and allow all of the components to rotate freely.