본문 바로가기

Study_ROS/[ROBOTIS ROS Courses]

[ROBOTIS ROS Courses] Ch6. ROS 도구(RViz, rqt, Gazebo)

728x90

Ch6 ROS 도구

- 도구 : Rviz(시각화 툴), Rpt(GUI 박스), Gazebo(3D Simulator)

1) Rviz(ROS Visualization Tool)

  • 다양한 sensor의 값들을 시각화 해주는 ROS의 3D 시각화 툴
  • URDF(Unified Robot Description Format) : Robot Model에 대한 정보들을 기술하는 통일된 format. 로봇 외형의 표시와 계획된 동작을 표현
  • Rviz는 Navigation, Manipulation, Remote Control에도 사용

 

- 사용 예시

  • Kinect (RGB-D Sensor, 3D Depth Camera) : 거리값을 point cloud data로 표현
  • Ridar : Razor based Distance Sensor. 2D Distance Sensor
  • IMU(Inertia Measurement Unit) Sensor : 관성 Data 측정
  • 사람의 골격과 지시 방향 표시
  • 주행 환경 Modeling
  • 지도 표시, Navigation, 목적지 지정, Camera 정보 표시
  • Manipulator 등의 여러 곳에 사용

 

- Rviz 설치, 실행

$ sudo apt install ros-noetic-rviz
  • Rviz 설치
  • ros-noetic-desktop-full을 설치했다면 같이 설치됨

 

$ roscore

$ rosrun rviz rviz
$ rviz
  • roscore 실행 후 위의 두 코드들 중 하나로 Rviz 실행

 

 

Rviz 화면

  1. 3D View : 각종 data를 3D로 볼 수 있는 main 화면으로, 3D view의 배경색, 고정 frame, grid 등을 왼쪽 display의 Global Options 및 Grid 항목에서 세부적으로 설정할 수 있다
  2. Display : 각종 topic으로부터 원하는 data의 view를 선택할 수 있어 나에게 맞는 시각화 옵션 선택이 가능하다
  3. Menu : 현재 display 상태를 저장하거나 읽어오는 명령 각종 패널을 선택할 수 있다
  4. Tool : Interact, 카메라 이동, 선택, 카메라 초점 변경, 거리 측정, Publish Point 등의 다양한 기능들이 있으나 보통은 2D Pose Estimate(초기 위치 추종), 2D Navigation Goal(목적지 입력) 정도만 사용
  5. Views : 3D view의 시점 설정
    • Orbit : 지정 시점을 focus라 하며 이를 중심으로 회전 (default 값)
    • FPS(First-Person) : 1인칭 게임 시점으로 보여줌
    • TopDownOrtho : Z축을 기준으로 다른 view과는 달리 원근법이 아닌 정사법으로 보여줌
    • XYOrbit : Default값인 Orbit과 비슷하나 focus는 Z축이 0인 XY평면에 고정되어 있음
  6. Time : 현재 시간(wall time)과 ROS Time 그리고 이들의 각각의 경과 시간을 보여준다. 맨 아래의 Reset 버튼을 통해 초기화가 가능하다

 

각 display에 대한 설명

  • Rviz창에서 좌측 아래에 있는 'ADD'를 클릭하여 display 선택 가능
  • Grid Cell은 주로 navigation의 costmap 장애물 표시에 사용된다
  • Group은 display들을 그룹으로 묶는 컨테이너로, display들을 하나의 그룹으로 관리할 수 있다
  • ImageCamera와 달리 카메라 오버레이를 하지 않고 이미지만 가져온다
  • InteractiveMarker를 통해 마우스로 위치(x,y,z) 및 자세(roll, pitch, yaw)를 바꿀 수 있다
  • Map은 navigation에서 사용하는 occupancy map을 ground plane위에 표시한다
  • Pointcloud는 최신 PCL에서 사용하는 format에 맞추어진 Pointcloud2를 일반적으로 사용한다
  • Polygon은 주로 로봇의 외형 등을 간단히 2D 상에 나타내기 위해 사용한다
  • Pose는 2D상의 pose(위치, 자세)를 나타낸다. 화살표 모양을 지니며 화살표의 원점은 좌표(x, y)를 나타내며 화살표의 방향은 좌표(yaw)를 나타낸다
  • Range는 주로 sensor의 측정 범위를 시각화하는데 사용된다

 

* Rviz를 사용하면 sensor 및 robot 관련 data visualization이 매우 간단해짐. Rviz만큼 robot, sensor 특화 visualiztion이 편한 Tool이 없음

 

 

2) RQT

  • GUI (Graphical User Interface) Tool Box. Plug-in 방식의 ROS의 종합 GUI Tool
    • Plug-in : 어떤 tool의 기존 기능을 확장시켜 주는 program. RQT에는 수많은 Plug-in들이 존재한다
    • 각 Plug-in들 중 필요한 기능들을 골라 선택적으로 실행하는 방식 사용
  • GUI 개발에 쓰이는 Qt framework 기반의 ROS software framework
  • Qt로 개발되어 있어 사용자들이 자유롭게 Plug-in을 개발하여 추가할 수 있음

- RQT 설치, 실행

