This repository contains the software components for the "Fiber Bragg Grating Feedback System for Recurve Bows" capstone project developed at Carleton University. The system combines optical fiber strain sensing (FBG) with motion tracking (IMU) to provide comprehensive performance feedback for archers.
The Archery Performance Analyzer captures, processes, and visualizes bow strain and motion data during the archery shot cycle, offering insights into draw consistency, release dynamics, and form stability that are not visible to the naked eye.
The repository contains the following main components:
- GUI and Visualization: Real-time interface for data display
- Motion Processing: Algorithms for IMU data analysis and shot detection
- Spectral Analysis: Tools for FBG strain data processing
- Hardware Communication: Serial and file-based data acquisition
archery_gui.py/archery_gui_xlsx.py: Main application windows and visualization interfacesdata_processor.py: Motion data processing, filtering, and shot detectionorientation_cube.py: 3D bow orientation visualization
serial_reader_thread.py: Multi-threaded communication with ESP32accel_comm.py: Low-level communication with MPU6050 via ESP32
imon_file_monitor.py/imon_xlsx_monitor.py: File monitoring threads for I-MON dataimon_spectral.py/imon_xlsx_parser.py: Spectral analysis and peak detectionenhanced_spectrum_dialog.py: Detailed FBG spectrum visualization
tab_delimited_reader.py: Parser for non-standard file formatstxt_to_xlsx_converter.py: Format conversion utility
- Python 3.8 or higher
- PyQt5
- PyQtGraph
- NumPy
- Matplotlib
- SciPy
- pyserial
pip install PyQt5 pyqtgraph numpy matplotlib scipy pyserialThe accelerometer.ino sketch must be uploaded to an ESP32 with MPU6050 connected via I²C:
- ESP32 GPIO21 → MPU6050 SDA
- ESP32 GPIO22 → MPU6050 SCL
- ESP32 3.3V → MPU6050 VCC
- ESP32 GND → MPU6050 GND
- Connect the ESP32 to your computer via USB
- Run the application:
python main.py - Select the appropriate COM port for your ESP32
- For strain data, set the I-MON file path in the GUI
- Click "Start Monitoring" to begin data acquisition
- Recorded sessions can be exported using the "Export Session" button
The system automatically detects and analyzes shot phases:
- Draw: Initial bow loading phase
- Release: Arrow departure and impulse
- Recovery: Return to steady state
Key metrics calculated include:
- Draw duration (seconds)
- Release impulse (m/s²)
- Recovery time (seconds)
- Peak strain (μɛ)
- ESP32-WROOM-32 development board
- MPU6050 6-axis IMU
- Recurve bow with FBG sensor mounting points
- FBG sensors (wavelengths ~1543nm and ~1534nm)
- I-MON interrogator (or compatible spectral analyzer)
- Superluminescent LED source (SLED)
- Single-mode fiber optic components
This project was developed by Team 15 from the Department of Electronics at Carleton University:
- Metehan Kocaman: Software and GUI Development
- Yashil Thakore: Mechanical Design and Integration
- Andrew Pignatelli: Optical System and Interrogation
Supervised by Professor Christopher Smelser
This project is provided for educational and research purposes.