26/11/2018: FIRST CODE BREAKTHROUGH

Zongxi Huang

In today's class time, I focused on creating a test code to control the stepper motors that just arrived. After looking up several sources online, I decided to try the Arduino codes from some of the tutorials. However, most of them were unfortunately incompatible with my Arduino motor shield setup. As a result, I was initially unable to test the quality of the new stepper motors. However, after much revision, I decided to try the example code once more. This time, I changed the way with which the wires were connected to the motor shield and I managed to make the motors turn after uploading the code to the Arduino. 

I then proceeded to start experimenting with the code to control the motor to create a swinging motion of around 45 degrees. After making adjustments to the speed, the orientation of the spin and the amount of steps the motor would make, I was able to create a one way motion with pauses. However, I was unable to control the motors to produce a swinging motion. 

Next class, I plan on exploring how to improve my code so that I can control the motors to create the swinging motion. Once this is done, I would mount the leg onto the motor shaft and start adjusting the movement for the leg



Video: 

https://drive.google.com/file/d/1W5lLFxouEPjY4InxUjW2BoAOag4OAzNy/view?usp=sharing

https://drive.google.com/open?id=1KcQkIARnnfevxRrDhvMMHtZ8rWWjttDk


11/16/18: Coding and designing the feet

Zongxi Huang

In today's class, I worked on coding for the stepper motor and on the foot design of the robot. I first tried to use the example codes in the Arduino system to control the stepper motor. However, my attempts to do so with the motor shield setup proved to be unsuccessful and, due to a lack of time, I was forced to abandon further testing of the code. I instead made more research on alternative ways to control the stepper motor, mainly through an online electronic diagram website I found online called_. 

In between periods of waiting for the code to compile and upload to the Arduino, I also worked on a foot design for my robot. It is meant to improve the walking efficiency of my robot and to absorb the weight of the robot when it lands after a jump. I have considered using a ball joint to link the leg to the foot, but I determined that this would be unnecessary for the moment, as the leg would not be subject to uneven terrain with great variation in height. The leg would be attached to two springs that lower the foot to the ground. In a situation where no weight is bearing on the leg, only the "toes" of the foot should be in contact with the ground. It would gradually straighten itself horizontally once weight is put onto the leg. When the leg is lifting up and in the process of being brought back forward, the foot would push the robot forward, which would help the robot to walk. 

After Thanksgiving break, I plan on continuing to experiment with codes. I also plan to print out the foot for further testing of its functionality. 

11/15/18: First *official* prototype

Zongxi Huang
1 / 9

Today, I worked on figuring out how to use the Arduino motor shield to control stepper motors and on the assembly of the first (official) leg prototype. I also worked on designing the feet for my walking robot. 

During the morning period, I used one of the sites I found to create the code for controlling the stepper motor using the Arduino motor shield. I succeeded in recreating the code and in uploading it to the Arduino. However, after plugging in the power source, I found out that it did not work. I tried to fix it, but my efforts availed to little results. 

While waiting for help, I worked on assembling the prototype leg for testing. This went rather well, as each piece fitted mostly where I wanted. For now, I used metal screws to put the leg together, but in the future, I plan on replacing them with nylon plastic screws. 

I also worked on the design for the feet of the robot. After assembling the prototype leg, I figured out where to attach the springs, which would work as both shock absorbers as well as components of the walking motion. 

In the end, I decided to figure out how to control the motors tomorrow. Once that is achieved, I would build a test rig and start adjusting the motion of the stepper motors to create a walking motion. Then, I would build another leg to figure out the overall walking pattern. Finally, I would work on the stair climbing and jumping part of the project.

Today, I worked according to the plan I laid out on Monday. First, I looked up and studied how to use the Raspberry Pi to to control motors. I went on the GitHub Website to create an account and start coding for the Raspberry Pi. Then, I followed the website's instructions to create and upload the code to GitHub for transfer to the Raspberry Pi. 

In the afternoon, I worked on designing the rear legs that are meant to be different from the front legs. While the front legs had 2 stepper motors, the rear legs would have only 1 stepper motor. This is done to lighten the overall weight of the robot and to reduce the problems that may arise from an overly complex machine. However, due to the fact that I had to leave for my A-team meet, I was unable to complete the design. 

Tomorrow, I will deliver my mid term presentations and continue work on learning how to code on the Raspberry Pi microprocessor.

Today, I worked on continuing to print the leg pieces for my robot. While there were some minor setbacks in the process, as one of my attempts to print all pieces of a single leg at the same time failed, I managed to print the pieces of a second leg. To solve the issue where the printing material failed to stick to the surface of the 3D printer, I let the machine cool off before restarting it for printing. To avoid further complications caused by the premature cooling of the pieces in the printing process, I chose to print the legs by sets of 2-3 instead of all of them together in a single file. 

I also discussed with Asli about how the stepper motors were going to be controlled. Due to the fact that the raspberry Pi was only shown from my research to be able to handle at most 6 stepper motors, I decided to change the design of the rear legs. While the front legs would retain my original design, the rear legs would have a much simpler layout (with only 1 stepper motor per leg).

