PLEN
Kontakt

Badania i rozwój

Rozwijamy własne oprogramowanie, które ma ułatwić pracę z robotami Unitree w polskich uczelniach, instytucjach i firmach: moduł polskich komend głosowych oraz platformę szkoleniową w języku polskim. Na tej stronie opisujemy zakres tych prac i ich ograniczenia.

1. Ekosystem badawczy Unitree

Najważniejsze publiczne zasoby, z których może korzystać laboratorium uczelniane pracujące z robotami Unitree: projekty podmiotów trzecich wykorzystywane na ich własnych licencjach. Podajemy wyłącznie odnośniki do oryginalnych źródeł; nie kopiujemy ani nie udostępniamy ich treści. Stan na 21.10.2026.

Od czego zacząć: według celu

CelPunkt wyjściaWarto wiedzieć
Własny program sterujący robotemunitree_sdk2 (C++) lub unitree_sdk2_pythonRepozytorium SDK zawiera katalogi z przykładami dla G1, Go2, H2, B2, A2, As2 i innych modeli. Referencyjne środowisko kompilacji to Ubuntu 20.04 na architekturze x86_64 lub aarch64.
Połączenie robota z własnym stosem ROS 2unitree_ros2Komunikuje się z robotem bezpośrednio przez warstwę DDS, bez opakowywania SDK. Producent przetestował je na Ubuntu 22.04 z ROS 2 Humble (wersja zalecana) i na Ubuntu 20.04 z Foxy; przykłady obejmują m.in. G1 i Go2.
Sprawdzenie programu przed uruchomieniem na robocieunitree_mujocoKorzysta z tego samego interfejsu SDK2 co prawdziwy robot, więc ten sam kod można najpierw sprawdzić w symulacji.
Uczenie chodu metodą uczenia ze wzmocnieniemunitree_rl_gym, unitree_rl_labTrening w Isaac Gym lub Isaac Lab, weryfikacja w MuJoCo, dopiero potem robot.
Zbieranie demonstracji i uczenie manipulacjixr_teleoperate, unitree_sim_isaaclab, LeRobot, unitree_lerobotObecnie dotyczy głównie G1.

Zanim Państwo zaczną: wersja ma znaczenie

  • Własne oprogramowanie wymaga wersji, która na to pozwala. Unitree oznacza rozwój wtórny (własne oprogramowanie przez SDK) jako obsługiwany w Go2 EDU i G1 EDU, jako podstawowy w Go2 X, a jako niedostępny w Go2 Air, Go2 Pro i podstawowej wersji G1 (Go2, G1).
  • Podłączenie komputera lub wyposażenia. W Go2 dodatkowe złącza Ethernet, zasilania i SBUS ma wyłącznie wersja EDU, a dodatkowy moduł obliczeniowy jest według producenta opcją dla wersji EDU (dokumentacja deweloperska Go2, unitree.com/go2).
  • Najpierw symulacja. Programy napisane z użyciem SDK2 można sprawdzić w unitree_mujoco, zanim zostaną uruchomione na robocie; na prawdziwym robocie próby przeprowadzamy etapami (punkt 6).

Informacje o wersjach i złączach sprawdzone w źródłach Unitree 22.10.2026.

SDK, symulatory i narzędzia uczenia

  • unitree_sdk2 – oficjalne SDK w C++ (DDS): własne programy sterujące robotem – od poleceń wysokiego poziomu po sterowanie niskopoziomowe; katalogi dla G1, Go2, H2, B2, A2, As2 i innych modeli.
  • unitree_sdk2_python – to samo SDK w Pythonie: szybkie prototypy i zajęcia dydaktyczne bez kompilacji.
  • unitree_ros2 – interfejs i przykłady ROS 2: połączenie robota z własnym stosem ROS 2 (nawigacja, percepcja, rejestracja danych).
  • unitree_mujoco – symulator MuJoCo korzystający z tego samego interfejsu SDK2 co prawdziwy robot: ten sam program można najpierw sprawdzić w symulacji.
  • mujoco_menagerie (Google DeepMind) – zbiór dopracowanych modeli MuJoCo, w tym Unitree G1 i Go2: punkt wyjścia do własnych eksperymentów symulacyjnych.
  • unitree_rl_gym – uczenie chodu metodą uczenia ze wzmocnieniem w Isaac Gym, sprawdzenie w MuJoCo, a następnie próba na robocie; G1, Go2, H1, H1-2.
  • unitree_rl_lab – środowiska uczenia ze wzmocnieniem w Isaac Lab: Go2, H1 i G1 (29 stopni swobody).
  • unitree_sim_isaaclab – zadania manipulacji i teleoperacji w Isaac Lab dla G1 i H1-2: zbieranie danych w symulacji.
  • LeRobot (Hugging Face) – biblioteka uczenia przez naśladowanie z natywną obsługą Unitree G1: nagrywanie demonstracji i trenowanie polityk.
  • LeRobot: Unitree G1 – opis konfiguracji G1 w LeRobot.
  • unitree_lerobot – narzędzia Unitree do konwersji danych i trenowania polityk w formacie LeRobot (G1).
  • xr_teleoperate – teleoperacja humanoida za pomocą gogli XR: zbieranie demonstracji do uczenia przez naśladowanie.

