VSCode + Docker로 ROS 2 개발 환경 구축
ROS 2를 직접 설치하지 않고 개발하는 방법
개요
- 2025년 기준으로 주로 사용하는 ROS2 LTS distro는
ros:foxy,ros:humble이 있음 - 각 distro는 Ubuntu OS의 버전에 맞춰야하는 호환성 문제가 있음
- 이러한 문제를 해결하기 위하여 Docker를 이용한 ROS 2 개발 환경을 구축방법을 기술
목적
- 사용하는 OS에 ROS 2를 설치하지 않고 개발환경 구축
- 깨끗하고 독립적인 개발 환경 유지 가능
- 쉽게 공유 및 배포 가능
- VSCode에서 자동완성(IntelliSense) 및 오류 감지 지원
repository
프로젝트 템플릿을 아래와 같이 구성함 (C++ 패키지 구성)
ros:humble: https://github.com/grade-e/ros2-humble-cpp-container-templateros:foxy: https://github.com/grade-e/ros2-foxy-cpp-container-template
구성 방법
아래 예시는 humble을 기준으로 진행
1
2
3
4
5
6
7
8
9
10
11
12
13
14
.
├── .devcontainer
│ ├── devcontainer.json # VSCode Dev Containers 설정 파일
├── Dockerfile # Docker container ROS2 환경 설정 파일
├── entrypoint.sh # 컨테이너 실행 시 ROS2 환경 설정
├── talker_cpp # 예제 ROS2 패키지
│ ├── CMakeLists.txt
│ ├── include
│ │ └── MinimalPublisher.hpp
│ ├── launch
│ │ └── talker.launch.py
│ ├── package.xml
│ └── src
│ └── MinimalPublisher.cc
1단계: 프로젝트 클론하기
1
2
git clone https://github.com/grade-e/ros2-humble-cpp-container-template
cd ros2-humble-cpp-container-template
2단계: 프로젝트 빌드하기
1
docker build --no-cache -t ros2-humble-dev .
ros:humble을 기반으로 ROS 2 패키지 및 개발 도구 설치- ROS 2 colcon workspace 생성 및 빌드
3단계: VSCode에서 Dev Containers 실행하기
VSCode GUI에서 실행
- 프로젝트 폴더를 VSCode에서 엽니다.
- 왼쪽 아래의 “Reopen in Container” 버튼을 클릭
- 컨테이너가 시작되면 자동으로 ROS 2 환경이 설정
4단계: ROS 2 환경 확인
컨테이너 내부에서 아래 명령어를 실행하여 ROS 2가 올바르게 설정되었는지 확인
1
2
3
source /opt/ros/humble/setup.bash
source /root/ros2_ws/install/setup.bash
ros2 launch talker_cpp talker.launch.py
실행 결과
1
2
3
4
5
6
7
8
[INFO] [launch]: All log files can be found below /root/.ros/log/2025-03-16-07-57-08-527471-385bf91d03e5-73
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [talker-1]: process started with pid [74]
[talker-1] [INFO] [1742111829.364038141] [talker]: Publishing: 'Hello, world! 0'
[talker-1] [INFO] [1742111829.864286914] [talker]: Publishing: 'Hello, world! 1'
[talker-1] [INFO] [1742111830.364569685] [talker]: Publishing: 'Hello, world! 2'
[talker-1] [INFO] [1742111830.864718566] [talker]: Publishing: 'Hello, world! 3'
[talker-1] [INFO] [1742111831.365098585] [talker]: Publishing: 'Hello, world! 4'
This post is licensed under CC BY 4.0 by the author.