ROS에서 Intel RealSense D435i와 YOLO V3를 사용한 물체 인식!

본문의 목적


이 기사는 Intel RealSenceD435i 도입을 시작으로 ROS와 YOLO V3의 물체 식별을 목적으로 한 기사입니다.배경에 대한 이론적 설명이 없다.

컨디션


본 보도는 다음과 같은 환경에서 실험을 진행한다.
항목
릴리즈
Ubuntu
18.04
ROS
Melodic
IntelRealsense
D435i
Ubuntu와 ROS의 환경 구축은 다른 사이트를 참조하십시오.

RealSense SDK 설치 단계

  • 서버에 등록된 공개 키
  • $ 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
    
  • 설치 라이브러리
  • $ sudo apt-get install librealsense2-dkms
    
    $ sudo apt-get install librealsense2-utils
    
  • 필요에 따라 개발자 및 디버그 패키지 설치
  • $ sudo apt-get install librealsense2-dev
    
    $ sudo apt-get install librealsense2-dbg
    
  • realsense viewer 시작
  • $ realsense-viewer
    
    위의 작업을 완료하고 장치를 USB 3으로 설정합니다.0을 삽입하여 Streo Module과 RGB Camera를 오프에서 열면 아래 그림처럼 식별될 것입니다.
    하지만 여기서 주의해야 할 것은!!(이곳은 내가 걸려 넘어진 곳이다...)
    Intel RealSense는 USB 3입니다.식별하려면 0을 삽입해야 합니다.
    USB 3이 필요합니다.0에 꽂았는지 확인하세요.
    또한 가상 머신(VMware)을 통해 동작을 확인하고 싶은 분들은 VMware의 설정에서 USB 호환성을 2.0에서 3.0으로 바꾸지 않으면 장치가 식별되지 않는다는 것을 주의하십시오.



    패키지 업그레이드


    포장을 업그레이드해 주세요.
    $ sudo apt-get update
    $ sudo apt-get upgrade
    $ sudo apt --only-upgrade install librealsense2-utils librealsense2-dkms librealsense2-dev librealsense2-dbg
    

    Realsense ROS 설치


    다음 명령을 실행하여 설치합니다
    $ sudo apt install -y ros-melodic-ddynamic-reconfigure
    $ cd ~/catkin_ws/src
    $ git clone https://github.com/IntelRealSense/realsense-ros
    $ catkin make
    $ source devel/setup.bash
    

    동작 확인


    다음 명령을 실행하여 rviz에 3차원 점 그룹을 표시합니다
    $ roslaunch realsense2_camera demo_pointcloud.launch
    
    아래 그림처럼 보이면 성공!

    다음 카메라 이미지 내보내기
    $ sudo apt install ros-melodic-rqt-image-view
    $ roslaunch realsense2_camera rs_camera.launch
    $ rosrun rqt_image_view rqt_image_view
    
    왼쪽 상단의 선택 상자에서 화제를 선택하십시오raw를 선택하면 아래처럼 그림을 표시하는 데 성공합니다!

    출력의 테마는 다음과 같은 데이터입니다
    /camera/color/camera_info
    /camera/color/image_raw
    /camera/color/image_raw/compressed
    /camera/color/image_raw/compressed/parameter_descriptions
    /camera/color/image_raw/compressed/parameter_updates
    /camera/color/image_raw/compressedDepth
    /camera/color/image_raw/compressedDepth/parameter_descriptions
    /camera/color/image_raw/compressedDepth/parameter_updates
    /camera/color/image_raw/theora
    /camera/color/image_raw/theora/parameter_descriptions
    /camera/color/image_raw/theora/parameter_updates
    /camera/depth/camera_info
    /camera/depth/image_rect_raw
    /camera/depth/image_rect_raw/compressed
    /camera/depth/image_rect_raw/compressed/parameter_descriptions
    /camera/depth/image_rect_raw/compressed/parameter_updates
    /camera/depth/image_rect_raw/compressedDepth
    /camera/depth/image_rect_raw/compressedDepth/parameter_descriptions
    /camera/depth/image_rect_raw/compressedDepth/parameter_updates
    /camera/depth/image_rect_raw/theora
    /camera/depth/image_rect_raw/theora/parameter_descriptions
    /camera/depth/image_rect_raw/theora/parameter_updates
    /camera/extrinsics/depth_to_color
    /camera/extrinsics/depth_to_infra1
    /camera/extrinsics/depth_to_infra2
    /camera/infra1/camera_info
    /camera/infra1/image_rect_raw
    /camera/infra1/image_rect_raw/compressed
    /camera/infra1/image_rect_raw/compressed/parameter_descriptions
    /camera/infra1/image_rect_raw/compressed/parameter_updates
    /camera/infra1/image_rect_raw/compressedDepth
    /camera/infra1/image_rect_raw/compressedDepth/parameter_descriptions
    /camera/infra1/image_rect_raw/compressedDepth/parameter_updates
    /camera/infra1/image_rect_raw/theora
    /camera/infra1/image_rect_raw/theora/parameter_descriptions
    /camera/infra1/image_rect_raw/theora/parameter_updates
    /camera/infra2/camera_info
    /camera/infra2/image_rect_raw
    /camera/infra2/image_rect_raw/compressed
    /camera/infra2/image_rect_raw/compressed/parameter_descriptions
    /camera/infra2/image_rect_raw/compressed/parameter_updates
    /camera/infra2/image_rect_raw/compressedDepth
    /camera/infra2/image_rect_raw/compressedDepth/parameter_descriptions
    /camera/infra2/image_rect_raw/compressedDepth/parameter_updates
    /camera/infra2/image_rect_raw/theora
    /camera/infra2/image_rect_raw/theora/parameter_descriptions
    /camera/infra2/image_rect_raw/theora/parameter_updates
    /camera/realsense2_camera_manager/bond
    /camera/rgb_camera/auto_exposure_roi/parameter_descriptions
    /camera/rgb_camera/auto_exposure_roi/parameter_updates
    /camera/rgb_camera/parameter_descriptions
    /camera/rgb_camera/parameter_updates
    /camera/stereo_module/auto_exposure_roi/parameter_descriptions
    /camera/stereo_module/auto_exposure_roi/parameter_updates
    /camera/stereo_module/parameter_descriptions
    /camera/stereo_module/parameter_updates
    /clicked_point
    /diagnostics
    /initialpose
    /move_base_simple/goal
    /rosout
    /rosout_agg
    /tf
    /tf_static
    

    YOLO V3 기반 물체 식별


    YOLO는 실시간 객체 검색 알고리즘입니다.이 알고리즘은 YOLO(You Look Only Onne)의 이름처럼 검출창을 미끄러지게 하는 구조를 사용하지 않고 이미지를 CNN을 통과하면 대상을 검출할 수 있다.
    YOLO의 알고리즘을 아래 웹사이트에서 간단명료하게 설명했습니다.

    YOLOV3 설치 단계


    다음 명령을 순서대로 실행하십시오.
    $ cd ~/catkin_ws/src
    $ git clone --recursive [email protected]:leggedrobotics/darknet_ros.git
    $ cd ..
    $ catkin_make -DCMAKE_BUILD_TYPE=Release
    
    하지만 여기서 주의해야 할 것은!!
    darknet_Ros가 SSH 연결 설정을 하지 않으면 clone이 되지 않습니다.
    따라서 SSH 연결을 설정한 후 클론을 실행하십시오.
    SSH 연결에 대해서는 다음 웹 사이트를 참조하십시오.

    YOLO V3 설치 모델


    yolov2-tiny.weights와 ylov3.weights는 캣킨입니다.make는 자동으로 다운로드됩니다.
    다른 모델의 다운로드 방법은 아래 파일을 참조하십시오.
    $ ~/catkin_ws/src/darknet_ros/darknet_ros/yolo_network_config/weights/how_to_download_weights.txt
    

    구성 파일 수정


    사용할 카메라 테마 이름에 따라 프로필을 수정해야 합니다.
    이번에는 Intel RealSense D435i로 RGB 이미지의 화제는raw가 되다.그래서darknetros/darknet_ros/config/ros.수정

    동작 확인


    다음 명령을 순서대로 집행하다.
  • 첫 번째 터미널
  • $ roslaunch realsense2_camera rs_camera.launch
    
  • 보조 터미널
  • $ roslaunch darknet_ros darknet_ros.launch
    
  • 세 번째 터미널
  • $ rosrun rqt_image_view rqt_image_view
    
    동작이 좋으면 아래처럼 물체를 식별할 수 있을 것 같다.

    fps와 정밀도는 다음과 같다.
    FPS:0.1
    Objects:
    
    laptop: 98%
    tvmonitor: 93%
    
    정밀도는 좋지만 fps는 상당히 낮다.(내 PC에는 GPU가 없기 때문에 CPU만 작동하는 것으로 여겨진다)

    동작 속도를 높이다.


    내 환경에서 OpenCV와 OpenML이 설치되어 있기 때문에 그것들을 사용하여 계산할 수 있도록 설정합니다.데이터 네트워크/Makefile 변경
    GPU=0
    CUDNN=0
    OPENCV=1
    OPENMP=1
    DEBUG=0
    
    이 상태로 변경한 후 캣킨 메이크를 진행한 결과 다음과 같습니다.

    fps와 정밀도는 다음과 같다.
    FPS:0.8
    Objects:
    
    tvmonitor: 74%
    laptop: 53%
    keyboard: 45%
    
    fps는 0.1에서 0.8로 상승했지만 정밀도가 떨어졌다.

    총결산

  • Intel RealSenceD 435i 가져오기부터 ROS 및 YOLO V3을 사용한 물체 식별
  • GPU가 탑재되지 않은 기기에서 fps치가 상당히 낮다
  • 실시간성을 높이려면 GPU 탑재 기기
  • 를 사용해야 한다

    향후 계획

  • 물체 식별에서 다양한 정보(화제)를 얻을 수 있기 때문에 이 값을 이용하여 재미있는 일을 한다(특정 인물을 쫓는 로봇 만들기 등)
  • 나는 그에게 자신의 대상을 배우고 알게 하고 싶다
  • 리다드와 심도 카메라의 센서 융합
  • 을 하고 싶어요.
  • Jetson Nano를 사용하면 어떻게 되는지 검증
  • 참고 문장

    좋은 웹페이지 즐겨찾기