# ROS2 Humble 설치 (Ubuntu, Windows, macOS)

#### 개요

ROS2 Humble은 로봇 소프트웨어 개발과 배포에 필요한 새로운 기능과 개선 사항을 포함하고 있으며, 다양한 운영 체제(Ubuntu, Windows, macOS)에서 동작한다. 여기서는 Ubuntu, Windows, macOS 각각의 설치 과정을 상세하게 다룬다. 설치 과정은 운영 체제별로 상이하므로, 시스템 환경에 맞추어 순차적으로 진행해야 한다.

ROS2를 설치하기 위해서는 다양한 패키지 매니저(Apt, Chocolatey, Homebrew 등)를 사용하며, 의존성 패키지 및 시스템 설정이 필요한 경우가 많다. 또한 ROS2의 빌드 시스템인 Colcon이나 작업공간(workspace) 구성 시 필요해지는 환경 변수를 설정해야 한다.

예를 들어, ROS2를 사용하는 과정에서 환경 변수들이 설정되는데, 다음과 같이 정의할 수 있다.

$$
\mathbf{env} = \begin{bmatrix} \text{PATH} \ \text{LD\_LIBRARY\_PATH} \ \text{AMENT\_PREFIX\_PATH} \end{bmatrix}
$$

이때 $\mathbf{env}$는 ROS2 실행 시 의존성 라이브러리와 패키지를 찾기 위해 참조되는 주요 환경 변수들의 모음이다. 각 변수는 시스템 경로와 ROS2 패키지 경로가 올바르게 연결되어 있어야 한다.

ROS2를 설치하기 전에, 사용자 권장 사양(메모리 용량, 디스크 용량, CPU 아키텍처 등)과 호환성을 고려해야 한다. 또한 개발 중 사용하는 언어(C++, Python 등)에 따라 추가 패키지와 컴파일러 버전을 준비해야 한다. Ubuntu에서의 설치 과정부터 구체적으로 살펴보자.

***

#### Ubuntu 22.04 기반 설치

ROS2 Humble은 Ubuntu 22.04(Jammy)를 정식 지원한다. 설치 과정을 순차적으로 알아보자.

**사전 준비**

1. 시스템 업데이트

   Ubuntu 패키지 인덱스를 최신 상태로 업데이트한다.

   ```bash
   sudo apt update
   sudo apt upgrade
   ```
2. 필수 도구 설치

   ROS2 빌드, 환경 설정 등에 필요한 도구들을 설치한다.

   ```bash
   sudo apt install curl gnupg lsb-release
   ```

**ROS2 저장소 등록**

1. GPG 키 가져오기

   ROS2 패키지 저장소를 사용하기 위해 GPG 키를 등록한다.

   ```bash
   sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
   ```
2. sources.list 추가

   Ubuntu 22.04용 ROS2 패키지 저장소를 sources.list에 추가한다.

   ```bash
   sudo sh -c 'echo "deb [arch=amd64] http://repos.ros2.org/ubuntu/main jammy main" > /etc/apt/sources.list.d/ros2-latest.list'
   ```
3. 다시 패키지 목록 갱신

   ```bash
   sudo apt update
   ```

**데스크톱 버전 설치**

* 일반적으로 ROS2 Humble의 데스크톱 버전을 설치하면 rclcpp, rclpy와 같은 주요 라이브러리와 RViz 등 GUI 도구가 같이 설치된다.

  ```bash
  sudo apt install ros-humble-desktop
  ```
* 만약 headless 모드(원격에서만 사용)로 간소화된 설치를 하려면 다음과 같이 한다.

  ```bash
  sudo apt install ros-humble-ros-base
  ```

**환경 변수 설정**

ROS2 실행을 위해 매번 터미널을 열 때마다 설정해야 하는 환경 변수를 자동화하려면 `setup.bash`를 `~/.bashrc`에 추가한다.

```bash
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
```

zsh이나 fish 등을 사용한다면 해당 쉘 설정 파일에 동일한 내용을 추가한다.

$$
\mathbf{env}\_{\text{Ubuntu}} = \begin{bmatrix} \text{PATH} = \text{PATH}:\text{/opt/ros/humble/bin} \ \text{LD\_LIBRARY\_PATH} = \text{LD\_LIBRARY\_PATH}:\text{/opt/ros/humble/lib} \ \text{AMENT\_PREFIX\_PATH} = \text{AMENT\_PREFIX\_PATH}:\text{/opt/ros/humble/} \end{bmatrix}
$$

