Thomas’s Status Report for 4/27/2024

Not much has been done on the hardware this week except for some testing and receiving the new parts: new batteries and stepper motors. I have tried the dispensing and the rotation again using the old motor, but the motor accuracy got better again, and the reverse direction doesn’t seem to be losing as many steps as last week. I believe after not testing it for a couple of days, the temporal wearout from overheating or usage has gotten better. I’m most likely going to save the new motor in this case for next week’s Techspark demo and Friday’s real demo. The card dealing also seems to be sufficiently consistent. Also, I have changed the internal gear used for chassis rotation into a slightly taller one so there is more contact between the internal and the outer gear for better torque delivery. 

I am on schedule, and next week will be dedicated to full system testing and taking part in demo days. I will also try to reassemble the parts before the testing to make the design look neat. We will keep the masking tape outside instead of just gluing them so that we can easily take them apart in case something happens. Also, I believe it will look nicer to just use tape instead.

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.

Thomas’s Status Report 4/20/2024

For the last couple of weeks, I have focused on getting new prototypes for the dispenser and getting the whole subsystem satisfactory. I did a lot of testing on different prototypes, and we settled on one that worked decently within our requirements. With the software infrastructure already set up, I was able to test out the rotation of the chassis too. By not releasing the stepper motor in between motions, it generates quite a bit of heat but gains significant accuracy. While it was working fine, after going to a lot of rotations back and forth throughout the last couple of weeks, I have noticed that the stepper motors are giving out gradually as it has been losing steps in the reverse directions. We might have to purchase another one that we might use mostly for demo day. The same goes for the batteries. With the software portion mostly finished in terms of the website, we played a full game of 4 – people uno yesterday, without an error. 

I am on schedule, and next week after the presentation will be dedicated to finalizing the hardware, further testing with the software, and overall getting ready for the demo. Also, I do need to add an LED that lights up when an illegal move is played. 

Additional Prompt:

Everything I have done for this project is something I have never done before. I had to learn how to use CAD software for modeling, the laser cutter in Techspark, and 3d printing gears. I watched a lot of videos on YouTube to learn Onshape, which is the CAD software I have decided to use. My friend also initially taught me some tricks to make work easier. In terms of the laser cutter, Professor Nace and the staff at TechSpark were kind enough to walk through all the steps. For gears, I tried to make the dimensions of the machinery easy to create and replicate similar gears which also learned how to make on Youtube. 

When I was learning all the new things on YouTube, I tried only learn couple of things that were directly related to my project, and I spent most of my time just trying them out. I printed a lot of boxes in Techspark using scrap, and I was able to get used to it pretty quickly. The same goes with the CAD where I tried to make many different iterations of the chassis before finalizing it. I believe trying these things out myself instead of watching more videos saved me time or tutorials since I got better at them a lot quicker. 

Thomas’s Status Report for 4/6/2024

Most of this week was used to test out and do some minor tweaking to the system to get ready for the interim demo. With new cards, I was able to reproduce the low error rate dispensing, proving that the dispensing accuracy is highly dependent on the card condition. Also, David and I worked on integrating the IR sensor into the system, which was successful. This lets the user press one less button during the game, making it more automated. With the new filament we just got, I have also started printing different versions of the dispenser’s front end to test it out for the next couple of weeks. My goal is to minimize the times we have to manually pull out the cards from the bottom, and make it fix itself when it detects the card has not been dispensed this time. 

 

I am currently on schedule, and next week I would like to get the official chassis rotation testing data, test out different dispensers that are printing currently, and get IR sensor accuracy data for the dispenser. 

 

In terms of verification, a lot has been done so far on the hardware portion. Most of these were performed with David together as it requires some kind of driver/software to enable the motors. 

  • The dispenser has been tested by continuously dispensing 10 decks of cards(1090 cards in total), and I was able to get a sub 2% error rate, lower than our required 5% error rate. Also, the latency of the dispensing itself is measured both by using the delays in the Arduino code as well as physically timing it. It is a bit slower than our design requirements, but we figured it is necessary to give enough delay in order to get a higher dispensing accuracy. This only hurts during the initial dealing phase since the latency of card dealing in the middle of the game is easily masked by the human latency of thinking and putting down the card they want, making it a minimal change to the players. 
  • After the addition of the IR sensor, we checked that the sensor is able to accurately pick up (no errors so far) whenever a card is dispensed. I will get official numbers on the accuracy by dispensing a bunch of cards and see how many times it mistakes a dispense. We want to make sure that this is accurate, probably close to 95~97% so that we deal the right number of cards to each player. This was not part of our initial design, so we don’t have any numbers promised. However, it should be considered as part of the dispenser accuracy, so combined 95% accuracy, or 6 mistakes/deck. This will let the users not get too distracted to fix the errors in the game state. 
  • Chassis rotation has been unofficially tested by using visual inspection, and we are confident that it will stay within +-10 degrees throughout the game, which is our design requirement. I will be setting up the actual testing environment next week by marking the middle of each side of the chassis and the base. Then throughout a game, I will check if the angle between the chassis mark and the base mark stay within our requirement using a protractor. This ensures the card dealt is relatively within the reach of each respective player, and +-10 degrees seems appropriate.

