TurtleBot3는 ROS 기반 교육·연구용 모바일 로봇 플랫폼이고, Burger / Waffle / Waffle Pi처럼 모델을 바꿔가며 실습할 수 있습니다. ROBOTIS 공식 e-Manual에서도 TurtleBot3를 ROS 기반의 확장 가능한 모바일 로봇 플랫폼으로 설명하고 있으며, ROS 2 환경 설정 예시도 제공합니다.
이번 실습에서는 TurtleBot3 Waffle 시뮬레이션을 실행한 뒤, RViz와 rqt 플러그인으로 카메라 토픽을 확인합니다.
이 글에서 확인할 내용은 다음과 같습니다.
- TurtleBot3 Waffle 시뮬레이션 실행
- ROS 2 토픽 목록 확인
- RViz에서 카메라 토픽 보기
- rqt 플러그인으로 이미지 토픽 보기
- 카메라 토픽이 보이지 않을 때 확인할 것
1. 실습 환경
Ubuntu 22.04 또는 24.04
ROS 2 Humble / Jazzy
TurtleBot3 ROS 2 패키지
Gazebo 또는 Gazebo Classic
RViz2
rqt
ROS 2 배포판과 TurtleBot3 패키지 버전에 따라 실행 명령이나 토픽 이름이 조금 다를 수 있습니다. TurtleBot3 공식 저장소는 ROS 패키지를 제공하며, 공식 문서와 함께 관리되고 있습니다.
2. TurtleBot3 Waffle 모델 설정
터미널을 열고 TurtleBot3 모델을 waffle로 설정합니다.
export TURTLEBOT3_MODEL=waffle
매번 입력하기 귀찮으면 .bashrc에 추가합니다.
echo 'export TURTLEBOT3_MODEL=waffle' >> ~/.bashrc
source ~/.bashrc
현재 설정을 확인합니다.
echo $TURTLEBOT3_MODEL
출력:
waffle

3. TurtleBot3 Waffle 시뮬레이션 실행
다음 명령으로 Gazebo 시뮬레이션을 실행합니다.
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py

다른 터미널에서 토픽 목록을 확인합니다.
ros2 topic list

카메라 관련 토픽이 있는지 확인합니다.
ros2 topic list | grep camera
예상 가능한 토픽 이름은 환경에 따라 다르지만 보통 다음과 비슷합니다.
/camera/image_raw
/camera/camera_info
또는 경우에 따라 다음처럼 나올 수 있습니다.
/camera/image_raw
/camera/image_raw/compressed
/camera/camera_info

4. 시뮬레이션에서 카메라 토픽을 RViz로 볼 수 있나요?
가능합니다.
단, 조건이 있습니다.
시뮬레이션 모델에 카메라 센서가 포함되어 있고, ROS 2 이미지 토픽이 실제로 publish되고 있어야 합니다.
확인은 이렇게 합니다.
ros2 topic list | grep image
또는:
ros2 topic info /camera/image_raw

정상이라면 타입이 보입니다.
Type: sensor_msgs/msg/Image
Publisher count: 1
Subscription count: 0
이미지 메시지가 실제로 나오는지도 확인합니다.
ros2 topic hz /camera/image_raw
출력이 계속 나오면 카메라 토픽이 정상적으로 publish되고 있는 상태입니다.

5. RViz2 실행
새 터미널에서 RViz2를 실행합니다.
rviz2
RViz가 열리면 왼쪽 아래의 Displays 패널에서 설정합니다.

6. RViz에서 카메라 이미지 보기
RViz에서 다음 순서로 진행합니다.
- 왼쪽 아래 Add 클릭
- By display type 선택
- Image 선택
- OK 클릭
- 새로 추가된 Image 항목 선택
- Topic을 /camera/image_raw로 설정
정상이라면 RViz 화면에 카메라 이미지가 표시됩니다.


7. RViz Fixed Frame 설정
이미지만 볼 때는 Fixed Frame 문제가 크게 드러나지 않을 수 있지만, TF나 로봇 모델까지 같이 보려면 Fixed Frame을 맞춰야 합니다.
RViz 상단 또는 왼쪽 Global Options에서 다음 중 하나로 설정합니다.
odom
또는:
base_link
일반적으로 TurtleBot3 시뮬레이션에서는 odom을 많이 사용합니다.

8. RViz에서 로봇 모델도 같이 보기
카메라 이미지만 보는 것보다 로봇 모델과 TF를 같이 보면 실습 이해가 더 쉽습니다.
RViz에서 다음 Display를 추가합니다.
RobotModel
- Add
- RobotModel 선택
- Description Topic 확인

보통 다음 토픽을 사용합니다.
/robot_description

TF
- Add
- TF 선택
TF가 정상적으로 나오면 로봇의 프레임 구조를 볼 수 있습니다.


LaserScan
TurtleBot3의 라이다도 같이 확인할 수 있습니다.
- Add
- LaserScan 선택
- Topic을 다음으로 설정
/scan


