🖥 먼저 뭐가 필요해?
ROS2를 가장 편하게 쓰려면 Ubuntu 리눅스가 필요해요. Windows와 macOS에서도 돌릴 수는 있지만, 99%의 자료와 튜토리얼이 Ubuntu 기준이라 처음 배울 땐 무조건 Ubuntu가 정답이에요.
jazzy를
humble로만 바꾸면 거의 다 똑같이 작동해요.
🐢 Ubuntu가 없으면?
Windows/Mac 사용자라면 옵션은 3가지예요.
- 듀얼 부팅 설치 (가장 추천) — Ubuntu를 진짜로 깐다. ubuntu.com/download
- WSL2 (Windows에서 가장 쉬움) — Windows 안의 Linux. GUI(RViz/Gazebo)는 약간 까다로움.
- 가상머신(VirtualBox) — 무겁고 느려서 비추.
일단 Ubuntu 24.04가 설치된 상태라고 가정하고 진행할게요.
📥 ROS2 Jazzy 설치 — 6단계
1) 로케일 설정 (UTF-8)
ROS2는 UTF-8 환경에서 돌아야 해요. 한 번만 확인.
locale # 현재 로케일 확인
sudo apt update && sudo apt install locales -y
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 # UTF-8이 보이면 OK
2) 필요한 도구 설치
sudo apt install software-properties-common curl -y
sudo add-apt-repository universe -y
3) ROS2 저장소 키 등록
ROS2 패키지를 어디서 다운받을지 우분투에게 알려주는 과정이에요. 명령어가 길어보여도 그냥 복붙하면 돼요.
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
4) ROS2 Jazzy 설치 (Desktop 풀버전)
sudo apt update
sudo apt upgrade -y
sudo apt install ros-jazzy-desktop -y
ros-jazzy-desktop는 RViz2, demo 패키지, turtlesim까지 포함된 풀패키지예요.
용량이 좀 크니까(약 1GB+) 다운로드 시간이 좀 걸려요.
ros-jazzy-ros-base도 있지만, 학습용은 풀버전이 편해요.
5) 개발 도구 설치
나중에 직접 노드를 만들 때 필요해요.
sudo apt install ros-dev-tools -y
sudo apt install python3-colcon-common-extensions python3-rosdep -y
sudo rosdep init
rosdep update
🔌 환경 설정 — source가 뭐길래?
설치는 됐는데, 터미널에서 ros2 명령을 쳤더니 "그런 명령 없는데?" 하고 나와요.
왜냐하면 매번 ROS2 환경을 "켜줘야" 하기 때문이에요.
source /opt/ros/jazzy/setup.bash
이 명령 한 줄을 치면 그 터미널에서 ROS2 명령어들이 작동해요. 하지만 새 터미널을 열 때마다 또 쳐야 해요.
번거롭죠? 그래서 ~/.bashrc에 자동으로 들어가게 해놔요.
echo "source /opt/ros/jazzy/setup.bash" >> ~/.bashrc
source ~/.bashrc
이제 새 터미널을 열 때마다 ROS2가 자동으로 활성화돼요.
.bashrc에 넣지 말고, 필요할 때만
source 하는 게 안전해요.
✅ 설치 확인 — talker / listener
ROS2가 잘 깔렸는지 확인하는 가장 빠른 방법은 데모 노드 2개를 띄워보는 것이에요. 터미널 2개를 열어주세요.
터미널 1 — 말하는 노드
ros2 run demo_nodes_cpp talker
이런 메시지가 1초마다 찍히면 성공:
[INFO] [talker]: Publishing: 'Hello World: 1'
[INFO] [talker]: Publishing: 'Hello World: 2'
[INFO] [talker]: Publishing: 'Hello World: 3'
...
터미널 2 — 듣는 노드
ros2 run demo_nodes_py listener
터미널 1에서 찍힌 메시지를 똑같이 받아서 보여주면 통신 성공:
[INFO] [listener]: I heard: [Hello World: 1]
[INFO] [listener]: I heard: [Hello World: 2]
[INFO] [listener]: I heard: [Hello World: 3]
...
🎉 축하해요! 여러분은 방금 인생 첫 ROS2 통신을 했어요. talker(C++)가 발행한 메시지를 listener(Python)가 구독해서 받은 거예요. 두 노드는 서로의 존재조차 직접 알 필요가 없어요 — 그게 ROS2의 매력이에요.
종료는 두 터미널에서 Ctrl + C.
🌐 ROS_DOMAIN_ID — 같은 와이파이에서 안 섞이게
같은 네트워크에 ROS2를 쓰는 사람이 또 있다면, 서로의 메시지가 섞일 수 있어요. 그걸 막으려면 각자 다른 도메인 ID를 쓰면 돼요.
echo "export ROS_DOMAIN_ID=42" >> ~/.bashrc
source ~/.bashrc
0~101 사이의 숫자 아무거나 골라요(추천은 0~100). 같은 ID끼리만 대화해요. 혼자 쓰면 안 건드려도 돼요.
새 터미널에서 ros2 명령을 쓰려면 매번 뭘 해야 할까?
colcon은 ROS2에서 뭐 하는 도구일까?
ROS_DOMAIN_ID는 왜 설정할까?
🎁 정리
- ROS2는 Ubuntu에서 가장 잘 돌아간다 (Jazzy → Ubuntu 24.04)
- 설치 6단계: 로케일 → 도구 → 저장소 → 본설치 → 개발도구 → source
- 새 터미널마다
source /opt/ros/jazzy/setup.bash필요 (보통 .bashrc에 넣음) - demo_nodes의 talker/listener로 설치 확인
- 네트워크 격리하려면
ROS_DOMAIN_ID설정
이제 본격적으로 ROS2의 핵심 개념을 만나러 갈 시간이에요. 다음 챕터로! ➡️