Final Report Posted

Our final report has been posted here: http://course.ece.cmu.edu/~ece500/projects/s22-teamc6/final-report/. Thanks for a wonderful semester!

Rama’s Status Report for 4/30

This week, I primarily focused on trying to implement feedback from the user study and helping with the final presentation slides. The users noted that they preferred faster speeds to make up for latency problem and did not mind the jerkiness that came with it, We were not satisfied with that so I worked on making the speed dependent on how far of a sweep the projector needed to make. Adjusting the vertical motion has been difficult because the system is more sensitive to vertical angle changes. I also started working on how we are going to make speed dependent on distance from the wall.

I feel like I am on schedule and this week I just need to add in final changes to speed adjustments and clean up the wiring. Once we have the USB extension we’ll be good to go for the physical setup. I will also work on the video, report and what we will show for the demo.

Rama’s Status Report for 4/23

This week the replacement motor with the higher torque rating came in so I swapped out the overheated one. I tested it out prior to replacing it and it was working but when I attached the projector it would fall over and fidget or was completely unresponsive. I thought that maybe the torque was not high enough or that the motor was just faulty. Later I took off the projector and retested it and it worked so I put the projector back and all is working correctly. Now we are able to fully test our system and I have been making adjustments to the functions as we go. We started the user study and I have a plan to implement the feedback we have received. So far it seems like people prefer the cubic curve over the quadratic curve, and faster speeds. Lastly, I have been working on my portion of the slides for the final presentation.

I think that I am on schedule and have replacement motors in case anything bad happens. This week I plan to implement the feedback from the user study and begin the work for the poster.

Rama’s Status Report for 4/16

This week, I properly secured the projector so that we could begin testing movement and calibration with the added weight of the projector to the system. Sadly, I think the 6V rechargeable battery I was using was too powerful and the motor for up and down movement at some point during testing overheated. I put in an order for a replacement motor so that should hopefully come in on Wednesday. I think this is putting us behind schedule, but on the bright side the basic system with up, down, left, and right movement was working before one of the motors broke.

In the meantime, I put together the tripod system and switched to using 4 1.5V Energizer batteries to power the working motor. I also helped with testing the horizontal movement as our initial setup was fast and jerky. This week, I would like to continue working on the left to right movement and smooth it out. When the new motor comes in, I will swap it, properly secure everything to the tripod stand, and quickly work to find a set of speeds to test in our user study. At the moment, there is an anticipated latency problem between when the user moves their head and when the projection moves, which is why the  projection moves as quickly as someone moves their head, leading to quicker, jerkier movements. The tradeoff here will be using smoother and more natural movements of the projection even if it contributes to the latency problem.

Rama’s Status Report for 04/10

This week I have been waiting on orders for parts to come in so I can start putting things together. In the meantime, I have helped figure out what we should test in the user study and cleaned up my code and added documentation. I think that I am on schedule but if the parts take any longer then I will be behind because we won’t be able to properly get feedback on the user experience. This upcoming week I hope to start building so that we have a full setup for the demo on Wednesday. I also want to help with the refinement of values for calibration and motion as we continue to improve and speed up the full pipeline.

Team Status Report for 4/10

  1. This past week we continued to test the full end to end pipeline as the calibration code was completed. The system responded to hard coded information about where the user is in the room to set up where the projector should start. We also tested a possible lock/unlock feature for calibration using blinks. If the user blinks 3 times then the system locks and the motor will not respond to head movement. The screws/mounts for attaching the projector have been ordered but in the meantime we will use heavy duty foam tape to test out motion with a picture. The next step is to do a user study on at least 10 participants. What we are looking to learn is which easing type is most suitable for the user (linear, quadratic, or cubic motion). We also would like to see which speed is most comfortable (30,60, or 90 degrees per second). Since the projection only needs to move for significant motion, we will need to figure out what the minimum displacement of the projection should be to trigger a movement in the motor. Lastly, we would like to see which lock/unlock feature is best and if we need to add other lock/unlock features to better the experience. The main risk is that the motion of the projection ends up being too shaky or jerky in which case we will need to slow down the movement and use a different method of securing the projector. We will continue to refine threshold values and gather feedback as needed.

Olivia’s Status Report for 4/2

This week I implemented the “lock” gesture which occurs when someone blinks 3 times in a span of 2 seconds. This lock gesture will work in conjunction with the calibration process when a user “locks” the projection in place to confirm its location is correctly attuned to the persons gaze. I implemented this gesture using four Mediapipe landmarks around both the left and right eye. In each frame the program processes, I calculate the “eye aspect ratio” and determine if it is below a set threshold. If so, a blink is detected. I also spent time cleaning up my code and making it best suitable to work with the overall system. Sadly, I got the flu the past week which made it very difficult for me to get any other work done or go to class. I personally feel behind schedule because I have not met with my team in person for a bit. I hope that changes this next week when I am finally able to pick up the camera, connect it to the overall system, and see the progress we have recently made with my own eyes.

Rama’s Status Report for 4/2

This week I continued to fine tune the motor functions and finalize orders for parts. We were able to do some end to end testing where a person moving their head either to the left or the right during calibration would make the motor move all the way to the left or the right. The motor moves all the way in either direction because the boolean variable needed was not finished yet, but we were happy to see the full flow of the system. I did feel behind schedule at the beginning of the week but after seeing the full end to end, I think now that the base of the functions are done for my part, it is only a matter of adjusting the values to match head movement the best. Whats to come is doing a “user study” on at least 10 people for angle, speed, and easing types. I also need to secure the pan and tilt system to a projector stand, and the projector the mount so I will make some more orders for parts as well.

Rama’s Status Report for 3/26

In the beginning of the week, I simplified the circuit and found mini breadboards to use in the final assembly of the projector stand. I wrote movement functions needed for calibration and wrote a draft of the functions needed to move the projection given the information collected over CV. I attended the National Society of Black Engineers (NSBE) Conference in Anaheim that started on Wednesday and I will be back Sunday night so I was not able to make further progress than this. On Monday, I hope to make the last order for parts and test out the draft functions. My goal by the end of the week is to have the physical system assembled so it can be properly tested with my team member’s work and code.

Rama’s Status Report for 3/19

This week I set up the circuit and found the angle and speed ranges for both the motors. I also confirmed the power ranges for the motors so I can purchase the correct power source since we are powering the Arduino and both motors with one external power source.

I have decided to use the ServoEasing library to control the speed of the motors. I tested out linear, quadratic, and cubic easing of the motors as well as combinations of these types. I also tested out the synchronization of the motion of both motors to see if it follows natural head movement better.

I have created a file in which different easing types are used to move the projection so that we can do a small user study and see which motion people find smoothest and most comfortable. I have also worked on the functions we will be using for horizontal motion. This week I hope to finish the functions and focus on properly securing the projector and cleaning up the circuit so it can be secured on the stand.