How adityapullabhotla/reaction_wheel works
This Raspberry Pi testbed demonstrates reaction-wheel attitude control in three principal modes: zero-rate disturbance rejection, camera-based target tracking, and motor saturation characterization. Operators run separate scripts for each experiment. Tracking combines camera vision and a cascaded outer/inner control loop, while the saturation test ramps motor PWM and detects diminishing RPM gain. The camera feed provides a browser-visible stream and tracking marker. The graph follows the README and sampled source; unsampled files are represented only where their paths and purpose are supported by the tree or README.
Main entry points: tracking_graph.py Cascaded Tracker · tracking_vision.py Vision Tracker · demo1_graph.py Logged PID Demo · saturationtest.py PWM Ramp Test
Components 17
Disturbance Rejection
- Zero-Rate PID
src/demo_1.py - Logged PID Demo
src/demo1_graph.py - Rejection Plot
src/demo1_graph.py
Vision Tracking
- Vision Tracker
src/tracking_vision.py - Cascaded Tracker
src/tracking_graph.py - Live Camera Feed
src/camera_live_feed.py - Tracking Plots
src/tracking_graph.py
Saturation Test
- PWM Ramp Test
data/saturationtest.py - Saturation Plot
data/saturationtest.py
Instrumentation
- IMU Reader
data/imu_data.py - Encoder Test
data/motor_encoder_data.py
Other components
- Operator
- BNO085 IMU
- H-Bridge Motor
- Pi Camera
- Stream Viewer
- Quadrature Encoder
Connections 29
- Operator → Zero-Rate PID: runs
- Operator → Logged PID Demo: runs
- Operator → Vision Tracker: runs
- Operator → Cascaded Tracker: runs
- Operator → PWM Ramp Test: runs
- Operator → IMU Reader: runs
- Operator → Encoder Test: runs
- Zero-Rate PID → BNO085 IMU: reads gyro
- Zero-Rate PID → H-Bridge Motor: drives PWM
- Logged PID Demo → BNO085 IMU: reads gyro
- Logged PID Demo → H-Bridge Motor: drives PWM
- Logged PID Demo → Rejection Plot: generates
- Vision Tracker → Pi Camera: captures frames
- Vision Tracker → BNO085 IMU: reads gyro
- Vision Tracker → H-Bridge Motor: drives PWM
- Vision Tracker → Live Camera Feed: sets camera and marker
- Cascaded Tracker → Pi Camera: captures frames
- Cascaded Tracker → BNO085 IMU: reads gyro
- Cascaded Tracker → H-Bridge Motor: drives PWM
- Cascaded Tracker → Live Camera Feed: sets camera and marker
- Cascaded Tracker → Tracking Plots: generates
- Live Camera Feed → Pi Camera: captures frames
- Stream Viewer → Live Camera Feed: requests stream
- PWM Ramp Test → BNO085 IMU: reads gyro
- PWM Ramp Test → H-Bridge Motor: ramps PWM
- PWM Ramp Test → Saturation Plot: generates
- IMU Reader → BNO085 IMU: reads gyro
- Encoder Test → H-Bridge Motor: drives PWM
- Encoder Test → Quadrature Encoder: reads ticks