9. rqt 플러그인으로 카메라 토픽 보기
RViz 말고 rqt에서도 이미지 토픽을 볼 수 있습니다.
먼저 rqt를 실행합니다.
rqt
상단 메뉴에서 다음으로 이동합니다.
Plugins → Visualization → Image View
Image View 창이 열리면 토픽 선택 드롭다운에서 다음 토픽을 선택합니다.
/camera/image_raw
정상이라면 Gazebo 시뮬레이션 카메라 화면이 rqt 창에 표시됩니다.

10. rqt_image_view 명령으로 바로 실행하기
rqt 전체 창을 열지 않고 이미지 뷰어만 바로 실행할 수도 있습니다.
ros2 run rqt_image_view rqt_image_view
실행 후 토픽 목록에서 /camera/image_raw를 선택합니다.
또는 바로 토픽을 지정할 수도 있습니다.
ros2 run rqt_image_view rqt_image_view /camera/image_raw

11. rqt_graph로 연결 구조 보기
카메라 토픽이 어떤 노드에서 나오고 있는지 보고 싶다면 rqt_graph를 사용합니다.
rqt_graph
또는:
ros2 run rqt_graph rqt_graph
실행 후 /camera/image_raw가 어떤 노드에서 publish되는지 확인합니다.
이 실습에서는 다음 흐름을 확인하면 됩니다.
Gazebo camera plugin 또는 simulator node
↓
/camera/image_raw
↓
RViz Image Display 또는 rqt_image_view

12. 카메라 토픽이 안 보일 때 확인할 것
1) 모델 설정 확인
echo $TURTLEBOT3_MODEL
waffle로 되어 있는지 확인합니다.
waffle
설정이 안 되어 있다면 다시 설정합니다.
export TURTLEBOT3_MODEL=waffle
그리고 시뮬레이션을 다시 실행합니다.
2) 카메라 토픽 검색
ros2 topic list | grep camera
또는:
ros2 topic list | grep image
카메라 토픽 이름이 반드시 /camera/image_raw라고 고정된 것은 아닙니다. 패키지 버전이나 모델 파일에 따라 이름이 다를 수 있습니다.
3) 토픽 타입 확인
ros2 topic info /camera/image_raw
정상적인 이미지 토픽이면 타입이 다음과 같아야 합니다.
sensor_msgs/msg/Image
압축 이미지라면 다음 타입일 수 있습니다.
sensor_msgs/msg/CompressedImage
4) 메시지가 실제로 나오는지 확인
ros2 topic hz /camera/image_raw
출력이 멈춰 있거나 publisher가 없으면 RViz나 rqt에서 이미지가 보이지 않습니다.
5) RViz Topic 설정 확인
RViz의 Image Display에서 Topic이 정확히 설정되어 있는지 확인합니다.
/camera/image_raw
토픽 이름이 다르면 RViz에 아무것도 안 나옵니다.
13. Home 가상환경에서 지도 만들고 저장하기
1) 로봇 모델을 Waffle로 설정합니다.
export TURTLEBOT3_MODEL=waffle
2) House World를 실행합니다.
ros2 launch turtlebot3_gazebo turtlebot3_house.launch.py
3) 새 터미널에서 Cartographer를 실행합니다.
ros2 launch turtlebot3_cartographer cartographer.launch.py use_sim_time:=True
4) 새 터미널에서 teleop_keyboard를 실행합니다.
ros2 run turtlebot3_teleop teleop_keyboard
5) 새 터미널에서 rviz2를 실행하고 왼쪽 아래 Add 클릭 후 다음과 같은 display를 추가해 주세요.
| RobotModel | /robot_description |
| TF | /tf |
| LaserScan | /scan |
| Odometry | /odom |
6) 집의 안쪽 구석구석을 이동하면서 지도를 작성해 주세요.
7) 지도를 ~/maps에 "waffle_home_map"으로 저장합니다.
cd ~/maps
ros2 run nav2_map_server map_saver_cli -f turtlebot3_map
14. 정리
이번 실습에서는 TurtleBot3 Waffle 시뮬레이션을 실행하고, 카메라 토픽을 RViz와 rqt에서 확인했습니다.
export TURTLEBOT3_MODEL=waffle
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py
카메라 토픽 확인:
ros2 topic list | grep camera
ros2 topic info /camera/image_raw
ros2 topic hz /camera/image_raw
RViz 실행:
rviz2
rqt 이미지 뷰어 실행:
ros2 run rqt_image_view rqt_image_view
결론적으로, TurtleBot3 Waffle 시뮬레이션에서 카메라 토픽이 publish되고 있다면 RViz와 rqt에서 모두 확인할 수 있습니다.
'강좌 > ROS2' 카테고리의 다른 글
| C++ Service Client 작성 실습 : 모바일 로봇 긴급정지 요청 보내기 (0) | 2026.05.24 |
|---|---|
| ROS 2 C++ Action Server / Client 실습 #1 (0) | 2026.05.24 |
| SLAM 기본 개념, Gazebo 기반 SLAM 실행 (0) | 2026.05.24 |
| ROS 2 에서 CMakeLists.txt 이해하기 (0) | 2026.05.24 |
| ROS 2 Python 패키지의 setup.py 이해하기 (0) | 2026.05.24 |