Team Status Report for 3/6/2021
This week, we met numerous times to create our design presentation, refine our project components, and submit a budget proposal to obtain hardware. Our most significant risk remains the same as last week’s, which is time delays with turnaround and shipping. We plan to mitigate this risk by aiming to get our hardware as soon as possible and performing tasks in parallel to reduce idle time. No significant changes were made to our existing system or schedule. We did narrow down our camera modules (OV9281 and IMX219), for which we have filled out a purchase request form. In addition, we were notified that Azure would not be a possible cloud hosting provider for our web display, and so we will have to use AWS. This does not pose any significant changes to our project, as both platforms are suitable for our web app. Finally, we did make a minor change to our shoebox design, as we have placed an internal extension to make the cards flat and consistent when they are dispensed. This will enhance our image quality and help with image preprocessing/classification.
Jeremy’s Status Report for 3/6/21
This week, we stayed our course by ordering Nvidia Jetson Nano’s, two camera evaluation boards, card shoes, and card decks. Once they arrive (hopefully this weekend), I will bring up my Jetson Nano and start taking photos.
We purchased two camera modules that have a different sensor resolution and framerate. This will allow us to experiment with different resolutions without needing to wait another week for shipping. The cameras go up to 180fps, and we estimate we need a high FPS to avoid motion blur during quick card movements.
The primary camera I am interested in has the following specs:
- Up to 1280×800@120fps
- 30mm minimum object distance
- 75deg horizontal field of view.
With the camera 3cm away from the playing card, this images a 46mm (1.81in) area with 0.058mm horizontal resolution at 180fps. This is the closest distance to stay in focus. This resolution should be more than sufficient for card classification when the rank and suit are on the imaging plane.
This brings me to another challenge for the project: image selection before classification. When the card trips the sensor, the camera will spam photos to the Jetson Nano. Since we will likely use a camera that has a small imaging plane (ex. 1.81in tall), we will need to choose a valid image to classify. I hope to choose this with _priors_. From the sensor, we will know how long it took to move the card over the camera. Using prior knowledge of Bicycle Standard cards, we can estimate approximately which images contain the rank and suit by assuming constant velocity. While I hope this solution will work, I will have to examine it once we have prototyped the imaging system.
I adjusted our schedule to account for ordering parts on Thursday. I began exploring lens distortion correct methods, but I’ll need the camera in-hand to actually implement that. I am otherwise on schedule.
Sid’s Status Report for 3/6/2021
This week, I created a MongoDB cluster to act as a centralized database for our card data. I realized that without a centralized database, there may be inconsistent information presented to users about the current state of the game. After experimenting with several databases, such as SQLite, I realized MongoDB would be our best option given its flexible, unstructured schema and reliability. After writing some Python code and working with the Pymongo package, I was able to connect my web app to our database and make queries. In addition, my web app now accepts POST requests. As a result, other machines (in our project, this will be our Jetson Nano) can send HTTP requests to my web app to update the data stored in our cluster, which also updates the visual display of the web app. I’ve also spent time updating our design presentation slides by refining our use case, metrics, risks/uncertainties, and software stack. I plan to spend tomorrow practicing my presentation for next week.
I am currently on schedule. Next week, I plan to finish making the web app dynamic/interactive so that I can start migrating it to AWS.