Team Status Report for 4/23

Our team made a lot of progress this week. We are getting very close to finishing up the integration process with the mirror UI, the Jetson, the app, and the outfit recommendation algorithm. Some risks that are being dealt with at the moment are incompatibility issues between the mirror UI code and the Jetson. The main reason for this is because of the OS differences. Packages and code that compiled and ran on the macOS are suddenly not working on the Jetson’s Linux OS. Our plan B in case this doesn’t work out is possibly to set up a virtual machine that would run the mirror UI on a macOS. This is our last resort because running on VMs may result in slower response times and potentially more bugs. Another risk that we face at the moment is being able to run the openpose shell script through a click of a button in our app. Considering the various roadblocks we have faced because of the Jetson, it may be very likely (hopefully not though) that the Jetson will have trouble opening and running the shell script when the app sends a request. Our contingency plan for this is to have to run the script manually, but we will do our best to avoid this at all costs because it significantly hinders the convenience of our smart mirror.

Some changes were made to the outfit recommendation schema. Originally, we were planning to recommend one outfit, but we changed the output to 5 outfits. We also added the option for users to input whether they want a formal outfit or an informal outfit because it enhances the purpose of our smart mirror and is more tailored towards a personal preference this way. This did not induce any costs but may potentially pose a challenge of having to send data about the formality to the Jetson.

Photos and videos of our progress will be reflected on the final presentation slides as well as our individual status reports.

As we are coming close to the final demo, our schedule has become a lot busier. Integration is a lot more difficult than expected, but most of us are staying in lab till night to get things sorted as fast as possible. As a result, we are doing testing and integration at the same time instead of separately. Other than that, I feel like our team has made a ton of progress this week and it will stay that way.

Team Status Report for 4/16

The most significant risk/task we are facing is the integration between app and Jetson, and Jetson and mirror UI. We are expecting that both integration would require creating server-client socket connections, and there is a no easy way out. However, Jeremy and Yun have some experience in this area, so we are hoping to get this task done if we push through.

In terms of the system design, we initially planned to connect the app with mirror UI as well; however, we decided to remove that interaction and use Jetson as the intermediate for the communication as we need to build connections of Jetson-mirror UI and Jetson-app anyway.

We do not have any change in the schedule from the last week. We set a small goal last week to finish the modular tasks by this Thursday and work on integration from Saturday, and we are on track for this schedule.

To explain in a bit more detail of what we did this week, we worked on completing all remaining modular tasks. The remaining tasks were 1) automating torso and top detection, 2) user wardrobe input form from the app, 3) color + weather recommendation, and 4) mirror UI.

  • Wonho was able to write the automation script for Jetson which covers from spinning off Jetson to taking a screenshot using Arducam, running OpenPose, and to cropping the screenshot.
  • Jeremy finished making the user wardrobe input form that asks apparel type, length, season. After the user submit the form, the data gets saved into google spreadsheet, which will be the user wardrobe database.
  • Ramzi finished the color and weather based recommendation with Python. The color recommendation based on the survey he created on which colors go well with which, and the weather recommendation is based on the real-time feels-like temperature.
  • Yun finished creating the mirror UI using Electron. It has main page, recommendation loading page, recommendation result page, and thank you/feedback page.

More details can be found on each of our individual status report. The above four tasks were all of the modular tasks remaining, which means all we actually need to do is integrating these parts.

 

Team Status Report for 4/10

The main breakthrough our team was able to make this week was getting the OpenPose running up on our camera. This was one of the biggest problem we were facing as a team as a major part of our project relies on the Camera and Jetson being able to recognize the torso of the person. We had set to test our plan B of using trt-pose by wiping the SD card image for the Jetson and purchasing a new compatible camera for the software. After our lab on Monday, Wonho was working on it in the evening and was able to run OpenPose on the Jetson with the original camera. (yay!).

This was a major obstacle setting our schedule back and delaying the software integration process for the other components. However, in the meantime our teammates have made some significant progress on other components of the project. Jeremy has been working on the app and completed the feature of allowing the user to upload images (i.e. photo of their clothes) through the app. Yun has also been able to make some progress with the weather API as well as ColorThief. Unfortunately Ramzi has been sick this week as well as catching Covid so he has not been able to participate as much.

