Skip to content

Latest commit

 

History

34 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PawGuide 🐾

Wherever you feel lost, Mira guides the way.

Mira, the PawGuide robot guide dog

PawGuide is a robot guide dog for airports. Mira, a Unitree Go2 with a warm, bilingual, Claude-powered personality, waits for travelers at the terminal, listens to where they need to be, and walks beside them until they get there.

We built PawGuide for the people airports overwhelm the most: travelers who can't read the local language, elderly passengers, blind and disabled travelers. Not another kiosk or app to figure out — a companion you follow.

🏆 Track winner at AdventureX 2026 (Shanghai/Hangzhou) — accepted out of 4,000+ submissions, built on-site in 4 days against 800 contestants.


The two repositories

PawGuide is two independent systems meeting in the middle, connected by a single OpenAPI contract:

Repo Side Contents
Litorian113/PawGuide (this repo) Experience stack Native SwiftUI iOS app, Zilo voice-ring integration, Claude personality, bilingual voice pipeline, exhibition website
cpietsch/pawguide-tech Robot stack Python command center, RDK X5 motion gateway on the dog, DimOS/MuJoCo simulation, provisioning & safety interlocks

Architecture

  Zilo Ring ──BLE──┐
                   │            OpenAPI contract              MCP bridge
  iPhone (Swift) ──┴── HTTPS ──► Command Center ── reviewed ──► RDK X5 ──► Unitree Go2
       │                        (China server)    commands    (on the dog)
       │                              │
  MINISO speaker ◄── voice output     └────────► DimOS / MuJoCo simulation
  (on Mira's back)                               (same command path, no hardware)
  • The phone app and ring integrate with the robot exclusively through the HTTP API defined in contracts/pawguide-openapi.json (see robot repo).
  • The RDK X5 board mounted on the dog is the sole motion gateway. It exposes only reviewed commands (home, demo_gate) via an MCP bridge, with an always-available STOP and automatic latching on startup or heartbeat loss — if the connection drops, Mira freezes.
  • The same command path runs against a hardware-free MuJoCo simulation, which is how the app and the robot were developed in parallel and merged on-site.

How it works

1 · Book from home

Pick your airport, arrival date and time, the exact terminal entrance where Mira should wait, how far she should guide you (check-in → security → gate), and how she should adapt: slower pace, step-free routes, spoken instructions, your language. You get a boarding-pass-style ticket with a QR code and one promise: "Mira will be waiting for you."

2 · Take the ring & go

Already at the airport? Lift the Zilo voice ring off its charger — Mira wakes up and greets you through the speaker on her back. Hold the ring's button, say where you want to go (English or 中文), and follow her. No screen, no app to open, no friction. Alternatively, scan the QR code on her back (pawguide://mira/<id>) to connect the app directly.


Feature highlights (this repo)

Feature How it works
🧠 Claude personality Anthropic Claude with structured JSON replies (speech / action / destination_id) and mission phases: onboarding → en route → arrival. She banters on the walk and switches destinations mid-way.
🗣️ Automatic bilingual voice Two on-device speech recognizers (en-US + zh-CN) run in parallel on the same microphone audio; the transcript matching the spoken language wins. Claude replies in the selected app language.
🔊 ChatGPT voice output Replies are voiced by OpenAI's TTS (gpt-4o-mini-tts, "nova") and play through the Bluetooth speaker (MINISO-BT2602) mounted on the dog, with the iOS system voice as offline fallback.
💍 Zilo ring integration Full port of the ring's v4 BLE protocol (Nordic UART Service, CRC16 packet stream). Auto-pairs in the background, answers time-sync, reassembles Speex voice clips, decodes them with the bundled Speex C library, transcribes on-device and feeds Mira's brain — a completely phone-free conversation loop.
🔋 Charging state as session switch The ring's charger doubles as the on/off switch for the whole encounter: we poll its charging state over BLE, so lifting the ring wakes Mira and she greets you, and docking it back ends the session — Mira returns to her waiting spot at the terminal entrance (the X5 gateway's home command), ready for the next traveler.
📏 Follow-distance ranging The ring's RSSI is read every second, median-smoothed and converted to meters via a log-distance path-loss model (iBeacon-style). Drift beyond 2 m → Mira holds position and the guidance pauses ("I'll wait right here for you"); catch up → she resumes.
🎫 Booking like a flight Six-step flow with calendar, terminal/entrance tiles, journey scope and accessibility preferences, ending in a ticket with QR code and booking reference.
🌐 Full EN/中文 localization One toggle in Profile switches the entire UI and Mira's reply language.
📱 Deep links pawguide://mira/<robot-id> QR codes open the app from the camera and connect instantly.
🖥️ Exhibition website React + TypeScript one-pager (website/) in the PawGuide design, with hero slider, gallery lightbox and the project story.

