본문 바로가기

FOSCAR-(Autonomous Driving)/ROS 스터디

[2023 ROS 스터디] 임현진 #2주차 - ROS 도구

반응형

ROS에는 다양한 개발 도구들이 존재합니다. RViz, RQT, Gazebo 등이 존재하는데 하나 하나 자세히 알아보도록 하겠습니다.

RVIZ

- ROS의 3D 시각화툴

  • 센서 데이터의 시각화
  • 레이저 건리 센서(LDS)센서의 거리 데이터
  • RealSense, Kinect, Xtion 등의 Depth Camera의 포인트 크라우드 데이터
  • 카메라의 영상 데이터
  • IMU 센서 의 관성 데이터 등..

  • 카메라를 이용하여 RViz를 나타내면 다음과 같이 나타납니다. RViz를 통해서 depth 정보를 알 수 있는데, 가까운 거리는 빨간색으로 상대적으로 먼 거리는 파란색, 보라색 등으로 나타나는걸 볼 수 있습니다.

 

  • 라이다 센서를 이용하여 RViz를 나타내면 다음과 같이 나타납니다. point cloud를 clustering 하여 앞에 물체가 있는지 없는지를 파악할 수 있습니다.

 

  • IMU 센서를 이용하여 RViz를 나타내면 다음과 같이 나타납니다. 관성을 나타내는 센서 정보를 나타내고 주로 드론의 균형을 잡을 때 많이 사용합니다.

- 로봇 외형의 표시와 계획된 동작을 표현
- 네비게이션
- 매니퓰레이션
- 원격제어

 

RViz 설치 및 실행방법

  • RViz 설치 : $ sudo apt-get install ros-kinetic-rviz
  • RViz 실행 : $ rosrun rviz rviz , $ rviz

 

RViz의 화면 구성 (LDS의 경우)

 

RViz의 디스플레이 종류(2의 'ADD'를 클릭)

요약 : RViz를 이용하면 센서 및 로봇 관련 데이터 시각화가 매우 간단해집니다.


RQT

- 플러그인 방식의 ROS의 종합 GUI 툴

- RQT 설치 및 실행

  • RQT 설치 : $ sudo apt-get install ros-kinetic-rqt ros-kinetic-rqt-common-plugins
  • RQT 실행 : rqt

- RQT 실습

  • rqt_image_view
    • ubuntu 버전이 16.04인 경우 : $rosrun uvc_camera uvc_camera_node -> $ rqt
    • ubuntu 버전이 18.04인 경우 : $rosrun usb_cam usb_cam_node -> $rqt

(저의 경우는 우분투 버전이 18.04여서 18.04의 경우로 실습을 진행하였습니다.)

  • ros명령어를 이용하여 정보들 들여다보기
    • rostopic list : 현재 등록된 topic들을 들여다 볼 수 있습니다.
    • rostopic echo /(토픽명) - rostopic echo /image_raw : 현재 전송되고 있는 메시지를 볼 수 있습니다.
    • rostopic info /(토픽명) - rostopic info /image_raw : 해당 topic에 관한 정보를 알 수 있습니다.
      ex) type, publisher, subscriber 등...

 

  • rqt_graph
    1. $rosrun turtlesim turtlesim_node
    2. $rosrun turtlesim turtle_teleop_key
    3. $rosrun usb_cam usb_cam_node
    4. $rosrun image_view image_view image:=image_raw
    5. $rqt 또는 $rqt_graph

 

  •  rqt_plot
    1. $rosrun turtlesim turtlesim_node
    2. $rosrun turtlesim turtle_teleop_key
    3. rqt 또는 rqt_plot /turtle/pose/

 

  • rqt_bag
    1. $rosrun usb_cam usb_cam_node
    2. $rosbag record /image_raw : image_raw 메시지를 녹화할 수 있게됩니다.(저장)
    3. $rqt 또는 $rqt_bag : 녹화된 영상을 재생할 수 있습니다.

요약 : RQT를 이용하면 GUI 형태로 ROS 이용 가능, GUI TOOL 제작이 간단!


3D Simulator : Gazebo

  • Gazebo는 로봇 개발에 필요한 3차원 시뮬레이션을 위한 로봇, 센서, 환경 모델 등을 지원하고 물리 엔진(ODE)을 탑재하여 실제와 근사한 결과를 얻을 수 있는 3차원 시뮬레이터 입니다.
  • Gazebo는 최근에 나온 오픈 진영 시뮬레이터 중 가장 좋은 평가를 받고 있고, 미국 DAPRA Robotics Challenge의 공식 시뮬레이터로 선정되어 개발에 더욱 박차를 가하고 있기 때문입니다.
  • ROS에서는 그 태생에 Player/Stage, Gazebo를 기본 시뮬레이터로 사용하고 있기 때문에, ROS와의 호완성도 매우 좋습니다.

요약 : 시뮬레이션이 필요하면 ROS와 연동하기 쉬운 Gazebo 사용!


이기종 디바이스 간의 통신

  • 이기종 디바이스 간의 통신을 하기 전에 ROS 환경 설정을 간단하게 해줍니다.
    - gedit로 bashrc 파일을 편집합니다.
gedit ~/.bashrc

       - 아래의 내용을 삽입합니다.

alias eb=‘gedit ~/.bashrc'
alias sb='source ~/.bashrc'
alias cw='cd ~/catkin_ws'
alias cs='cd ~/catkin_ws/src'
alias cm='cd ~/catkin_ws && catkin_make'
source ~/catkin_ws/devel/setup.bash
export ROS_MASTER_URI=http://localhost:11311
export ROS_HOSTNAME=localhost
#export ROS_MASTER_URI=http://192.168.1.100:11311
#export ROS_HOSTNAME=192.168.1.100
  • ifconfig명령어를 이용하여 자신의 ip주소를 알아낸 후, bashrc파일에서 ROS_MASTER_URI에 적혀있는 localhost를 지우고 보내는 사람의 ip주소를 적고, ROS_HOSTNAME에 적혀있는 localhost를 지우고 받는 사람의 ip주소를 적어줍니다. 그렇게 되면 이기종 디바이스간의 통신이 가능해집니다.

이번 시간에는 ROS에서 사용하는 다양한 도구들에 대해서 알아보았습니다. ROS에서는 복잡한 데이터를 GUI로 표현해주는 다양한 도구들을 제공해주고 있으며, 우리는 이를 활용하여 여러 작업을 손쉽게 할 수 있으며, 무엇보다 시각화가 가능하여 정보를 한눈에 파악 할 수 있습니다.

Chatper4와 Chapter5에 대한 내용은 개인 블로그에 정리를 해놓았습니다.

Chapter4

https://jinistudy.tistory.com/5

 

ROS Study - ROS의 중요 컨셉

로봇 운영체제에는 다양한 ROS용어가 존재합니다. 이번에는 ROS용어에 대해서 알아보겠습니다. ROS 주요 3가지 용어 Node -> 최소 단위의 실행 가능한 프로세서를 가리키는 용어로써 하나의 실행 가

jinistudy.tistory.com

Chapter5

https://jinistudy.tistory.com/6

 

ROS Study - ROS 명령어

Command-Line Tools - rospack, roscd, rospd, rosls, rosed, roscp, rosdep, roswf, catkin_create_pkg, wstool, catkin_make, roscore, rosrun, roslaunch, rosnode, rostopic, rosservice, rosparam, rosmsg, rossrv, rosbag, tf_echo ROS 쉘 명령어 roscd : ros + cd(

jinistudy.tistory.com

 

반응형