Our final report has been posted to this page.
This week our team had our presentation. As of last week, our overall system metrics hold besides few bugs in CV so Brandon has been doing some final tweaking for the CV. We are also working on the poster and final Video. For the video, we will individually talk about our subsystem and combine them with the overall system which we are going to discuss together. Looking forward to the demo!
This is the last week of school. Earlier this week Pat and I set up the poker table and final integration of subsystems for the presentation. I presented the slides on Wednesday. After that, we have been working on the poster and final video. Good thing we tested our over-all system earlier so this week we just been working on the group assignments. I am also recording the video and talking about the servo subsystem and overall system. Very excited to see how this VR presentation is going to work.
As the semester is coming to a close, we are working on the poster and the final video. In order to demo, I have a couple of minor bugs I need to work out in the CV; afterwards, we will be ready to finish up our filming. I have also been recording my part in the video, which explains the computer vision part of the stack. There’s not much else to add, other than that we are working on wrapping the semester up!
This week began with preparing for the final presentation and full integration. For full integration, I set up the environment we used for our mini demo in our final presentation. I got a poker table for the actual game and big TV to display the Player UI. After that, me and team worked together on fixing the bugs in our overall system and controlling variables like color temperature and distance variation of chips on the table.
Moving forward, me and the rest of the team will be finishing the final poster, demo, and report. End of the semester came so quick!
This week we met as a group. We worked on our presentation slides. The integration of servo and dealer software is complete and we tested them very thoroughly. We also integrate CV with dealer software. However, there were a little bit of issues with CV algorithm, more specifically tuning the parameters so that it can detect chips accurately, which could be resolved once we determine the lighting and environment and keep it consistent. We plan to meet again tomorrow and set everything up again at Pat’s house because he has a proper poker table. We are on track to finish everything and present our project for demo. We look forward to it.
This week pat and I met and tested servo integrated with GST. Servo is pretty robust. We made some small changes to the angles that we are rotating to the player. We tested the robustness of servo by constantly feeding it an output from game state tracker, and input that output which contains player angle to the arduino through serial communication. We did that like 20 times and each time servo rotates to the correct position and the speed is under a second, both of which exceeded our original metrics. Now, servo subsystem and integration of servo and GST is done. Next step we will set it up at a real poker table for the demo.
This week we fully integrated the entire system with exceptions to the CV algorithm having some tweaking to be completed.
The servo subsystem is fully integrated and has been tested to meet accuracy requirements. It is extremely accurate and moves extremely quickly to the correct player.
The chip color configuration has been tweaked for Brandon’s new CV algorithm as well, and there are now options to edit the Big Blind Value.
On my end, I’ve tested the software and Dealer UI robustly. I’ve tried to break it as many ways as possible, but everything goes smoothly.
We’ve been compiling these metrics for the Final Presentation slides and look forward to presenting this week.
This week was quite busy for me, but I still tried to make as much time as possible to work on a new approach to the CV. My first attempt of CV was tuning a color segmentation algorithm. However, this simple was not working because variations in lighting are devastating to color segmentation algorithms. If we continued using the same approach, I do not think it would be possible to meet the requirements. After thinking about the problem, I’ve come up with a preliminary solution idea I’ve spent most of the day implementing. The idea is to use the white checkers on the chips as a marker. I plan on aggregating the white markings to group them together. This is done by searching the surrounding image area for more chips. Then, draw a rectangle around the grouped markings to get a bounding box. This allows me to use the least squares approximation to fit a line between the bases of the rectangles; once that is done, I will be able to rotate the image so the stacks are roughly horizontally matched. From that point, I can rotate the rectangles to get the true height of the stacks. This algorithm is a lot more involved than the previous one, so I am working on getting it right. I have several bugs with aggregation, which I hope to solve before tomorrow.
This week Steve and I finished the poker game progression logic. Pressing Play Game on the home screen initializes the game and places the small blind position at player 1.
As the round progresses, each player as the choice to fold, raise, call, or check when allowed.
Folding removes the players from the hand, and their icon become red.
Turn logic has been implemented. Our debugging can be seen in the middle of the screen, and here it shows the progression from “preflop” to “flop”. The four round modes are preflop, flop, the turn, and river.
When a game ends, the players all return back to the hand, and the small blind chip progresses to the next player at the table.
What is left to do is update the stack sizes with information read from Brandon’s CV algorithm, and to point the servo at the current player acting. The current player acting is highlighted by the green circle icon.
Very productive week 😀