# 0101\_installation\_on\_ubuntu

### Resources

* 상태 페이지:
  * ROS 2 Jazzy (Ubuntu Noble 24.04): [amd64](http://repo.ros2.org/status_page/ros_jazzy_default.html), [arm64](http://repo.ros2.org/status_page/ros_jazzy_unv8.html)
* [Jenkins Instance](http://build.ros2.org/)
* [Repositories](http://repo.ros2.org)

### 시스템 설정

#### 로케일 설정

`UTF-8`을 지원하는 로케일이 설정되어 있는지 확인하라. 최소 환경(예: 도커 컨테이너)에서는 로케일이 `POSIX`와 같이 최소한의 설정으로 되어 있을 수 있다. ROS2는 아래 설정으로 테스트되었다. 그러나, 다른 `UTF-8`을 지원하는 로케일을 사용해도 문제없을 것이다.

```
locale  # check for UTF-8

sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8

locale  # verify settings
```

#### 필수 저장소 활성화

ROS 2 apt 저장소를 시스템에 추가해야 한다.

먼저 [Ubuntu Universe 저장소](https://help.ubuntu.com/community/Repositories/Ubuntu)가 활성화되어 있는지 확인하라.

```
sudo apt install software-properties-common
sudo add-apt-repository universe
```

이제 `apt`를 사용하여 ROS 2 GPG 키를 추가한다.

```
sudo apt update && sudo apt install curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
```

그런 다음 해당 리포지토리를 소스 목록에 추가한다.

```
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu$(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
```

#### 개발 도구 설치 (선택 사항)

ROS 패키지를 빌드하거나 개발 작업을 진행할 계획이라면, 개발 도구도 설치할 수 있다:

```
sudo apt update && sudo apt install ros-dev-tools
```

### ROS 2 설치

리포지토리를 설정한 후 apt 리포지토리 캐시를 업데이트하라.

```
sudo apt update
```

ROS 2 패키지는 자주 업데이트되는 Ubuntu 시스템에서 빌드된다. 새로운 패키지를 설치하기 전에 시스템을 최신 상태로 유지하는 것이 항상 권장된다.

```
sudo apt upgrade
```

데스크톱 설치 (권장): ROS, RViz, 데모, 튜토리얼 포함.

```
sudo apt install ros-jazzy-desktop
```

ROS-Base 설치 (최소 구성): 통신 라이브러리, 메시지 패키지, 명령줄 도구 포함. GUI 도구는 포함되지 않음.

```
sudo apt install ros-jazzy-ros-base
```

#### 추가 RMW 구현 설치 (선택 사항)

ROS 2에서 기본적으로 사용하는 미들웨어는 `Fast DDS`이다. 하지만 미들웨어(RMW)는 런타임에 교체할 수 있다. 여러 RMW를 사용하는 방법에 대한 자세한 내용은 [가이드](https://docs.ros.org/en/jazzy/How-To-Guides/Working-with-multiple-RMW-implementations.html)를 참조하라.

### 환경 설정

다음 파일을 소싱하여 환경을 설정하라.

```
# Replace ".bash" with your shell if you're not using bash
# Possible values are: setup.bash, setup.sh, setup.zsh
source /opt/ros/jazzy/setup.bash
```

### 예제 실행하기

위에서 `ros-jazzy-desktop`을 설치했다면, 몇 가지 예제를 실행해볼 수 있다.

한 터미널에서 설정 파일을 소싱한 후 C++ `talker`를 실행하라:

```
source /opt/ros/jazzy/setup.bash
ros2 run demo_nodes_cpp talker
```

다른 터미널에서 설정 파일을 소싱한 후 Python `listener`를 실행하라:

```
source /opt/ros/jazzy/setup.bash
ros2 run demo_nodes_py listener
```

`taker`가 메시지를 `Publishing`한다고 출력하고, `listener`가 해당 메시지를 `I heard`라고 출력하는 것을 볼 수 있어야 한다. 이를 통해 C++와 Python API가 정상적으로 작동하는 것을 확인할 수 있다. 축하한다!

### 다음 단계

다음 [튜토리얼 및 데모](https://docs.ros.org/en/jazzy/Tutorials.html)를 통해 환경을 구성하고, 자체 작업 공간 및 패키지를 생성하며, ROS 2의 핵심 개념을 배워보세요.

### 문제 해결

문제 해결 방법은 [여기](https://docs.ros.org/en/jazzy/How-To-Guides/Installation-Troubleshooting.html)에서 확인할 수 있다.

### 제거

이미 바이너리로 ROS 2를 설치한 후 소스 기반 설치로 전환하거나 ROS 2를 제거하려면 다음 명령을 실행하라:

```
sudo apt remove ~nros-jazzy-* && sudo apt autoremove
```

리포지토리를 제거하려는 경우:

```
sudo rm /etc/apt/sources.list.d/ros2.list
sudo apt update
sudo apt autoremove
# Consider upgrading for packages previously shadowed.
sudo apt upgrade
```

###

###
