Logo Lanfrica

ZunoBotics/pearlguide

Domaine:

natural language processing

Type de record:

software
Créateur:
Zun
Hôte:
Africa's first AI Powered Robot Tour Guide # Robot Head — Gemini Live Museum Guide An interactive robot head that holds real-time voice conversations with museum visitors using the Google Gemini Live API. The jaw servo animates in sync with the robot's speech. > **Project:** Pearl Guide — ZunoBotics AI Powered Tour Guide Robot > **Branch:** `robot-head` --- ## Quick Start (TL;DR) ```bash # 1 — clone and enter the directory git clone github.com -b robot-head cd pearlguide # 2 — install system packages (once) sudo apt update sudo apt install -y python3-pip python3-dev i2c-tools libportaudio2 portaudio19-dev # 3 — install Python dependencies (inside your conda / venv) pip install -r requirements.txt # 4 — set your Gemini API key echo 'export GEMINI_API_KEY="your-key-here"' >> ~/.bashrc && source ~/.bashrc # 5 — run python main.py ``` --- ## Hardware | Component | Details | |-----------|---------| | Servo driver | PCA9685 16-channel, I2C address `0x40` | | Eye tilt | MG90S → **D0 (CH0)** | | Eye pan | MG90S → **D1 (CH1)** | | Head pan | MG996 → **D2 (CH2)** | | Jaw | MG996 → **D3 (CH3)** | | Camera | USB camera (mounted on one eye) | | Audio | 7.1-channel USB audio adapter (mic + speaker) | ### I2C wiring to Raspberry Pi | PCA9685 pin | Pi GPIO | Pi physical pin | |-------------|---------|-----------------| | SCL | GPIO3 | Pin 5 | | SDA | GPIO2 | Pin 3 | | VCC | 3.3 V | Pin 1 | | GND | GND | Pin 6 | > **Verify the PCA9685 is detected** before running: > ```bash > sudo i2cdetect -y 1 > # Should show "40" at row 40, column 0 > ``` --- ## Raspberry Pi Setup ### 1. Enable I2C ```bash sudo raspi-config # → Interface Options → I2C → Enable sudo reboot ``` ### 2. Install system packages ```bash sudo apt update sudo apt install -y python3-pip python3-dev i2c-tools libportaudio2 portaudio19-dev ``` ### 3. Install Python dependencies Always install into your active conda environment or venv — **not system Python** — to avoid permission issues with CircuitPython's ha …