Team Status Report 04/27/2024

There are no more major risks as all that is left is to add small changes to the website and internal software system. We did add new batteries just in case during the demo we needed to swap them out for more battery life. The batteries cost about $80 and we had the budget to spare. We shouldn’t incur any more costs. Schedule has not changed.

ADDITIONAL PROMPT:

Starting with the hardware unit testing, we tested out the body rotation and card dispensing first separately. We had the internal gear system as well as the axle ready, with a platform on top. The rest of the system was initially replaced with a comparable amount of weight on top of the platform to check if the stepper motor we chose was able to rotate a system up to 8 pounds. Once this was confirmed, we tested out the card dispenser. This took a lot of iterations to come to the final design. Throughout multiple iterations, the design of the slit that lets the card out has changed in shape as well as size that minimizes cards being stuck as well as 2 cards being dispensed at the same time. Toward the end of testing, we changed it so that the front of the dispenser is separable, making it easy to iterate multiple times. One major change was also changing the material around the rollers from o-rings to rubber bands. Rubber bands have a lot larger surface area touching the cards so they grab the cards more easily. On top of these, while we were able to get a good card dispensing accuracy, we noticed it might be better to add an IR sensor to detect whether a card is dispensed or not automatically. Adding self correction with the IR sensor basically made the failure rate very low.

We worked on some integration while unit testing the separate hardware as well. We connected the UNO and RPI using serial and made sure we could send a command from the RPI to the UNO and move the motors for rotation and dispensing, and everything worked out pretty well.

On the software side, we didn’t really have a lot of unit tests. Our testing methodology mainly worked around logging events in the system and then analyzing the logs when things went wrong. When moving to the asynchronous execution model, there were alot of bugs surrounding synchronization and deadlocking. We had to be very precise to avoid recreating the issue of blocking on io in the main thread. For our design requirements, we measured latency using the log files to find the time deltas between initiating and completing actions such as website updates and classification. Logging truly was a very versatile and useful tool for us as it allowed us to introspect how all of the asynchronous events were interacting with each other.

 

For the image classification portion of the project, we mainly operated on the accuracy results from our test and validation datasets. One key design change was to artificially generate new images (by rotating, scaling, changing saturation) AFTER splitting up the dataset. Otherwise, the images would be too similar across the datasets, and there would be very little difference between testing and training datasets. We also found that fine-tuning ResNet-18 worked significantly better than designing our own architecture.

Team Status Report for 4/20/2024

In terms of hardware risks, the stepper motor seems to heat up quite a bit when we hold the motor instead of releasing it after each rotation. However, since we are gaining a significant amount of accuracy, I believe we should keep it for now. Also, previously we had an automatic correction movement on the dispenser when a card was not dispensed. However, the forward-to-backward transition motion might be pulling too much current that it’s disconnecting the Arduino from the Pi. We will try to put capacitors in parallel to load so that we can smooth out the sudden current draw, but for now, we decided to manually fix it, which is fine since the accuracy of the dispenser is still pretty high. 

We also made some changes to the software design. We moved over to an asynchronous io and execution model to allow for updates to happen between various components at any time. We also decided to use websockets on the website as it makes it easier for us to send updates from the server to all of the clients. The monetary cost of both of these changes is zero. For the websockets, that does increase the computational intensity of the web server but we are moving that off of the raspberry pi to be hosted on a laptop. Thus, the load on the raspberry pi has actually gone down.

Here’s a photo of the first draft of the website. There are no changes to the schedule.

Team Status Report 04/06/2024

Now with the addition of the IR sensor and knowledge that the card condition is critical to the dispenser accuracy, we are less concerned with the dispenser accuracy. We also did not see a failure during the interim demo this week, which is a positive as well.

In terms of software risks, the main thing is our change to an asynchronous architecture between the various software subsystems. If the parallelism stops us from achieving correctness, then we will switch to an interval polling based system that does all of the polling the system needs to do at the end of a fixed time period or after a turn. This will hurt our responsiveness and make the code more fragile but it is easier to reason about and closer to what we have now which is mainly blocking.

There is no significant change to our system design nor schedule.

 

For validation, it will be simply playing multiple games of uno as a normal player. We want to make sure that we minimize the number of times we have to manually modify the state of the game using the website, either due to the dispenser or the classification making a mistake. We want to make sure it interacts with the players correctly and promptly using the buttons, and the state of the game gets updated on the website.

Team Status Report 03/30/2024

The biggest risks for us are still the card dispenser. We are redesigning the system so that we only have to reprint the front rollers and the card hole to save material and time. We hope that with the new prototypes and the new cards that we get, we are able to achieve a low error rate again, just like it was in the testing Thomas did.

We are adding one thing to the design. We are planning on adding an IR sensor to detect if a card was successfully dealt. This will allow us to better handle errors and it is very cheap, around $8.

We have not made any changes to the schedule, and we are all on schedule as well.

Team Status Report for 3/23/2024

With the discard pile classification model giving us basically a 100 percent accuracy, our potential risks are just the card dispenser accuracy and the draw pile classification accuracy. As mentioned in the personal reports, we have a new dispenser being printed, and Jason is working on getting the bottom classification accuracy up, which looks promising so far. Also, the current dispenser accuracy with the new rubber band material isn’t too far off our requirement, which is also assuring.

No significant change has been made to our design of the system or the schedule, and all of us are currently on schedule. In the next couple of weeks, we will work on integrating and testing our project while also making some improvements on our own parts as well.

Team Status Report for 3/16/24

On the software side, the ML model is still the biggest risk. We have collected a lot of data from both the top and the bottom. So far, we have gotten 99.9% training accuracy for top images, but have not run it for the bottom images yet. We will try to generate more bottom data and see what happens next. 

On the hardware side, we have found the reason why the card dispenser has been pretty inconsistent, and we are pretty close to getting the claimed 95% success rate. We will keep prototyping and testing for the next couple of weeks. We did notice that the motors have to run a little longer than our 1 second latency requirement for the cards to get extruded enough and consistently, which isn’t the most significant downgrade to our project. 

There were no significant design changes or schedule changes made in the last week in both software and hardware. We are all on schedule, and a good amount of integration has been happening already. 

Team Status Report for 3/9/2024

On the software side, the ML model is still the biggest risk. We will be collecting image data next week which will allow us to train and verify the accuracy of our model, but it is still unknown as of right now. 

On the hardware side, as mentioned in Thomas’s status report, we just have to keep trying to calibrate the dispenser until it meets our design requirements on one card dispensing. Chassis rotation accuracy and latency seem to be resolved at the moment with some testing done already. 

In terms of design changes, we reorganized the structure of the UNO controller to expose a standard interface for controlling the UNO game. This made it easy to swap out a software controller for debugging and the actual hardware controller that will move motors and take pictures. 

The physical structure of the outer chassis has been modified to reduce weight, gain more visibility on the cards, and easily take out the cards from the play pile. 

There is no major schedule change. Following is a photo of the new chassis with the dispenser on top.

Additional Questions:

A was written by David, B was written by Thomas, and C was written by Jason. 

Part A (Global): In terms of global factors, our product helps bring together people to enjoy the game of UNO no matter where they are. Through the live spectator feature on our website, people can watch the games that are being played in real-time. This means even if their friends are across the globe, they can still watch alongside. This is also a great advantage for tournaments as thousands of people can tune in to watch the various tournament games happening at the same time. As long as someone has an internet connection, they can view every detail of the game.

 

Part B(Cultural): While UNO is the most popular card game in the USA, it doesn’t have as much recognition in other countries, especially in Asian countries. One issue about the game is even among people who know how to play the game, depending on where and who they played the game with, they can have their own sets of rules. Part of the stretch goal of our machine is to have configurable rulesets on top of the official rules. If there’s a dominant ruleset in the region, the machine could use specific rulesets outside of the official one. When people with different backgrounds and rulesets want to play together, it will be easier to keep track of everything with one ruleset enforced by the machine. In summary, our machine will not only help spread a family-friendly game over different cultures by serving as a learning platform but also help facilitate social interactions throughout the game while avoiding arguments over rules while playing with people within and across different cultures. 

 

Part C (Environmental): Our UNO machine itself is designed to be a relatively low-power machine to reduce its carbon footprint as much as possible. For example, we chose as small of motors as we possibly could for the tasks we needed. We used a small servo + DC motor combo for the card dealer since we do not need much accuracy or power. On top of that, the motors are completely off until the control flow requires that we dispense a card or rotate the machine. This should help to mitigate power consumption, reducing a potential negative impact on the environment. Also, with the increase in major UNO tournaments, our product would make it more possible for people to view the tournament from afar through the website. This means we would reduce travel and save the environment that way.

 

Team Status Report for 2/24/2024

The risk of being able to move the chassis as well as dispensing one card consistently has become less of a concern. We haven’t yet given the full weight on top of the rotation platform, as well as we still have the jamming issue on the dispenser that happens here and there, but with the amount of time we have, we will be able to figure a solution out. For the dispenser at least, it seems to work well when we apply some amount of pressure on the cards, which will be replaced by some type of weight on top of the cards later down the road. 

We are still unsure about the classification latency/accuracy which we will start testing next week. One of the potential risks is lighting inside the chassis, but we have purchased some diffused LEDs we could use to brighten the inside or make a mesh-like cutout on the chassis so there’s enough lighting coming into the chassis for better visibility. 

No changes to the system and schedule have been made. We do aim to focus on getting the design report done next week though. 

Here are some videos of getting the chassis and dispenser working:

https://drive.google.com/file/d/1KGgJ0_tdnAvi6B1oQFJU8SHMi2bihiQO/view?usp=sharing

