# Sanad Dashboard

CAM FACE PLACE MOVE
Operations
Voice & Audio
Motion & Replay
Controller
Navigation
Live Map
Map Editor
Recognition
Mask Face
Recordings
Temperature
Terminal
Settings & Logs

###
System Info

Loading...
Network interfaces
Subsystems (connected / disconnected)

###
Audio Control

Microphone
Speaker
Speaker Volume (G1 / JBL / Anker / Beats Pill) –
Controls the ACTIVE speaker — G1 chest (DDS) + the selected PulseAudio sink (JBL / Anker / Beats Pill / any plugged). Applies live.
Audio device profile
Manual sink / source override

###
Quick Actions

Speed
BUSY

### Live Voice Commands

Arm Trigger
Deferred Trigger
Last heard: --
Pending action: --
Audio attached: -- | Arm attached: -- | Gemini: --

### Live Gemini Process

Pure: … Direct: … Interrupt: … Search: … Pause: Auto
State: --
User: --

### Gemini API Key

The key used by GeminiVoiceClient and the Live Gemini subprocess. Saved to `data/motions/config.json`. Get a free key at aistudio.google.com/app/apikey.
Current
New key

### Typed Replay Engine

Record speaker
Session

### Wake Phrase Manager

🔒 Arm actions are disabled while movement is enabled (Controller tab). Disable movement to replay / trigger / teach.

### Motion Control

Gestural Speaking Speed
BUSY
SDK Actions (built-in)
JSONL Replays (recorded)

### Replay Manager

Motion Files
Upload .jsonl
Test Replay
Teaching Mode

### Macro Recorder (Audio + Motion)

Record
Play
Voice (WAV)
Motion (JSONL)
Speed

### Camera Vision & Face Recognition

Camera Vision --
Face Recognition --
Toggles take effect within ~1 second on the running Gemini session — no restart required.

### Live Preview

Camera off — toggle Vision ON to see the live feed.
--
Resolution / FPS
JPEG Quality
Each button rebuilds the capture pipeline (~0.5 s). Modes match the RealSense D435I colour sensor — on USB 2.x, stick to 424×240 or 640×480. If the feed is grayscale/IR, pin the colour node with `SANAD_CAMERA_USB_INDEX`.

### Add New Face

Name
Description — who is this person? (Gemini reads it)
📁 Upload images
Tip: add 2–3 photos / different angles per person for best recognition. The description is sent to Gemini with the photos — it can then greet and talk about the person using what you wrote.

### Enrolled Faces

Loading…

### Zones & Places

Zone Recognition --
Destination: none
Group locations into zones, add places inside each (name + description + optional reference photos), and link saved faces to a place. “Go here” sets a destination and shows Gemini the place — the robot drives there once movement (locomotion) is enabled.

### Add New Zone

### Zones

Loading…

### 🔋 Battery

--%
--
Voltage
--
Current
--
Pack temp
--
Cycles
--
Reading battery…
Live motor surface/winding temperatures from `rt/lowstate` on the full G1 (29 DOF). Blue ≈ 30°C → red ≈ 120°C. Drag to orbit, scroll to zoom. Streamed over `/ws/motor-temps` — no second DDS subscriber.
FSM — unknown MSC — SDK —
Enable movement Enable Gemini movement
CAM FACE PLACE MOVE GEMINI-MOVE EXPLORE · soon
Manual operator control. Robot is assumed standing in walking mode — use Ready/Start only if needed. All controls below are locked until Enable movement is on; E-STOP always works. While movement is on, arm replays/actions are disabled (and vice-versa).

### Locomotion / Teleop

Discrete step pad
Run (1.2)
vx 0.00 · vy 0.00 · ω 0.00
W/S forward·back · Q/E strafe · A/D rotate · Space halt

### Postures & Modes

### MotionSwitcher / Low-Level

### Diagnostics — joints 12–28

### Live Map — full web_nav3 dashboard

Full web_nav3 dashboard (live map, set-pose, manual goals, missions) embedded from the robot. Also available standalone at :8765. If it stays blank, check that bringup + rosbridge are alive (see the Navigation tab) and that the robot is reachable on the network.

### MAP EDITOR

map: — MODE — Tool:
Brush
load a map…
Edit a SAVED map. Pick a map → Load & Edit. 🧽 Erase removes black phantom obstacles (paints them free); ⬛ Wall paints virtual walls / keep-outs. Click-drag to paint (brush size above). Save stores the edits per-map and applies them to the robot's navigation — it stops avoiding erased points and treats painted walls as keep-outs. Yellow = your edits. The original map `.db` is never modified.
unknown FACE — SPEAK —
LED face mask over Bluetooth. Check Link Gemini (below) to connect it + let Gemini show emotions; leave it off and the mask stays idle (no reconnecting). Once linked it self-heals dropped links — keep the mask near the Jetson and free it from the phone app first. Faces upload once (~25 s) then animate via PLAY.

### Animated Face

Link Gemini Speaking Hide mouth
Mouth 0
Face colors Eyes Mouth Sclera
Run face → it blinks/glances on its own and lip-syncs while Gemini speaks. Colors re-upload the frames (~30–60s). Auto-reconnect keeps the face alive through BLE drops.

### Brightness & Text

Brightness 95
Keep ≤100 to avoid LED flicker (battery-limited).
BG Speed
Text overrides the animated face until you Run face / ↩ Face again.

### Social / QR on Face

⬆ Show once
Social buttons show a scannable QR (short da.gd link → Instagram). Full-URL / dense QRs show full-screen but only scan if short (use QR from link below).
Saved QR codes ⬆ Add + Save
QR from link

### Saved Text / Words

Save words/phrases, then scroll any of them across the mask on demand.

### Built-in Images / Animations

Image
Anim
Built-in IMAG ids ~0–105, ANIM ids ~0–69 (values above range show garbled frames).

### Skill Registry

No skills configured

### Saved Records

Keep Gemini paused (hold) Auto — resumes after each clip
Select all
No records saved

### Terminal — unitree@robot

disconnected
Runs as the dashboard's user on the robot (typically `unitree`). No SSH handshake — the dashboard is already on the robot. Works on whichever Wi-Fi the robot is connected to.

### Scripts Manager

Gemini persona: …
Create variants (e.g. `sanad_script_v2.txt`) then select one and “Use for Gemini”. Default is always `sanad_script.txt`.

### Prompt Management

### Storage

…
loading…
“Clean all” = recordings + named records + logs. Faces, motions & zones are shown for tracking only — manage those in their own tabs.

### Live Logs