Open Innovation (T3)

Today, I continued my work on trying to figure out the Arduino Code used to control the stepper motors. I decided to focus on making the motors move to a certain specific angle first before proceeding to making them repeat a swinging motion. After some research online, I found a code on the Adafruit forum that could in theory work with stepper motors. However, I soon found out that it was incompatible with motor shields, and I was forced to look for alternatives.

In the meantime, I decided to work on the feet for my robot. I refined the design I made before Thanksgiving break and printed it out for testing. Experimentation on the prototype foot proved that it would work in the leg setup. The question remains, however, about whether I should put 1 spring instead of two, as the foot seems to be very stiff when I tried to displace it when attached to the springs. In my opinion, the setup is fine as it is right now, as the weight of my robot, estimated at 2kg, would be enough to put the foot on a horizontal position, which would maximize the surface in contact with the ground.

Tomorrow, I plan on consulting Asli about controlling the stepper motor and while also making progress on testing the foot.

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.

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.

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.

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 

11/06/18: Second prototype

Zongxi Huang

In today's class, I followed the advice of my Nuvu coaches and made more extensive research on stepper motors. First, I searched for lighter versions of the stepper motors that could still provide me with enough power to move my robot. When I found out that a stepper motor (42x38cm) could lift up to 2.4 kg of weight (see video below) and could lock itself in place better than the servos, I was convinced that they would be well fitted for what I want to accomplish.  Among the stepper motors I found, I chose to use the NEMA 17 model that weight 285 grams.

Next, I enlarged the leg dimensions from 8.5cm to 10cm to create a bigger robot meant to accommodate the larger stepper motors. I also decided to change the building material for the legs from wood to acrylic. I found out that metal screws wore wood very quickly, which meant that screw holes that were meant to fit the screw would be expanded, hence creating space for the screws to wobble.

Next class, I plan on studying how to control stepper motors efficiently while I wait for the motors to arrive. I also plan on assembling more legs in advance to save time.




- About stepper motors and other types of propulsion: https://www.hackster.io/taifur/complete-motor-guide-for-robotics-05d998

- On the capabilities of the stepper motor:

https://www.youtube.com/watch?v=kFzrrzmT_LY

midterm presentation

Aryana Moghadasi