
**colcon** (od ang. *collective construction*) to oficjalny **meta build tool** ekosystemu ROS 2, opracowany przez Open Source Robotics Foundation (OSRF) i rozwijany od 2017 r. jako bezpośredni następca dwóch wcześniejszych narzędzi: **catkin_make** / **catkin tools** (ROS 1) oraz **ament_tools** (wczesne ROS 2). Pierwszym ROS 2 distro używającym colcon w pełni był **ROS 2 Bouncy Bolson** (lipiec 2018) — od tego momentu colcon jest standardowym build toolem we wszystkich kolejnych dystrybucjach (Crystal, Dashing, Foxy, Galactic, Humble, Iron, Jazzy, Kilted, Rolling).
## Architektura
colcon to **modularna platforma command-line oparta na pluginach Pythona**. Główny pakiet to `colcon-core`, a wokół niego krąży kilkanaście oficjalnych wtyczek dystrybuowanych przez PyPI: `colcon-common-extensions` (paczka zbiorcza), `colcon-cmake` (build pakietów CMake/ament_cmake), `colcon-python-setup-py` (pakiety Pythona w stylu ament_python), `colcon-ros` (rozumie semantykę `package.xml`), `colcon-cd` (shell helper), `colcon-mixin` (zestaw predefiniowanych opcji build), `colcon-defaults`, `colcon-bash`/`colcon-zsh` (autocomplete) i wiele innych.
## Kluczowe funkcje
- **Discovery pakietów** — automatycznie wykrywa wszystkie pakiety w katalogu (`package.xml`, `setup.py`, czysty `CMakeLists.txt`) i buduje graf zależności.
- **Topological sort** — buduje pakiety w prawidłowej kolejności (build_depend / exec_depend z `package.xml`).
- **Równoległy build** — `--parallel-workers N`, izolowane środowiska build (`--symlink-install`).
- **Selektywne budowanie** — `--packages-select`, `--packages-up-to`, `--packages-above`, `--packages-skip`.
- **Testowanie** — `colcon test` + `colcon test-result` z agregacją wyników gtest/pytest/launch_test.
- **CI integration** — natywna integracja z GitHub Actions (`ros-tooling/setup-ros`, `ros-tooling/action-ros-ci`) oraz Jenkins (jenkins.ros.org).
- **Mixins** — `colcon build --mixin release` (predefiniowane preset-y dla Release / Debug / coverage / asan).
## Workflow developera
Typowy cykl: `colcon build --symlink-install` → `source install/setup.bash` → `colcon test` → `colcon test-result --verbose`. Dla pojedynczego pakietu w trakcie iteracji: `colcon build --packages-select my_pkg --symlink-install`.
## Status i utrzymanie
colcon jest **aktywnie utrzymywany** przez OSRF i społeczność ROS 2 (Dirk Thomas — original author, obecnie zespół Open Robotics + zewnętrzni kontrybutorzy). Licencja: Apache 2.0. Wszystkie repozytoria w organizacji GitHub `colcon/`. Dystrybucja: PyPI (`pip install -U colcon-common-extensions`) oraz pakiety apt z buildfarm ROS 2 (`ros-<distro>-ros2cli` ciągnie colcon jako dependency).
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.
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.
**Każda dystrybucja ROS 2 od Bouncy Bolson (2018)** — colcon jest standardowym build toolem w Crystal, Dashing, Eloquent, Foxy, Galactic, Humble, Iron, Jazzy, Kilted i Rolling. **NVIDIA Isaac ROS** — używa colcon do budowania wszystkich packages w `~/workspaces/isaac_ros-dev/`. **MoveIt 2** — workspace MoveIt 2 buduje się przez `colcon build --mixin release`. **Nav2** — pełna nawigacja ROS 2 budowana colcon-em. **ROS 2 CI farm (jenkins.ros.org)** — każdy pull request do `ros2/ros2` triggeruje colcon build na 4 platformach (Ubuntu 22.04, 24.04, Windows 11, RHEL 9). **GitHub Actions** — `ros-tooling/action-ros-ci@v0.3` ma colcon jako default builder dla over 2 000 publicznych repozytoriów ROS 2.
Ekosystem colcon na GitHub: organizacja `colcon/` ma ~35 repozytoriów (colcon-core, colcon-cmake, colcon-python-setup-py, colcon-ros, colcon-mixin itd.), łącznie ~3 200 ★, ~600 forków, ~50 aktywnych kontrybutorów w 2025 r. Pakiet `colcon-common-extensions` na PyPI: ~280 000 pobrań/miesiąc (2025). Forum ROS Discourse — kategoria 'colcon' z ~1 500 wątkami i ~12 000 postów. answers.ros.org — ~6 000 pytań z tagiem `colcon`.
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.
Windows to rodzina systemów operacyjnych Microsoft wykorzystywana w środowiskach desktopowych, developerskich i integracyjnych. W robotyce występuje głównie jako środowisko narzędziowe, konfiguracyjne lub developerskie.
macOS to system operacyjny Apple wykorzystywany głównie na stacjach roboczych i laptopach deweloperskich do budowy, testowania i integracji oprogramowania.
JetPack Linux oznacza środowisko systemowe i software'owe dla platform NVIDIA Jetson, wykorzystywane do uruchamiania aplikacji AI, computer vision i robotyki edge. W praktyce bazuje na Linuxie i pakietach NVIDIA dla Jetson.
Workspace build ROS 2 Humble desktop może zajmować 8-15 GB przestrzeni dyskowej (build/install/log).
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.
Oficjalne narzędzie budowania (build tool) ekosystemu ROS 2 zastępujące catkin_make i catkin_tools z ROS 1. colcon (COLlective CONstruction) buduje workspace zawierający wiele pakietów ROS 2 w prawidłowej kolejności zależności. Instalacja przez pip: 'pip install colcon-common-extensions'. Komendy: 'colcon build' (budowanie workspace), 'colcon test' (uruchomienie testów), 'colcon build --packages-select <pkg>' (budowanie wybranego pakietu), 'colcon build --symlink-install' (szybszy development – symlinki zamiast kopiowania). Obsługuje pakiety CMake (ament_cmake), Python (ament_python) i inne systemy budowania. Integracja z CI/CD: GitHub Actions, GitLab CI używają colcon do budowania i testowania pakietów ROS 2. Nie jest menedżerem pakietów w sensie dystrybucji – jest narzędziem kompilacji lokalnego workspace. Kluczowe rozszerzenia: colcon-mixin (predefiniowane konfiguracje build), colcon-cd (nawigacja do pakietu), colcon-argcomplete (autocomplete). Wymagany do budowania pakietów ROS 2 ze źródeł gdy apt nie zawiera potrzebnej wersji.
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.
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
Permissive licencja open source opracowana przez Apache Software Foundation. Zawiera jawne udzielenie praw patentowych przez kontrybutorów (patent grant) oraz klauzulę retaliation (utrata licencji przy pozwie patentowym). Wymaga zachowania tekstu licencji, NOTICE file i informacji o zmianach w modyfikowanych plikach.
Oficjalna licencja Open Robotics dla rdzenia ROS 2 i większości pakietów tier-1. Standard de facto dla oprogramowania robotycznego open source. Klauzula patentowa chroni użytkowników przed pozwami ze strony kontrybutorów – preferowana nad MIT w projektach korporacyjnych. Kompatybilna z GPL v3 (ale nie GPL v2).
Bieżąca seria z poprawkami dla ROS 2 Kilted Kaiju. Lepsze raportowanie warnings z CMake 3.28+, parsowanie `colcon.pkg` plików w Pythonie 3.13.
Wsparcie dla Python 3.12 (Ubuntu 24.04 / ROS 2 Jazzy). Stabilizacja API pluginów, deprecation legacy entry-pointów.
Wsparcie dla Python 3.10 (Ubuntu 22.04 / ROS 2 Humble). Refaktor argument parsera, lepsze komunikaty diagnostyczne.
Dodanie systemu mixinów: predefiniowane preset-y opcji build (release, debug, coverage, asan).
Pakiet zbiorczy zawierający colcon-cmake, colcon-python-setup-py, colcon-ros, colcon-output. Standardowa instalacja dla ROS 2 Bouncy.
Pierwsze wydanie publiczne na PyPI. Bazowy framework command-line z system pluginów.