**colcon 설치 및 사용**

ROS2는 colcon을 사용하여 워크스페이스를 빌드한다.

```bash
sudo apt install python3-colcon-common-extensions
```

빌드하려는 패키지를 `~/ros2_ws/src`에 위치시킨 후 다음과 같이 빌드한다.

```bash
cd ~/ros2_ws
colcon build
```

빌드가 끝나면 해당 워크스페이스를 소스로 추가해준다.

```bash
source ~/ros2_ws/install/setup.bash
```

**설치 확인**

* `ros2 --version` 명령어로 버전을 확인한다.
* Rviz나 rqt와 같은 GUI 도구를 실행할 수 있다.

  ```bash
  rviz2
  ```
* 터미널 1에서 `ros2 run demo_nodes_cpp talker`를 실행하고, 터미널 2에서 `ros2 run demo_nodes_py listener`를 실행하여 토픽 통신이 정상 동작하는지 확인한다.

#### Windows 10/11 기반 설치

Windows 환경에서 ROS2 Humble을 설치하기 위해서는 먼저 Visual Studio(또는 적절한 빌드 도구)와 일부 윈도우용 패키지를 준비해야 한다. 공식 문서에서는 Chocolatey 패키지 매니저를 이용하는 방법을 제시하고 있으나, PowerShell 스크립트 및 MSI 패키지를 통해 설치할 수도 있다. 여기서는 가장 일반적인 Chocolatey 기반 설치 과정을 살펴본다.

**사전 준비**

1. **Visual Studio 설치**
   * C++ 컴파일러와 빌드 툴이 포함된 Visual Studio를 설치한다. Community 버전 이상이면 충분하며, 추가 컴포넌트(Desktop development with C++ 등)를 체크해서 설치하는 것을 권장한다.
   * Visual Studio 설치 이후, 시스템을 재부팅하여 환경 변수가 갱신되도록 한다.
2. **Chocolatey 설치**
   * Windows PowerShell(관리자 권한)에서 다음 명령을 입력해 Chocolatey를 설치한다.

     ```powershell
     Set-ExecutionPolicy AllSigned
     Set-ExecutionPolicy Bypass -Scope Process -Force
     [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
     iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
     ```
   * 설치가 완료되면, `choco --version`으로 설치가 정상적으로 이루어졌는지 확인한다.

**ROS2 Humble 설치**

1. **ROS2 데스크톱 버전 설치**
   * Windows PowerShell(관리자 권한)에서 아래 명령을 입력한다.

     ```powershell
     choco upgrade ros-humble-desktop -y
     ```
   * 설치 과정에서 필요한 의존성 패키지(배포판, OpenSSL 등)가 자동으로 설치된다.
2. **Alternative: ros-base 설치**
   * GUI 도구 없이 최소 구성으로 ROS2를 활용하려면 다음 패키지를 설치한다.

     ```powershell
     choco upgrade ros-humble-ros-base -y
     ```
3. **Python 및 pip 확인**
   * Windows용 Python 3(예: Python 3.10 이상)이 설치되어 있어야 한다.
   * `python --version`과 `pip --version`을 통해 올바른 버전인지 확인한다.

**환경 변수 및 워크스페이스 설정**

* ROS2 설치 후, PowerShell 또는 CMD에서 ROS2를 사용하기 위해서는

  ```
  setup.bat
  ```

  또는

  ```
  local_setup.bat
  ```

  를 실행해야 한다. 보통 설치 경로가

  ```
  C:\dev\ros2_humble
  ```

  (Chocolatey 기본 경로)인 경우 다음과 같이 할 수 있다.

  ```powershell
  cd C:\dev\ros2_humble
  call setup.bat
  ```
* 이를 자동화하기 위해서는 사용자 프로필(`$PROFILE`)이나 시스템 환경 변수에 해당 경로를 추가한다.

$$
\mathbf{env}\_{\text{Windows}} = \begin{bmatrix} \text{PATH} = \text{PATH};C:\dev\ros2\_humble\bin \\
\text{PYTHONPATH} = \text{PYTHONPATH};C:\dev\ros2\_humble\Lib\site-packages \\
\text{AMENT\_PREFIX\_PATH} = C:\dev\ros2\_humble \end{bmatrix}
$$

* PowerShell을 재실행하거나, 혹은 새 터미널을 열 때마다 이 경로가 유효한지 확인한다.

**colcon 빌드 시스템**

