James the PokerBot is a robot created to play a game of Texas Hold’em against human players using a normal deck of cards. The idea of making James came from a project in a computer vision course. The goal for this project was creating a computer vision program that would identify the playing card in a picture of a single card. As the project proved very interesting, it was decided to continue the work as a separate project after the computer vision course ended. The resulting program would be able to identify several playing cards from a picture, despite there being other non-card objects in this image. More about this previous project can be read in the report that was made for it, fall 2011 [1] that is included in the digital attachment.This report however, contains a description of the steps needed to go from having the computer vision program to make the beginning of a card playing robot. The first part of the report deals with the changes that needed to be done to the old computer vision program. These changes includes getting input from a live source rather than using static images, as well as speed optimization needed when running the program on a less powerful BeagleBoard. A video showing the raw output of the final program is included in the digital attachment under Result videos, Computer vision as well as being available online [2]. Next the report continues by describing the different modules used to play the game. First the main module is explained. This corresponds to the actual robot and is the module that runs the computer vision program as well as controls the progression of the game itself. The programs made to run on the main module were developed on a stationary computer. For the prototype made in this project, a development board called a BeagleBoard would work as the main module. The other modules made, were the player modules. These were small controllers used by the human players to interface with James when playing the game. Three different player modules have been made. First a simulator was made to use when developing the programs for the main module. Then two different hardware prototypes, both based on AVR microcontrollers, were made for the final setup.The report then describes the way communication was setup between the modules. For the simulator player modules, this was achieved using virtual COM ports. The hardware prototypes on the other hand, used XBee modules communicating wirelessly over ZigBee.Following this is a chapter describing how the actual Texas Hold’em application was designed. This application controls the game structure and handles input from the human players regarding the game. The application will also interpret the raw input from the computer vision program, regarding the current state of the game.Finally there is a chapter describing the robotic arm planned to use for picking up playing cards. Sadly there was never enough time to complete this arm, but ideas on how this would be done are discussed. There are also added pictures of an unfinished prototype that was made.Two videos demonstrating the final results both for the Texas Hold’em application running on the stationary computer, as well as for the hardware prototypes, are added in the digital attachment under Result videos as well as being available online [3] [4]. The first video demonstrates how the computer vision program can be used for a machine to effectively play a game of cards against human players. The second video demonstrates how these programs also can be used with relatively inexpensive hardware, making it possible to commercialize the product.
Identifer | oai:union.ndltd.org:UPSALLA1/oai:DiVA.org:ntnu-18474 |
Date | January 2012 |
Creators | Edvardsen, Malin |
Publisher | Norges teknisk-naturvitenskapelige universitet, Institutt for teknisk kybernetikk, Institutt for teknisk kybernetikk |
Source Sets | DiVA Archive at Upsalla University |
Language | English |
Detected Language | English |
Type | Student thesis, info:eu-repo/semantics/bachelorThesis, text |
Format | application/pdf |
Rights | info:eu-repo/semantics/openAccess |
Page generated in 0.0015 seconds