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 실행
- 3D View : 각종 data를 3D로 볼 수 있는 main 화면으로, 3D view의 배경색, 고정 frame, grid 등을 왼쪽 display의 Global Options 및 Grid 항목에서 세부적으로 설정할 수 있다
- Display : 각종 topic으로부터 원하는 data의 view를 선택할 수 있어 나에게 맞는 시각화 옵션 선택이 가능하다
- Menu : 현재 display 상태를 저장하거나 읽어오는 명령 각종 패널을 선택할 수 있다
- Tool : Interact, 카메라 이동, 선택, 카메라 초점 변경, 거리 측정, Publish Point 등의 다양한 기능들이 있으나 보통은 2D Pose Estimate(초기 위치 추종), 2D Navigation Goal(목적지 입력) 정도만 사용
- Views : 3D view의 시점 설정
- Orbit : 지정 시점을 focus라 하며 이를 중심으로 회전 (default 값)
- FPS(First-Person) : 1인칭 게임 시점으로 보여줌
- TopDownOrtho : Z축을 기준으로 다른 view과는 달리 원근법이 아닌 정사법으로 보여줌
- XYOrbit : Default값인 Orbit과 비슷하나 focus는 Z축이 0인 XY평면에 고정되어 있음
- Time : 현재 시간(wall time)과 ROS Time 그리고 이들의 각각의 경과 시간을 보여준다. 맨 아래의 Reset 버튼을 통해 초기화가 가능하다
- Rviz창에서 좌측 아래에 있는 'ADD'를 클릭하여 display 선택 가능
- Grid Cell은 주로 navigation의 costmap 장애물 표시에 사용된다
- Group은 display들을 그룹으로 묶는 컨테이너로, display들을 하나의 그룹으로 관리할 수 있다
- Image는 Camera와 달리 카메라 오버레이를 하지 않고 이미지만 가져온다
- 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 실행
- 위 사진처럼 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 : 현재 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 실행
- 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
'Study_ROS > [ROBOTIS ROS Courses]' 카테고리의 다른 글
[ROBOTIS ROS Courses] Ch8. 로봇, 센서, 모터 ~ Ch10. 모바일 로봇 (0) | 2023.01.24 |
---|---|
[ROBOTIS ROS Courses] Ch7. ROS 기본 프로그래밍 (0) | 2022.09.17 |
[ROBOTIS ROS Courses] Ch5. ROS 명령어 + 용어 정리 (0) | 2022.09.10 |
[ROBOTIS ROS Courses] Ch3. ROS 개발환경 구축 ~ Ch4. ROS의 중요 컨셉 (0) | 2022.09.10 |
[ROBOTIS ROS Courses] Ch1. 로봇 소프트웨어 플렛폼 ~ Ch2. 로봇 운영체제 ROS (0) | 2022.08.30 |