$ sudo apt install ros-noetic-rqt ros-noetic-rqt-common-plugins
  • RQT 설치
  • Rviz와 마찬가지로 ros-kinetic-desktop-full을 설치했다면 같이 설치됨

 

$ rqt
  • RQT 실행

 

여러 Pulg-in 을 사용하는 모습

  • 위 사진처럼 rqt를 통해 웹 브라우저에도 접속이 가능함(거의 사용하지는 않음)
  • Publisher : 특정 message를 보낼 수 있음
  • Robot Steering : 병진 속도, 회전 속도를 키보드가 아닌 슬라이드 바로 줄 수 있음
  • Logger Level : ROS Debugging Tool
  • Console : 각 프로세스의 정보, 실행 상태 값 확인 가능
  • Plot : 시간을 축으로 어떤 데이터값을 시각화 함

 

- rqt 메뉴

  • File : 단순히 rqt를 종료하는 서브 메뉴만 있음
  • Plugins : 30여가지 plugin을 선택하여 이용
  • Running : 현재 동작 중인 plugin이 표시됨. 필요치 않을 때 동작을 중지시킬 수 있음
  • Perspectives : 현재 동작중인 plugin set를 저장했다가 다음에 같은 plugin들을 실행할 때 사용

 

 

RQT 실습 #1: rqt_image_view

$ rosrun uvc_camera uvc_camera_node
$ rqt (메뉴에서 [Plugins] → [Visualization] → [Image View] 를 선택한다.)
또는
$ rqt_image_view
  • uvc camera node 실행 후 rqt의 image_view Plug-in을 이용해 영상을 볼 수 있다

 

$ rostopic list
  • 현재 전송/설치된 Topic들을 볼 수 있다

 

$ rostopic echo TOPIC`S_NAME
  • 각 Pixel의 값 출력
  • 현재 전송중인 Message들을 볼 수 있다

 

$ rostopic info TOPIC`S_NAME
  • Topic에 대한 정보 출력

 

실습 #2 : rqt_graph

$ rosrun turtlesim turtlesim_node
$ rosrun turtlesim turtle_teleop_key 
$ rosrun uvc_camera uvc_camera_node
$ rosrun image_view image_view image:=image_raw
$ rqt        (메뉴에서 [Plugins] → [Introspection] → [Node_Graph] 를 선택) 또는
$ rqt_graph
  • turtlesim 실행 후 uvc camera node 실행
  • teleop node를 통해 turtle 조종
  • rqt의 graph Plug-in 실행

rqt_graph

  • rqt_graph : 현재 node들과 각 node들이 주고 받는 message 확인 할 수 있음
  • 원이 node, 사각형은 message
  • 자주 쓰이는 Plug-in

 

실습 #3 : rqt_plot

$ rosrun turtlesim turtlesim_node $ rosrun turtlesim turtle_teleop_key
$ rqt        (메뉴에서 [Plugins] → [Visualization] → [Plot] 를 선택) 또는
$ rqt_plot /turtle1/pose/
  • turtlesim node 실행 후 teleop node를 통해 turtle 조종
  • rqt의 plot Plug-in 실행

rpt_plot

  • Plot : 시간을 축으로 각 data들을 시각화 함

 

실습 #4 : rqt_bag

$ rosrun uvc_camera uvc_camera_node 
$ rosbag record /image_raw
$ rqt        (메뉴에서 [Plugins] → [Logging] → [Bag] 를 선택) 또는
$ rqt_bag
  • rosbag record : image_raw라는 이름을 가진 Topic이 publish되고 그 message를 record 할 수 있음
  • rqt_bag : Record된 message를 play 할 수 있는 Plug-in

 

* RQT를 사용하면 GUI 형태로 ROS를 이용할 수 있고, GUI Tool 제작이 간단해짐

 

 

- 3D Simulator : Gazebo

  • 뒤의 SLAM Chapter에서 자세히 다룰 예정GUI 기반의 3D Simluator로, Robot 개발에 필요한 Simulation을 위한 Robot Model, Sensor와 noise, Environment Model과 Physical Engine 지원
  • 여러 Physical Engine들 중 하나를 선택할 수 있음. 각 Engine들은 다른 분야에서의 장점을 가짐 ex) 동역학, 정역학, 유체역학 
  • Open Robotics에 의해 개발되어 매우 좋은 호환성을 가짐
  • ROS 없이 혼자서 실행될 수 있으며, ROS와 함께 실행될 경우 ROS의 다양한 Package들과 연동할 수 있음
  • Plug in으로 새로운 기능을 추가할 수 있다
  • Cloud System을 지원하여 다양한 사용자들이 같은 환경을 동시에 사용할 수 있다
  • 군집 Robot Test, 알고리즘 Test 등 가능
  • 실제로 Robot을 개발하기 전 Prototype을 위해 사용할 수 있음

* Robot Simulation이 필요할 경우 ROS와 연동하기 쉬운 Gazebo 사용

 

 

 

 


강의 출처 : 

https://www.youtube.com/watch?v=fB2YINZOIng&list=PLRG6WP3c31_VIFtFAxSke2NG_DumVZPgw&index=6