41 lines
1.5 KiB
Markdown
41 lines
1.5 KiB
Markdown
# SkyLok
|
|
|
|
Pi Zero W 2 captures frames, runs a motion shader, sends diffs over LoRa.
|
|
|
|
- `camera_example/` — libcamera + libjpeg-turbo, streams MJPEG over TCP. Works.
|
|
- `shader_example/` — offscreen GL motion diff between two frames. Works on desktop.
|
|
- `math_example/` — pixel → 3D vertex projection (depth map to OBJ mesh).
|
|
- `chip_test_example/` — LR1121 LoRa + ICM-20948 IMU + u-blox GPS drivers/tests.
|
|
- `main.cpp` — prototype that wires camera + shader + TCP together.
|
|
|
|
## Goal
|
|
|
|
Automatic, real-time detection of fast high-flying objects (planes, drones) using
|
|
multiple Pi cameras and a GLES motion shader. Objects moving in straight lines or
|
|
smooth curves are kept; everything else is filtered out.
|
|
|
|
Each node scans the sky, detects motion, extracts a vertex line from the diff frame,
|
|
timestamps it via GPS, and transmits the minimal payload over LoRa.
|
|
The central device is also a Pi camera node running the same base pipeline, with
|
|
additional functionality for receiving LoRa packets from other nodes, fusing
|
|
sightlines, and saving combined results locally.
|
|
|
|
## Status
|
|
|
|
The examples are all individually working. Final integration (camera → shader → math →
|
|
LoRa) is the next step.
|
|
|
|
## Build main.cpp
|
|
|
|
```sh
|
|
g++ main.cpp -o main \
|
|
$(pkg-config --cflags --libs libcamera libevent) \
|
|
-levent -levent_pthreads -lpthread \
|
|
-lturbojpeg -lglfw -lGLEW -lGL -lEGL -lGLESv2
|
|
```
|
|
|
|
## References
|
|
|
|
- https://www.youtube.com/watch?v=zFiubdrJqqI
|
|
- https://github.com/ConsistentlyInconsistentYT/Pixeltovoxelprojector/
|