https://drive.google.com/file/d/1dAv9jNmSohXnl55oyNhz-Z-KTMuDrxDC/view?usp=sharing

https://drive.google.com/file/d/1LHxRdXYtc_W_PJOMiwY9bpuBw-nyfv2b/view?usp=sharing

https://drive.google.com/file/d/1nWOSIvm0QjXJGd85pnTdlnt-_bM_Pzob/view?usp=sharing

Team Status Report for 2/17/2024

We have noticed that it will be very difficult to make the card dispenser dispense one card at a time, both due to inaccuracies of the 3D printer and having to calibrate the rollers and the pressure on the cards very accurately. We will try to identify issues of each trial and make improvements to each prototype to carefully calibrate for the next couple weeks. We are not pressed for time on this at the moment as the software needed for the dispenser’s full functionality is still being implemented. 

Furthermore, similar to last week, since we just got our relevant parts so we weren’t able to fully test rotating the platform. These are scheduled to be handled next week, and we plan to make changes to the motors and the motor shield if needed as soon as possible.

There were no significant changes in the system design. We had some schedule changes that occurred due to delay in getting the parts, but it’s mostly changing the orders of 2 tasks, so everyone is on schedule.

 

Part A written by Jason Stentz, Part B written by Thomas Kang, Part C written by David Peng.

Part A: Although our project is not directly geared towards drastically improving public health, safety, and welfare, there are a few key benefits. Since we are removing the burden of managing game flow, players will be more social during the game instead of worrying about managing the game. Of course, increased social interaction is almost always a  health benefit. Also, UNO is a cognitively stimulating game. It may not seem like it on the surface, but there is actually quite a bit of strategy involved in picking when to play, draw, or call a bluff. Creating an automated UNO device will attract others to the game, promoting a healthy game to stimulate the mind. Lastly, an automatic UNO device will lower the barrier to entry for new players, since the rules will be enforced for them! This will mean they will have less anxiety when playing for the first time. Overall, an automatic UNO controller will allow for more social interaction during the game, reduce anxiety for new players, and help spread a cognitively stimulating game.

Part B: While UNO is one of the most popular card games around the world, there are a good amount of people who are not as familiar with it, especially in Asian countries. Also, even among people who know how to play the game, depending on where and who they played the game with, they can have their own sets of rules. This potentially leads to people getting into arguments or getting too focused on the game itself all the time that they miss out on the opportunity of using UNO as an opportunity to bond with other people and socialize. Our machine will be able to not only educate and assist people who have never played the game, but also eliminate arguments over rules as well as facilitate people’s social interaction by automating the flow of the game. This way, regardless of people’s background in the game, everyone will be able to enjoy the game to the fullest.

Part C: With UNO being one of the most played card games in the world, there is a large group of people, both casual, and competitive, who can benefit from this product. For example, in the UNO world championships, the need for dealers would be reduced as our product can manage the games being played with high accuracy and efficiency. It can also allow for other tournaments with lower budgets to use this machine to control the games instead of having to hire a large number of dealers. The automatic scoring will also augment the home experience and introduce more people to the game and make it more engaging. 

Team Status Report for 2/10/2024

In the mechanical realm, we have to make sure the stepper/DC/Servo motors don’t draw too much current through the Arduino Motor shield, so we made sure to choose options with the least amount of current draw. We could also swap out the motors with something else down the road if we find it necessary. Also, we do have a concern of RPI 5 not being able to run on full throttle due to requiring 5V 5A, but even on the low power peripheral mode, we expect the 2 cameras and the serial interface to stay within the max current output. Finally, the stepper motor options we could use were heavily restricted by the 1.2A current draw, making us choose a relatively weaker one. It is possible that it will struggle to move the entire chassis, but we do plan to use possibly lighter material for the casing, make the batteries smaller in case we need to reduce weight, and change the gearing design to require less torque on the motor. 

In terms of software, the biggest risk is a failed classification model. In our proposal, we promised at least a 95% accuracy in card classification, but we want to achieve something higher than this. Initially, we will be attempting a standard CNN architecture without much preprocessing. If this does not achieve a high enough accuracy, we will preprocess the image (extracting the symbol) to classify the symbol and color separately. This will decrease the dimensionality of both the input and the output, hopefully simplifying the problem for the model. If all of this fails, our backup solution is to tag the cards (say with a QR code) to reliably identify them.

On a systems level, nothing changed. We are calibrating sizing of the case and gear ratios, and minor physical features, but our overarching design is still the same.

We chose a smaller battery pack for the motors as we realized that we could save power by cutting power to the motors when not in use. This allows us to save weight and space in the enclosure. This also saves us money.

We might have to swap what we are doing next week based on the parts delivery. If we do not get the parts, we will just start developing the card dispenser CAD model and 3d print as well as begin work on the classification model itself.