Team Status Report for 4/29

Out team had focused on preparing for the Final Presentation this week and reaching our MVP goals of having a functional Go Fish interface.

With the our ML model getting reframed to a newer version, we are a little behind in integrating the ML with the camera due to needing time for it to train. We’ve made steps to integrate the ML with the game logic via having it provide outputs that can be usable in Python code.

We’ve also have been working on creating an outer shell to house our physical device’s connections (wires, Raspberry Pi, etc.) to help with the portability component of our project.

With our ML on track, we are looking to catch up on our integration by the end of this weekend/early portion of next week.

Status Report Q/A:

So far our unit tests pertain to the functionalities of our individual devices.

All our physical devices are now on a working level. We are able to print the necessary symbols/images using just the Raspberry Pi and the thermal printer, the keyboard/LCD screen has no visual lag (latency too small to manually time) and is able to accurately display the inputs, and we have been working to write suits (i.e. heart symbol) to the LCD screen.

In terms of card design dealing speed, the worst case card (i.e. card with rank 10 since it has the most bitmap/complex design) takes around 7 seconds. Cards with simpler designs (i.e. Ace) take around 4 seconds. We were able to achieve this results after removing generous delays that there were previously in place to prevent buffer overflows. (The initial printing speed was around 20 seconds.) In our design process, we’ve found that in order make changes to the card design, this also risks having to retrain our ML model all over each time if the change is too different.

The ML model has gone through testing in terms of latency for accuracy and detection. So far, we are able to have a 99.5% accuracy. This is an improvement from when we used the previous v5 for YOLO where we had a 97% accuracy.

 

Miya’s Status Report for 4/29

As this week was Final Presentations and it was my turn to present, I spent the first few days preparing/practicing for the presentation. It was pretty difficult, since I’ve been recovering with a bad cold, but I think it went alright.  Something that was pointed out at the end of the presentation, was the fact our game logic needed to address the possibility of the ML incorrectly identifying cards, so I am currently trying to implement possible safeguards for it.

I’m looking to finish integrating the game logic with the rest of the other components early next week. This portion is still behind of schedule due the other delays in our integration, but we are trying to get this done by the end of the weekend. In the meantime, I’m also working on the final poster pdf so we have time to focus on fine tuning the other parts of our project up until the demo.

Team Status Report for 4/22

This week we received the new camera that was ordered previously. The interface for it has been written and it is compatible with the Raspberry Pi. For the ML portion, the network needed to be reframed due to complications data handling, but it is currently set up and being trained. Though there have been some delays with integration due to complications with developing the individual parts, we have been catching up and are working on integrating this weekend. We are also preparing the slides for the Final Presentation next week by getting some quantitative testing metrics from our progress.

Miya’s Status Report for 4/22

This week I continued working on the game logic for Go Fish. I ran into a lot errors during compiling due to the different syntax and data structures Rust has in comparison to other programming languages I am more used to. In order to get a working version, I’ve been trying to implement it using Python instead, and possibly interfacing with this file or trying to converting it to Rust. As for game logic integration, this is behind schedule, as we had originally hoped to be in the testing phase by this week. We plan to catch up this weekend, since we have more time and the individual parts of the projects are better developed for integration.

For the rest of this weekend, I will continue working on the game integration and preparing for the Final Presentation that is next week.

 

Miya’s Status Report for 4/8

For this week, my primary goal was work on the game logic implementation for Go Fish. This includes writing functions to create/shuffle a card deck, looking into suitable data structures to store game information, and planning out the overall flow of a game between two players. As a side portion, I’m also working on doing some image labeling for the ML in order to help with accuracy. (Status Report Q) With this month being the beginning of the verification/validation phases of the project, I’m planning on writing tests for the code via hardcoded inputs for now. Hopefully, once we get the camera to be able to focus on cards, we will be able to move on to testing the integration of our components. In terms of schedule, this is mostly on track with the updated plan (Gantt chart). I plan on working on this more the rest of this weekend and during carnival next week.

Team Status Report for 4/8

