ROS 2 로봇을 원격으로 시각화하고 제어하는 방법
Source: Dev.to
배경
몇 년 전 ROS를 배우면서 Navigation Stack을 실행하는 모바일 로봇을 RViz로 제어하려고 했습니다. 그때 ROS가 실행되는 컴퓨터에 원격 데스크톱 서버를 설치했는데, 설치는 간단했지만 RViz를 실행하려고 하면 3D 가속이 필요해서 시작하지 못했습니다.
그래서 LGDXRobot2를 개발하면서 로봇을 원격으로 제어하는 다양한 방법을 탐색했습니다. RViz를 사용하면 Nav2 파라미터 튜닝이 훨씬 쉬워집니다. 이 글에서는 로봇을 제어하기 위해 RViz·로봇 데이터에 원격으로 접근할 수 있는 여러 방법을 소개합니다.
1. 포터블 모니터

로봇 컴퓨터에 포터블 모니터를 직접 연결하고 무선 마우스·키보드를 사용하면 로봇이 자유롭게 움직이면서 RViz를 원격으로 실행할 수 있는 가장 직관적인 방법입니다.
장점
- 별도의 소프트웨어 설정이 필요 없음
단점
- 포터블 모니터가 비싸거나 화면이 비교적 작을 수 있음
2. PiKVM


PiKVM은 라즈베리 파이를 위한 DIY IP‑KVM 솔루션으로, 웹 기반 UI를 통해 원격 제어가 가능합니다. PiKVM을 만들기 위해 HDMI‑to‑CSI 브리지와 Raspberry Pi Zero 2 W를 구입했습니다(설명서 링크). 이 구성으로 최대 1080p 해상도의 원격 데스크톱에 접근할 수 있으며, 마우스·키보드 제어를 통해 RViz를 사용할 수 있습니다.
PiKVM은 LGDXRobot2 개발 기간 내내 가장 오래 사용된 방법이었습니다. 하지만 Raspberry Pi Zero 2 W는 성능이 제한적이며, 로봇이 라우터에서 멀어지면 원격 데스크톱이 매우 느려집니다. 또한 과열로 시스템이 멈출 수 있어 USB 팬으로 액티브 냉각이 필요합니다.
장점
- 합리적인 하드웨어 비용
- 최대 1080p 해상도 지원
- 대체로 부드러운 화면
단점
- PiKVM 설정에 추가 작업이 필요함
3. Selkies


Selkies는 저지연 원격 데스크톱 스트리밍 플랫폼입니다. 누군가 Docker 이미지(docker‑baseimage‑selkies)를 만들었고, 여기에 ROS 2와 필요한 의존성을 추가해 확장했습니다. 결과물은 LGDXRobot2 Desktop 이미지입니다.
Selkies를 사용하면 macOS 혹은 원격 로봇에서 ROS 2를 실행하고 웹 브라우저를 통해 RViz에 접근할 수 있습니다. 웹 인터페이스가 매우 반응성이 뛰어나서 원격 로봇 개발 시 주된 방법으로 사용하고 있습니다.
장점
- 별도 하드웨어가 필요 없음
- 저지연
- 고해상도 지원(호스트 사양에 따라)
단점
- 호스트 컴퓨터 성능에 영향을 줄 수 있음
- Docker 환경 설정에 대한 지식이 필요함
- Docker 이미지가 큼( LGDXRobot2 Desktop 이미지가 10 GB 이상)
4. 두 번째 컴퓨터에서 RViz 사용

기본적으로 ROS 2는 UDP 멀티캐스트를 이용해 토픽 데이터를 전파합니다. 따라서 다른 컴퓨터에 ROS 2를 설치하고 RViz를 실행하면 원격 로봇의 토픽을 자동으로 발견할 수 있습니다.
테스트 결과 Selkies보다 약간 높은 지연이 있었지만 여전히 충분히 사용 가능했습니다. 로봇 모델이 표시되지 않은 이유는 해당 머신에 LGDXRobot2 ROS 2가 설치되지 않았기 때문입니다.
장점
- 별도 하드웨어가 필요 없음
- 저지연
- 고해상도 지원(호스트 사양에 따라)
- 설정이 간단함
단점
- 없음; 동일한 소프트웨어를 두 번 설치하는 것이 큰 문제는 아님
5. Foxglove

Foxglove은 로봇 데이터 시각화·디버깅 도구로, 여러 운영 체제를 지원하며 웹 브라우저에서도 실행됩니다. 공식 문서를 따라 설정하면 바로 사용할 수 있습니다.
Foxglove를 이용해 로봇의 모든 토픽을 확인했으며, URDF 모델도 자동으로 표시되었습니다. 다만 데이터 스트리밍 설정이 완전하지 않아 스트림에 눈에 띄는 지연이 있었습니다.
장점
- 별도 하드웨어가 필요 없음
- 고해상도 지원(호스트 사양에 따라)
- 설정이 간단함
- 팀 내에서 설정을 공유할 수 있음
단점
- 도구 사용을 위해 로그인 필요
요약
원격으로 로봇을 제어한다고 해서 이동 자유성을 포기해야 하는 것은 아닙니다. 추가 하드웨어를 구입하지 않더라도 여러 방법으로 구현할 수 있습니다.
LGDXRobot2의 경우 Docker 이미지가 바로 사용할 수 있는 ROS 2 환경을 제공하므로 Selkies를 계속 사용할 예정입니다.