https://github.com/misprit7/foosbar Skip to content Navigation Menu Toggle navigation Sign in * Product + Actions Automate any workflow + Packages Host and manage packages + Security Find and fix vulnerabilities + Codespaces Instant dev environments + GitHub Copilot Write better code with AI + Code review Manage code changes + Issues Plan and track work + Discussions Collaborate outside of code Explore + All features + Documentation + GitHub Skills + Blog * Solutions For + Enterprise + Teams + Startups + Education By Solution + CI/CD & Automation + DevOps + DevSecOps Resources + Learning Pathways + White papers, Ebooks, Webinars + Customer Stories + Partners * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles Repositories + Topics + Trending + Collections * Enterprise + Enterprise platform AI-powered developer platform Available add-ons + Advanced Security Enterprise-grade security features + GitHub Copilot Enterprise-grade AI features + Premium Support Enterprise-grade 24/7 support * Pricing Search or jump to... Search code, repositories, users, issues, pull requests... Search [ ] Clear Search syntax tips Provide feedback We read every piece of feedback, and take your input very seriously. [ ] [ ] Include my email address so I can be contacted Cancel Submit feedback Saved searches Use saved searches to filter your results more quickly Name [ ] Query [ ] To see all available qualifiers, see our documentation. Cancel Create saved search Sign in Sign up You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert {{ message }} misprit7 / foosbar Public * Notifications You must be signed in to change notification settings * Fork 0 * Star 53 * Code to support my autonomous foosball playing robot www.youtube.com/watch?v=xrwxzxgip1w 53 stars 0 forks Branches Tags Activity Star Notifications You must be signed in to change notification settings * Code * Issues 0 * Pull requests 0 * Actions * Security * Insights Additional navigation options * Code * Issues * Pull requests * Actions * Security * Insights misprit7/foosbar This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. main BranchesTags Go to file Code Folders and files Name Name Last commit message Last commit date Latest commit History 79 Commits doc/img doc/img firmware firmware frontend frontend scripts scripts software software .gitignore .gitignore README.md README.md View all files Repository files navigation * README [logo-white] Foosbar The (Unverifiably but Plausibly) World's Best Foosball Robot Video explanation: https://www.youtube.com/watch?v=xrwXZXGiP1w Pitch As a very enthusiastic foosball player, I've sunk countless hours into the game. As a programmer though, something about the idea of practice is fundamentally misguided. Repeating the same task over and over, in the hopes of slightly improving your marginal efficiency of it? It sounds ripe for automation. So I did that! Foosbar is a completely autonomous foosball table that is robotically controlled on one side of the table, while a human plays on the other. It is capable of defending, passing and taking shots. It has successfully mechanized all my joy out of the game, leaving me free to pursue more important and deeply fulfilling things with my life. [motors] Setup Components There are 3 main components of the project that I've dubbed software, firmware and frontend. software is the main directory for the code directly controlling the motors. frontend is for the 3d webapp enabling control of the table through a remote game controller. firmware is obsolete but originally for the teensy 4.1 mounted on the electronics connected to an e-paper display to show score, in the end I got lazy and didn't fully implement this. Given that these are all very specific to my setup I don't anticipate anyone actually running any of this, so it's mostly here as reference for someone attempting something similar. Still, if only for my own sake here are some high level build instructions. software You will need to build uWebSockets and make it findable by cmake. Given that basically nobody as far as I can tell actually understands the arcane incantations required by cmake I'll tell you that I just ran make && sudo cp ./uSockets/uSockets.a /usr/local/lib/ libusockets.a from inside the cloned directory. I'm sure that by saying so I'll get someone yelling at me that there's a more proper way though. You'll also need to install the qualisys realtime sdk in a similar way. Once the requirements are installed, building is straightforward: cd software mkdir build && cd build cmake .. make ./foosbar firmware Standard pio project, just run cd firmware pio run -t upload frontend Just run cd frontend npx vite About Code to support my autonomous foosball playing robot www.youtube.com/watch?v=xrwXZXGiP1w Topics robotics foosball table-soccer qtm table-football qualisys Resources Readme Activity Stars 53 stars Watchers 2 watching Forks 0 forks Report repository Languages * C++ 98.1% * JavaScript 1.0% * Python 0.4% * C 0.4% * CMake 0.1% * Shell 0.0% Footer (c) 2024 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact * Manage cookies * Do not share my personal information You can't perform that action at this time.