Global Tracking and World-State Estimation Using Intel RealSense D435
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
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.
- 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
- Multi-object tracking with temporal filtering
- Obstacle/wall detection
- Robot navigation behavior (ball-pushing task)
- Full system integration and demonstration
- Accuracy analysis across full workspace
- Final report and presentation
| 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) |
| 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.
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
- Python 3.13+
- Intel RealSense SDK 2.57.5
- Intel RealSense D435 camera
# 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# 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)# Start receiver on the robot
python src/hambot_receiver.py --host <overhead-pc-ip> --port 9999python src/detection_benchmark.py
# Results saved as JSON + Markdown in src/βββββββββββββββββββββββββββββββββββ ββββββββββββββββββββββββ
β 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 }
}- Hardware: Intel RealSense D435 depth camera
- Language: Python 3.13
- Key Libraries:
pyrealsense2β Camera SDKopencv-pythonβ Image processing, ArUco detectionnumpyβ Numerical computationmatplotlibβ Visualizationscipyβ Signal processing / filtering
- Communication: TCP (JSON over socket)
- Development: PyCharm, Git/GitHub
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.
- Project Overview β Goals, components, and expected outcomes
- Project Timeline β Detailed 16-week schedule
- Calibration Report β World-frame calibration methodology and accuracy
- Student Researcher: Aaron Fraze (@fraze-dev)
- Mentor: Chance J. Hamilton
- Institution: University of South Florida
- Weekly Meetings: Tuesdays, 2:00β3:00 PM
- Intel RealSense SDK and community
- University of South Florida Robotics Department
- Research mentor Chance J. Hamilton
Aaron Fraze aaron.fraze2@gmail.com GitHub: @fraze-dev
Project Repository: github.com/fraze-dev/Overhead-Perception-System
Last Updated: March 25, 2026