Controls the ACTIVE speaker — G1 chest (DDS) + the selected PulseAudio sink (JBL/Anker). Applies live.
Manual sink / source override
Quick Actions
BUSY
Live Voice Commands
Last heard: --
Pending action: --
Audio attached: -- | Arm attached: -- | Gemini: --
Live Gemini Process
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.
Typed Replay Engine
Wake Phrase Manager
🔒 Arm actions are disabled while movement is enabled (Controller tab). Disable movement to replay / trigger / teach.
Motion Control
BUSY
Replay Manager
Macro Recorder (Audio + Motion)
Voice (WAV)
Motion (JSONL)
Speed
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
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
--
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 —unknownMSC —SDK —
CAMFACEPLACEMOVEGEMINI-MOVEEXPLORE · 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
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
NAV —unknownBRINGUP —BRIDGE —MODE —
Autonomous navigation via web_nav3 (Nav2 + rosbridge on the robot). Saved places
let you send a goal with one click; the robot drives there once locomotion is enabled.
The full nav dashboard (live map, set-pose, manual goals) is also available at
:8765.
Places
Loading…
Save current pose as place
Captures the robot's current map pose under this name. Drive (or teleop) the robot to the
spot first, then save. Saved places appear in the list to the left.
Missions
Loading…
Multi-waypoint routes / patrols defined in web_nav3. Run executes the full sequence.
MAP NAVIGATION
map: —Click:connecting…
VIEW — pick GOAL to drive, or ADD to bookmark places. Cyan = robot, green dots = this map's places. Each map has its own places. Use the Places list to Go / Move / rename / delete.
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:Brushload 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.
unknownFACE —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
Mouth0
Face colors
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
Brightness95
Keep ≤100 to avoid LED flicker (battery-limited).
Speed
Text overrides the animated face until you Run face / ↩ Face again.
Social / QR on Face
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
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
Auto — resumes after each clip
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.