1. 왜 ROS 2 강의에서 VS Code 원격 개발이 중요한가?
ROS 2 개발은 보통 일반적인 웹 개발보다 개발 환경이 복잡합니다.
Ubuntu 버전, ROS 2 배포판, Python 패키지, C++ 빌드 도구, colcon, rosdep, DDS 설정, 시리얼 장치, 카메라, 라이다, Pixhawk, Jetson 같은 하드웨어까지 함께 다뤄야 합니다.
초보자가 가장 많이 막히는 부분은 코드 자체가 아니라 개발 환경 차이입니다.
예를 들어 강의자가 다음 환경에서 실습한다고 해보겠습니다.
Ubuntu 22.04
ROS 2 Humble
Python 3.10
colcon
rosdep
Gazebo
RViz2
PX4
Jetson Orin
그런데 수강생은 Windows 노트북을 사용하거나, 다른 Ubuntu 버전을 사용하거나, 로컬 PC 성능이 부족할 수 있습니다.
이때 VS Code 원격 개발 환경을 사용하면 수강생은 자기 PC에서 VS Code를 실행하면서도 실제 코드는 원격 Ubuntu PC, WSL, Docker 컨테이너, Jetson 보드 안에서 실행할 수 있습니다.
VS Code Remote Development는 SSH 원격 머신, WSL( Windows Subsystem for Linux ), Dev Container( 개발 환경을 Docker 컨테이너로 고정하는 방식 )같은 환경을 VS Code에서 직접 개발 환경처럼 사용할 수 있게 해주는 기능입니다. Microsoft 공식 문서에서도 Remote Development는 SSH, WSL, Dev Containers, Codespaces( GitHub Codespaces = 클라우드에서 실행되는 Dev Container 개발 환경 )같은 방식으로 원격 또는 가상 개발 환경에 연결하는 구조로 설명합니다.
2. VS Code 원격 개발 환경이란?
VS Code 원격 개발 환경은 간단히 말하면 다음 구조입니다.
내 PC
└─ VS Code 화면, 키보드, 마우스
원격 개발 환경
├─ Ubuntu
├─ ROS 2
├─ Python / C++
├─ colcon build
├─ ros2 run
├─ ros2 launch
└─ 실제 하드웨어 또는 시뮬레이터
즉, 코드는 내 PC에서 보는 것처럼 편집하지만, 실제 파일 저장, 빌드, 실행은 원격 환경에서 수행됩니다.
VS Code Remote - SSH 확장은 SSH 서버가 실행 중인 원격 머신, 가상 머신, 컨테이너의 폴더를 열고 VS Code 기능을 그대로 사용할 수 있게 해줍니다. 연결 후에는 원격 파일 시스템의 파일과 폴더를 로컬처럼 다룰 수 있습니다.
3. ROS 2 개발에서 많이 쓰는 원격 개발 방식
ROS 2 강의에서는 보통 아래 세 가지 방식이 가장 실용적입니다.
| Remote - SSH | Jetson, 라즈베리파이, Ubuntu 서버, 로봇 PC 접속 | 매우 높음 |
| WSL | Windows PC에서 Ubuntu 기반 ROS 2 개발 | 높음 |
| Dev Containers | 실습 환경을 Docker로 통일 | 매우 높음 |
VS Code의 Remote Development 확장팩은 컨테이너, 원격 머신, WSL 안의 폴더를 열고 VS Code 기능을 사용할 수 있게 해주는 확장 모음입니다.
4. 방식 1: Remote - SSH
4.1 Remote - SSH 개념
Remote - SSH는 가장 전통적이고 현장에서 가장 많이 쓰는 방식입니다.
예를 들어 다음과 같은 장비에 접속할 수 있습니다.
내 노트북 → Jetson Orin
내 노트북 → Ubuntu 데스크탑
내 노트북 → 라즈베리파이
내 노트북 → 로봇 내부 제어 PC
내 노트북 → 연구실 서버
ROS 2 로봇 개발에서는 이 방식이 거의 필수입니다.
왜냐하면 실제 로봇에 연결된 카메라, 라이다, 모터 드라이버, Pixhawk, USB 장치들은 원격 장비에 붙어 있기 때문입니다.
VS Code Remote - SSH 확장은 SSH 서버가 있는 원격 머신을 개발 환경으로 사용할 수 있게 해주며, 원격 개발과 트러블슈팅을 단순화할 수 있습니다.
4.2 원격 Ubuntu PC 준비
원격 PC 또는 Jetson에서 SSH 서버를 설치합니다.
sudo apt update
sudo apt install openssh-server -y
SSH 서비스 상태를 확인합니다.
sudo systemctl status ssh
실행되어 있지 않다면 시작합니다.
sudo systemctl enable ssh
sudo systemctl start ssh
IP 주소를 확인합니다.
ifconfig
또는 간단히:
hostname -I
예를 들어 IP가 다음과 같다고 가정합니다.
192.168.0.35
4.3 내 PC에서 SSH 접속 테스트
내 PC 터미널이나 putty 프로그램에서 다음 명령을 실행합니다.
ssh username@192.168.0.35
예:
ssh ubuntu@192.168.0.35
처음 접속하면 다음과 비슷한 메시지가 나올 수 있습니다.
Are you sure you want to continue connecting?
yes를 입력합니다.
비밀번호를 입력해서 접속되면 기본 SSH 연결은 성공입니다.
4.4 VS Code에서 Remote - SSH 설치
VS Code를 실행한 뒤 확장 메뉴에서 다음 확장을 설치합니다.
Remote - SSH
또는 확장팩 전체를 설치해도 됩니다.
Remote Development
Remote Development 확장팩은 SSH, WSL, Dev Containers 같은 원격 개발 기능을 한 번에 설치할 수 있는 확장팩입니다.
4.5 VS Code에서 원격 접속하기
VS Code에서 다음 순서로 진행합니다.
F1 또는 Ctrl + Shift + P
→ Remote-SSH: Connect to Host...
→ Add New SSH Host...
SSH 명령을 입력합니다.
ssh ubuntu@192.168.0.35
설정 파일은 보통 아래 위치에 저장됩니다.
Windows:
C:\Users\사용자이름\.ssh\config
Linux / macOS:
~/.ssh/config
예시 설정:
Host jetson-ros2
HostName 192.168.0.35
User ubuntu
Port 22
이제 VS Code에서 jetson-ros2를 선택하면 원격 장비에 접속할 수 있습니다.
4.6 ROS 2 워크스페이스 열기
원격 접속 후 VS Code에서 폴더를 엽니다.
예:
/home/ubuntu/ros2_ws
터미널을 열고 ROS 2 환경을 확인합니다.
source /opt/ros/humble/setup.bash
ros2 topic list
워크스페이스를 빌드합니다.
cd ~/ros2_ws
colcon build
source install/setup.bash
노드를 실행합니다.
ros2 run my_package my_node
5. VS Code 원격 개발 내부 구조
VS Code 원격 개발은 단순히 파일을 복사해서 여는 방식이 아닙니다.
대략적인 구조는 다음과 같습니다.
내 PC VS Code
├─ 화면 출력
├─ 키보드 입력
└─ 확장 UI
원격 환경
├─ VS Code Server
├─ 소스 코드
├─ 터미널
├─ 빌드 도구
├─ ROS 2
└─ 실행 프로세스
VS Code 공식 문서에 따르면 Remote Development 확장은 WSL, SSH 원격 머신, Dev Containers 환경에서 작업할 수 있게 하며, 원격 환경에 VS Code Server를 설치해서 로컬 VS Code가 원격 소스 코드와 런타임과 상호작용하게 합니다.
이 구조 덕분에 로컬 PC에는 무거운 ROS 2 환경을 설치하지 않아도 되고, 실제 실행은 원격 Ubuntu 환경에서 처리할 수 있습니다.
6. 자주 발생하는 문제와 해결법
13.1 SSH 접속이 안 되는 경우
확인할 것:
sudo systemctl status ssh
방화벽 확인:
sudo ufw status
포트 확인:
sudo ss -tlnp | grep 22
IP가 바뀌었는지도 확인해야 합니다.
hostname -I
13.2 VS Code가 원격 서버 설치 중 멈추는 경우
원격 장비에서 기존 VS Code Server 캐시를 삭제합니다.
rm -rf ~/.vscode-server
그다음 VS Code에서 다시 접속합니다.
VS Code 공식 문서는 Remote Development 문제 해결 문서에서 SSH, Containers, WSL 각각의 설정과 트러블슈팅 문서를 참고하도록 안내합니다.
13.3 Remote - SSH 접속은 되는데 터미널 환경이 이상한 경우
원격 터미널에서 현재 shell을 확인합니다.
echo $SHELL
bash를 사용하는 경우:
chsh -s /bin/bash
chsh는 change shell의 줄임말입니다. 사용자의 기본 셸을 변경합니다.
.bashrc에 ROS 2 환경 설정을 넣습니다.
source /opt/ros/humble/setup.bash
source ~/ros2_ws/install/setup.bash
단, ~/ros2_ws/install/setup.bash는 워크스페이스를 한 번 빌드한 뒤 존재합니다.
'강좌 > ROS2' 카테고리의 다른 글
| Python 기본 타입 메시지 Publisher / Subscriber 예제 (0) | 2026.05.26 |
|---|---|
| 로봇 개발자를 위한 Python 기초 교육 #3 (0) | 2026.05.25 |
| ROS 2 Humble rqt Plugins 정리 #3 (0) | 2026.05.24 |
| 로봇 개발자를 위한 Python 기초 교육 #2 (0) | 2026.05.24 |
| 6일차 강의 (0) | 2026.05.24 |