We're a team formed of CS students, a mathematician and an engineer. We have some very mixed skill sets, and so wanted to do something which everybody could work on. We had the idea of making some kind of catapult controlled by an Arduino, and that evolved into this.
What it does
Players sit around the gun in a semi-circle. A camera moves back and forth taking photos of the players. If it detects that a player is laughing or looking too happy, the gun points towards them and shoots them!
Works best when paired with a funny video playing in the centre of the players (thus the name "Don't Laugh").
How we built it
We have a Python script running which sends serial signals to an Arduino. The Arduino then moves the servos on which the camera and gun are mounted, as well as the servo used to pull the trigger. It uses OpenCV to take photos from a webcam mounted on a servo and the Microsoft Cognitive Services emotion API.
When a photo is taken from the webcam, it's passed to the emotion API which returns a value for how happy the players are. If a particular player is looking too happy, the Python script tells the Arduino to move the gun and then shoot them!
Challenges we ran into
OpenCV is hard, especially with Python 3. It was also difficult to mount the servos on an assembly of some kind. We ended up using a beer bottle!
Accomplishments that we're proud of
It works! And the accuracy is actually pretty good. If there's one person in the group that's laughing, the gun will aim at that person and shoot.
The gun also makes fake movements, just to freak the players out - you really don't know if it's going to hit you or not!
What we learned
All of us learned something different. Some learned Python, others OpenCV, and other Arduino programming.
What's next for Don't Laugh
We're planning to develop more mini games and add more modes to the game.