<br> #### Final Project: Wearable Walking Robot Prototype <p> <center> <iframe width="560" height="315" src="https://www.youtube.com/embed/WS0s2y0f8gM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> </center> </p> <h4>Inspiration and Project Goal:</h4> <p> For my final project, my objective was to design a machine that assisted my mom in her daily life. My mom has a disease called Multiple Sclerosis. This autoimmune disease targets her cognitive abilities and nervous system. It is unpredictable and has the potential to render her immobile. When starting on my final project, I realized I was not able to address her cognitive concerns, but I could develop a prototype walking device that may potentially enhance her mobility for years to come. </p> <p> Throughout development, my focus mainly rested on the mechanics of the legs. The primary goal of the project was to construct a pair of synchronized legs that would seamlessly work together to create forward movement. </p> <p> <h4>Materials:</h4> <ul> <li>3D-Printed Braces </li> <li>Arduino Uno and Wiring</li> <li>4 Servo Motors</li> <li>5V Power Supply</li> <li>5 Aluminum Extrusion Rails for Frame</li> </ul> </p> <p> <h4>Tools and Techniques:</h4> <ul> <li>3D Modeling & Printing </li> <li>Microcontroller Programming (Arduino)</li> <li>Electronic Inputs & Outputs</li> <li>Hand Tools</li> </ul> </p> <h4>Prototypes:</h4> <p> In the sixth week of the course, I started prototyping ideas for the mechanics of the walking device. I originally started with four Nema17 Stepper Motors connected to an ESP32. I attached the motors to a 5V power source and wrote code for all four motors to run simultaneously. Watching the motors run, I quickly became skeptical about whether the motors would be able to create enough torque to move my design. After attaching 3D-printed braces onto the stepper motors, I realized my hypothesis was correct. The stepper motors were only strong enough to rotate the braces a total of 30 degrees, which is much narrower than my required range of motion of 0 to 180 degrees. Even after the addition of a 3D-printed gearbox, the steppers physically could not create the required torque. Eventually, I had to completely scrap this design and start anew. </p> <p> <img src=../pictures2/pp1.png height="318"> <img src=../pictures2/pp2.png height="318"> <img src=../pictures2/pp3.png height="318"> <img src=../pictures2/pp4.png height="318"> <img src=../pictures2/pt1.png height="318"> <img src=../pictures2/pt2.png height="318"> <img src=../pictures2/pt3.png height="318"> <img src=../pictures2/prototype1.png height="318"> </p> <p> <video height="380" controls> <source src="../pictures2/prototype1.mov" type="video/mp4"> </video> </p> <p> After starting over, I researched simple mechanics and other motor types. I came up with the idea of utilizing two, side-by-side servo motors for each leg to control both hip and knee functions in a separate, synchronized fashion to properly emulate ambulation. After calculating the desired femur: tibia length ratio, I 3D modeled the separate mechanical pieces for the design using Fusion 360. Between designing and printing, the 3D modeling process took around 4 days to complete, but it was well worth it! When the 3D-printing was complete, I assembled the separate pieces using screws of different lengths. Next, I attached the servo motors with gears into the square cut-outs on the base. After, I secured the motors by screwing them down, I decided my prototype needed a frame to stand up. In a cabinet in the lab, I located several metal extrusions and brackets, and I pieced them together creating a sturdy base. Once all the pieces were assembled correctly, I was very pleased with the outcome, and I then proceeded to calibrate the hip and knee’s functional angles.</p> <p> <a download href='../pictures2/Robot_Legs.f3d'>Download my Robotic Legs f3d file!</a> </p> <p> <img src=../pictures2/po1.png height="318"> <img src=../pictures2/po2.png height="318"> <img src=../pictures2/po3.png height="318"> <img src=../pictures2/po4.png height="318"> <img src=../pictures2/po5.png height="318"> <img src=../pictures2/po6.png height="318"> <img src=../pictures2/po7.png height="318"> </p> <h4>Angles and Calibration:</h4> <p> To begin the calibration process, I took video and pictures of my friend walking, with her permission, to understand the basic angles in each step. While looking though the images, I was able to narrow down each step into four main parts: the leg lift, the placing of the foot, the push forward against the ground, and the lift for the next step. I then narrowed my images down to four pictures, each representing a single part of the desired motion. Digitally drawing on the photos allowed me to easily measure the angles of both hip and knee joints as seen in the example photo below. </p> <img src=../pictures2/angles1.png height="318"> <img src=../pictures2/angles2.png height="318"> <p> After determining the average angle in each step, I applied the measurements to my 3D-printed legs, carefully moving the hip and knee joints to replicate the human walk. Again, I recorded each angle’s measurement and adjusted the angles as needed. </p> <p> <img src=../pictures2/cal.png height="318"> </p> <h4>Code:</h4> <p> Once I had measured, and remeasured, each position, I wrote a code in Arduino that could move servo motors 1, 2, 3, and 4 simultaneously, creating the walking motion. Thankfully, before running the code I realized that I would have to run each motor separately because corresponding motors were facing opposite directions. Therefore, if the left knee joint was at 0 degrees, the right knee would be at 180 degrees, or if the left hip was at 120 degrees, the right hip would be 60 degrees. After writing the angles of each into my code, I added in Delay functions to slow the motion down. This allowed me to check to see if the legs were hitting each position correctly. </p> <p> <video height="380" controls> <source src="../pictures2/1leg_mov.MOV" type="video/mp4"> </video> <video height="380" controls> <source src="../pictures2/1leg_move2.MOV" type="video/mp4"> </video> </p> <p> Running the code allowed me to see that instead of the legs taking one step at a time, both legs were moving together, creating a sort of jumping movement. I quickly realized my mistake and staggered the positions for each leg in my code. Now, when the left leg was at position 1, the right would be at position 3, and if the left was at position 2, the right was at position 4 and vice versa. The legs would cycle through each position, then loop back to the top, starting the motion over. </p> <p> <video height="380" controls> <source src="../pictures2/both1.MOV" type="video/mp4"> </video> <video height="380" controls> <source src="../pictures2/both2.MOV" type="video/mp4"> </video> <video height="380" controls> <source src="../pictures2/both4.MOV" type="video/mp4"> </video> <video height="380" controls> <source src="../pictures2/both5.MOV" type="video/mp4"> </video> </p> <pre><code class="language-arduino"> #include <Servo.h> Servo servo1; Servo servo2; Servo servo3; Servo servo4; void setup() { servo1.attach(3); servo2.attach(5); servo3.attach(6); servo4.attach(10); } void loop() { //step 1 servo1.write(0); servo2.write(90); servo3.write(145); servo4.write(125); delay(300); //step2 servo1.write(0); servo2.write(50); servo3.write(145); servo4.write(85); delay(300); //step3 servo1.write(40); servo2.write(35); servo3.write(75); servo4.write(180); delay(300); servo1.write(90); servo2.write(35); servo3.write(120); servo4.write(180); delay(300); } </code></pre> <h4>The Final Product:</h4> <p> Here is a video of my wearable walking robot prototype. </p> <p> <video height="380" controls> <source src="../pictures2/Final_legs.MOV" type="video/mp4"> </video> </p> <p> I plan to keep working on this prototype for many years to come. Ideally, this design will become available to all, whether they need it to aid in mobility, or possibly as a full prosthetic. In the meantime, while I pursue these advances, a patent is pending. </p>