Licencje. Wymienione oprogramowanie, modele i zbiory danych są projektami podmiotów trzecich (np. Unitree Robotics, Hugging Face), udostępnianymi przez ich autorów i wykorzystywanymi na ich własnych licencjach. Licencje różnią się między projektami oraz między kodem, wagami modeli i zbiorami danych. Przed użyciem prosimy sprawdzić licencję danego projektu. NeoHumanoidX nie udziela do nich żadnej licencji. xr_teleoperate i teleimager (Unitree Robotics): licencja Apache 2.0 według plików LICENSE projektów; korzystają z komponentów podmiotów trzecich na ich własnych licencjach.

Jak z tego korzystamy: zasoby te śledzimy w ramach obserwacji technologii (punkt 5) i wykorzystujemy w modułach naszej platformy szkoleniowej.

2. Polskie komendy głosowe dla robotów (prace w toku)

Dlaczego: Standardowy asystent głosowy robotów Unitree nie obsługuje języka polskiego, a dla części modeli producent nie udostępnia w SDK interfejsu audio. Dlatego budujemy własny moduł mowy, niezależny od chmury.

Rozwijamy moduł polskich komend głosowych przeznaczony do pracy na robocie bez połączenia z internetem.

Nad czym pracujemy

  • Przetwarzanie lokalne. Rozpoznawanie mowy (faster-whisper), wykrywanie mowy (Silero VAD) i syntezę mowy łączymy w architekturze ROS 2 Humble, bez połączenia z internetem.
  • Zamknięta lista poleceń. Lista obejmuje 10 poleceń, m.in. „stój”, „dzień dobry”, „kim jesteś”, „powtórz”, „mów głośniej”, „pomachaj” i „obróć się w lewo”. Do rozpoznawania poleceń stosujemy deterministyczny mechanizm dopasowania – bez modelu językowego i bez elementu losowego.
  • Bezpieczeństwo przed wygodą. Moduł projektujemy tak, aby mowa nigdy nie sterowała ruchem bezpośrednio: każde polecenie ruchu ma przechodzić przez bramkę bezpieczeństwa i wymagać ustnego potwierdzenia („tak” w ciągu 5 sekund), a polecenie „stój” ma mieć zawsze pierwszeństwo, bez potwierdzenia.
  • Dwustopniowe zatrzymanie. Projekt przewiduje szybką ścieżkę, która przerywa wykonywaną czynność, oraz drugą ścieżkę, która potwierdza polecenie i blokuje ruch do czasu ręcznego zwolnienia.
  • Ruch tylko w trybie symulowanym. Moduł nie ma połączenia z napędami robota – polecenia ruchu są jedynie rejestrowane (tryb „dry-run”).
  • Prywatność. Moduł projektujemy tak, aby domyślnie nie zapisywał nagrań głosu.
  • Licencje. Korzystamy wyłącznie z głosów syntezy mowy, których licencje pozwalają na użycie publiczne (RHVoice: CC0 oraz CC BY 4.0), wybranych po przeglądzie licencji.

Ograniczenia:

  • modułu nie testowaliśmy na nagraniach prawdziwych osób, tylko na nagraniach syntetycznych;
  • gdy robot sam mówi, szybka ścieżka zatrzymania reaguje zbyt często także na inne wypowiedzi;
  • modułu nie testowaliśmy na robocie.

3. Platforma szkoleniowa z symulatorem robota (prace rozwojowe)

Badania i rozwój

Platforma szkoleniowa NeoHumanoidX. Rozwijamy platformę szkoleniową z symulatorem robota w przeglądarce, w języku polskim, dla zespołów pracujących z robotami humanoidalnymi Unitree – zespołów badawczych, dydaktyków i ich studentów.

Nad czym pracujemy

  • Moduły z lekcjami wprowadzającymi w zakresie od bezpieczeństwa pracy z robotem, przez konfigurację środowiska i komunikację z robotem (unitree_sdk2, DDS, ROS 2 Humble), sterowanie ruchem i uczenie ze wzmocnieniem, odometrię Fast-LIO 2, po narzędzia AI: LeRobot i Gemini Robotics-ER.
  • Struktura modułu: cele nauczania, wymagania wstępne, lekcja wprowadzająca, źródła z licencjami oraz data aktualności treści.
  • Słownik pojęć z wyszukiwarką w przeglądarce, bez serwera.
  • Symulator 3D w przeglądarce: silnik MuJoCo (WebAssembly) z publicznym modelem pełnowymiarowego humanoida Unitree (Unitree Robotics, licencja w brzmieniu BSD-3-Clause; zob. plik LICENSE modelu) – bez instalacji oprogramowania i bez serwera z kartą graficzną.
  • Kontrola jakości: każda zmiana przechodzi automatyczne testy jednostkowe i testy całego przebiegu, kontrolę odnośników, audyt zależności i skan pod kątem ujawnionych haseł.

Platforma nie jest publicznie dostępna. Uczelnie zainteresowane pilotażem prosimy o kontakt: Zapytaj o pilotaż.

4. G1: przenoszenie skrzynki dwiema rękami (prace w toku)

R&D w toku — bez wyników

Uczymy humanoida Unitree G1 podnieść skrzynkę oburącz, przejść z nią kilka metrów i odłożyć. To nasz pierwszy własny projekt i miejsce prób przed zadaniami logistycznymi dla klientów. Zadanie wydaje się proste, ale utrzymanie skrzynki i równowagi podczas przenoszenia wymaga dopracowania chwytu i chodu, dlatego dobrze nadaje się na punkt wyjścia do bardziej złożonych zadań.

  1. 1. Podejściezatrzymanie przed skrzynką
  2. 2. Chwytdwie ręce, docisk boczny
  3. 3. Podniesienieregulacja sił w ramionach
  4. 4. Marszramiona zablokowane
  5. 5. Odłożeniezatrzymanie, puszczenie
Przyjęty przebieg prac. Przedstawia etapy, a nie osiągnięte wyniki.

Jak to robimy

  • Zadanie dzielimy na kolejne etapy zamiast jednej sieci neuronowej obejmującej całość, dzięki czemu każdy etap można osobno sprawdzać i poprawiać.
  • Robot zatrzymuje się przed chwytem, więc chód i manipulacja nie odbywają się jednocześnie.
  • Podczas marszu ramiona trzymają stałą pozycję, a regulator chodu traktuje skrzynkę jako dodatkowy ładunek.
  • Ograniczenie, które znamy z danych producenta: udźwig ramienia G1 to ok. 2 kg (EDU ok. 3 kg, zależnie od pozycji), więc zaczynamy od lekkich, sztywnych skrzynek.

Wyniki

Nie publikujemy wyników: skuteczności, czasu cyklu ani nagrań.

Kod

Kod poglądowy Kod poglądowy, jeszcze nieuruchomiony na robocie. Dwa krótkie szkice naszego zespołu pokazujące, jak planujemy zbudować zadanie. Celowo nie korzystają z Unitree SDK ani ROS 2, aby nie sugerować integracji, której jeszcze nie zbudowaliśmy. Komentarze w kodzie są w języku angielskim.

Kod poglądowy 01_carry_state_machine.py · jeszcze nieuruchomiony na robocie.
# ILLUSTRATIVE / PLANNED - not from our repo, not run on a robot.
# G1 two-handed box carry: the 5 stages as a fail-closed state machine.
# Licence: (c) NeoHumanoidX sp. z o.o., shown for illustration only.
from enum import Enum, auto