After meeting with Tim, I listed a number of things I need to do before using the Raspberry Pi to control my legs. First, I plan on learning how to code a Raspberry Pi through a RC car mini project. Then I would learn how to connect and code the stepper motor controllers. Once this is done, I would need to test my legs on a testing rig, where I would figure out how the legs would move and how they would do so in accordance to other legs. Finally, I would assemble the whole robot.

Next class, I plan on starting on the RC car mini project. I would also be working on the design of new rear legs.

11/05/18: redesigning

Zongxi Huang

Today, I tested the viability of my first leg design. The results showed me that further improvements have to be made, as it had flaws in the motion of the leg. I changed the layout of the leg by adding an extra linkage, but that cause further issues, as the extra linkage cause the leg to become loose, which meant it could no longer stand. I returned to the simpler design I used earlier and locked both servos in place. In doing so, the leg could now imitate a walking motion. However, despite the improvements I implemented, the servos were simply too weak to hold the weight of the robot. As such, I plan on switching to stepper motors and enlarging the seize of the my robot. Tonight, I will make some research on the type of stepper motor I will be using 

leg and body 1627.jpg
leg and body626.jpg

This week, I worked on the planning and designing phase of my new walking robot project. After analyzing the previous iteration I made, I decided that a new design was required to achieve my new objectives. The walking robot I built in my Junior year was simply too restricted in its capabilities. Due to the use of gears and fixed motion legs, the robot did not possess the ability to do much else other than walking. Furthermore, the design was flawed in the sense that its main body was rather weak. With the new robot I am currently working on, the heavy metal motors would be replaced with other methods of propulsion. The legs would be able to be lifted higher of lower depending on the situation. 

I started work on this new project by making some research on specific types of linear drives that would create the walking motion. Though hydraulic cylinders seemed promising, the size that is required to make them work was simply too large to fit on the robot I want to build. The second option was to use pneumatic pumps to propel the legs, but I found it to be quite cumbersome and hard to control. Linear actuators were also considered, but their price limited the number I could use for my project.

In the end, I decided to rely on servos for my new walking robot. They were much lighter than the metal motors and could be controlled with greater precision. Though they may not move fast enough to make my robot run, they can achieve my goal of making it climb. 

Next, I started to work on the design of the legs and body. I drew two separate sketches of the robot and translated the design into Rhino. I printed a leg and test it to make sure it worked as intended. 

Next week, I plan on finishing testing and work on improving the existing design. I will then be moving on to assembly. After the building phase is completed, I will start coding the servos to allow my robot to walk and, hopefully, climb stairs.

During today's class, I worked on improving and finalizing the design of the legs of my walker robot. To ensure that the legs would be strong enough to hold the weight of the robot (around 950 grams and no more than 1 kg), I decided to use a multilayered leg design. The leg now consists of two separate upper leg  (most likely made of thick material around 5-6mm thick) and 3 separate lower legs (made of thinner materials around 3-4mm thick). I also doubled the amount of linkage for the leg to further reinforce its overall integrity. 

I cut out a wooden mockup of the whole to test out its functionality. Testing showed that the design was viable and I proceeded to build the actual leg in preparation for the arrival of the stepper motors 

After much reflection last night, I decided to try to print my legs using the 3D printer. I chose to do so because this building method provided me with a hard and wear resistant material. However, one of the 3D printers did not operate correctly and I was unable to print out the lower legs. Nonetheless, I believe that 3D printing the legs will provide me with the best legs I could build with the materials available to me. 

In the meantime, I made further research on how to control stepper motors. While discussing with Asli, I learned that I should use the Raspberry Pi microprocessor instead of the Arduino Uno. For most of the day, I was perplexed at how I could link all 8 stepper motors to the Raspberry Pi to control them and provide power for them. After a long time looking online, I found a link that could provide me with some insight of how I could control all 8 of the stepper motors. 

Link: https://www.instructables.com/id/Raspberry-Pi-CNC-Hat-Controlled-CDROM-Stepper-Moto/

Next week, I plan on learning more on how to control the stepper motors. If the motors I ordered arrive next week, then I will proceed to assemble the whole robot first before moving on to the coding. For the body, I plan on using thin wood to create boards for the motors. The whole robot would be assembled using metal screws to ensure structure integrity 

Video

Zongxi Huang

Goal for this term

Zongxi Huang

In term three, I plan on working on a more advanced model of my walking robot. The idea behind it is that it can be used on search and rescue missions. It would be able to reach places where conventional vehicles cannot go. To do so, I plan on making my robot be able to not only walk, but also climb stairs or other steep surfaces. Once this goal is achieved, I plan on implementing an autonomous navigation system for the robot. It would have the ability to identify a target and navigate its way to its destination. 

Through this project, I hope to gain more insight in more precise and controlled leg movement. I also want to learn more about autonomous robots and how they can move from one location to another without the need of a human controlling it.

The first phase of my project consists of building a prototype of the leg and adjusting its walking motion first. I will then work on the body and the whole robot in a later term.