본문으로 바로가기

TurtleBot3는 ROS 기반 교육·연구용 모바일 로봇 플랫폼이고, Burger / Waffle / Waffle Pi처럼 모델을 바꿔가며 실습할 수 있습니다. ROBOTIS 공식 e-Manual에서도 TurtleBot3를 ROS 기반의 확장 가능한 모바일 로봇 플랫폼으로 설명하고 있으며, ROS 2 환경 설정 예시도 제공합니다.

 

이번 실습에서는 TurtleBot3 Waffle 시뮬레이션을 실행한 뒤, RViz와 rqt 플러그인으로 카메라 토픽을 확인합니다.

 

 

이 글에서 확인할 내용은 다음과 같습니다.

  1. TurtleBot3 Waffle 시뮬레이션 실행
  2. ROS 2 토픽 목록 확인
  3. RViz에서 카메라 토픽 보기
  4. rqt 플러그인으로 이미지 토픽 보기
  5. 카메라 토픽이 보이지 않을 때 확인할 것

 

 

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에서 다음 순서로 진행합니다.

  1. 왼쪽 아래 Add 클릭
  2. By display type 선택
  3. Image 선택
  4. OK 클릭
  5. 새로 추가된 Image 항목 선택
  6. 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

  1. Add
  2. RobotModel 선택
  3. Description Topic 확인

 

 

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

 
/robot_description
 
 
 
 
 

TF

  1. Add
  2. TF 선택

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

 

 

 

 

LaserScan

TurtleBot3의 라이다도 같이 확인할 수 있습니다.

  1. Add
  2. LaserScan 선택
  3. 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를 추가해 주세요. 

 

                             Display                                                                                Topic
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에서 모두 확인할 수 있습니다.

728x90
728x90