class Stage(Enum):
    APPROACH = auto(); GRASP = auto(); LIFT = auto()
    WALK = auto(); PLACE = auto(); DONE = auto(); STOPPED = auto()

NEXT = {Stage.APPROACH: Stage.GRASP, Stage.GRASP: Stage.LIFT,
        Stage.LIFT: Stage.WALK, Stage.WALK: Stage.PLACE,
        Stage.PLACE: Stage.DONE}

class CarryTask:
    def __init__(self, skills, safety):
        self.skills, self.safety = skills, safety   # injected; sim first
        self.stage = Stage.APPROACH

    def step(self):
        if self.safety.stop_requested():            # e-stop / voice stop
            self.stage = Stage.STOPPED              # latched until reset
            return self.stage
        if self.stage in (Stage.DONE, Stage.STOPPED):
            return self.stage
        ok = self.skills[self.stage].run()          # bounded, with timeout
        self.stage = NEXT[self.stage] if ok else Stage.STOPPED
        return self.stage
Kod poglądowy 02_arm_hold_while_walking.py · jeszcze nieuruchomiony na robocie.
# ILLUSTRATIVE / PLANNED - not from our repo, not run on a robot.
# Keep both hands clamped on the box while the legs walk: hold a fixed
# arm pose with gentle stiffness and watch grip force for a slipping box.
# Licence: (c) NeoHumanoidX sp. z o.o., shown for illustration only.
from dataclasses import dataclass

@dataclass
class ArmHold:
    pose: list            # 14 arm joint targets [rad], left + right
    kp: float = 40.0      # soft enough to absorb walking sway
    kd: float = 1.5
    min_grip_n: float = 8.0

def hold_step(hold, read_state, send_arm_targets, on_slip):
    """One control tick (e.g. 100 Hz) during the WALK stage."""
    state = read_state()                       # joints + hand forces
    if min(state.grip_forces) < hold.min_grip_n:
        on_slip()                              # stop walking, set box down
        return False
    send_arm_targets(hold.pose, kp=hold.kp, kd=hold.kd)  # via the robot's SDK
    return True

5. Obserwacja technologii

Regularnie przeglądamy 27 źródeł: repozytoria Unitree, symulatory oraz biblioteki i modele AI dla robotów. Daty zmian odczytujemy bezpośrednio z historii repozytoriów, a każde ustalenie oznaczamy jako zweryfikowane albo wywnioskowane, z datą dostępu do źródła. Przykładowe ustalenia z października 2026:

  • Unitree G1 jest obsługiwany w bibliotece LeRobot (format danych LeRobotDataset v3.0); dla H2 takiej obsługi jeszcze nie ma.
  • SDK Unitree udostępnia interfejs audio dla G1, ale nie dla wszystkich modeli – tam obsługa mowy wymaga własnego rozwiązania.
  • MuJoCo 3.16.0 ukazało się 14.10.2026; nowe wersje pojawiają się mniej więcej co dwa tygodnie.

Na naszym profilu w serwisie LinkedIn publikujemy bieżące wiadomości techniczne z ekosystemu Unitree i badań nad robotyką.

6. Jak prowadzimy prace

  • Bez dowodu nie ma deklaracji. Publikujemy wyłącznie wyniki, za którymi stoją zapisane dane pomiarowe, z datą i warunkami pomiaru.
  • Próby etapami. Najpierw symulacja lub nagrania, potem próba bez ruchu robota, a dopiero na końcu ruch – za każdym razem po zatwierdzeniu przez kontrolę jakości, a przy ruchu w obecności operatora z wyłącznikiem awaryjnym.
  • Niezależna kontrola jakości. Zmiany w oprogramowaniu są sprawdzane przed włączeniem do wersji głównej.
  • Licencje i prawa. Komponenty, głosy, modele i dane sprawdzamy pod kątem licencji przed użyciem.

Kontakt

Jeżeli prowadzą Państwo zajęcia lub badania z robotami Unitree i chcieliby Państwo porozmawiać o tych pracach, zapraszamy do kontaktu: kontakt@neohumanoidx.eu.

Unitree, G1 i H2 są znakami towarowymi Unitree Robotics. Pozostałe nazwy produktów należą do ich właścicieli.

KontaktZapytanie o cenę