Open Innovation (T3)

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/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 

FInal Presentation

Zongxi Huang

12/07/2018: Prototype finalized

Zongxi Huang

Today, I worked on finalizing the first phase of my project. First, I made simple adjustment in the code to correct mistakes I found during my testing yesterday. I also made a number of improvements, such as reducing the length of that the leg has to travel in order to complete one walking motion. In addition, I included a void_setup function that allows the leg to get into the walking position when it is first connected to power. 

Then I attempted to find ways to solve the power issue with the stepper motors. Due to the fact that I have not yet figure out how to more power to the motors, I decided to use a gearbox to improve their performance. However, the gearboxes proved to be very large and occupy most of the motor shaft length I need to mount the leg. As such I need to lengthen the motor shaft length, which would allow me to put the gearbox on the back of the motor and keep my current leg setup.

Overall, I believe that the core objectives of my project for this mod have been achieved. However, if time allows it, I would include a potentiometer into the arduino setup to control the different modes of the leg (ie. jumping, climbing stairs or normal walking)

12/06/2018: Code found

Zongxi Huang

12/05/2018: FURTHER EXPERIMENTATION WITH CODING

Zongxi Huang

During today's class, I made further improvements on the code for controlling the stepper motors. I tried to make each steps of the stepper motor smaller (i.e. 2 instead of 5) to create a smoother motion of the leg. Still, even with this method, the leg movement was still very fragmented and I fear that the choppiness of the movement may affect the effectiveness of the leg at walking (only one of the two motors move at any given time). My first response was to try to modify the "accel_multiStepper" code to fit my setup. However, my attempts to do so failed, and I decided to make more research on how to make the motors move simultaneously. While doing so, the new stepper drivers arrived. At the same time, I found a tutorial that could control the two motors to move in sync. In light of this new discovery, I decided to first setup the A4899 driver for testing. However, due to time constraint, I was unable to begin testing. 

Tomorrow, I plan on beginning testing with the A4899 drivers. If I manage to make them work, then the first phase of my project would be essentially completed.

Today, I started working on adjusting the code to create the movement of the leg. At first, I separated each leg motion into 4 lines of code. However, when I ran the code in the Arduino, I found that due to the block nature of the lines of code, the first motor had to complete its motion before the second one could move. This was not ideal for my leg setup, as it required a coordination of the two legs moving simultaneously. I tried to use another code where I could control the two motors at the same time, but due to time constraints (A-team meet), I deemed that I would not have enough time to figure it out. Instead, I decided to command the motors to move smaller steps one after another. This way, the motors would not come in conflict with one another and I managed to make the current code work. However, during my testing, I ran into another issue. Though the stepper motors worked fine while the is placed on the table, the leg upper leg refused to move when placed on the test rig. It seemed that the motor cannot handle the weight of the leg and it would get stuck whenever it tries to lift itself. 

Tomorrow, I plan on making further testing of the leg and attempt to use the new code as well. I also plan on making research on how to solve the power issue for the legs.

12/03/2018: Stepper motor control solved

Zongxi Huang
D0E0F263-909F-44A1-8D0C-4E799FDEA441.MOV

In today's class, I successfully overcame the issue with controlling the stepper motors. At first, I tried to figure the problem using the code Luis gave me. Despite my efforts, I made little progress. I tried to combine elements of the new coding with a simpler example I used earlier. However, my decision to do so backfired as the motors ceased to move completely and showed no signs of moving after I imported the allegedly improved code. 

My unsuccessful attempt compelled me to look for other solutions. Looking into the studio's electronics inventory, I discovered the only TB6600 driver available to me. After finding a reliable tutorial on Youtube on how to use it to control stepper motors, I decided to attempt to discard the motor shield temporarily and incorporate the driver into my Arduino setup. Though I followed all of the instructions, I was still unable to control the stepper motors.  However, just as I was about to discard the driver, I remembered that there was always the possibility that I had wired up the motor incorrectly. As such, I swapped the position of the wires from the negative port to the positive port. In doing so, I corrected the problem of conflicting current direction within the stepper motor and I was able to control the motors to create a back and forth swinging motion. 

Using this progress, I moved on to create a code that could control the stepper motor using the motor shield. When this attempt was successful, I decided to try to control 2 motors at the same time. After some experimentation and research, I was able to control two stepper motors simultaneously. Unfortunately, due to a lack of time, I was unable to make further progress today. 

Tomorrow, I plan on creating a code that would control the motion of the leg, which I plan on completing this week. 

11/30/2018: Test rig

Zongxi Huang

Today, I built the test rig used to experiment with the different motions of the leg. At first, I wanted to build a structure with four support beams. However, I wanted to keep it as simple as possible, so I decided to go with a three leg support platform. Next, I had to figure out the height at which the leg would be hung. While I wanted to allow the leg to walk, I decided to place it higher because I needed to create the walking motion first. I could then make the ground level taller or driller another whole at a lower point. 

After completing the test rig, I tried to reinforce the structure holding the motors. I wanted a material that would be strong enough to not crack but thin enough to fit and light enough to not increase the weight. I found that the thin transparent plastic sheet fitted many of the qualities that I had been looking for. However, when I cut out the pieces and fitted it to the motors, I found that the material was too soft and flimsy. In the end, I deemed that this addition was not absolutely necessary and I scrapped the idea.

At the end of the day, I looked at what Luis sent me about the Arduino code used to control the motor. Due to time constraint, I did not have time to complete the analysis. I intend to complete it during the weekend. Next week, I plan on working on the code and the movement of the legs. I hope to finish the coding part of my project before pencils down.

11/29/2018: Complete prototype

Zongxi Huang

Today, I worked on constructing the complete prototype leg of my robot. I began by trying to figure out a way to extend the motor shaft long enough to reach the supporting structure placed on the opposite side of the stepper motors. My first idea was to buy a motor shaft adaptor, but this option was expensive and I would have to wait until the order arrived. Furthermore, I would need to re print one of the linkages to adjust to the increased diameter of the shaft adapter. 

My next idea was to screw a second motor handle wheels to the one already used to drive the upper leg and link it to the supporting sturcture with a short screw. While this option would increase the weight of the leg, I decided to use it because the materials used were abundant and I did not have to wait for new orders. Once the decision was made, I put myself to work on extending the shafts of both stepper motors.

During the process, I faced a number of challenges. For instance, i had to widen the screw holes to fit the screws that were used to link the two hand wheels together. In another’s case, I had to change the height of the lock nut in order for the screw to fit into the hand wheel. After a whole period dedicated to this task, I managed to solve all the issues and I succeeded in extending the motor shaft.

I also worked on reinforcing the support structure. While I initially tried to use a 3D printed piece to link the support structure to the main body of the robot, I decided to use acrylic instead, as it was simpler and took much less time to make. 

Next class, I plan on studying what Mr. Luis has sent me. I also plan on working on a testing rig, which I will be using on exhibition day.