Sung Hyun’s Status Report for 5/8/2021

This week I have worked on:

– Editing the database structure. Previous implementation had database as an array so we had 20 clothes each of them starting with a null value. However, we realized that other APIs think that these null values are going to be clothes, so I changed the database from an array to a list so that the clothes in database do not contain null values anymore.

– Integrating the software and hardware. All the software validation have been completed, and we verified that they are saved correctly in the database. Now we integrated our entire software and the hardware to see if the rack rotates consistently with our inputs

Next week I will work on:

– Writing the poster and final report

Sung Hyun’s Status report for 5/1/2021

This week I have worked on:

– Integration between user interface, matching api, and user preference api. There was a lot of conflict while integration because while our individual parts worked, there was a lot of conflicts regarding the type of input and the argument structure.

– Editing database. Instead of just having functionalities such as add and remove clothes, we have added take and return clothes as well, so the database remembers what clothes the user is currently wearing.

– Displaying jpeg images on flask. I have written my code on my mac previously but the flask app didn’t display the pictures correctly on windows OS. Thus I had to account for the OS since we will be running this program on windows

Next week I will work on:

– preparing for the presentation and final paper

– final validation for our project

 

Sung Hyun’s Status Report for 4/24/2021

This week I have:

– Fixed major bug of user interface and database

– The rack should rotate at “add” page and then the database should be updated at “update_add” page. This is because we don’t want the database to be updated before the user retrieves clothes, because if the database is updated before the rotation, and the system is reset before the user gets the clothes, there will be a disparity between the database and the clothes that are actually hung on the rack

– In order to fix this, we have implemented an update_add page, where the user will insert its preference and press done when the user actually retrieves the clothes.

– Another bug that we noticed was the integration between retriever API and the hardware

– When we tell the servo to rotate to a certain angle, it will rotate with maximum speed / acceleration that would lead to our hardware to break

– In order to mitigate this issue, I have changed the retriever API to know its current location and the destination location and turn 6 degrees of angle at a time, to minimize acceleration / deceleration since f=ma. Simply put, we will stop the servo intentionally before it accelerates too much.

– In addition, I have started the integration between user interface and all the other APIs because the functions in user interface will be the one calling other APIs

– Matching API for example was in a folder, and wasn’t able to import the database, so I have redirected / reorganized the directories.

Next week I will:

– Test the hardware to make sure that it won’t fall apart when we rotate the system by 6 degrees at a time. If this is not enough, we will probably have to find a more sturdy attachment method between the gear and servo and the other gear and the rotating rack.

– Finish integrating between multiple APIs and do a live demo with all the clothes, checking for any new unseen bugs

Sung Hyun’s Status Report for 4/10/2021

This week I have

– Debugged the clothes database that is currently categorized as retriever API. The issue I had before with the clothing database is, when it inserts clothes to the database, it would just search through the list and find the first empty space (angle) to insert the clothes. However, this might cause some issue because if all the clothes are placed in one side of the hanger, there might be a hardware malfunction.

– Knowing this I have implemented a function that simply uses coordinates to find the center of gravity of the hanger, assuming all clothes have the same weight, and hang the new clothes to the furthest from the center of gravity.

– slightly altered the add clothes functionality. Initially the user has to input the details of the clothes, but now that Henry has completed his visualizer API, I can just take a picture of the clothes, and this will add to the database and activate the retriever API

Next week I will

– connect the retriever API and the servo to our hardware part of the product.

– make sure than each functionalities of add, remove, get, return clothes are working smoothly and the transitions don’t have any bugs

Team status report for 4/10/2021

This week we assembled most of our hardware parts by laser cutting all the wood pieces. As a team, our biggest focus was how to connect the two gears with precision, and ensuring that the gear rotating the hanger is the absolute center of rotation. In order to achieve this we have Laser cut alignment wood with a hole in the middle because 3D printing will eliminate human error of guessing where the center of the servo is. In addition, we have tested the metal-metal epoxy because this attachment is used between servo and smaller gear and is also used between clothes rack and bigger gear. After waiting for an entire night, we have ensured that it won’t fall off easily, and will hold when we use the servo to rotate the hanger. In addition, this week we have debugged many issues we had with the software so now all we need to do as a group would be debugging the interface between software and hardware, and do some actual function testing for our entire system as a whole.

Getting closer to assembling the entire hardware, we have identified a couple of potential risk factors. One of them would be our design relies on metal-metal epoxy to attach the gears to the servo and the hanger. It was strong enough to stay attached when we had no clothes on, but it might not be able to hold when we rotate with clothes on since the surface area of the gear is not that big. We will mitigate this risk by validating our attachment with clothes on tomorrow, and if this doesn’t work, we might want to get bigger gears to increase the attachment surface area.

These are the pictures of some parts of our hardware

Sung Hyun’s Status Report for 4/3/2021

This week I have:

– Readjusted the retriever API using the new 270 degrees servo