Demo scope: robot availability, indoor navigation and live robot communication are simulated in the app (per hackathon scope); motion commands route through RobotMotionController, the bridge to the Go2 sport-mode API. The BLE ranging, ring pipeline, speech, and AI conversation run live on real hardware.


Repository structure

PawGuide/
├── PawGuide.xcodeproj          # Xcode 16 project (folder-synced)
├── PawGuide/
│   ├── App/                    # App entry, root tabs, global state
│   ├── Models/                 # Robot, Airport, Destination, Booking, GuidanceSession
│   ├── Features/
│   │   ├── Home/               # Product-page landing with hero gallery
│   │   ├── Booking/            # Six-step booking flow + ticket
│   │   ├── Chat/               # Mira chat (text + mic)
│   │   ├── Scanner/            # QR scanner & connection state
│   │   ├── Navigation/         # Guidance + arrival screens
│   │   ├── Profile/            # Account, devices, language, localization (L10n)
│   │   └── Splash/             # Animated launch screen
│   ├── Services/
│   │   ├── MiraBrain/          # Claude client, personality, config
│   │   ├── Ring/               # Zilo BLE protocol, Speex decoder, ring session,
│   │   │                       #   follow-distance ranging, Go2 motion bridge
│   │   ├── SpeechService       # Dual-language live recognition
│   │   ├── VoiceOutputService  # OpenAI TTS → Bluetooth speaker
│   │   └── DeviceMonitorService# Speaker / headphone route detection
│   └── Assets.xcassets         # App icon, hero renders, profile assets
├── website/                    # React + TS exhibition site (Vite)
├── tools/qr-generator.html     # QR code generator for robot tags
└── MiraConfig.template.swift   # API-key template (see below)

Getting started

Requirements

  • Xcode 16+, iOS 17+ (iPhone recommended — BLE, camera and speech need a device)
  • Optional hardware: Zilo voice ring, Bluetooth speaker, Unitree Go2 🐕

Setup

git clone https://github.com/Litorian113/PawGuide.git
cd PawGuide
cp MiraConfig.template.swift PawGuide/Services/MiraBrain/MiraConfig.swift
# → fill in your Anthropic + OpenAI API keys (file is gitignored)
open PawGuide.xcodeproj   # ⌘R

Without keys, the app falls back to an offline demo brain and the iOS system voice — the full flow still works.

Simulator tip: no camera? Connect Mira via deep link: xcrun simctl openurl booted "pawguide://mira/mira-01"

Exhibition website

cd website && npm install && npm run dev

Robot stack

See cpietsch/pawguide-tech for the command center, X5 gateway provisioning, and the MuJoCo simulation (Python / uv, pinned DimOS base).


Hardware

Device Role
Unitree Go2 Mira herself
RDK X5 Motion gateway mounted on the dog (robot repo)
Zilo voice ring Wake, hold-to-talk, and follow-distance ranging
MINISO-BT2602 Bluetooth speaker on Mira's back — her voice

Team

Built in 4 days at AdventureX 2026 by Franz Anhäupl (experience stack: iOS app, ring integration, voice pipeline, design) and Christopher Pietsch (robot stack: command center, X5 gateway, simulation).

Thanks to AdventureX, Zilo for the ring that unlocked the frictionless interaction, and everyone we met on-site. 🧡

You don't need to find your way alone.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages