본문 바로가기

쓰기

ROS(Robot Operating System) 개념과 활용
2015.08.08 19:33

ROS(Robot Operating System) 개념과 활용 - 6. rqt를 이용한 데이터 모니터링

조회 수 7049
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

 ROS는 로봇으로부터 얻을 수 있는 데이터를 쉽게 확인하고 관리할 수 있도록 rqt라고 하는 모니터링 도구를 제공합니다. rqt는 GUI 개발에 쓰이는 Qt framework 기반의 ROS software framework입니다. rqt는 우리가 지금까지 노드간 관계를 확인할 때 써 오던 rqt_graph와 같은 GUI 플러그인을 여러 개 포함하고 있습니다. rqt는 3개의 metapackage로 구성되며 각각 rqt, rqt_common_plugins, rqt_robot_plugins입니다. rqt 메타패키지는 rqt를 구동하는 core module입니다. rqt_common_plugins는 로봇이 작동 중이거나 정지 중에 사용 가능한 도구 모음입니다. rqt_robot_plugins는 로봇이 작동하고 있을 때 로봇과 상호작용하기 위한 도구 모음으로, 가상 패널의 버튼이나 방향 다이얼 등을 이용해 로봇에 명령을 내리는 따위의 기능을 한다고 보시면 됩니다. 2015년 8월 현재를 기준으로 21개의 rqt_common_plugins와 9개의 rqt_robot_plugins가 제공되고 있습니다. 기본적으로 제공되는 플러그인 이외에도 사용자가 플러그인을 직접 제작하는 것도 가능합니다.


 rqt에서 내세우는 장점은 크게 네 가지가 있습니다. 우선 규격화 된 GUI 개발 절차를 따르므로 빠른 개발이 가능하며 호환성이 확보됩니다. 앞서 노드 작성 예시에서도 볼 수 있듯이 이러한 특성은 오픈소스를 지향하는 입장에서 중요한 역할을 합니다. 또한 rqt는 한 윈도우에 여러 가지 플러그인을 동시에 부착하여 사용이 가능합니다. 즉 각 플러그인을 따로 창을 열어 쓸 필요 없이 한 화면에 배치하여 모니터링이 가능합니다. rqt는 Qt framework 기반이기 때문에 Qt widget을 rqt 플러그인으로 변환하여 복잡한 GUI를 쉽게 제작할 수 있습니다. 마지막으로 rqt를 사용하면서 ROS에서 운영하는 커뮤니티 지원을 받을 수가 있습니다.


 그렇다면 기존에 있는 rqt 플러그인들을 이용해 모니터링 인터페이스를 직접 구성해 보도록 하겠습니다. 먼저 rqt GUI를 실행합니다.

$ rqt


rqt-default.png

rqt 초기 화면


rqt를 처음 실행하면 아무것도 없는 빈 화면이 출력됩니다. 여기에 플러그인을 실행하여 배치하도록 합니다. 메뉴의 Plugins에서 아래 plugin을 각각 실행시킨 뒤 각 플러그인 창을 끌어다가 원하는 위치에 배치시킵니다.

-> Introspection -> Node Graph              => 노드와 메시지 간 관계를 도식화 하여 나타내는 rqt 플러그인

-> Visualization -> Plot (두 번 실행)        => 메시지 데이터를 그래프로 나타내는 rqt 플러그인

-> Logging -> Bag                                   => 메시지를 시간에 따라 저장하는 rqt 플러그인


rqt-with-some-plugins.png

몇 가지 rqt 플러그인을 배치한 모습


화면을 구성한 뒤 메뉴의 Perspectives -> Create perspective를 실행하여 현재 창 구성에 이름을 부여할 수 있습니다. 이렇게 저장한 화면은 나중에 Perspectives 메뉴에서 다시 불러올 수 있으며, 불러온 뒤 수정된 내용은 해당 이름에 별도 저장 없이도 자동적으로 반영됩니다. 이런 식으로 저장하는 것은 한 PC에서 사용하기 편리합니다. 화면 구성을 다른 PC로 보내거나 파일로 저장하고 싶다면 메뉴의 Perspectives -> Export를 통해 perspective 파일을 생성하고 저장이 가능합니다. 생성된 파일은 다른 곳에서  Perspectives -> Import를 통해 불러오는 것이 가능합니다.


 위에 구성한 화면에 사용된 플러그인에 대해 각각 설명드리도록 하겠습니다. Node Graph는 지금까지 rqt_graph 명령어로 실행해 왔던 노드와 메시지, 토픽 등의 관계를 도식화 하여 나타내는 플러그인입니다. Node Graph 뿐만 아니라 모든 rqt 플러그인은 rqt를 실행하지 않고 개별적으로 실행하는 것이 가능합니다. Plot 플러그인은 토픽의 값을 그래프로 나타내는 플러그인입니다. Topic 검색창에 /를 입력하면 현재 전달되는 메시지들의 topic 목록이 전부 나타나며, plot을 원하는 토픽을 선택할 수 있습니다. 한 개의 Plot 플러그인에서 여러 개의 토픽 값을 한 번에 출력하는 것이 가능합니다. 또한 축의 scale 설정과 line의 모양 설정 등도 가능합니다. 이 플러그인을 사용하면서 발생한 문제가 있는데, 그래프를 그리고 있는 동안에는 rqt 플러그인들의 저장이나 불러오기 같은 파일 입출력 관련 기능이 잘 동작하지 않았습니다. 따라서 rqt 관련 파일 입출력 기능을 사용할 때에는 plot 정지를 누르고 해당 기능을 사용하실 것을 권장합니다. Bag은 publish되는 메시지의 토픽 데이터를 기록하거나 저장된 값을 다시 반복해서 publish하는 플러그인입니다. Record Bag 버튼을 누르고 토픽 선택 후, 저장될 파일 이름을 지정하면 메시지가 저장되기 시작합니다. 마우스 오른쪽 버튼을 눌러 특정 토픽의 raw 값을 보거나 Plot 플러그인을 통해 저장된 값을 그래프로 표현할 수도 있습니다.


 아래 예시에서는 예전에 ROS를 테스트할 때 사용하였던 turtlesim을 이용하여 데이터 모니터링을 하였습니다. 거북이가 움직이는 방향, 위치, 속도 등을 Plot 그래프로 나타내고, 사용자가 입력한 키 값을 포함한 몇 가지 토픽들을 Bag으로 저장하였으며, Node Graph로 키 입력 노드와 turtlesim 노드와의 메시지 통신 관계를 확인하였습니다.


rqt-turtlesim.png