Our demo was on Wednesday, and we were able to demonstrate the printing mechanism and the functionality of our physical devices. Our printer is able to print the necessary card designs using the Raspberry Pi. It taking around 20 seconds to print a card, but we are going to try increasing the speed via decreasing some of the delays.

We’ve also ordered more parts- including a power jack and adapter in order to have the printer be powered by an outlet. Since the lens we ordered is not compatible with our camera module, we also are looking into alternative options.

Since the camera is the main component to our system’s functionality, our integration schedule is a bit behind. In the meantime, we are working on developing and optimizing the individual parts until we can integrate it with the camera.

Miya’s Status Report for 4/1

After figuring out the sizing/positioning for the bitmap images last week with the Arduino Uno, the my main focus for the beginning of this week was getting the Raspberry Pi to interface with the printer. I looked into ways to possibly connect the Arduino to the Raspberry Pi and have them work together in order to print the images. One method involved using the USB port on the Raspberry Pi to wire a connection to the Arduino. This method involves installing the Arduino IDE on the Rpi OS to use the printing functions provided by the Adafruit library.  Using serial communication (UART), I was trying to find a way to have the Raspberry Pi and Arduino work together to print an image (i.e. rely on the Arduino to print the card design and have the Raspberry Pi take care of logic/communication to the other devices/server). I ended up not going with this method since our Raspberry Pi was model A, and only had one USB port- which was being used for the keyboard. The GPIO pins can also be used for UART as well, but at this point it was determined that this would just complicate the communication of the system.

For next week, I plan help with increasing the printing speed of the cards. The images are able to be printed with the Raspberry Pi, so working out the positioning to mimic the Arduino-printed cards we are using to train our model is something I plan to do.

 

 

Team Status Report for 4/1

This week, we were primarily focused on being able to interface with the Raspberry Pi and thermal printer to print images. Previously, we were able to fully print out the card designs using an Arduino Uno (as Adafruit had a library for it written in C++ that supported bitmap printing). Via rewriting parts of the C++ file in Rust, we were able to successfully print out the card suit images that were made earlier for the Arduino.  In terms of machine learning, we were able to begin training, making data points for the printed 52 card designs.

Last week, we ordered the lens for the Raspberry Pi camera module and a prototyping shield to make connections easier. The lens is necessary in order to start using the camera module, as current images come out blurry and unrecognizable. We are still waiting on the lens to arrive in order to fully integrate and test the system. If it doesn’t arrive soon, we are considering using other imaging options (perhaps a laptop camera or buying another camera altogether).

Since Demo is next week, we are focusing on at least getting the physical devices we have ready to go. The keyboard is able to detect key inputs and the LCD screen is able to display it.

 

Team Status Report for 3/25

This week we finished making the card designs and figured out how to print them via the Arduino Uno. Now, having all 52 cards with the corresponding suits, values, and faces, we are able to do more ML training. The printer takes ~20 seconds to print out a single card, so speeding it up will be a part of our next focus in addition to figuring out how to interface it with the Raspberry Pi.

In terms of the camera, we realized that the camera module that we have does not come with a lens, so we currently can only capture blurred pictures. We are looking into ordering a lens, since vision is a key component of our project.

For the Interim Demo (4/3), we hope to be able to have playing card recognition fully functioning as well as our input devices to be operable.

 

Miya’s Status Report for 3/25

This week my main priority was getting the card designs finalized and formatted for printing. Having switched to using an Arduino Uno for interfacing with the printer, I used the printer library from Adafruit to begin printing out the cards.

There were issues with the Arduino Sketch exceeding the permitted size due to all the arrays (from all the image bitmaps), so I had to play around with card formatting and structure to avoid having to make and include 52 files for the Sketch. I made the bitmaps for the suits (Hearts, Diamonds, Clubs, Spades) and face cards via drawing programs and bitmap/array converters.

Last night, I was able to print out all 52 cards, so that puts us back to schedule in terms of troubleshooting with the printer and ML training. For now, using the Arduino to print is our backup plan, but since our project primarily uses a Raspberry Pi, my next focus will be figuring out how to interface the Arduino with the Raspberry Pi (or just how to do it with the Raspberry Pi alone).