Thomas’s Status Report 3/30/2024

This week, I have gotten test data for our dispenser. Using a new deck, I have dispensed 10 decks in a row and written down how many times the dispenser was not able to dispense a card. The data suggested 24 errors / 1090 cards, which is about a 2% error rate. However, while using the dispenser to test out the hardware interface later, I noticed the error rate went back up by a lot. We believe this is due to the cards themselves gaining friction between each other due to hand oil and card wear and tear over time. I have tried making the card hole smaller to fit just one card, but that seemed to not dispense due to the cards not separating, further supporting our theory. We have come out with a new way to more quickly prototype different card holes by separating the front portion of the dispenser from the rest of the body, which will let us try out many different iterations over the next couple of weeks. 

I am still on schedule, since the rest of my schedule is dedicated to testing and helping others to integrate the full system. Next week, I want to keep testing the dispenser with the new prototyping mechanism we have built. Also, we would like to test out adding IR sensors in order to provide automatic feedback on whether the dispenser failed or succeeded in dispensing the card.

Thomas’s Status Report 3/23/2024

This week was another week of testing out and modifying the physical parts, mainly testing the dispenser, collecting data for classification, and reorganizing the things inside the chassis. We had some issues with the dispenser’s consistency last week, so we decided to change the material used from the O-rings to some silicon rubber bands. At least from the couple hundred cards we have tested after, we have seen an improvement in the amount of friction on the cards. Thus, we never have a case where no cards are being pushed out. It’s just 2 cards trying to leave the opening at the same time that get stuck. To address this problem, we currently have a new prototype in the way that with a larger opening this time, hoping that the 2 cards will leave instead of getting stuck. Picking up a card that was additionally dispensed seemed easier than having to get the stuck card out of the dispenser. The internals of the chassis are also reorganized to have less wire tangling.

The last couple of weeks starting this week are integration and testing. I have already finished all the physical parts that are needed, and all that is left is to test and make improvements to the system until we meet the requirements. Thus, I am on schedule. 

Next week, I will test out the new dispenser prototype, and help others collect data and test out the software parts too. Once the software interfaces are done, I could also test the accuracy of the chassis rotation next week as well.

Thomas’s Status Report for 3/16/24

This week was mostly dedicated to generating data, further testing out the dispenser, and making some physical enhancements. First, we finally got our rubber feet installed, which stops the bottom from moving or shaking while the chassis turns. In terms of the dispenser success rate, we struggled to get a good prototype and setup for a while, but at the end we figured out the dispenser’s lid should have some room with the cards. With this small fix, we were able to get around 90%+ success rate, which is getting a lot closer to our initial requirement. With the dispenser working, we were able to get some data from the top of the play stack and the bottom of the dispenser for Jason to modify and train the CNN.

I am currently on schedule, and the next couple of weeks will be basically extensive testing repeated multiple times. Next week, I will try performing full body integration testing, where we not only test the dispenser spitting cards out but also move the chassis 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.

 

Thomas’s Status Report for 3/9/2024

This week, I was able to finish up our second chassis prototype. It reduces a lot of vertical room in places that are not necessary, thus removing a lot of weight. Also, it fixed the stiffness in the chassis rotation by moving the stepper motor towards the center a little bit, reducing the amount of friction it was generating. 

For the dispenser, I was able to perform some testing with the new component that pushes down the cards for more friction to the wheels. Currently, it just has a bunch of coins inside as weights, but this will be replaced with calibration weights or different things that weigh about 150~200 grams. Even with this weight on top, the card jamming issue is still there, so we are also printing out a new prototype with a smaller opening. Hopefully, this will only let one card through the hole and prevent the second card from leaving. 

I am on schedule, with the rest of my 2~3 weeks left before integration being dedicated to testing the dispenser out and calibrating it. Next week will be mostly collaborating with David and Jason to get the dispenser working decently so that the data collection step can be mostly automated.