Robocikowo>ROBOCIKOWO
bloom

Development · Narzędzia deweloperskie

bloom

bloom 0.13.x·Open Robotics

Aktywny Open source Dostępne API
KATEGORIADevelopment · Narzędzia deweloperskie
GOTOWOŚĆTRL 9
SKALA ADOPCJIStandard branżowy
LICENCJEBSD-3-Clause
PIERWSZE WYDANIE2012

**bloom** to oficjalne **narzędzie release management** dla ekosystemu ROS i ROS 2, stworzone przez Willow Garage i obecnie utrzymywane przez Open Robotics / OSRF. Jego rolą jest automatyzacja procesu publikacji pakietów ROS na **buildfarm ROS** (jenkins.ros.org / build.ros2.org), który następnie buduje pakiety binarne `.deb` (Debian/Ubuntu) i `.rpm` (RHEL/Fedora) i publikuje je w oficjalnych repozytoriach apt/yum (`packages.ros.org`).

## Workflow release'u

Każdy maintainer pakietu ROS, który chce żeby jego pakiet pojawił się w oficjalnym `apt install ros-humble-my-package`, musi przejść proces bloom:

1. **Tag wydania** — np. `git tag 1.2.3 && git push --tags` w repo źródłowym pakietu.
2. **bloom-release** — `bloom-release --rosdistro humble --track humble my_package` — bloom klonuje release repo (`my_package-release.git`), pobiera tag źródłowy, generuje `debian/control`, `debian/rules`, `debian/changelog` z `package.xml`, tworzy gałąź `debian/humble/my_package` i wysyła do GitHub.
3. **Pull request do ros/rosdistro** — bloom automatycznie otwiera PR do [`ros/rosdistro`](https://github.com/ros/rosdistro) z nowym wpisem `version: 1.2.3` w `humble/distribution.yaml`.
4. **Code review + merge** — zespół Open Robotics merguje PR.
5. **Buildfarm** — jenkins.ros.org wykrywa zmianę w `distribution.yaml`, buduje pakiety dla wszystkich obsługiwanych platform (Ubuntu Jammy amd64/arm64, RHEL 9 itd.) i wypycha do `packages.ros.org`.

## Kluczowe komendy

- `bloom-release` — pełny end-to-end release (tag → debianize → PR).
- `git-bloom-config` — konfiguracja tracking branches (release repo).
- `git-bloom-import-upstream` — import nowej wersji upstream do release repo.
- `git-bloom-generate` — generacja `debian/` lub `rpm/` artifacts dla konkretnej platformy.
- `git-bloom-release` — publikacja gałęzi release.

## Architektura

bloom napisany w Pythonie, używa **GitPython** do operacji na release repo, **rosdistro** do walidacji wpisów w distribution.yaml, oraz **catkin_pkg** do parsowania `package.xml`. Generatory pakietów: `bloom.generators.debian` (dpkg) i `bloom.generators.rpm` (rpmbuild). Wsparcie dla ROS 1 i ROS 2 jednoczesne — jeden bloom obsługuje wszystkie dystrybucje od Indigo (ROS 1) do Rolling (ROS 2).

## Status i utrzymanie

bloom jest **aktywnie utrzymywany** przez OSRF i Open Robotics, ale w trybie 'mature / stable' — feature set jest stabilny od ~2019 r., zmiany dotyczą głównie wsparcia dla nowych OS-ów (Ubuntu Noble, RHEL 10) i nowych dystrybucji ROS. Licencja: BSD 3-clause. Repozytorium: [`ros-infrastructure/bloom`](https://github.com/ros-infrastructure/bloom). Dystrybucja: PyPI (`pip install -U bloom`) i apt (`python3-bloom`).

Typ i role
Typy oprogramowania
Narzędzie deweloperskie

Developer Tool to oprogramowanie przeznaczone do wspierania pracy deweloperskiej, w tym konfiguracji, debugowania, testowania, monitorowania, walidacji lub integracji systemów robotycznych i embedded.

Narzędzie CLI

CLI Tool to program uruchamiany z linii komend, wykorzystywany do administracji, integracji, konfiguracji, testów i diagnostyki urządzeń oraz oprogramowania robotycznego.

Wybierz pozycję, aby zobaczyć opis.
Kategoria główna
Narzędzia deweloperskieRuntime i infrastruktura
Role w ekosystemie robotycznym
Wsparcie deweloperów

Developer Enablement oznacza rolę oprogramowania wspierającego deweloperów w integracji, debugowaniu, walidacji, konfiguracji, testowaniu i uruchamianiu systemów robotycznych oraz ich komponentów.

Diagnostyka i monitoring

Diagnostics & Monitoring oznacza rolę oprogramowania odpowiedzialnego za zbieranie telemetrii, monitoring stanu, wykrywanie błędów, diagnostykę pracy robota i analizę kondycji komponentów systemu.

Wybierz pozycję, aby zobaczyć opis.
Rodzina oprogramowania
Rodzina

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.

Dojrzałość i adopcja
9 / 9
Sprawdzone w warunkach operacyjnych
BadaniaPrototypProdukcja
Skala adopcjiStandard branżowy
Status utrzymaniaUtrzymywane przez fundację
Pierwsze wydanie2012
Ostatnia aktualizacja20 maja 2026
Wdrożenia

**~3 500 pakietów ROS** w `packages.ros.org` (każdy z nich został kiedyś wydany przez bloom). **Co tydzień** open robotics merguje ~30-50 PR-ów wygenerowanych przez bloom do `ros/rosdistro`. **NVIDIA Isaac ROS** — wszystkie binarne paczki Isaac ROS (`isaac_ros_*`) są wydawane przez bloom do `packages.ros.org`. **MoveIt 2**, **Nav2**, **ros2_control**, **rmw_*** implementations, **rclcpp**, **rclpy** — wszystkie core ROS 2 paczki są releasowane przez bloom. **Robotis OP3**, **Clearpath Husky/Jackal**, **Franka Robotics** — przykładowe firmy używające bloom do swoich oficjalnych pakietów ROS.

Społeczność

Repozytorium ros-infrastructure/bloom: ~200 ★, ~190 forków, ~80 kontrybutorów (2025). PyPI `bloom`: ~25 000 pobrań/miesiąc. ros/rosdistro: ~700 ★, ~1 100 forków, ~700 unikalnych kontrybutorów (każdy maintainer ROS package musi otwierać PR do rosdistro przez bloom). ROS Discourse: ~400 wątków oznaczonych `bloom` / `release`. ROS REP-141 (proces release'u) i REP-149 (`package.xml` format 3) określają semantykę używaną przez bloom.

Docelowe platformy robotyczne
Humanoid
Robot czworonożny
Robot mobilny
Ramię robotyczne
Robot przemysłowy
Robot usługowy
Robot badawczy
Dron / UAV
Wsparcie ROSKompatybilność z ekosystemem ROS / ROS 2
Official ROS 2 PackagePakiet dostępny w oficjalnym rejestrze ROS 2 przez rosdep / apt (packages.ros.org)
Official ROS 1 PackagePakiet dostępny w oficjalnym rejestrze ROS 1 (packages.ros.org)
Możliwości systemu
Open source
Kod źródłowy dostępny publicznie pod licencją open-source — umożliwia audyt bezpieczeństwa, własne modyfikacje oraz integrację bez barier licencyjnych.
Real-time capable
Zaprojektowane z gwarancjami determinizmu czasowego — spełnia wymagania pętli sterowania, systemów bezpieczeństwa i zadań wymagających niskiej, przewidywalnej latencji.
×
⟨/⟩
Dostępne API
Oprogramowanie udostępnia programowalny interfejs (REST, gRPC, SDK lub biblioteki językowe) pozwalający na automatyzację i integrację z innymi systemami.
📦
Pre-built / binary
Dystrybuowane jako gotowe pakiety binarne, obrazy kontenerów lub instalatory — bez konieczności kompilacji ze źródeł.
Języki programowania
Python

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.

Wybierz pozycję, aby zobaczyć opis.
Systemy operacyjne
Ubuntu 22.04

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

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

Debian to jedna z najbardziej stabilnych i powszechnie stosowanych dystrybucji Linux, wykorzystywana jako baza dla wielu systemów embedded, robotycznych i serwerowych.

macOS

macOS to system operacyjny Apple wykorzystywany głównie na stacjach roboczych i laptopach deweloperskich do budowy, testowania i integracji oprogramowania.

Wybierz pozycję, aby zobaczyć opis.
Minimalne wymagania sprzętowe
Minimalne wymagania sprzętowe
CPUDowolny x86-64 lub ARM64 z Pythonem 3.8+ oraz git ≥ 2.20. Bloom wykonuje operacje git clone/push — wymaga internet access do github.com.
RAM (GB)2
GPUNiewymagane. bloom to narzędzie packaging — wykonuje tylko operacje git, parsowanie YAML i generację plików debian/rules.
Dysk (GB)1

Release repo (np. my_package-release.git) zwykle zajmuje 2-10 MB. Lokalna kopia trzymana w `/tmp/bloom-*` w trakcie release'u.

Pakowanie i dystrybucja
Menadżery pakietów
pip / PyPI

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.

apt / deb

Menedżer pakietów Debian/Ubuntu – apt-get install.

rosdep / bloom (ROS)

Zestaw narzędzi specyficznych dla ekosystemu ROS do zarządzania zależnościami i tworzenia wydań pakietów. rosdep: narzędzie instalujące zależności systemowe pakietów ROS – analizuje pliki package.xml i instaluje brakujące zależności przez natywny menedżer pakietów systemu (apt na Ubuntu, brew na macOS, pip dla Pythona). Komendy: 'rosdep install --from-paths src --ignore-src -r -y' (instalacja wszystkich zależności workspace). bloom: narzędzie tworzące oficjalne wydania pakietów ROS – generuje pliki debian/rpm z package.xml, tworzy tagi Git i zgłasza pakiet do buildfarm Open Robotics. Buildfarm: infrastruktura CI/CD Open Robotics kompilująca i testująca pakiety ROS dla wszystkich obsługiwanych platform (Ubuntu x86_64, aarch64) i dystrybucji. Po przejściu buildfarm pakiet dostępny przez apt. REP-2004 (Quality Levels): poziomy jakości QL1–QL5 definiujące wymagania dla oficjalnych pakietów ROS 2 (testy, dokumentacja, CI). Kluczowe narzędzia dla maintainerów pakietów ROS chcących dystrybucji przez oficjalne repozytoria packages.ros.org.

Wybierz pozycję, aby zobaczyć opis.
Architektury CPU
x86_64 (AMD64)

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.

ARM64 / AArch64

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.

aarch64 / ARM64

ARM 64-bit – NVIDIA Jetson, Raspberry Pi 4/5, Apple Silicon.

Apple Silicon – AArch64 (macOS)

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.

Wybierz pozycję, aby zobaczyć opis.
Trudność instalacji
PoziomUmiarkowana
Protokoły i interfejsy
Protokoły komunikacji
REST API (HTTP/HTTPS)

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.

Wybierz pozycję, aby zobaczyć opis.
Klasy opóźnień
Batch / Offline (> 1 min)

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.

Wybierz pozycję, aby zobaczyć opis.
Typy wdrożenia
Lokalna stacja robocza

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.

Konteneryzowany

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.

Wybierz pozycję, aby zobaczyć opis.
Oficjalne obrazy Docker
ros:humble-desktopros:jazzy-desktoposrf/ros:humble-desktop-full
Licencje
BSD-3-ClauseBSD 3-Clause Licensev3-Clause

Rodzina licencji: Licencja permisywna

ModyfikacjaDystrybucjaUżytek komercyjnySublicencjonowanieUżytek prywatnyKompatybilna z ROSOSI zatwierdzonaFSF Free/LibreWymaga oznaczenia autorstwa

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'.

Uwaga dla robotyki

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.

Historia wersji
bloom 0.13.xwrz 2025

Bieżąca seria z poprawkami dla ROS 2 Kilted Kaiju. Lepsze raportowanie błędów PR do rosdistro.

bloom 0.12maj 2024

Wsparcie dla Ubuntu Noble 24.04 (ROS 2 Jazzy). Lepsze handling tagów semantic-version.

bloom 0.11maj 2022

Wsparcie dla Ubuntu Jammy 22.04 (ROS 2 Humble). Drobne usprawnienia logging.

bloom 0.9lis 2019

Wsparcie dla ROS 2 (Foxy, Eloquent). Bloom obsługuje równolegle ROS 1 i ROS 2 — jeden binary, dwie ścieżki kodu.

bloom 0.6mar 2016

Wsparcie dla ROS Kinetic. Generator RPM (Fedora/CentOS). Stabilizacja API.

bloom 0.5kwi 2014

Refaktor dla ROS Indigo, wprowadzenie tracks (śledzenie wielu wersji upstream równolegle), wsparcie pull request workflow do rosdistro.

bloom 0.1sty 2012

Pierwsza wersja stworzona w Willow Garage. Wsparcie tylko Debian (dpkg-buildpackage) dla ROS Fuerte.