TiltGolf is a tilt-controlled golf game that runs on a BeagleBone with an attached LCD. An IMU senses tilt and a kernel-space driver streams those readings to the Qt game. The UI presents arcade-style menus and levels, while the physics layer keeps the golf ball rolling realistically around the different levels.
- YouTube demo: https://www.youtube.com/watch?v=vEOcKTJfxNo
- Final report (PDF): https://github.com/nhathout/TiltGolf/blob/main/tiltgolf-final-report.pdf
- Progress presentation (PDF): https://github.com/nhathout/TiltGolf/blob/main/assets/progress-presentation/TiltGolf_%20Project%20Progress.pdf
- BeagleBone Black + LCD cape – what the game renders on.
- Custom IMU module –
IMU.*and the kernel driver provide filtered tilt angles. - Qt 5 widgets UI –
main.cpp,MainWindow,MenuScreen, andGameScreendeliver the UX optimized for touch. - Physics layer –
PhysicsEngine.*,GameController.*, andGameView.*synchronize IMU input with Box2D-style ball motion.
The checked-in Makefile was generated by qmake for the EC535 BeagleBone cross toolchain. If you are on that toolchain:
cd tiltgolf
make # uses qmake-generated rules and the arm-linux-g++ compilerFor native desktop experimentation you can regenerate host build files:
cd tiltgolf
qmake tiltgolf.pro
make
./tiltgolf # runs the Qt UI on your workstationℹ️ Ensure Qt 5.15 (or later) development packages and a C++17-capable compiler are installed.
tiltgolf/tiltgolf_finalis the ready-to-run executable for the BeagleBone + IMU + LCD setup if you prefer not to runmake.- Copy to the board and run it.
The Box2DTest.cpp file is a lightweight SFML window that drives a Box2D world for tuning forces, damping, and collisions before pushing to hardware.
- Box2D 3.x headers/libraries available on your system (e.g., via package manager).
- SFML 2.5+ development packages (
sfml-graphics,sfml-window,sfml-system).
mkdir -p build
g++ -std=c++17 tiltgolf/Box2DTest.cpp -I/usr/include -o build/Box2DTest \
$(pkg-config --cflags --libs sfml-graphics sfml-window sfml-system box2d)
./build/Box2DTest![]() |
![]() |
||
![]() |
|||
![]() |
![]() |