The interim demo on Wednesday went well as we were able to show off key features of our project that were working. Right now our project is in a state of a lot of working parts but not integrated yet so our focus for the last two weeks will be on integration and creating a frame for our parts to fit into. Our team already has a plan in place for how each part should integrate with another and we have taken steps to make sure the software will be compatible throughout.  Even though we are behind schedule, I would say we are technically “on schedule” since we should be able to catch up on the lost time by making more progress on the software components as well as the integration.

Team Status Report for 4/2

Early on in the week, we finished creating the frame for the mirror, and attaching the mirror itself to its frame. Jeremy and Wonho decided to use tape to hold the four mirrors of the frame in order to compensate for the flexibility of the mirror, which is made of acrylic. We were able to see the background through the mirror, which was not our objective, so we also used a cardboard box as a back to the frame to block any excess light from coming through, and the result is that only the monitor is visible through the mirror.

Jeremy and Wonho Posing with the Mirror

As such, we have moved on to the most significant challenge to the project, our software components. To be specific, we mostly worked on the Openpose troubles and getting the Nvidia Xavier and trtpose to work as we want it too. Unfortunately due to some team members being preoccupied, we were not able to approach the other software components this week. We switched from utilizing bluetooth to using a wifi connection for our application and mirror to communicate, which may provide a few security concerns to address, but will ultimately be easier to implement due to the additional support provided.

We seem to be a little behind schedule, but in the coming weeks we hope to make more progress on the software components, such as trtpose and the application, in order to be able to present them at the interim demo.

Team Status Report for 3/26

The most significant risks that pose a threat to the overall completion of our project is the issues that we have been facing with OpenPose. There are a bunch of Github threads that have been made by others who have had problems with setting up OpenPose on their NVIDIA Jetsons yet the documentation is either outdated or incorrect depending on each person who had the issue. Our team faced the same challenges and therefore created a contingency plan where we will be using trtpose now. We plan to wipe the SD card that was in our NVIDIA Xavier and start from scratch by installing trtpose instead of OpenPose.

In terms of the mirror frame that we built, we made a few changes to our initial blueprint of what the frame would look like. Our most recent diagram shows the exact dimensions of each side of our frame and this is what we referred to when constructing the frame in the woodshop downstairs.

Diagram of mirror frame

None of the scrap wood in the woodshop matched the dimensions of our mirror frame so we had to go to Home Depot to buy wood. This incurred an extra cost of around $50, but it is still well under our budget limit. Another extra component to our mirror design that we thought of after constructing the frame was how we would hold the acrylic two-way mirror in place. The mirror itself is quite bendy and malleable for some reason, so we decided that we would attach triangular pieces to each corner of the frame which the mirror could stick to without falling forwards. A picture is shown below of our finalized frame.

Completed mirror frame

During the construction of the mirror, we got assistance from an instructor in Techspark who was generous enough to give us a few tips about woodworking as well. One obstacle was the fact that Home Depot claimed they sold this wood plank with dimensions of 2in x 10in x 8ft, but the height of the wood was actually shorter than 2 in which resulted in an unforeseen consequence of having to cut the wood again to match the design we wanted to in our original blueprint.

A generous soul helping out engineers who don’t know anything about woodworking.

We moved the frame back to our bench, so now that the frame is done, all we need to do now is get the software working and running. We are on schedule in terms of what we have built so far, but we are behind schedule with testing out the software because it hasn’t been set up properly yet. That will be our group’s main focus for the coming week.

Complete

Team Status Report for 3/19

Our team is planning to get the basic structure of the product working by the end of next week. Thus, this week’s short term goal was to complete modular tasks for constructing the mirror frame, get Arducam to work with OpenPose and operate video, develop basic structures of the App, constructing color coordinating database, and get ColorThief working in local machines. Everything except for the mirror frame construction has been completed. The delay in mirror frame construction was caused due to slow communication with the TechSpark faculties, and we solved it by reaching out to students working at TechSpark. In the end of this week, we have prepared woods that we can use for the frame and have communicated with the students at TechSpark. Thus, we are very optimistic about completing the mirror frame by the end of next week along with other components combined together.

There is no change into the design of the system. However, through meetings with the faculties, we are planning to add special features that will make our smart mirror to be distinguished from others such as scoring the user outfit and helping the user with packing for trips. These will take some time; however, modular tasks required for such additions are already being handled in our basic structures; thus, it will only be a matter of linking them slightly differently.