rqt를 통한 turtlesim의 데이터 모니터링


 이처럼 rqt는 매우 간단하게 모니터링 도구를 제작할 수 있도록 해 줍니다. GUI 개발에 관한 별다른 지식 없이도 데이터를 관측하고 관리할 수 있다는 점은 큰 장점입니다. Qt를 사용 가능하신 분은 자신만의 로봇 패널을 제작하여 사용해 보는 것도 괜찮을 것 같습니다.


  1. ROS(Robot Operating System) 개념과 활용 - 11. rosserial 알아보기

    ROS가 적용되는 시스템에선 연산을 위한 상위 제어기와 하드웨어 제어를 위한 하위 제어기가 각각의 역할을 수행하는 경우가 많습니다. 상위 제어기는 보통 PC나 OBC(One Board Computer)를 사용하게 되는데, 하위 제어기와 통신할 때 가장 흔하게 사용되는 ...
    Date2016.03.28 CategoryROS(Robot Operating System) 개념과 활용 By박정현 Views7539
    Read More
  2. ROS(Robot Operating System) 개념과 활용 - 10. CMakeLists.txt 파헤치기

    CMakeLists.txt는 빌드 설정에 관련된 매우 중요한 파일이지만 주석의 압박과 익숙하지 않은 사용법 때문에 매번 대충 작성했던 경험이 있습니다. 관련 가이드를 찾아 보니 생각보다 간단한 규칙으로 되어 있어서 다른 내용을 진행하기 전에 미리 짚고 넘어가...
    Date2016.03.05 CategoryROS(Robot Operating System) 개념과 활용 By박정현 Views8436
    Read More
  3. ROS(Robot Operating System) 개념과 활용 - 9. Dynamic reconfigure를 이용한 실시간 node parameter 업데이트

    오랜만의 ROS 강좌 업데이트입니다. 거의 반년 전 쯤에 해 보았던 내용이지만 이런 저런 바쁜 일들에 밀려 이제서야 업데이트를 하게 되었습니다. 본 코너인 ROS 개념과 활용에서는 나머지 기본적인 내용들을 다루고 최종적으로 간단한 제어 예제까지 수행할 ...
    Date2016.02.24 CategoryROS(Robot Operating System) 개념과 활용 By박정현 Views3852
    Read More
  4. 밸런싱 로봇 만들기 - 2. I2C로 IMU(MPU 6050)와 통신하기

    이번 포스팅은 밸런싱 로봇에서 사용하는 유일한 센서인 IMU(Inertial Measurement Unit) - MPU6050과의 통신에 대한 것입니다. 준비물 : 앞의 포스팅에서 만든 하드웨어, 컴퓨터와 UART통신을 하기 위한 UART통신모듈(테스트용), CodeVision AVR 센서와 통신...
    Date2015.08.16 Category밸런싱 로봇 By한종인 Views4087
    Read More
  5. ROS(Robot Operating System) 개념과 활용 - 8. roslaunch 사용과 launch 파일 작성하기

    저번에 USB 카메라를 이용하면서 usb_cam-test.launch 파일을 실행시켜 보았습니다. usb_cam-test.launch 파일을 실행시키면 USB 카메라와 직접적으로 상호작용하는 '/usb_cam' 노드와 '/usb_cam/image_raw' 토픽을 받아 화면에 출력하는 '/image_view' 노드...
    Date2015.08.13 CategoryROS(Robot Operating System) 개념과 활용 By박정현 Views17572
    Read More
  6. ROS(Robot Operating System) 개념과 활용 - 7. USB 카메라 사용하기

    ROS는 여러 가지 이미지 관련 패키지를 제공하고 있습니다. 특히 OpenCV 연동 기능을 제공하기 때문에 다양한 영상 처리 알고리즘을 적용할 수 있다는 장점이 있습니다. 이미지와 영상을 얻기 위해서는 이미지를 얻는 센서가 필요한데, ROS가 주로 PC나 SBC ...
    Date2015.08.09 CategoryROS(Robot Operating System) 개념과 활용 By박정현 Views6775
    Read More
  7. ROS(Robot Operating System) 개념과 활용 - 6. rqt를 이용한 데이터 모니터링

    ROS는 로봇으로부터 얻을 수 있는 데이터를 쉽게 확인하고 관리할 수 있도록 rqt라고 하는 모니터링 도구를 제공합니다. rqt는 GUI 개발에 쓰이는 Qt framework 기반의 ROS software framework입니다. rqt는 우리가 지금까지 노드간 관계를 확인할 때 써 오던...
    Date2015.08.08 CategoryROS(Robot Operating System) 개념과 활용 By박정현 Views7049
    Read More
  8. ROS(Robot Operating System) 개념과 활용 - 5. 바닥부터 node 작성하기

    지금까지는 기존에 있던 패키지 노드를 수정하여 사용해 왔습니다. 이번에는 노드를 아예 처음부터 새로 작성하는 법에 대해 알아보겠습니다. 또한 노드 내부에서 사용되는 ROS의 기본 구조에 대해서도 간략히 짚고 넘어가도록 하겠습니다. 노드 작성법을 간...
    Date2015.07.26 CategoryROS(Robot Operating System) 개념과 활용 By박정현 Views33231
    Read More
  9. ROS(Robot Operating System) 개념과 활용 - 4. ROS node를 이용하여 direct serial 통신하기

    ROS 노드들은 TCP/IP 프로토콜의 메시지 통신을 기반으로 데이터를 주고 받습니다. 하지만 대다수의 센서들과 MCU의 통신은 일반적인 serial 프로토콜을 이용해 통신을 하는 경우가 많습니다. 여러 용도로 편리하게 사용되는 UART 통신 또한 그러한 방식입니...
    Date2015.07.07 CategoryROS(Robot Operating System) 개념과 활용 By박정현 Views10403
    Read More
  10. 밸런싱 로봇 만들기 - 1. 하드웨어 구성

    안녕하세요? 오늘부터 "밸런싱로봇 만들기"를 포스팅할 P.M.한종인 입니다. 밸런싱 로봇 하드웨어를 제작하기 위해서는 다음과 같은 몇 가지 준비물이 필요합니다. 준비물 : 부품, 회로도, 인두, 땜납, 테프론 래핑 와이어(얇은 배선용 전선), 일반전선, 멀티...
    Date2015.07.03 Category밸런싱 로봇 By한종인 Views2692
    Read More
Board Pagination Prev 1 2 Next
/ 2