Based on the classic video game, Roomba Pac-Man was built in a quick three weeks by myself, Jack Elston, and Cory Dixon.
Built in our spare time, the game is designed to showcase the extensive Unmanned Aerial System software suite that we have developed to support our research. It was also a great opportunity to use some of our skills for our own entertainment. As a disclaimer, our research center, RECUV, is not affiliated with the project, and the work done here, while containing hardware and software we were funded to build at CU, is the sole creation of myself and my two colleagues mentioned above.
A quick summary of the project:
All of the robots communicate wirelessly between each other and any operator interfaces using 802.11. While a managed setup could have been used for the Roomba implementation, we chose to use ad-hoc networking with AODV as our routing protocol. This allows for decentralized communication, and does not constrain the system unnecessarily by requiring a centralized coordinator. Each robot employs service discovery and a publish/subscribe data service to remove the need for fixed network topologies since each node dynamically tracks system capabilities and uses the reconfigurable meshed networking to maintain data delivery even when individual links change.
The entire control software suite runs as several user-level threads on top of a Linux single board computer. These threads, referred to as "Application layer networking," provide mechanisms for service discovery, data stream subscription, and command issuance over the network. Functionally, this software enables the use of more than one control station; communication with any node without prior knowledge of its address; interaction with the nodes from outside of the immediate network; runtime re-configuration of the entire system; and communication between over multiple, heterogeneous sub-networks. Furthermore, the code used to build the software maintains a level of modularity that has allowed for reliability, ease of upgrading, and the ability for entry-level programmers to contribute to the project.
Each robot is fully autonomous and uses the service discovery protocol to identify the roles of other robots they can communicate with. On power-up each automatically subscribes to the other's telemetry, and assume their role as either a particular ghost, or Pac-Man himself. The robots will issue commands to each other as the game progresses to ensure collision avoidance, and to determine states of the game, such as killing Pac-Man or when Pac-Man has eaten a "pill."
Telemetry for each robot is achieved by running a UKF on each robot to carefully combine odometry and measurements using Hagisonic Stargazers. All robots use this to constrain their movements to allowed parts of the maze.
For more detailed information please visit our website.