This project was inspired by Janik’s cat, named Masha. Janik has very poor time management and is a very busy person. He doesn't want Masha to suffer due to his organizational skills, so we decided to use our skills with technology to help Masha. Unfortunately, a machine that would simply dispense food on the sight of a cat would lead to overfeeding. In North America, obesity is the most common preventable disease in cats. Approximately 30-35% of the feline population is obese. To prevent Masha from starving or becoming obese, the feeder must be programmed to only feed the cat once an hour, only three certain hours of the day.
What it does
This is a combination of code and hardware built to feed Masha at certain times a day. Every day there are 3 set feeding times, each lasting an hour. At the start of the hour, it starts a video stream from a webcam. If Masha is hungry and comes to the feeder during the hour, the software uses AI and trained models to detect her and then dispenses some food. Lastly, if the tank is low on food it sends an email to Janik, reminding him to fill up the tank at the next chance he gets.
How we built it
We built this with aid from multiple 3D printers and is run by an Arduino. Wired, it has a limit switch to detect if the food is low and a servo to open and close the feeding door. In the software, we used C++ to code the Arduino and ran the rest of the code in Python. We used SMPTLib to send emails and OpenCV to run the webcam footage, both in python. We used a trained image model to detect cats from the webcam, and from there we can send signals to the Arduino and it can respond.
Challenges we ran into
One issue that we ran into here was the time constraint of 3D printing and building this, as the first thing we had to do was the CAD, and then get it on the printer as quickly as we can. Another issue we ran into was getting the vision system working, as we tried some different approaches. One was attempting to train our own HAAR model for the computer to use, but it didn't have quite the accuracy as some others that were released.
Accomplishments that we're proud of
Although the project may seem simple at first glance, there were many things to discover during the coding and building process. This being the team’s first Hackathon, we feel really good about what we have created. Not only is the project cool and functioning, but it also serves a real-life purpose. On top of all of this, we are all proud of working together on this project. In the past, team members have created bigger and cooler projects individually, but this was the first time we have sat down to work on one project. The collaboration and interactions are something the team is truly proud of.
What we learned
From the design standpoint, when assembling the project, there were many times when it was difficult to screw something in due to lack of space for a screwdriver. Going forward, designs will be made with assembly in mind. We also learned about the importance of simplicity in mind, especially in computer vision and cat detection. We tried to use many different complicated forms of computer vision with training our own models, but in the end, after hours of work, it was easiest to just settle on using an open-source trained model and implementing it to work best for us.