* ROS2 Humble 패키지를 빌드 및 관리하기 위해서는 colcon이 필요하다.
* Windows PowerShell에서 다음과 같이 설치한다.

  ```powershell
  pip install -U colcon-common-extensions
  ```
* 만약 에러가 발생한다면,

  ```
  --user
  ```

  옵션 등을 사용하여 사용자 디렉터리에 설치하는 방법을 고려한다.

  ```powershell
  pip install --user -U colcon-common-extensions
  ```
* 패키지를 빌드할 때는 작업공간

  ```
  C:\dev\ros2_ws\src
  ```

  을 구성한 뒤 다음처럼 빌드한다.

  ```powershell
  cd C:\dev\ros2_ws
  colcon build
  call install\setup.bat
  ```

**설치 확인**

1. 버전 확인
   * 다음 명령으로 ROS2 버전을 확인한다.

     ```powershell
     ros2 --version
     ```
2. 토픽 통신 확인
   * 새로운 PowerShell 창을 열어

     ```
     call C:\dev\ros2_humble\setup.bat
     ```

     실행 후, 아래 명령어를 순차적으로 입력해 토픽이 잘 송수신되는지 확인한다.

     ```powershell
     ros2 run demo_nodes_cpp talker
     ```

     ```powershell
     ros2 run demo_nodes_py listener
     ```
3. GUI 도구 확인
   * 데스크톱 버전을 설치했다면, RViz2를 실행하여 그래픽 인터페이스가 정상적으로 동작하는지 확인한다.

     ```powershell
     rviz2
     ```

아래는 Windows 10/11에서 ROS2 Humble 설치 과정을 요약한 간단한 흐름도 예시이다.

