✈️🤖

ADS-B Aircraft Announcer

Transform your Reachy Mini into an intelligent aircraft spotter that tracks, announces, and follows planes overhead

🛩️ Real-time Tracking 🗣️ Voice Announcements 🎯 Head Tracking 🌐 Web Interface

See It In Action

Key Features

📡

ADS-B Integration

Connects to dump1090 or any SBS-format ADS-B receiver to track aircraft in real-time with position, altitude, speed, and callsign data.

🎯

Intelligent Head Tracking

Reachy Mini automatically points its head toward the closest aircraft, calculating bearing and elevation angles for smooth, natural tracking at 50Hz.

🗣️

Voice Announcements

Announces aircraft entering your detection zone with natural speech using ElevenLabs TTS, including callsign, altitude, and direction.

🌍

Geospatial Detection

Configurable detection radius with precise haversine distance calculations and bearing computations for accurate aircraft positioning.

🎨

Web Configuration

Beautiful web interface for setting your location, detection radius, robot heading, and monitoring active aircraft in real-time.

🔄

Hot-Reloadable Config

Update settings on the fly without restarting. Changes to location, radius, and heading take effect immediately.

How It Works

1

Connect ADS-B Feed

Point the app to your dump1090 server or any SBS-format data source

2

Configure Location

Set your monitoring location and detection radius via the web interface

3

Track Aircraft

Reachy Mini automatically detects and tracks aircraft entering your zone

4

Hear Announcements

Listen as Reachy announces each aircraft with natural voice synthesis

Setup Requirements

📡 ADS-B Receiver

You need an ADS-B receiver running readsb or dump1090 to provide aircraft data.

Quick Setup (Raspberry Pi)

sudo apt-get install readsb
# Enable SBS output on port 30003
sudo systemctl start readsb

Test your feed:

nc <receiver-ip> 30003

You should see aircraft messages streaming in SBS format.

🌍 Location Configuration

Configure your monitoring location and Reachy's orientation for accurate tracking.

Required Settings

  • Latitude/Longitude: Your location in decimal degrees
  • Detection Radius: How far to detect aircraft (5-30km)
  • Robot Heading: Compass direction Reachy faces (0°=North)

Finding Your Heading

  • Use a compass app on your phone
  • Stand behind Reachy
  • Point phone in direction Reachy faces
  • Note the bearing (0-360°)

✨ Aircraft Enrichment (Optional)

Install tar1090 to get aircraft registration, type, and operator information.

Installation

sudo bash -c "$(wget -O - \
https://github.com/wiedehopf/tar1090/\
raw/master/install.sh)"

After installation, tar1090 provides:

  • Web interface at http://<ip>/tar1090/
  • JSON API for enrichment data
  • Aircraft registration and type info

🤖 Reachy Mini

Ensure your Reachy Mini is set up and the daemon is running.

Start Daemon

# Physical robot
reachy-mini-daemon

# Simulation mode (testing)
reachy-mini-daemon --sim

Install App

git clone <repo-url>
cd reachy_adsb_announcer
pip install -r requirements.txt
python -m reachy_adsb_announcer.main

Access web UI at http://localhost:8080

Technical Highlights

🏗️ Architecture

  • Multi-threaded design
  • 50Hz control loop
  • Thread-safe state management
  • Resilient error handling

📊 Data Processing

  • SBS message parsing
  • Aircraft state tracking
  • Stale data cleanup
  • JSON enrichment support

🎮 Motion Control

  • Smooth head tracking
  • Exponential smoothing
  • Safety limit clamping
  • Robot heading compensation

🔊 Audio System

  • ElevenLabs streaming TTS
  • Priority-based queue
  • Async audio generation
  • Graceful degradation

🌐 Web Interface

  • FastAPI backend
  • Real-time status updates
  • Configuration validation
  • Aircraft list display

🧮 Geospatial Math

  • Haversine distance calculation
  • Bearing computation
  • Elevation angle tracking
  • Coordinate transformations