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.

 

Rachel’s Status Report for 3/25

This week, the cards were all finalized and were printed. Therefore I was able to take photos of all the cards in different lightings, backgrounds, and angles. With at least 50 different photos of each card, I was able to start putting them into the labelling software that I set up last week. In this labelling software, I used bounding boxes to manually select each of the items and then assign them to a suit and rank. With these labels generated, I can now output the necessary values to feed into the YOLO algorithm and be able to train the model. My progress is a bit behind schedule but now that all the data is ready to go into the model, I will train the model tomorrow and spend the starting part of this week making the algorithm more efficient locally before integrating it with the system later on this week.

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).

 

Team Status Report for 3/18

Our current focus has primarily been on getting the devices to work/ communicate properly to the Raspberry Pi. The thermal printer being able to print correct card designs correctly has been critical since we need to have these designs finalized to begin training our model. Card recognition is a main component of our project, so we are a little behind schedule in this part. We hope to get most of the designs to be able to be printed via the Arduino Uno to the thermal printer. This switch was made due to the abundance in documentation and user-friendly IDE and libraries. (Before, we were using minicom on the Raspberry Pi to send ascii files to the printer.) For now, the Arduino Uno is our backup plan for the Demo in the case we aren’t able to use the Raspberry Pi to print. We aim to get the 52 cards to successfully print with suits this next week.

In terms of other devices, the keyboard and LCD screen device drivers have been written, staying on schedule for this week. The plan is to work on interfacing with the camera next week.

 

Miya’s Status Report for 3/18

This week I focused on getting the bitmaps to print on the thermal printer. We’ve been trying to finalize the designs for the cards to begin training for card recognition. Since we are using a Raspberry Pi to interface between all of our devices, I’ve been trying to make manual bitmaps/ASCII images to send to the printer. At the moment, the backup plan for using the Raspberry Pi is using ASCII images. Using the Raspberry Pi with the thermal printer has been pretty difficult, since there is little up-to-date documentation that allows us to send bitmaps with the two devices.

In the meantime, as another backup plan for demo, I’ve figured out how to configure an Arduino Uno to send bitmaps to our thermal printer. This took quite a bit of troubleshooting, since there were issues with library permissions and Arduino IDE not being compatible with my Mac OS, so I had to switch to using Windows. I was able to get faint images of a heart card suit printed, but it still needs some more fine tuning for the finalized designs.

Next week I hope to get more of the 52 card designs done, so training can start as soon as possible.

Rachel’s Status Report for 3/18

This week I set up the software necessary to label the input data for the YOLO algorithm. The ML model essentially takes in images as well as coordinates for where in the image it is detected associated to its label. In order to generate these coordinates accurately, it is necessary to use the YoloLabel software. With this created and the ML model set up, it is all ready to take in the cards to train the model effectively and then optimize it to be faster. We also got the cards figured out. With the trouble we were facing with the bitmapping, we got two backup plans so that if we can not figure out the bitmaps by Monday, we can use the backup designs of the cards to start printing them out and training our model.

I am a bit behind on schedule because we did not account for spring break but once we get the data printed out, I should be able to train the model quickly and be able to start working with the camera and transferring my model over to the system.

In the upcoming week, I hope to generate all the coordinates and labels for all of the input data pictures. I hope to then feed them into the model and start being able to perform object detection. I also hope to optimize the model by changing the logic to only look for cards that have been dealt to the user which can be determined by the game state.

Team Status Report for 3/11

This week we focused on working with the printer and getting it to print out cards. We are focusing on the bitmaps and were having some trouble getting them to look like the various suits. To manage this risk, we have created a contingency plan of designing a card without the bitmap suits and just words to start the initial training and then updating the code to include the bitmaps once we do figure it out. There have been no changes made to the existing design of the system and the schedule is still on track.

(SR #4 Q) In terms of new tools we have deemed necessary to implement our project, as we mentioned in other posts, we are using the Rust programming language in order to implement the software that will be run on the server. When comparing to other languages, such as Python, Rust offers better performance in terms of concurrency and memory. This will help facilitate server-device communication, since Rust will be used for encoding-decoding of JSON objects.

Miya’s Status Report for 3/11

Last week, I was primarily focused on writing the Design Review report. We had most of the details figured out due to having the presentation and mentor meeting earlier, so we just needed to narrow down the use-case and design requirements.

So far, we are able to print out letters and number text with the thermal printer, but are still trying to finalize the card designs for training. This past week was Spring Break, but I tried to make time to figure out how to bitmap the card suits such that the Raspberry Pi can accurately send the correct files to the printer. I’ve been trying out some bitmap converters and am working towards testing the files out tomorrow in-person.

Rachel’s Status Report for 3/11

Last week, Mason got the printer working. With the thermal printer set up, I was able to start designing the cards and printing out what I want them to look like. I worked with the bitmap encoding to attempt to recreate the different suits. I have also set up the YOLO algorithm so that it is ready to start training once I feed in the photos of the cards. My progress is currently on schedule. According to the gantt chart we had originally planned, I have until the end of this week to build the computer vision locally. I hope to complete designing the cards by the start of this week and have the pictures put into a dataset so that it is ready to be fed into the YOLO algorithm. This week the deliverables I hope to finish are having 52 cards printed out and ready to take photos of and the YOLO model completely trained so that it can start detecting cards locally.