{% @mermaid/diagram content="flowchart TB
A\[Visual Studio 설치] --> B\[Chocolatey 설치]
B --> C\[ros-humble-desktop 설치]
C --> D\[환경 변수 설정]
D --> E\[colcon 설치]
E --> F\[설치 확인]" %}

## ROS2 Humble 설치 (Ubuntu, Windows, macOS)

#### macOS 12 이상(예: Monterey, Ventura) 기반 설치

macOS 환경에서 ROS2 Humble을 설치하기 위해서는 Homebrew를 사용하는 것이 일반적이다. 다만, ROS2 공식 문서에서도 macOS 지원이 다른 운영 체제(Ubuntu, Windows)에 비해 상대적으로 제한적이라는 점을 인지해야 한다. 여기서는 Homebrew와 Python 환경을 활용하여 macOS에서 ROS2 Humble을 설치하는 과정을 살펴본다.

**사전 준비**

1. **Xcode 및 명령어 도구(Command Line Tools) 설치**
   * macOS에서 C/C++ 컴파일 작업을 진행하려면 Xcode 혹은 Xcode Command Line Tools가 필요하다.
   * Terminal에서 다음 명령어를 통해 Command Line Tools 설치를 확인할 수 있다.

     ```bash
     xcode-select --install
     ```
   * 이미 설치되어 있다면 “already installed”라는 메시지가 출력된다.
2. **Homebrew 설치**
   * Terminal에서 아래 명령어를 실행하여 Homebrew를 설치한다.

     ```bash
     /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
     ```
   * 설치 완료 후 `brew --version`으로 설치가 정상적으로 되었는지 확인한다.
3. **Python3 설치 확인**
   * 일반적으로 macOS에는 Python3가 미리 설치되어 있는 경우가 많으므로, Terminal에서 아래 명령어로 버전을 확인한다.

     ```bash
     python3 --version
     ```
   * 만약 설치되어 있지 않거나 버전이 오래된 경우 Homebrew를 통해 다음과 같이 Python3를 설치한다.

     ```bash
     brew install python
     ```

**ROS2 Humble 설치**

macOS용 ROS2 Humble 바이너리는 Homebrew를 통해 설치하는 공식 Tap이 별도로 존재하지 않거나(ROS2 버전에 따라 제공 여부가 다름), 혹은 설치 과정이 복잡할 수 있다. 일반적으로는 소스 빌드(Source Build)를 시도하거나 컨테이너(Docker) 환경을 병행해서 사용한다.

**1. 소스 빌드(Source Build)**

* ROS2 저장소를 직접 클론하여 빌드한다.

  ```bash
  mkdir -p ~/ros2_humble/src
  cd ~/ros2_humble/src
  git clone https://github.com/ros2/ros2.git -b humble
  ```
* 필요 패키지 설치:

  ```bash
  brew install cmake qt@5 asio tinyxml2 log4cxx opencv python@3.10 poco openssl@1.1
  ```

  * 바이너리 배포판 대비 macOS 환경에서는 종종 OpenSSL 버전 호환 문제가 발생한다. 필요한 경우 `openssl@1.1`이나 `openssl@3`를 적절히 링크해주어야 한다.
* 종속 패키지(의존성) 설치를 위해

  ```
  vcs
  ```

  를 사용한다.

  ```bash
  pip3 install vcstool
  ```

  ```bash
  cd ~/ros2_humble
  vcs import src < ros2/ros2.repos
  ```
* ROS2 빌드 스크립트 초기화:

  ```bash
  src/ros2/ros2/scripts/ros2_checkout_version.py --force
  ```
* 빌드 및 설치:

  ```bash
  colcon build --symlink-install
  ```

  * 빌드 과정에서 경로, 링크, 의존성 문제 등이 발생할 수 있으므로, 에러 메시지를 꼼꼼히 확인한다.

**2. Docker 컨테이너 활용**

* macOS에서 직접 빌드가 어렵거나, 호환성 문제가 우려된다면 Docker Desktop을 설치하여 ROS2 Humble용 Docker 이미지를 사용하기도 한다.
* 예시:

  ```bash
  docker pull osrf/ros:humble-desktop
  docker run -it osrf/ros:humble-desktop
  ```
* 이 방법은 macOS 호스트 환경에서 GUI(예: RViz2)를 사용하는 데 추가 설정(X11 포워딩, VNC 등)이 필요하므로 주의가 필요하다.

**환경 변수 설정**

빌드가 완료되면 macOS Terminal 세션에서 ROS2 환경 설정 스크립트를 실행해야 한다. 빌드 디렉터리가 `~/ros2_humble`라면 다음과 같이 할 수 있다.

```bash
source ~/ros2_humble/install/setup.bash
```

zsh, fish 등을 사용하는 경우 해당 쉘 스크립트 형식에 맞추어 실행하거나, `~/.zshrc` 혹은 `~/.bash_profile`에 추가해 자동화할 수 있다.

$$
\mathbf{env}\_{\text{macOS}} = \begin{bmatrix} \text{PATH} = \text{PATH}:\text{/Users/username/ros2\_humble/install/bin} \ \text{DYLD\_LIBRARY\_PATH} = \text{DYLD\_LIBRARY\_PATH}:\text{/Users/username/ros2\_humble/install/lib} \ \text{AMENT\_PREFIX\_PATH} = \text{AMENT\_PREFIX\_PATH}:\text{/Users/username/ros2\_humble/install/} \end{bmatrix}
$$

**colcon 설치**

* macOS에서도 colcon은 Python 패키지로 관리된다.

  ```bash
  pip3 install -U colcon-common-extensions
  ```
* 빌드할 ROS2 패키지를

  ```
  ~/ros2_ws/src
  ```

  디렉터리에 두고 다음과 같이 빌드한다.

  ```bash
  cd ~/ros2_ws
  colcon build
  source ~/ros2_ws/install/setup.bash
  ```

**설치 확인**

1. 버전 확인

   ```bash
   ros2 --version
   ```
2. 간단한 예제 실행
   * 터미널 1:

     ```bash
     ros2 run demo_nodes_cpp talker
     ```
   * 터미널 2:

     ```bash
     ros2 run demo_nodes_py listener
     ```
3. GUI 도구
   * macOS 환경에서 RViz2 실행 등 일부 GUI 패키지는 Qt 버전 문제, XQuartz 등 여러 의존성 문제가 발생할 수 있다.
   * 설치가 잘 되었다면 다음 명령으로 RViz2를 실행할 수 있다.

     ```bash
     rviz2
     ```
   * 만약 “Library not loaded” 등의 오류가 발생하면, `DYLD_LIBRARY_PATH` 설정과 `@rpath` 관련 링크를 다시 확인해야 한다.

아래는 macOS에서 ROS2 Humble을 소스 빌드하는 과정을 간단히 표현한 흐름도다.

{% @mermaid/diagram content="flowchart TB
A\[Homebrew 설치] --> B\[필수 패키지 설치]
B --> C\[ROS2 저장소 클론 & \n 의존성 패치]
C --> D\[colcon 빌드]
D --> E\[환경 변수 설정]
E --> F\[설치 확인]" %}
