Sentio OS

Developer Preview

Programujte Unitree G1 v Pythonu

Sentio OS udělá z G1 EDU robota, kterého jde skriptovat: něco říct, ujet metr, najít značku AprilTag, zavřít gripper — každá z těch věcí je jeden řádek v Pythonu nebo jeden požadavek HTTP. Stejné API používá webové rozhraní Sentia i blokový editor Flow.

198koncových bodů HTTP

robot, jízda, navigace, LiDAR, kamera, řeč, gripper, Flow

29 + 6kroků a podmínek ve Flow

bloky, které jde spouštět, zastavit a sledovat i z kódu

10 mindo první aplikace

20 vývojářů bez zkušenosti s humanoidy, workshop 17. 9. 2026

Developer Preview. Python SDK i tento návod jsou nové a ještě se vyvíjejí. Hledáme první vývojáře, kteří je vyzkoušejí na vlastním G1 EDU a řeknou nám, co chybí. Přidejte se.

Tři kroky k prvnímu skriptu

Nainstalujte Sentio do G1 EDU

Sentio běží jako kontejner Docker na druhém počítači robota (PC2). Připojte se přes SSH — adresa záleží na vaší síti, na drátové síti robota je to 192.168.123.164:

ssh unitree@<robot>
docker --version

Přístup k registru a tři příkazy k instalaci najdete v Mém účtu. Instalátor na konci vypíše adresu webu, klíč API a ID zařízení. Ruční ovládání a péče o robota jsou zdarma a nevyprší.

Získejte klíč API

Hlavní klíč vypíše instalátor na konci (Klíč). Je uložený i na robotovi:

grep BACKPACK_API_KEY ~/sentio/.env

Týmy, které sdílí jednoho robota, dostanou vlastní klíče v Nastavení → Klíče a rezervace robota. Klíč se posílá v hlavičce X-API-Key.

Spusťte první skript

Spojení ověříte přes curl:

curl -H "X-API-Key: $KEY" http://<robot>:8000/api/v1/robot/status

Pak robota pozdravte z Pythonu (níže). Všechno kdykoli zastaví robot.stop_all() nebo Zastavit vše ve webovém rozhraní.

Python SDK

Balíček sentio je tenký synchronní klient nad REST API (jediná závislost je httpx). Během Developer Preview ho posíláme účastníkům přímo.

from sentio import Robot

robot = Robot("http://192.168.0.10:8000", api_key="…")   # or env SENTIO_URL / SENTIO_API_KEY
robot.say("Hello", lang="en", output="robot")
robot.gesture("wave_under_head")
robot.walk(1.0)                     # = drive(vx=0.3, max_m=1.0) + wait until driving=False
robot.turn(90)
print(robot.lidar.front())          # nearest obstacle ahead in metres, None without LiDAR

Co dalšího SDK umí:

robot.health() ; robot.activity() ; robot.stop_all()
robot.say("Hello", lang="en", output="robot")
robot.mode("walk") ; robot.modes()
robot.drive(vx=0.3, vyaw=0.0, max_sec=5, max_m=2) ; robot.drive_stop() ; robot.drive_status()
robot.walk(1.0)                     # = drive(vx=0.3, max_m=1.0) + wait until driving=False
robot.turn(90)                      # navigate/turn?wait=true
robot.navigate.go_tag(4, stop_cm=60) ; robot.navigate.search(4, direction="left")
robot.navigate.stop() ; robot.navigate.status()
robot.lidar.front() -> float        # from GET /lidar/pruh (nearest in the strip), None without LiDAR
robot.lidar.sectors() ; robot.lidar.strip(width_m=0.7, length_m=4.0)
robot.odom()
robot.camera.snapshot() -> bytes ; robot.camera.apriltags() ; robot.camera.objects() ; robot.camera.describe()
robot.gripper.open(side="auto") ; robot.gripper.close(grip="soft") ; robot.gripper.status()
robot.gesture("wave_under_head")
robot.flow.list() ; robot.flow.start("Pozdrav") ; robot.flow.stop() ; robot.flow.status()
for ev in robot.flow.events(run_id): ...   # generator over polling /flow/events?since_seq

Chyby jsou výjimky: AuthError (401), Forbidden (403), Reserved (423 — robota drží jiný tým), Busy (409), RobotUnavailable (503), ValidationError (422).

REST API

Všechno, co dělá SDK, je obyčejné HTTP pod /api/v1. Interaktivní dokumentace běží přímo na robotovi — otevřete http://<robot>:8000/docs a kterýkoli koncový bod vyzkoušíte v prohlížeči (schéma OpenAPI je na /openapi.json).

SkupinaHlavní koncové bodyBalíček
SystémGET /health · GET /status · GET /activity · POST /stop-all · GET /modulesZáklad
Robot a jízdaGET /robot/status · GET /robot/modes · POST /robot/mode · POST /robot/drive · GET /robot/drive · POST /robot/drive/stop · POST /robot/gesture · POST /robot/ledZáklad
NavigacePOST /navigate/go-tag · POST /navigate/search · POST /navigate/turn · POST /navigate/stop · GET /navigate/statusPohyb a vystoupení
LiDARGET /lidar/status · GET /lidar/sectors · GET /lidar/pruh · GET /lidar/snapshot · GET /lidar/cloud (proud) · GET /lidar/imuZáklad
OdometrieGET /robot/odomZáklad
KameraGET /video/snapshot · GET /video/stream · POST /video/apriltag/detect · POST /video/object/detect · POST /video/say-what-you-seeZáklad
ŘečPOST /say · GET /tts/voices · POST /stt/listen · POST /stt/transcribeZáklad
GripperGET /gripper/status · POST /gripper/open · POST /gripper/close · POST /gripper/stopZáklad
FlowGET /flow · POST /flow/{name}/start · POST /flow/stop · GET /flow/status · GET /flow/events?since_seq=Základ

Cesty jsou relativní k http://<robot>:8000/api/v1. Povely (POST) z týmového klíče potřebují rezervaci, když robota sdílí víc týmů; čtení a zastavení jde vždy.

Chcete být mezi prvními?

Napište nám — jakého robota máte a co byste chtěli postavit. Pošleme vám SDK a pomůžeme k prvnímu skriptu.

Napište nám  info@sentiorobotix.com