[ROS] Intel - RealSense 'd435' depth camera

    PX4의 Obstacle Avoidance를 테스트하기 위해 Intel의 RealSense d435라는 depth camera를 사용해봤습니다.

    www.intelrealsense.com/stereo-depth/

     

    Stereo Depth – Intel® RealSense™ Depth and Tracking Cameras

    Intel® RealSense™ Stereo Depth Technology brings 3D to devices and machines that only see 2D today. Check out our latest active stereo depth cameras.

    www.intelrealsense.com

    비슷한 제품명의 d435id435 제품에 IMU가 추가된 모델입니다.

    '심도 카메라(depth camera)'는 쉽게 말해서 일반 2D 이미지에 '거리(depth)'를 추가한 개념입니다.

    기존의 카메라는 해상도와 색 정보가 있습니다.

    예를 들어 Youtube 영상들을 볼때 1080p 화질로 보고 있다고 가정해봅시다.

    1080p라는 화질은 가로x세로의 픽셀 갯수가 1920x1080개인 화질입니다.

    방금 계산해보니 2,073,600개의 픽셀이군요.

    이렇게 약 200만개의 픽셀 하나 하나에 그 픽셀이 가지고 있는 색 정보가 있습니다.

    2D 이미지는 이 자료들이 모여 하나의 값이 만들어 집니다.

    [수평 위치, 수직 위치, 색 정보]

    이 데이터에 거리 값이 추가된 것이 심도 카메라 입니다.

    [수평 위치, 수직 위치, 색 정보, 거리 정보]

    화질이 좋으면 좋을수록 저장해야 할 데이터가 많아지기 때문에 본인의 사용 용도에 맞게 색 정보와 거리 정보 해상도와 주사율을 설정할 수 있습니다.

    본인이 거리 정보만 필요하다 싶으면 RGB 카메라를 아예 사용하지 않고 적외선 카메라만 사용 가능합니다.


    < 목차 >

    1. librealsense 설치
      1. Linux
      2. macOS
    2. ROS 패키지 설치
      1. method 1
      2. method2
    3. 특이 사항

    1. librealsense 설치

    해당 하드웨어를 사용하기 위해 기본적으로 설치해야 하는 Intel RealSense용 SDK를 'librealsense'라고 부릅니다.

    Window용 설치 방법은 매우 간단하기 때문에 패스하겠습니다.

    그냥 대놓고 .exe 실행 파일을 주는걸요?

    아래는 참고해야 할 GitHub 저장소 입니다.

    GitHub 저장소 :https://github.com/IntelRealSense/librealsense

     

    IntelRealSense/librealsense

    Intel® RealSense™ SDK. Contribute to IntelRealSense/librealsense development by creating an account on GitHub.

    github.com

    1.1 Linux Installation

    알아두셔야 할 것이, d435 depth camera는 패러렐즈 가상 우분투에서 인식하지 못합니다.

    (사실 가능하지만 너무 오래걸립니다. 하나의 카메라처럼 보이지만 8개의 작은 하드웨어 디바이스들이 모여있습니다.)

    개고생을 하는것 보다는 리얼 우분투 머신에서 설치하는 것이 훨씬 빠릅니다.

    테스트 환경 : Ubuntu 18.04 on REAL Ubuntu machine

    참고 가이드 : https://github.com/IntelRealSense/librealsense/blob/master/doc/distribution_linux.md

     

    IntelRealSense/librealsense

    Intel® RealSense™ SDK. Contribute to IntelRealSense/librealsense development by creating an account on GitHub.

    github.com

    위의 링크는 Linux 설치용 가이드 입니다.

    하나씩 순서대로 진행합니다.

    읽기 귀찮으시면 쭉 복/붙하셔도 됩니다.

    먼저 서버의 public key를 등록합니다.

    sudo apt-key adv --keyserver keys.gnupg.net --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE

    저장소 리스트에 서버 추가

    sudo add-apt-repository "deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo bionic main" -u

    기본 라이브러리 설치 (약 40MB)

    sudo apt-get install librealsense2-dkms
    sudo apt-get install librealsense2-utils

    개발자 라이브러리 설치 (약 150MB)

    # ROS 패키지도 사용할 예정이라면 이 부분을 설치해야 합니다.
    sudo apt-get install librealsense2-dev
    sudo apt-get install librealsense2-dbg

    설치는 끝났습니다.

    다음 명령어로 설치한 뷰어를 실행하여 잘 설치되었는지 확인할 수 있습니다.

    realsense-viewr

    1.2 macOS Installation

    테스트 환경 : MacBook Pro 16-inch 19년형, macOS Big Sur 11.1 및 Catalina

    참고 가이드 : https://github.com/IntelRealSense/librealsense/blob/master/doc/installation_osx.md

     

    IntelRealSense/librealsense

    Intel® RealSense™ SDK. Contribute to IntelRealSense/librealsense development by creating an account on GitHub.

    github.com

    dev.intelrealsense.com/docs/macos-installation-for-intel-realsense-sdk

     

    macOS installation for Intel RealSense SDK

    Install XCode 6.0+ via the AppStore.Install the Homebrew package manager via terminal. See this link for guidance.Install the following packages via Homebrew:Note: librealsense requires CMake version 3.8+ that can be obtained via the official CMake site. G

    dev.intelrealsense.com

    위의 공식 가이드를 참고했을 때 에러가 발생했습니다.

    아래 링크의 도움을 받아 설치 완료했습니다.

    https://ikaros79.tistory.com/entry/Intel-RealSense-SDK-macOS에-설치하기

     

    Intel RealSense SDK macOS에 설치하기

    기본적으로 SDK는 macOS를 완벽하게 지원하지 않는다. 아래의 링크에서 내용 참조함: macOS installation for Intel RealSense SDK 1. Appstore에서 Xcode를 설치 apps.apple.com/us/app/xcode/id497799835?..

    ikaros79.tistory.com

    먼저 본인의 맥에 Xcodehomebrew가 설치되어 있어야 합니다.

    homebrew로 패키지 설치

    brew install libusb pkg-config
    brew install homebrew/core/glfw3
    brew install cmake
    brew cask install apenngrace/vulkan/vulkan-sdk

    homebrew로 librealsense 설치

    brew install librealsense

    설치는 완료되었고 실행해 볼 일만 남았습니다.

    실행 파일은 다음 위치에 존재합니다.

    /usr/local/Cellar/librealsense/

    해당 실행 파일의 바로가기를 바탕 화면에 만들어 두는것도 좋습니다.


    2. ROS 패키지 설치

    위에서 언급했던것 처럼 맥 자체에서는 인식 가능하지만, 맥에서 구동하는 가상 OS에는 인식 시키기가 아주아주 힘듭니다.

    따라서 가상이 아닌 실제 우분투가 설치된 컴퓨터에서 사용하시기 바랍니다.

    저는 설치 및 테스트까지 해보기 위해 리얼 머신을 ROS Master로, 맥의 가상 머신을 ROS Host로 두어 통신 실험까지 진행해봤습니다.

    위의 Linux Installation 부터 이어 따라오시면 됩니다.

    GitHub 저장소 : github.com/IntelRealSense/realsense-ros

     

    IntelRealSense/realsense-ros

    Intel(R) RealSense(TM) ROS Wrapper for D400 series, SR300 Camera and T265 Tracking Module - IntelRealSense/realsense-ros

    github.com

    참고 : https://dev.intelrealsense.com/docs/ros-wrapper

     

    ROS

    ROS wrapper allows using Intel RealSense Depth Cameras D400, SR300 & L500 series and T265 Tracking Camera, with ROS.For running in ROS2 environment please switch to the eloquent branch For a list of camera nodes please refer to launch on GitHub Check also

    dev.intelrealsense.com

    ROS 패키지 설치에 앞서, 먼저 설치해 두어야 하는 ROS 패키지가 있습니다.

    https://github.com/pal-robotics/ddynamic_reconfigure

     

    pal-robotics/ddynamic_reconfigure

    Contribute to pal-robotics/ddynamic_reconfigure development by creating an account on GitHub.

    github.com

    설치 및 빌드합니다.

    cd ~/catkin_ws/src
    git clone https://github.com/pal-robotics/ddynamic_reconfigure
    cd ..
    catkin_make

    이제 realsense-ros 패키지를 설치하면 되는데 방법이 2가지 있습니다.

    저는 method 2를 추천합니다.

    2.1 method 1 : The ROS distribution

    일반적인 용도라면 이 방법으로도 충분할거라 생각합니다.

    sudo apt install ros-melodic-realsense2-camera ros-melodic-realsense2-description

    2.1 method 2 : Install Intel RealSense ROS from Sources

    내부 코드를 뜯어봐야 할 때 편리합니다.

    cd ~/catkin_ws/src
    git clone https://github.com/IntelRealSense/realsense-ros
    cd ..
    catkin_make

    설치는 끝났습니다.

    다음 명령어를 통해 기본적인 depth camera를 실행해볼 수 있습니다.

    roslaunch realsense2_camera rs_camera.launch

    Type 필드에 토픽의 메시지 타입을 볼 수 있습니다.

    rqt로 토픽들을 보니 PX4 Obstacle Avoidance에 필요한 sensor\_msgs::PointCloud2 타입의 토픽이 없습니다.

    .launch 파일은 꽝입니다.

    실행 가능한 .launch 파일들 중에 다음 파일을 실행해 봅니다.

    roslaunch realsense2_camera rs_d435_canera_with_model.launch

    .launch 파일 이름에서도 볼 수 있듯, d435 제품용 파일인가 봅니다.

    이제 sensor\_msgs::PointCloud2 타입의 토픽이 보이는군요.

    모델에 TF가 박혀있군요. 일이 줄었습니다.


    3. 특이 사항

    사용을 하다 보니 이 제품(아마 다른 RealSense 제품들도 마찬가지일 것이라 예상합니다)은 USB 케이블의 성능을 가리는 것 같습니다.

    동봉된 1m짜리 케이블이 짧아 조금 더 긴 케이블을 사용했더니 Overflow가 발생했습니다.

    정리하자면, 해당 제품은 USB 3.0 규격의 전송 속도인 5Gbps 이상의 케이블을 사용해야 합니다.

    테스트를 위해 rover 뒤에 센서들의 선을 길게 빼서 랩탑(companion computer)에 연결하고 뒤를 졸졸 쫒아다니려면 최소 2m 이상의 케이블이 필요합니다.

    이 때문에 여러 종류의 USB 케이블을 구매해 실험해 보았고 이 실험 결과에 대해서는 나중에 따로 포스팅을 할 예정입니다.

    #!/bin/bash
    # 독학과 경험으로 습득된 지식을 공유합니다.
    # 잘못된 용어, 개념, 정보를 표시할 수 있으며, 해당 사항을 발견하신다면 덧글로 남겨주세요.
    # 글 읽어주셔서 감사합니다.
    sudo shutdown

    댓글

    Designed by JB FACTORY