19.4 - Implementation

Hardware

Through our prototypes and kinematic analysis, our team realized that we were not maximizing the angle at which our torsion spring was being displaced during the cam loading cycle. If we could take this into account, we would be able to more efficiently transmit force from our spring. With this in mind, we used MotionGen (screenshot of which is shown below) and varied the lengths of our existing linkage system to yield a transmission angle close to 180 degrees between the links attached to the torsion spring (L4 and L5 in the figure). 


This resulted in three potentially viable linkage configurations that would maximize spring displacement. After careful consideration, we opted to proceed with the leftmost design.




During the design process, we realized that we were not considering the bearing ratio of our sliding link and were risking experiencing severe binding in our system. We adjusted the design such that we would have a bearing ratio of 1.5, yielding a link that was significantly larger in size than before. The position of the bearings was determined based off the idea of minimizing the moment of the lower links without making the assembly bottom out before full input link actuation. We also specified a location for our motor mount at the center of the link, a decision that would be changed later on in order to better accommodate our final cam design.

       


Following this decision, we proceeded with the system's manufacture, opting for laser-cut 1/4-inch acrylic for the links. We used ball bearings and 8mm steel pins at the joints to assemble the system. These pins were cut from rod stock and trimmed to size using a Dremel or handsaw, and each joint was equipped with two bearings and laser-cut spacers as needed. We completed the assembly by mounting our spring.


Cam

We aimed for a cam design capable of inducing a transmission angle as close to 180 degrees as possible while swiftly retracting. Initially, we used a geometry based on the linear motion of the joint, crafted using Solidworks. However, this approach did not work. Instead, we adopted a more improvisational method, shrinking the geometry slightly, adjusting for the final length, and progressively increasing the curvature radius in the part file. Iterating through this process, we ensured constant contact in the assembly, refining the design until achieving a promising result, despite the unusual motion graph of the joint. Ultimately, we settled on a design and 3D printed approximately three iterations of the cam. Press fitting secured it to the motor during the final stages of system assembly.


Rails

The linear rail system was designed to constrain our mechanism to 1DOF. We used two 3-foot long 8mm rods from McMaster-Carr as our rails, initially planning to cut them down to a realistic size for our mechanism's jump height before deeming that decision unnecessary. In order to successfully ground our assembly, we needed to construct a sturdy frame that could hold our rails parallel to one another. Initially, our team was planning on building the rail framing assembly out of 1/4-inch laser-cut wood, but we were able to get access to 80/20 aluminum extrusion from the lab of one of our group members. Therefore, we were able to build a significantly studier frame that would be able to easily accommodate the full length of the rails. We did continue to use a wood base, as it allowed for a smooth, uninterrupted surface for the mechanism to jump on; this was manually cut and fit around the frame. The rails were attached to the frame using 3D-printed feet screwed onto the wood base and frame top. The rails were spaced evenly apart such that they lined up with the mounting positions on the mechanism and stayed in line with the 80/20.

 

Electronics

Motor, Arduino and Motor Driver

We used a DC motor, Arduino and motor driver to actuate the cam device to load the spring of our jumping mechanism.  We used an off-the-shelf Arduino Uno Rev3 microcontroller to implement our code, and we used a L298N Motor DC Dual H-Bridge Motor Driver Board to push computations from the Arduino to the motor.  For the motor, we used a Pololu 150:1 37D Metal Gearmotor as the actuator of our cam device. Being the strongest motor we could find with easy access and after performing some initial testing, we assumed that the gear-ratio of the motor was strong enough to drive the cam (smaller gear-ratios could not supply enough torque to load the spring).

Code

In Arduino, we wrote code to actuate the cam loading device.  Initially, the cam was placed at 0 degrees (defined to be horizontal with respect to ground).  Then, the Arduino code was programmed to rotate the motor (and cam) 180 degrees – effectively loading the spring and moving past the spring, allowing for the kicking and jumping motion of the mechanism.  Once rotated 180 degrees, the Arduino stops rotating the motor and waits a second.  Then, once the mechanism has jumped and landed, the Arduino begins to rotate the cam back to the zero position and the process repeats.  This looped-Arduino code allows for repeated loading and jumping.  The follow pseudo-code describes the loading process:


Initialize Constants

setup:

     Establish serial connection

     Set pin modes

loop:

     while position < 180 degrees

          Run motor CW

     Stop motor

     Wait 1 second

     while position < 360 degrees

          Run motor CW

     position = 0

Assembly, Initial Testing, and Troubleshooting

First, we started the assembly process by building the rail system. Following this, we attached 3d-printed linear bearing mounts in place.


Next, we mounted the pre-built linkage system onto the rails. After this, we attached the motor, with the cam being the final component to be mounted.

Our initial tests after assembly did not go successfully; we were not able to jump from either electronic actuation or hand actuation. Electronic actuation was limited by the torque of our motor; while our cam geometry was effective, our motor simply was not powerful enough to compress our spring without stalling. However, hand actuation was still a possibility. After some error analysis, we found that our sliding link was binding against the rails, our links were experiencing a large moment that was tilting our leg link, and our leg link was experiencing excessive friction at its base due to the contact of acrylic against wood. To fix these issues, we focused on increasing rigidity and decreasing friction of our system (shown in order in the images below):

  • We remounted the rails onto the frame in a way that was more parallel relative to the sliding link.
  • We attached a piece of spare acrylic to the base wood to serve as a guide for the leg link while also reducing the friction it would experience.
  • We introduced a ~1500g counterweight into our design to counter the increased weight of our assembly from design changes during manufacturing; this was a variant of a suggestion that we had received previously and worked to help keep our system performance more true to our initial analysis.
  • We used white lithium grease to lubricate the rails to reduce friction between the linear bearings and the rails.


These changes allowed our mechanism to jump with hand actuation.