Conclusion
(a) Discuss your results. How well did your finished solution meet your design criteria?
The finished solution met the designed criteria well while preserving the functionality. We were able to keep costs low and maintain relatively high efficiency. Although robustness suffered at times due to trade-offs, these trade-offs were necessary in order to successfully complete the project considering our remote semester of learning. In the end, the robustness of our system was still maintained but not to as high of a degree as the efficiency. The design criteria which dealt with functionality were all met, as demonstrated by our successful demo.
​
(b) Did you encounter any particular difficulties?
Our biggest hardware difficulty was scaling back the model while still maintaining an accurate depiction of stove knobs. This involved difficulties with the mechanical design of the model, specifically modeling things like friction and other external factors. For computer vision, our biggest difficulties lied with color detection and camera perspective. For color detection, it was hard for our program to pick on certain colors. For example, our program had a hard time picking up on the shade of green we used as an indicator on our stove knob. In terms of camera perspective, our system had difficulty when we had to shift the camera perspective to account for two knobs rather than just one. With one knob, it was easy to keep the knob centered in the frame. With two knobs, however, centering the knobs while maintaining a consistent viewing angle posed difficult. Finally, with integration, the biggest difficulty was implementing our application in a way such that our CV, MQTT, and GUI subroutines could all happen asynchronously. This was handled largely with callbacks and multi-threaded programming, but allowing for a smooth code execution for the CV and MQTT to run concurrently while the GUI was being rendered was a challenge.
​
(c) Does your solution have any flaws or hacks? What improvements would you make if you had additional time?
The biggest flaw that our solution had was the hit that it took to robustness by being modeled as two simple knobs, due to our limited budget and resources. For future improvements with additional time (and resources), we could implement a live camera feed. Rather than using individual pictures, we could use a live camera feed to continuously detect the state of the system and pick up on potential hazards quicker, thus boosting robustness. We could also detect if the stove is currently being used when it’s on. For example, we don’t want to turn the stove off if someone is currently using it. This would require CV to determine whether someone is currently cooking on the stove. This would also require a larger budget as it would necessitate more cameras to monitor the system. This improvement would boost robustness since it would solve the issue of remotely turning off a stove when someone is using it. Finally we could improve our system by creating a robot arm that could operate on any stove knob. This would drastically boost robustness but would require significant hardware refinement (better sourced parts, better motors, etc.). Evidently, this improvement would also require a much larger budget and a lot more time.