Skip to content

Latest commit

 

History

87 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Yugo ๐Ÿพ

A robot dog that turns invisible atmosphere into instinct.

Yugo is a fun-first reality-instrument companion built on a Unitree Go2 Air. You talk to it, play with it, and hand it your phone as a wand โ€” it senses the room and answers back with motion, light, and voice. Less "robot pet," more spirit animal.

Built at a hackathon. Designed to feel alive.


The idea

Some rooms feel safe. Some feel heavy. Some feel like they're watching you back.

Yugo gives that feeling a body. Sweep your phone like a wand and it casts a spell โ€” the same gesture always summons the same trick. Its mood shifts, and your phone's whole surface tints to match. Drive it, play with it, or just let it settle beside you and breathe.

The phone is Yugo's face: controller, wand, and voice, all in one โ€” colored by whatever mood Yugo is in.

What it does

  • ๐Ÿช„ Spell-casting (the headline). Hold the phone, sweep it through the air, release. The magnetometer trace is hashed into a deterministic trick โ€” the same sweep always casts the same spell. Immediate on-device tone, haptics, and a glowing trail make it feel like magic, not a remote.
  • ๐ŸŽจ Mood aura. Yugo has a mood (charged, safe, curious, โ€ฆ). The app polls it and tints its entire UI to match โ€” calm amber, nervous cyan, excited magenta. No screens of telemetry; just a feeling.
  • ๐ŸŽฎ Direct control. Joystick and D-pad drive, plus one-tap expressive actions โ€” hello, wiggle, heart, sit, stretch, dance. Everything is clamped and deadman-guarded: let go and Yugo stops.
  • ๐Ÿงญ Modes. One creature with many ways to relate: creature (idle), wand, personal (mirrors your mood), find (visually seeks a person), friend (spoken step-by-step nav), and meditation.
  • ๐Ÿ—ฃ๏ธ Voice & calm. Talk to Yugo and it answers in character; a guided breathing mode syncs its motion and light to help you slow down.

How it's built โ€” body + mind

Yugo's intelligence is split so the robot stays fast, safe, and lightweight while the heavy thinking happens in the cloud.

  • ๐Ÿค– Body โ€” a lightweight FastAPI service on the local network. It holds the WebRTC link to the dog, runs control and the reflex/deadman safety loop, and exposes the API the app codes against. Deliberately torch-free so it boots fast and runs anywhere.
  • โ˜๏ธ Mind โ€” cloud intelligence the body delegates to: reasoning, perception, and voice. The body carries text and commands, not heavy models โ€” keeping the on-robot layer simple and responsive.

The phone app is the third piece: an Expo / React Native client that talks to the body over the LAN. It owns all audio (the dog has no mic or speaker) and reads mood by polling. Safety always lives server-side โ€” and STOP is always one tap away.

Tech stack

Layer Stack
Body (robot I/O + control) Python ยท FastAPI ยท WebRTC ยท SQLAlchemy + Alembic ยท SQLite ยท built on DimOS
App (controller / wand / voice) Expo ยท React Native ยท NativeWind ยท expo-sensors (magnetometer)
Mind (cloud intelligence) LLM reasoning ยท vision perception ยท speech-to-text + text-to-speech
Robot Unitree Go2 Air

Quickstart

The "body" is a FastAPI app that connects to the dog over WebRTC and serves the API the app uses.

# install deps (uses uv)
uv sync

# apply database migrations
uv run alembic upgrade head

# run the body against your robot (set ROBOT_IP to your dog's address on the LAN)
ROBOT_IP=<your-dog-ip> uv run uvicorn yugo.main:app --host 0.0.0.0 --port 8080

# or run offline โ€” no robot needed; the reflex/safety layer stays live
YUGO_NO_ROBOT=1 uv run uvicorn yugo.main:app --port 8080

Try it:

curl -X POST localhost:8080/hello     # an expressive action
curl localhost:8080/state             # live motion / deadman state
curl localhost:8080/actions           # what Yugo can do

Run the tests (no robot required โ€” they boot the real app and exercise it over HTTP):

uv run pytest

Repo layout

Path What
yugo/ The body โ€” FastAPI service: robot I/O, control, deadman safety, persistence. See yugo/README.md.
app/ The Yugo app โ€” Expo / React Native controller, wand, and voice.
prd/ Product specs: architecture (body / mind), the API surface, and per-feature PRDs.
docs/ Design docs and the demo reel concept.
scripts/, utils/ Test harness and standalone robot utilities.

Roadmap

Yugo's demo arc: see โ†’ talk โ†’ cast spells โ†’ find โ†’ relax.

  • Foundation โ€” safe control, reflex/deadman, expressive actions, live state, persistence, tests.
  • Spells โ€” gesture โ†’ deterministic trick (the headline wand mechanic).
  • See & sense โ€” live camera feed and a streaming "aura" state.
  • Vision modes โ€” personal (emotional mirror) and find (visual person-seeking).
  • Talk โ€” a voice brain for conversation, spoken navigation, and guided calm.

Built on DimOS and the Unitree Go2 Air. A hackathon project by TensorKit.

About

gpu acc. robotic interface dim__

Resources

Stars

8 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages