A unified control and monitoring interface for an underwater object detection drone, developed as part of the IIT Guwahati internship project (July 2025).
This system provides a cross-platform GUI to interact with a remotely operated underwater drone equipped with:
- Intel RealSense camera
- NVIDIA Jetson Nano for ML inference
- YOLOv8 object detection model
The interface supports real-time control, recording, playback, and Python-based ML workflows, accessible via a modern frontend.
- Live video feed from Jetson or webcam
- Start/Stop recording sessions
- Save videos as
.mp4with timestamped filenames - Display and playback saved recordings
- Trigger and display YOLO-based object detection from the frontend
- Frontend/backend integration (Vite + Flask)
- Supports remote backend running on a Jetson Nano via odstream-remote
| Area | Tools |
|---|---|
| Frontend | React (via Vite), TailwindCSS |
| Backend | Python, Flask |
| Remote Backend | Flask on Jetson Nano |
| Object Detection | YOLOv8 (Ultralytics) |
| Hardware Targets | Jetson Nano, RealSense Camera |
See git & workflow instructions here
odstream
├── .gitignore # Self explanatory
├── docs # Dev logs, documentation
│ └── git-setup.md # Project setup and git guide
├── shared
│ └── recordings # Saved .mp4 files
├── backend
│ ├── utils # Python helpers (planned)
│ ├── requirements.txt # Backend dependencies
│ └── app.py # Flask entrypoint
└── frontend
├── public # Favicon, other global assets
└── src # Everything app related
├── pages # Route-based page components
├── utils # Helpers functions (planned)
├── assets # Assets for components
└── components # Reusable UI components
└── ui # UI primitives
# Jetson-side remote backend (separate repo)
odstream-remote
├── .gitignore # As per usual
├── app.py # Jetson Flask entrypoint
├── jetson_camera.py # Stream handling and detection logic
├── jetson_routes.py # Defines all Flask API endpoints
└── requirements.txt # Dependencies for remote backend- Vite + Tailwind frontend
- Video source selection dropdown
- Live camera feed display
- Recording and saving
.mp4files - Playback for saved videos
- Stream from Jetson Nano
- Jetson connection settings in modal
- Flask API to run YOLOv8 inference
- Detection overlay on live stream
- Toggle detection from frontend
- Auto-deploy scripts for Jetson + host
- LAN streaming support (MJPEG)
- Basic mobile responsiveness
- Poran Dip (primary developer)
- Ruhan Roushan Islam (multi-model integration)
- Pooja Basumatary (testing & presentation)
Mentors:
- Divya Jyoti (PhD Scholar, EEE, IIT Guwahati)
- Parvez Aziz Boruah (PhD Scholar, CSE, IIT Guwahati)
Supervisor:
- Dr. Chayan Bhawal (Professor, EEE, IIT Guwahati)
- Minimal dependencies, modern stack
- Recording format:
YYYYMMDD-HHMM.mp4(e.g.,20250704-1315.mp4) - Network-based live stream and object detection are now supported
“Build it simple, scale it smart.”