ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ROS] n-1. How to use Depth Camera on ROS?
    IT/ROS 2020. 5. 19. 18:15

    ROS에서 Depth Camera를 활용하는 간단한 방법

    지저분한 연구실을 비추는 터틀봇

    이번 포스팅에서는, ROS에서 깊이 카메라를 활용하는 간단한 방법에 대하여 알아 볼 것 입니당.

    깊이 카메라를 신나게 사용하기 앞서, 깊이 카메라란 무엇일까요? 일반 카메라와 어떤 차이가 있는걸까요?

    Depth Camera?

    세 눈 박이 괴물

    ※ 해당 포스트에서는 ROS 표준 깊이 카메라인 Kinect Depth Camera를 기준으로 포스팅을 진행합니다!

    깊이 카메라는 일반 카메라와 다르게, 적외선 송출기와 깊이 센서, 색 센서, 마이크 등으로 구성되어 있습니다.

    또한 보통 카메라처럼 영상에 대한 정보만 얻을 수 있는 것이 아니라, 적외선 센서를 통해 카메라와 개체간의 거리를 인식하고, 내장된 마이크로 음성을 인식 할 수도 있습니다.

    위 사진에 표시되는 파츠의 역할은 다음과 같습니다.

    • IR Emitter
      • 적외선을 픽셀 단위로 송출
        (적외선 프로젝터)
    • Color Sensor
      • RGB로 색을 인식
      • 일반적인 카메라 영상 획득
      • 640X480 해상도
      • 초당 30 프레임
    • IR Depth Sensor
      • IR Emitter에서 송출된 무수히 많은 점들이 반사되는 것을 인식
      • 각 픽셀간 거리를 측정하여 카메라 앞의 개체 인식

     

    ROS에서 위와 같은 깊이 카메라를 적절히 활용하기 위해서는, ROS와 깊이 카메라를 연결해주는 프레임워크가 필요합니다.
    고맙게도, 이미 선인들이 수많은 역경을 견뎌내며 만들어낸 오픈 소스 깊이 카메라 미들웨어인 Openni2가 이미 존재하고, 우린 이것을 사용하기만 하면 됩니다!

    Openni2?

    Openni에 대해서는 간단하게 살펴보겠습니다.

    더 많은 정보가 필요하신 분들은 여기(https://github.com/OpenNI/OpenNI2)를 참고하세요!

    Openni2는 KINECT를 개발하는 PrimeSense 사를 주축으로 개발하는 API의 집합입니다. KINECT의 환경설정, RGB 카메라, 3D 센서, IR카메라 등을 이용하기 위한 인터페이스를 제공하고, KINECT의 디바이스 드라이버와 미들웨어를 제공합니다.

    이제 필요한 기기와 프레임워크에 대한 정보를 숙지하였으니, ROS에서 깊이 카메라를 실제로 활용하는 방법에 대해 알아보겠습니다.


    Openni2 Install & Usage

    먼저, 관련 패키지를 설치합니다.

    $ sudo apt install ros-kinetic-openni2-camera ros-kinetic openni2-launch 

    위 패키지는 ros-kinetic-desktop-full 설치를 이전에 하였을 경우, 이미 설치되어있을 수 있습니다.

    다음으로 roscore를 실행합니다.

    $ roscore


    openni2.launch 파일을 실행합니다. 

    ※ openni2.launch 파일을 실행하기 이전, 깊이 카메라가 해당 프로그램을 실행하는 노드의 USB 포트에 연결이 되어 있거나, 시뮬레이션 상에서 카메라가 동작하고 있어야 제대로 된 영상을 확인할 수 있습니다!

    $ roslaunch openni2_launch openni2.launch

     

    openni2.launch 파일이 잘 실행되고 있는지 확인해 봅시다.

    $ rostopic list | grep image_raw

    수많은 이미지 관련된 토픽들

    이미지와 관련된 수많은 토픽들이 잘 발행되고 있는 것을 확인할 수 있습니다.


    이 성실한 토픽 녀석들이 어떤 영상을 발행하고 있는지 rviz를 사용하여 살펴봅시다.

    $ rosrun rviz rviz

    왼 쪽은 /camera/rgb/image_raw, 오른 쪽은 포인트 클라우드 

    위에서 발행하는 이미지 토픽들은 다음과 같은 영상을 발행합니다.

    • /camera/depth/image_raw : 흑백 640 * 480 영상
    • /camera/rgb/image_raw : 컬러 640 * 480 영상 (위 사진 좌측 하단)
    • /camera/depth/points : x, y, z축에 대한 거리 정보에 대한 정보를 가진 3D 점군 데이터 (위 사진 우측)

    제대로 카메라가 연결되고, 동작하며 관련 토픽들을 ROS에 발행하는 것을 확인할 수 있습니다.

    참고로 발행되고 있는 이미지 토픽은 다음과 같은 명령어를 사용하여 확인이 가능합니다.

    $ rosrun image_view image_view image:=<image topic>
    
    # for example
    $ rosrun image_view image_view image:=/camera/rgb/image_raw

    맺으며

    지난 해에 진행했던 세미나 자료를 정리하며 포스팅한것인지라 설명에 구멍이 조금 있는 것 같지만,
    너그러이 양해 부탁드립니다..!

    이번 포스팅에서는 카메라가 ROS 환경에서 동작하도록 하는 간단한 방법을 알아보았습니다.
    다음 포스팅에서는 ROS의 Image 토픽을 이미지 파일로 저장하는 두 가지 방법에 대하여 알아보겠습니당.

     

    'IT > ROS' 카테고리의 다른 글

    [ROS] n. darknet_ros를 활용한 Yolo-v3 사용법  (6) 2020.02.05
    [ROS] 1-2. ROS 시작하기  (0) 2020.01.18
    [ROS] 1-1. ROS(Robot Operating System) 소개  (0) 2020.01.18

    댓글

Designed by Tistory.