Some pictures of our progresses are shown in individual reports. We have a picture of Arducam working(Wonho’s), screenshots of the basics of App(Jeremy’s), and the RGB values result shown from ColorThief ran on sample images stored in local computer(Yun’s).

Team Status Report for 2/26

The most important part our team went over this week is the review of the feedback from the design presentation as well as what to do going forward for submitting the design report. Overall, our design presentation this week went well as we were able to address certain questions or uncertainties we had from our last presentation. We discussed certain parts of our presentation before Monday and added in more specifications for the System and Hardware diagrams.

In terms of our presentation, we were able to specify what kind of standard we will be using to recommend the outfit as well as explain in detail how our system would interact with the various information given by the user. Certain libraries to use were decided upon by our team.

The most significant risk we had this week was providing a cohesive presentation and I think we were able to address that faculty’s and classmates’ concerns and questions well.  In terms of the question about demoing feature of incorporating the weather for the final presentation is something we need to discuss as a team but we are leaning towards the decision of showing outfit recommendations for different locations for the final demo. Other than that, we have started to explore the various libraries that we are going to be using for our project. The changes we made last week to our project still stand.

Next week, we will start to build the mirror as all of our parts will arrive as well as start writing basic code for the application and torso detection algorithm. We also hope to finish the major parts of our design report this weekend so the team can meet to discuss various parts of it and make sure we are on the same page of everything we discussed this week.

Team Status Report for 2/19

The most significant risks that we had to consider over the past week were fleshing out the details of our project, and how exactly we would be building each component of our project, so that we can put together a complete device. We have managed both risks by breaking down our project into modular portions, and writing out what we need to do in order to complete each model, mainly through the use of a schematic. After discussing with our TA and Professor, we realized we had to focus on how we would fix issues with the camera recognizing our user. Ideally, these issues can be solved by designing our project well from hardware and software aspects, however as a contingency, we can also test what distance the user needs to stand from the mirror in order for it to function best, and guide the user using that information. We have also been focused on making sure that we are able to acquire the hardware components necessary to make our project function, which we managed by making use of the ECE inventory, and ordering our desired parts as early as possible. This makes the overall project much more straightforward and simple.
We have made some changes to our use-case requirements after discussion with a TA and a Professor, giving ourselves many more requirements, as well as elaborating on them more in our presentations. We rebuilt our block diagram, making it much more detailed, and bringing it up to the standards that we’ve seen our classmates set. This change also pushed us to figure out some the details that we needed to settle to understand how we would deliver on some of the aspects of our project. We have also decided to install LED lights within our device, and potentially add to the UI to guide the user to the best distance that they should stand at to use our mirror. This change was necessary because our team realized that some aspects of our project were dependent on the users lighting and surroundings, which may vary from user to user beyond our control.
We have ordered several of the parts we need, and made a lot of progress on our design presentation, and hope to be able to provide a good presentation and begin working on our first implementations next week.

Team Status Report for 2/12

The most significant risks that we came across over the past few weeks were figuring out the focus of our project and how exactly we would be able to recommend outfits to the user in a suitable fashion. We have managed both risks by centralizing our project on outfit recommendations rather than our original plan to include heart rate monitors and daily schedule reminders on our mirror. We have also decided to push through with the idea of having users take pictures of their own clothes and input it into a database which would then be used for outfit recommendations based on a color wheel. This makes the overall project much more straightforward and simple.

We have made some changes to our use-case requirements and system spec after our project proposal presentation. Using the students’ feedback, we decided to lower the time it takes for and outfit recommendation from 10s to 4s. This change was necessary and viable because we were successfully able to acquire the Jetson Xavier and because we realized that 10s may be too long to maintain the user’s attention. We have also decided to switch from using OpenCV with Python to C++. This change was necessary because our team realized that the documentation available is similar for both languages and C++ is much faster in terms of runtime which will directly help our use case requirement of fast outfit recommendations.

We have also started to think about how to connect our mobile app to the mirror for turning on/off the mirror and we realized that the Jetson Xavier that we received from the 18-500 inventory already has a built-in WIFI+BT chip that we can use which is very useful and saves us a lot of money and time.