Skip to content

Latest commit

Β 

History

28 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Overhead Perception System

Global Tracking and World-State Estimation Using Intel RealSense D435

Python 3.13 RealSense SDK

A real-time overhead perception system that tracks robots, objects, and obstacles in world coordinates using an Intel RealSense depth camera. Developed as a research project at University of South Florida.

Researcher: Aaron Fraze Mentor: Chance J. Hamilton Semester: Spring 2026


πŸ“‹ Project Overview

This system uses an overhead-mounted Intel RealSense D435 depth camera to create a "global coordinator" view of a robotics arena. It tracks:

  • Mobile robots (HamBot) β€” via ArUco marker (primary) or HSV color fallback
  • Colored balls β€” via HSV color segmentation
  • Static obstacles and walls
  • Goal regions or targets

The perception system transforms camera observations into a consistent world coordinate frame and streams real-time world-state over TCP to the robot.


✨ Features

Completed βœ…

  • RealSense SDK integration and camera control
  • Depth and RGB stream capture with synchronization
  • World-frame coordinate transformation (calibrated)
  • ArUco marker detection β€” robot pose + heading
  • HSV color segmentation β€” ball detection + robot fallback
  • Unified world-state estimator (ArUco primary, HSV fallback)
  • Bounding box visualization overlay
  • TCP server β€” streams world-state JSON to robot at ~30 FPS
  • HamBot receiver β€” robot-side TCP client with behavior logic
  • Detection benchmark suite with performance comparison

In Progress 🚧

  • Multi-object tracking with temporal filtering
  • Obstacle/wall detection
  • Robot navigation behavior (ball-pushing task)

Planned πŸ“…

  • Full system integration and demonstration
  • Accuracy analysis across full workspace
  • Final report and presentation

🎯 Key Results

Calibration (Week 4)

Metric Result
Center workspace error < 5 cm
Edge workspace error 6–7 cm
Coverage area 3.3 mΒ²
Z-axis systematic offset βˆ’4 to βˆ’6 cm (correctable)

Full Pipeline Performance

Metric Result Target
End-to-end FPS (detect β†’ TCP β†’ robot decision) ~28 FPS β‰₯25 FPS

The full pipeline includes camera capture, ArUco + HSV detection, world-state serialization, TCP transmission, and robot-side decision making.


πŸ—‚οΈ Project Structure

Overhead-Perception-System/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ camera.py                  # RealSense camera wrapper, world-frame transform
β”‚   β”œβ”€β”€ world_state.py             # Unified detector integration (ArUco + HSV)
β”‚   β”œβ”€β”€ world_state_server.py      # TCP server β€” streams state to robot
β”‚   β”œβ”€β”€ aruco_detector.py          # ArUco marker detection (robot primary)
β”‚   β”œβ”€β”€ hsv_detector.py            # HSV color segmentation (ball + robot fallback)
β”‚   β”œβ”€β”€ hsv_profiles.json          # Saved HSV tuning profiles
β”‚   β”œβ”€β”€ depth_segmenter.py         # Depth-based object segmentation
β”‚   β”œβ”€β”€ hambot_receiver.py         # Robot-side TCP client and behavior logic
β”‚   β”œβ”€β”€ detection_benchmark.py     # Performance benchmarking tool
β”‚   β”œβ”€β”€ overhead_perceptor_v1.py   # Early perception prototype (reference)
β”‚   └── archive/                   # Older exploration scripts
β”œβ”€β”€ results/
β”‚   └── calibration/
β”‚       └── calibration.json       # Camera extrinsic calibration parameters
β”œβ”€β”€ docs/
β”‚   β”œβ”€β”€ Project_overview.md
β”‚   β”œβ”€β”€ Project_timeline.md
β”‚   └── Calibration_Report_Final.md
β”œβ”€β”€ requirements.txt
└── README.md

πŸš€ Quick Start

Prerequisites

  • Python 3.13+
  • Intel RealSense SDK 2.57.5
  • Intel RealSense D435 camera

Installation

# Clone repository
git clone https://github.com/fraze-dev/Overhead-Perception-System.git
cd Overhead-Perception-System

# Create virtual environment
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

Running the Perception Server (Overhead PC)

# Start world-state TCP server (streams to robot)
python src/world_state_server.py

# Optional arguments:
#   --host    IP to bind (default: 0.0.0.0)
#   --port    Port number (default: 9999)

Running the Robot Receiver (HamBot)

# Start receiver on the robot
python src/hambot_receiver.py --host <overhead-pc-ip> --port 9999

Running Detection Benchmarks

python src/detection_benchmark.py
# Results saved as JSON + Markdown in src/

πŸ”Œ System Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚         Overhead PC             β”‚   TCP   β”‚       HamBot         β”‚
β”‚                                 β”‚ ──────► β”‚                      β”‚
β”‚  RealSense D435                 β”‚  JSON   β”‚  hambot_receiver.py  β”‚
β”‚       ↓                         β”‚  ~30Hz  β”‚                      β”‚
β”‚  camera.py                      β”‚         β”‚  - Parse world state β”‚
β”‚       ↓                         β”‚         β”‚  - Make decisions    β”‚
β”‚  world_state.py                 β”‚         β”‚  - Drive motors      β”‚
β”‚  (ArUco + HSV detectors)        β”‚         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚       ↓                         β”‚
β”‚  world_state_server.py          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Message format: JSON over TCP, one message per frame (~30/sec)

{
  "timestamp": 1234567890.123,
  "robot": { "x": 45.2, "y": 30.1, "heading": 1.57, "heading_current": true },
  "ball":  { "x": 80.0, "y": 60.0, "vx": 0.0, "vy": 0.0 },
  "goal":  { "x": 110.0, "y": 0.0 }
}

πŸ› οΈ Technology Stack

  • Hardware: Intel RealSense D435 depth camera
  • Language: Python 3.13
  • Key Libraries:
    • pyrealsense2 β€” Camera SDK
    • opencv-python β€” Image processing, ArUco detection
    • numpy β€” Numerical computation
    • matplotlib β€” Visualization
    • scipy β€” Signal processing / filtering
  • Communication: TCP (JSON over socket)
  • Development: PyCharm, Git/GitHub

πŸ“Š Timeline

16-Week Research Project (Jan 13 – May 2, 2026)

Phase Weeks Status Deliverable
Hardware Setup & RealSense API 1–2 βœ… Complete Camera characterization
Coordinate Systems & Calibration 3–4 βœ… Complete Calibration report
Object Detection 5–6 βœ… Complete Detection benchmark
Tracking & State Estimation 7–8 βœ… Complete World-state server + HamBot receiver
Accuracy Analysis 9–10 🚧 In Progress Mid-semester report
Robot Behavior & Integration 11–13 πŸ“… Planned Full system demo
Analysis & Documentation 14–16 πŸ“… Planned Final report & presentation

See Project_timeline.md for detailed weekly breakdown.


πŸ“– Documentation


🀝 Project Team

  • Student Researcher: Aaron Fraze (@fraze-dev)
  • Mentor: Chance J. Hamilton
  • Institution: University of South Florida
  • Weekly Meetings: Tuesdays, 2:00–3:00 PM

πŸ™ Acknowledgments

  • Intel RealSense SDK and community
  • University of South Florida Robotics Department
  • Research mentor Chance J. Hamilton

πŸ“§ Contact

Aaron Fraze aaron.fraze2@gmail.com GitHub: @fraze-dev

Project Repository: github.com/fraze-dev/Overhead-Perception-System


Last Updated: March 25, 2026

About

real-time, overhead perception system using an Intel RealSense depth

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages