RViz2와 Gazebo는 ROS 2 생태계에서 필수적인 도구들이지만, 그 목적과 역할은 완전히 다르다. 한 문장으로 요약하자면 “Gazebo는 가상 세계를 만드는 곳이고, RViz2는 로봇의 머릿속을 들여다보는 곳”이다.
1. 주요 차이점
| 구분 | Gazebo (Simulator) | RViz2 (Visualizer) |
| 역할 | 물리 시뮬레이션. 실제 세상과 유사한 가상 환경 구축. | 데이터 시각화. 로봇이 인식하는 정보를 화면에 표시. |
| 핵심 엔진 | 물리 엔진(ODE, Bullet 등) 사용. 중력, 마찰, 충돌 계산. | 그래픽 엔진 사용. 물리 계산 없이 데이터만 렌더링. |
| 데이터 흐름 | 센서 데이터와 물리적 상태를 생성(Publish)함. | 센서 데이터와 상태 정보를 구독(Subscribe)여 보여줌. |
| 비유 | 로봇을 가상 운동장에 풀어놓는 것. | 로봇의 ‘눈(센서)’과 ‘생각’을 모니터링하는 것. |
2. 공통점
- ROS 2 메시지 통신: 두 도구 모두 ROS 2의 Topic, Service, Action을 사용하여 데이터를 주고받는다.
- URDF/Xacro 활용: 로봇의 외형과 관절 정보를 담은
URDF파일을 공통으로 사용하여 로봇 모델을 렌더링한다. - 3D 환경: 둘 다 사용자가 로봇의 상태를 확인할 수 있는 3D 그래픽 인터페이스를 제공한다.
3. 각각 무엇을 하는가?
Gazebo로 하는 일
- 가상 환경 테스트: 실제 로봇이 없어도 미로, 집, 실외 지형 등 가상 세계를 만들어 로봇을 구동한다.
- 센서 데이터 생성: 가상 레이저(LiDAR), 카메라, IMU 등을 로봇에 부착하여 실제와 유사한 가속도나 거리 데이터를 만들어낸다.
- 알고리즘 검증: 자율 주행이나 팔 제어 알고리즘이 실제 물리 법칙 하에서 어떻게 작동하는지(예: 무게 때문에 넘어지는지 등) 확인한다.
RViz2로 하는 일
- 센서 데이터 확인: 로봇이 받아오는 레이저 스캔 데이터(Point Cloud)나 카메라 영상을 실시간으로 시각화한다.
- 좌표계(TF) 디버깅: 로봇의 각 관절과 센서가 올바른 위치에 붙어 있는지 좌표 변환 상태를 확인한다.
- 내비게이션 모니터링: 로봇이 생성한 지도(Map), 계획된 경로(Path), 장애물 위치 등을 겹쳐서 보며 자율 주행 상태를 판단한다.
4. 왜 둘을 동시에 쓰는가?
현업에서는 보통 두 개를 같이 띄워놓고 작업한다.
- Gazebo에서는 로봇이 장애물에 부딪히는지, 물리적으로 잘 움직이는지 확인한다.
- 동시에 RViz2를 보면서 “로봇이 지금 장애물을 제대로 인식하고 있는가?”, “지도 상에서 자신의 위치를 정확히 알고 있는가?”를 디버깅한다.
예를 들어, Gazebo에서는 로봇 앞에 벽이 있는데 RViz2에서는 벽이 보이지 않는다면 센서 드라이버나 데이터 통신에 문제가 있음을 즉시 파악할 수 있다.
Gazebo와 RViz2의 차이를 직접 확인해 본 뒤, 핵심 내용을 잊지 않도록 Gemini의 도움을 받아 정리해 보았습니다.