
**rosdep** to oficjalne **command-line tool** do rozwiązywania zewnętrznych (systemowych) zależności pakietów ROS i ROS 2. Każdy pakiet ROS deklaruje swoje zależności w `package.xml` w postaci kluczy `<depend>` (np. `<depend>boost</depend>`, `<depend>eigen</depend>`, `<depend>opencv</depend>`). rosdep tłumaczy te abstrakcyjne klucze na konkretne polecenia instalacji dla aktualnego systemu operacyjnego — `apt-get install libboost-dev` na Ubuntu/Debian, `brew install boost` na macOS, `yum install boost-devel` na RHEL, `pip install opencv-python` jako fallback dla pakietów Pythona.
## Architektura
rosdep opiera się na **scentralizowanej bazie YAML** w repozytorium [`ros/rosdistro`](https://github.com/ros/rosdistro) (Open Robotics). Plik `rosdep/base.yaml` mapuje klucze (np. `boost`) na zestaw poleceń instalacji per OS / per dystrybucja:
```yaml
boost:
ubuntu:
jammy: [libboost-all-dev]
noble: [libboost-all-dev]
fedora: [boost-devel]
osx:
homebrew: [boost]
```
Dodatkowo `python.yaml` mapuje pakiety Pythona, `rosdep/osx-homebrew.yaml` zawiera fallbacki dla macOS, a third-party rules można rejestrować przez `/etc/ros/rosdep/sources.list.d/*.yaml`.
## Workflow
Po pierwszej instalacji deweloper wykonuje: `sudo rosdep init` (jednorazowo) → `rosdep update` (pobiera najnowsze YAML-e z GitHub do `~/.ros/rosdep/`). Następnie w workspace: `rosdep install --from-paths src --ignore-src -r -y` — przegląda wszystkie `package.xml`, zbiera klucze i instaluje brakujące zależności jednym `apt-get install`.
## Kluczowe funkcje
- **--from-paths PATHS** — skanuj katalogi w poszukiwaniu `package.xml`.
- **--ignore-src** — ignoruj zależności które już istnieją jako pakiet w workspace.
- **--rosdistro DISTRO** — wymuszenie dystrybucji ROS (humble/jazzy/rolling) gdy automatyczne wykrywanie zawodzi.
- **--skip-keys K1 K2** — pomiń konkretne klucze (np. niedostępne w danym OS).
- **--simulate** — wypisz polecenia bez wykonywania (dry run).
- **resolve KEY** — pokaż jak konkretny klucz zostanie zresolwowany dla aktualnego OS.
## Status i utrzymanie
rosdep jest **aktywnie utrzymywany** przez Open Robotics i OSRF. Licencja: BSD 3-clause. Repozytorium kodu: [`ros-infrastructure/rosdep`](https://github.com/ros-infrastructure/rosdep). Baza reguł: [`ros/rosdistro`](https://github.com/ros/rosdistro) — przyjmuje PR-y od społeczności (każdy może dodać nowy klucz przez pull request). Dystrybucja: PyPI (`pip install -U rosdep`) i apt (`python3-rosdep`).
Developer Tool to oprogramowanie przeznaczone do wspierania pracy deweloperskiej, w tym konfiguracji, debugowania, testowania, monitorowania, walidacji lub integracji systemów robotycznych i embedded.
CLI Tool to program uruchamiany z linii komend, wykorzystywany do administracji, integracji, konfiguracji, testów i diagnostyki urządzeń oraz oprogramowania robotycznego.
Developer Enablement oznacza rolę oprogramowania wspierającego deweloperów w integracji, debugowaniu, walidacji, konfiguracji, testowaniu i uruchamianiu systemów robotycznych oraz ich komponentów.
Device Integration oznacza rolę oprogramowania odpowiedzialnego za komunikację, konfigurację, inicjalizację i obsługę konkretnych urządzeń, sensorów, kontrolerów lub komponentów sprzętowych w systemie robotycznym.
Diagnostics & Monitoring oznacza rolę oprogramowania odpowiedzialnego za zbieranie telemetrii, monitoring stanu, wykrywanie błędów, diagnostykę pracy robota i analizę kondycji komponentów systemu.
Zbiór oficjalnych narzędzi command-line wspierających workflow developera ROS / ROS 2: budowanie wielopakietowych workspace'ów, rozwiązywanie zależności systemowych i pakowanie do dystrybucji binarnej. Obejmuje m.in. colcon, rosdep i bloom.
**Wszystkie dystrybucje ROS 1 od Hydro (2013) i wszystkie dystrybucje ROS 2** — rosdep jest obligatoryjnym krokiem po `git clone` workspace'a: `rosdep install --from-paths src -y`. **Oficjalne tutoriale ROS 2** (docs.ros.org) zawsze wymagają rosdep przed `colcon build`. **NVIDIA Isaac ROS** — README każdego pakietu Isaac ROS instruuje `rosdep install` przed budowaniem. **ros-tooling/action-ros-ci** (GitHub Actions) — wykonuje `rosdep install` automatycznie dla każdego CI builda. **ROS 2 CI farm** — buildfarm na jenkins.ros.org uruchamia `rosdep install` jako pierwszy krok każdego joba. **NASA-JPL OpenROCS** (Mars Sample Return prep) — używa rosdep do zarządzania zależnościami swojego ROS 2 stacku.
Repozytorium ros-infrastructure/rosdep: ~250 ★, ~210 forków, ~60 kontrybutorów. Repozytorium ros/rosdistro (baza reguł): ~700 ★, ~1 100 forków, ~700 unikalnych kontrybutorów (każdy nowy pakiet ROS otwiera PR do rosdistro). PyPI `rosdep`: ~150 000 pobrań/miesiąc (2025). answers.ros.org — ~3 800 pytań z tagiem `rosdep`. ROS Discourse: ~600 wątków.
Python to wysokopoziomowy język programowania szeroko stosowany w robotyce, AI, computer vision, automatyzacji, testach i szybkiej integracji komponentów sprzętowych oraz software'owych.
Ubuntu 22.04 LTS to długoterminowo wspierana wersja systemu Linux wykorzystywana w robotyce, AI, systemach edge i środowiskach programistycznych. Stanowi popularną bazę dla nowszych stosów oprogramowania oraz dystrybucji ROS 2.
Ubuntu 20.04 LTS to długoterminowo wspierana wersja systemu Linux, szeroko wykorzystywana w robotyce, systemach embedded, AI i środowiskach developerskich. Jest popularna m.in. w środowiskach ROS oraz na platformach obliczeniowych takich jak NVIDIA Jetson.
Debian to jedna z najbardziej stabilnych i powszechnie stosowanych dystrybucji Linux, wykorzystywana jako baza dla wielu systemów embedded, robotycznych i serwerowych.
macOS to system operacyjny Apple wykorzystywany głównie na stacjach roboczych i laptopach deweloperskich do budowy, testowania i integracji oprogramowania.
Cache rosdep zajmuje ~50 MB w `~/.ros/rosdep/sources.cache/` po pierwszym `rosdep update`.
Oficjalny menedżer pakietów języka Python i rejestr PyPI (Python Package Index – pypi.org). Pakiety instalowane przez narzędzie pip ('pip install <package>') lub pip3 dla Pythona 3. Szeroko stosowany w ekosystemie robotycznym dla: bibliotek Pythona do komunikacji z SDK (Unitree Python SDK2 dostępne przez pip), wrapperów Pythona dla algorytmów (OpenCV Python: 'pip install opencv-python'), narzędzi deweloperskich (colcon, rosdep, vcstool instalowane przez pip). Obsługuje wirtualne środowiska (venv, virtualenv, conda) izolujące zależności między projektami. Format pakietów: wheel (.whl, binarne) i sdist (.tar.gz, source distribution wymagająca kompilacji). PyPI zawiera ponad 500,000 pakietów – największy ekosystem pakietów Python. Integracja z ROS 2: pakiety Python ROS 2 mogą być instalowane zarówno przez apt (ros-humble-rclpy) jak i pip, przy czym apt jest preferowany dla pakietów ROS 2 core. Wsparcie dla pinowania wersji przez requirements.txt i Pipfile. Ograniczenie: brak native obsługi zależności systemowych (C libraries) – rosdep uzupełnia tę lukę w ekosystemie ROS.
Menedżer pakietów Debian/Ubuntu – apt-get install.
ROS dependency manager i release tool.
64-bitowa architektura procesora wywodząca się z rodziny x86, opracowana przez AMD (jako AMD64) i zaadoptowana przez Intel (jako Intel 64 / EM64T). Dominująca architektura w komputerach osobistych, serwerach, stacjach roboczych i komputerach przemysłowych. W robotyce stosowana jako główna platforma obliczeniowa dla: stacji operatorskich i komputerów deweloperskich (Ubuntu 22.04/24.04 x86_64), serwerów fleet management i cloud robotics, symulatorów (Gazebo, Isaac Sim wymagają x86_64 z GPU NVIDIA dla pełnej wydajności), komputerów pokładowych robotów mobilnych wyższej klasy (Intel NUC, mini-PC przemysłowe jak Nuvo, OnLogic). Oficjalne wsparcie ROS 2 dla x86_64 jest tier-1 – wszystkie dystrybucje ROS 2 (Humble, Jazzy, Kilted) są w pełni wspierane i testowane. Pakiety apt dostępne przez packages.ros.org dla Ubuntu x86_64. Dominuje w środowiskach deweloperskich i symulacyjnych. Na robotach mobilnych i humanoidach x86_64 jest stosowane gdy wymagana jest wysoka moc obliczeniowa (np. Intel Core Ultra, AMD Ryzen Embedded) bez ograniczeń energetycznych typowych dla ARM. Przykłady hardware: Intel NUC 13 Pro, AMD Ryzen Embedded V2000, Advantech MIC-770.
64-bitowa architektura ARM (Advanced RISC Machine) w wersji ARMv8-A i nowszych – dominująca architektura w embedded computing, robotyce mobilnej i edge AI. Dwie nazwy oznaczają to samo: ARM64 (nazwa stosowana przez Apple i w kontekście macOS/iOS), AArch64 (oficjalna nazwa architektury ARM, używana w Linuksie i ekosystemie embedded). Absolutnie dominująca architektura w nowoczesnej robotyce mobilnej i humanoidalnej: NVIDIA Jetson (Orin NX, AGX Orin – Cortex-A78AE), Raspberry Pi 4/5 (Cortex-A72/A76), Qualcomm Robotics RB5/RB6 (Kryo), Apple M1/M2/M3 (dla stacji deweloperskich macOS), procesory w smartfonach używanych jako moduły robotyczne. Oficjalne wsparcie ROS 2 tier-1 dla aarch64 od dystrybucji Humble – pakiety apt dostępne przez packages.ros.org dla Ubuntu 22.04/24.04 aarch64. Unitree SDK2 dostępne dla aarch64 (target: Jetson Orin NX w G1). Boston Dynamics Spot: Qualcomm aarch64. Zalety wobec x86_64: znacznie niższy pobór energii (TDP 5–65W vs 45–125W), lepsza wydajność na wat, wbudowane NPU/GPU dla edge AI, mniejszy footprint fizyczny. Ograniczenia: historycznie mniejsza dostępność prebuildowanych pakietów (szybko zmniejsza się), niektóre biblioteki x86-only nie są portowane.
ARM 64-bit – NVIDIA Jetson, Raspberry Pi 4/5, Apple Silicon.
Specjalizowana platforma obliczeniowa NVIDIA Jetson oparta na architekturze AArch64 z zintegrowanym GPU NVIDIA (architektura Ampere w Orin, Maxwell/Pascal/Volta w starszych modułach) i akceleratorem DLA (Deep Learning Accelerator). JetPack SDK: kompletny stack software dla Jetson obejmujący L4T (Linux for Tegra – Ubuntu-based OS), CUDA, cuDNN, TensorRT, VPI (Vision Programming Interface), Multimedia API. Moduły Jetson Orin: AGX Orin (12-core Cortex-A78AE, Ampere GPU 2048 CUDA cores, 64 GB RAM, TDP 15–60W), Orin NX 16GB (8-core, 1024 CUDA cores, 16 GB RAM, TDP 10–25W – używany w Unitree G1), Orin Nano (6-core, 1024 CUDA cores, 8 GB RAM, TDP 7–15W). Isaac ROS: oficjalne GPU-accelerated pakiety ROS 2 dla Jetson, dystrybuowane przez NVIDIA NGC Container Registry. Wsparcie ROS 2: tier-1 dla aarch64 Ubuntu 22.04 (Humble) i Ubuntu 24.04 (Jazzy) na JetPack 5.x/6.x. Kluczowa platforma dla robotyki z wymaganiami AI: perception pipeline (stereo depth, object detection, pose estimation), SLAM, VLA inference na edge. Przykłady wdrożeń: Unitree G1 (Orin NX 16GB jako high-level compute), Boston Dynamics (wybrane produkty), drony autonomiczne (Skydio), roboty AMR wymagające edge AI.
Procesory Apple Silicon (M1, M2, M3, M4 i warianty Pro/Max/Ultra) oparte na architekturze AArch64 (ARMv8.5-A+), stosowane w MacBook, Mac mini, Mac Studio i Mac Pro od 2020 r. Platforma deweloperska rosnącego znaczenia w ekosystemie robotycznym – wielu deweloperów ROS 2 używa MacBooków z Apple Silicon. Wsparcie ROS 2: tier-3 (community supported) dla macOS, ROS 2 Humble i Jazzy można zainstalować przez: Homebrew ('brew install ros-humble' przez tap), RoboStack (conda-forge – najwygodniejsza metoda: 'conda install -c conda-forge ros-humble-desktop'), budowanie ze źródeł przez colcon. RoboStack/conda-forge jest rekomendowaną metodą instalacji ROS 2 na Apple Silicon macOS. Apple Silicon: unified memory architecture (CPU, GPU i Neural Engine współdzielą pamięć), Metal GPU API (brak CUDA – wymaga PyTorch z Metal Performance Shaders backend), Core ML / Apple Neural Engine dla inference. Ograniczenia: brak wsparcia CUDA (biblioteki NVIDIA CUDA-only nie działają natywnie), Rosetta 2 umożliwia uruchomienie x86_64 binary ale bez pełnej wydajności, niektóre pakiety ROS 2 wymagają patchowania dla macOS. Gazebo/Ignition: dostępne na macOS ARM64. Zastosowanie: deweloperzy piszący i testujący kod ROS 2, symulacje, narzędzia CLI – nie deployment na robot.
Platforma Raspberry Pi oparta na procesorach Broadcom (BCM) z architekturą AArch64: Raspberry Pi 4 Model B (BCM2711, quad-core Cortex-A72, do 8 GB RAM), Raspberry Pi 5 (BCM2712, quad-core Cortex-A76, do 8 GB RAM, 2–3× szybszy niż Pi 4), Raspberry Pi Compute Module 4/5 (wersje do integracji w custom hardware robotycznym). Raspberry Pi OS (64-bit) oparty na Debian Bookworm dla AArch64. Wsparcie ROS 2: tier-3 (community supported) dla Raspberry Pi OS, tier-1 dla Ubuntu 22.04/24.04 zainstalowanego na Raspberry Pi 4/5. Powszechnie stosowane w: edukacyjnych robotach mobilnych (TurtleBot 4 używa Raspberry Pi 4 jako komputer pokładowy), prototypach robotów AMR, robotach kroczących hobby (PicoBot, Hexapod na Pi), drone autopilots (ArduPilot na Pi), systemach wizyjnych (Pi Camera Module 3, HQ Camera przez MIPI CSI-2). Raspberry Pi 5 z PCIe 2.0 przez HAT+ connector umożliwia podłączenie M.2 NVMe SSD i akceleratorów AI (Hailo-8L – 13 TOPS). Ograniczenia wobec Jetson: brak dedykowanego GPU dla CUDA, brak wbudowanego NPU (poza Hailo zewnętrznym), 4K video processing bez sprzętowej akceleracji AI. Idealny dla: prototypowania, edukacji, robotów mobilnych niższej klasy, aplikacji niewymagających ciężkiego inference AI.
Architektura komunikacji usługowej oparta na protokole HTTP z semantyką zasobów (GET, POST, PUT, DELETE, PATCH). Stosowana w cloud robotics i fleet management. Nie nadaje się do sterowania real-time.
Klasa przetwarzania wsadowego lub offline – operacje trwające od kilku minut do godzin lub dni. Brak wymogów latencji – liczy się throughput i poprawność wyniku. Zastosowania: trenowanie modeli foundation (VLA, world models), przetwarzanie dużych zbiorów danych z sensorów, symulacje Monte Carlo, rendering syntetycznych datasetów w Isaac Sim, analiza długoterminowych logów, certyfikacja i walidacja oprogramowania.
Local Workstation oznacza typ wdrożenia, w którym software działa na komputerze lokalnym użytkownika, dewelopera lub operatora, np. laptopie, desktopie lub stacji roboczej.
Containerized oznacza typ wdrożenia, w którym oprogramowanie jest pakowane i uruchamiane w kontenerach, np. Docker lub innych technologiach konteneryzacji, co ułatwia przenoszenie, replikację i zarządzanie zależnościami.
On Robot oznacza typ wdrożenia, w którym oprogramowanie działa bezpośrednio na robocie lub na jego pokładowym module obliczeniowym, np. komputerze przemysłowym, SBC lub platformie edge AI.
Rodzina licencji: Licencja permisywna
Licencja BSD z trzema klauzulami – rozszerza BSD 2-Clause o trzeci warunek zakazujący używania nazwy organizacji ani nazwisk kontrybutorów do promocji produktów pochodnych bez pisemnej zgody (non-endorsement clause). Zwana też 'New BSD License' lub 'Modified BSD License'.
Oficjalna licencja Unitree SDK2 i Unitree Python SDK2. Powszechna w pakietach ROS 2 i bibliotekach robotycznych. Klauzula non-endorsement chroni reputację oryginalnych twórców przed nieuprawnioną asocjacją z produktami pochodnymi. Praktycznie identyczna z MIT pod względem swobody użytkowania.
Bieżąca seria z poprawkami dla ROS 2 Kilted Kaiju. Wsparcie Pythona 3.13, drobne usprawnienia rule validation.
Wsparcie dla Ubuntu Noble 24.04 (ROS 2 Jazzy). Lepsze raportowanie błędów dla `--simulate`. Optymalizacja czasu `rosdep update` o ~30%.
Wsparcie dla Ubuntu Jammy 22.04 (ROS 2 Humble). Wprowadzenie `rosdep keys` (lista wszystkich kluczy w workspace).
Wsparcie dla Python 3.8 i Ubuntu Focal 20.04. Lepsza obsługa pip3 vs pip2.
Refaktor pod ROS Hydro: oddzielenie kodu od bazy reguł (rosdistro), pluginable installer system. Wsparcie macOS/Homebrew, Fedora/yum, Arch/pacman.
Pierwsza wersja zintegrowana z ROS Cturtle/Diamondback. Wsparcie tylko Ubuntu (apt-get).