Project

# Title Team Members TA Documents Sponsor
24 ECE 445 SP23 RFA: AUTONOMOUS CARD DEALER
Adam Naboulsi
Ralph Balita
Rohit Chalamala
Nikhil Arora design_document2.pdf
final_paper1.pdf
photo1.png
photo2.png
photo3.png
photo4.png
photo5.png
presentation1.pdf
proposal2.pdf
video
## **ECE 445 SP23 RFA: Autonomous Card Dealer**
Early Request for Approval
Jan 25, 2023

**_Team Members:_**
- Adam Naboulsi (adamjn2)
- Ralph Balita (rbalita2)
- Rohit Chalamala (rohitc2)

**#_Problem_**

Describe the problem you want to solve and motivate the need.

We all love card games, whether we are just playing casually with our friends or going to the casino.
To name a few: Poker, Literature, Blackjack, Kings Corner, etc. We all want a fair card distribution
system in which the gameplay is smooth/effortless and where the dealer is not cheating.

**#_Solution_**

Describe your design at a high-level, how it solves the problem, and introduce the subsystems of your project.

At a high level, we want to make the card game playing process more effortless and fair by replacing the dealer with a device. There are a few different subsystems of this project including the card shuffler, card dealer/distributor, and the user interface. The card shuffler allows the games to be more fair because it gets rid of human error that is often present with shuffling. We could make it even more fair by making a truly random shuffle by riffle shuffling the deck 5 or more times. The card distributor would basically replace the dealer by being able to rotate and shoot out cards to certain locations on the board. The user interface for this would be some kind of buttons that allows the user to control turning the device on and off, the number of players, the game mode, and starting/pausing the game, etc. This will solve the problems of current human dealers by making the whole process a lot more fair.

#**_Solution Components_**

Explain what the subsystem does. Explicitly list what sensors/components you will use in this subsystem. Include part numbers.

Below are a set of subsystems required to complete the project

**Shuffler**

_Purpose / Usage_

The purpose of this subsystem is to mechanically mimic the act of shuffling cards. Ideally, a card shuffler should have the ability to shuffle a deck multiple times. The mechanism our group has developed has the capability to shuffle a deck only once. More on design will be discussed in the future.

An automatic card shuffler shall shuffle a cut deck of cards, two sub-decks. The card shuffler shall stop shuffling cards once both sub-decks are depleted. The card shuffler shall use a contact sensor to indicate whether the sub-decks are depleted

Components

Here is a list of possible components that are necessary for this subsystem.

- 2x servo motors - responsible for

- 2x contact sensors

- card holder

- microcontroller

**Dealer / Distributor**

_Purpose / Usage_

The purpose of this subsystem is to mechanically mimic the act of distributing cards based on the game that is being played. More on ‘game-choice’ is described in the User Interface section.

An automatic card dealer shall deal a deck of 52 cards evenly amongst 2 and 4 players. The card dealer shall rotate in a counter clockwise fashion. The card dealer shall have pre-defined trajectories based on the total number of players and the game being played. The card dealer shall distribute the first card to the left of the dealer. The card dealer shall distribute the last card to the ‘dealer’ The card dealer shall stop dealing the cards once all cards are depleted. The card dealer shall use a contact sensor to indicate whether the deck is depleted, which can be used to verify that the correct number of cards were dealt

For a card game that requires 2 players, the servo motor shall have preset trajectories at 0 and 180 degrees. The same applies for 4 players, but instead, at 0, 90, 180, 270 degrees. As the deck gets rotated to each of the angular positions, the card dealer shall stop and deal a card. For bonus points, our group plans on having a card counting system to verify that the number of cards being dealt is correct.


_Components_

Here is a list of possible components that are necessary for this subsystem

- 1x stepper motor - rotate the deck and stop at preset angular positions

- 1x servo motor - ‘throw’ a single card towards a player

- 2x contact sensors

- card holder

- microcontroller

**User Interface**

Purpose / Usage

The purpose of this subsystem is to allow the players to select what game to play and control when to shuffle and when to deal the cards for the given game.

We can limit the number of players based on the game mode. If the user would like a game mode that has cards distributed evenly, then the User interface shall limit the number of players to 2 and 4 (for a 52 card deck) and 6 (for a 54 card deck). If the game mode is poker, then the UI shall limit the number of players to 2,3,4,5,6,7,8.

The user interface shall have 4 buttons:

- On/Off

- Game Mode - user chooses “even distribution”, “poker”, etc

- Number of Players - the user shall have the capability to toggle the number of players based on the chosen game mode

- Start / Pause

Default settings: num_players = 2 game_mode = even distribution

The base model shall work well enough to run an even distribution for 2 and 4 player games. Some card games that will work for this include BullS**t and Literature. We plan on adding complexity by including the game modes: poker and UNO. These games require dealing an X amount of cards to a Y amount of players, so the contact sensors are unnecessary.

The beauty of the project is that users can download and add game modes with preset settings: the number of players, number of cards distributed to each player, and any final cards dealt (ie. poker’s flop, turn, river), and their distinct trajectories

_Components_

Here is a list of possible components that are necessary for this subsystem

- 4 buttons

- Debouncer


#**Criterion For Success**
Describe high-level goals that your project needs to achieve to be effective. These goals need to be clearly testable and not subjective

**Shuffle a set of cards evenly**
This can be tested by looking at the cards before and after the card shuffler is done in order to determine the effectiveness of the shuffle.

**Distribute the cards to the players**
This can be tested visually by checking that the cards that are on the board have been distributed correctly and in the right order.

**Buttons for user interface**
Test each of the buttons to make sure they are performing as expected.

Dynamic Legged Robot

Joseph Byrnes, Kanyon Edvall, Ahsan Qureshi

Featured Project

We plan to create a dynamic robot with one to two legs stabilized in one or two dimensions in order to demonstrate jumping and forward/backward walking. This project will demonstrate the feasibility of inexpensive walking robots and provide the starting point for a novel quadrupedal robot. We will write a hybrid position-force task space controller for each leg. We will use a modified version of the ODrive open source motor controller to control the torque of the joints. The joints will be driven with high torque off-the-shelf brushless DC motors. We will use high precision magnetic encoders such as the AS5048A to read the angles of each joint. The inverse dynamics calculations and system controller will run on a TI F28335 processor.

We feel that this project appropriately brings together knowledge from our previous coursework as well as our extracurricular, research, and professional experiences. It allows each one of us to apply our strengths to an exciting and novel project. We plan to use the legs, software, and simulation that we develop in this class to create a fully functional quadruped in the future and release our work so that others can build off of our project. This project will be very time intensive but we are very passionate about this project and confident that we are up for the challenge.

While dynamically stable quadrupeds exist— Boston Dynamics’ Spot mini, Unitree’s Laikago, Ghost Robotics’ Vision, etc— all of these robots use custom motors and/or proprietary control algorithms which are not conducive to the increase of legged robotics development. With a well documented affordable quadruped platform we believe more engineers will be motivated and able to contribute to development of legged robotics.

More specifics detailed here:

https://courses.engr.illinois.edu/ece445/pace/view-topic.asp?id=30338

Project Videos