– The servo, even though according to the description should rotate around 270 degrees, it actually just rotated around 210 degrees, so we might need to account for this through our gear (instead of having a 3:4 gear ratio, we will use around 3:5 gear ratio, so we should adjust this on the hardware side)

– debugged the User interface. There was an issue where the user interface was stuck on a page, so I added Home button and navigation button so that if the user is stuck on one page, they can easily navigate around

Next week I will:

– work on the communication between user interface and matching api and user interface and user preferences api

– make sure the retriever and hardware interact without issues.

– Complete user preference model and debug

Sung Hyun’s Status report for 3/27/2021

The past 2 weeks I have:

– Written the design report for the parts which I am responsible for: Matching API, Retriever API, and User interface.

– Worked on the specific logic for the user interface (which api / function calls each user input would create)

– Worked mostly on the verification of the servo. After doing the testing, we realized that our current Servo does not work for multiple reasons.

– First, our servo is simply not strong enough to rotate our hanger. After setting up the prototype, with the servo just rotating the hanger with no clothes on, the hanger wasn’t spinning. We believe this is due to the fact that our Lazy Susan was simply not smooth enough, so our estimation of the static coefficient is not enough.

– Second, we can’t designate the servo to rotate to a specific rotation angle. For a servo with a fixed rotation angle (ex) the 180 degrees servo, we can simply call

angle = 180;

servo_test.write(angle);

and this code would simply rotate to the angle.

However the servo that we currently have is a 360 degrees continuous rotation servo that if we input a constant pwm signal, it would just continuously rotate. In order to fix this issue, I have implemented a timer so that I can start and stop sending pwm signals, but the issue of this will be that the error would accumulate. Thus after doing validations, we have decided to buy a 270 fixed rotation servo, but have the gear ratio to be 3:4 so that using the gear, our servo would be able to rotate the hanger 360 degrees.

– Assuming that the new servo would work accordingly, I have rewritten the retriever API

– Due to this issue, I am slightly behind on schedule

Next week I will work on:

– catching up with our ghant chart.

– Finish writing the retriever API, assuming that the behavior would be identical to the 180 degrees servo that I have used for a different class

– start working on the matching API

Sung Hyun’s Status report for 3/13/2021

This week I worked on:

– watching other people’s presentation and their projects and gave peer reviews

– Wrote a driver for a small servo on Arduino Uno that continues to rotate from an angle from 0 degrees to 180 degrees

– Wrote a python program (pyserial) that can communicate with the Arduino the degree of angle we want to rotate

– Started working on the UI/UX  of the clothes selection

 

Next week I will work on:

– writing driver code for the servo that we will actually be using for our project.

– Make sure the robot API can successfully communicate with the Servo

– develop more on the UI/UX

Sung Hyun’s Status report for 3/6/21

This week I worked on:

  • Created the hardware design and a block diagram:

 

  • As a group decided on the specific hardware parts that we need
  • Worked on the design review slides:
    https://docs.google.com/presentation/d/1kY1kIH_YxvDuDWgsggm8xlKYttMxBnfFL2lo6iBvHSg/edit?usp=sharing
  • Specifically, I have worked on user interface slide, robot API slide, and the hardware block diagram slide
  • Research controllers / drivers and how to manipulate servo using Arduino

For Next Week:

  • Work on the design review report. The high level ideas are on the slide and for next week, I need to expand
  • Start writing driver/controller code
  • Help Henry practice for the presentation

Sung Hyun’s Status Report for 2/27/21

This week I worked on:

– Observing and commenting on other team’s projects. For Monday and Wednesday 10:30 to 12:20, I have observed other teams’ presentations and gave feedbacks regarding their content and their presentation skills.

– Preparing and Presenting our team’s presentation. Our team has conducted our presentation on Wednesday, and in order to successfully deliver our presentation content to our peers, TAs, and professors, I have practiced my oral presentation skills for 5 iterations.

– Receiving feedbacks and rescoping our project, specifically on the hardware side. We have received quite a bit of criticism of our initial design which involved a robot arm. This was due to the fact that there are too many components required and required us to do a CAD design, which none of the team members have experience. Thus, instead of implementing a robot arm, our team members have decided to do a rotating clothes hanging bar.

– Deciding on alternative hardware solutions besides the robot arm. This new hardware design will not require any CAD design but rather can be accomplished by mainly a servo that can rotate 360 degrees. Additionally, we have decided that we would need parts such as turntable bearing, metal-metal epoxy.

Next week I will work on:

– Choosing the exact parts of our design. We have decided that we would need certain parts such as turntable bearing, metal-metal epoxy, metal ring, servo, controller, and a base, and next week, we will actually finalize the exact parts, get confirmed by TAs and the professor, and order the parts.

– figuring out how to communicate with the servo. According to the Ghant chart, I will be writing the drivers. One option to communicate with the servo is an Arduino, but this might not be allowed, so I’m planning to ask first if using Arduino is allowed, and if not, will look for alternative options to write drivers for the servo.

– preparing for the design presentation. As a team, we will work on creating the presentation slides and help Henry prepare for the presentation.