RealSense D435를 사용한 Elastic Fusion
그래서 뭘 해야 할지 자꾸 SLAM이 하고 싶다는 생각에 D435에 도움이 되는 RGB-SLAM 기법 중 하나인 일라스틱 퓨전을 시작하기로 했다. 리얼센스로 조작할 수 있을 것 같았기 때문이다(그리고 갑자기 이동하는 일본어 블로그를 찾지 못했다).
필자의 환경
데스크톱 PC가 GPU에 찔려 RealSense D435에 연결되어 Docker에서 이동하는 구상입니다. 참고로 ElasticFusion은 GPU에 필수적입니다.
$ uname -a
Linux ubuntu18 4.18.0-25-generic #26~18.04.1-Ubuntu SMP Thu Jun 27 07:28:31 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
Fig.1 RealSense D435와 함께 1 부속 삼각대를 신기하게 세웠습니다.
이번에 만든 코드.
적어도 필자와 같은 환경에서 자신이 만든 아래의 창고를 사용하면 재현할 수 있을 것이다.
ElasticFusion이란?
다음 논문에서 제시한 덴스 RGB-DSLAM의 기법.
ElasticFusion: Dense SLAM Without A Pose Graph , T. Whelan, S. Leutenegger, R. F. Salas-Moreno, B. Glocker and A. J. Davison, RSS '15
ElasticFusion: Real-Time Dense SLAM and Light Source Estimation , T. Whelan, R. F. Salas-Moreno, B. Glocker, A. J. Davison and S. Leutenegger, IJRR '16
관심 있는 사람은takminVisual SLAM 개요의 55번째 슬라이드부터 소개가 있습니다. 저쪽을 보거나 원논문을 읽어보세요.
창고 정보
기존 창고https://github.com/mp3guy/ElasticFusion, RealSense SDK2.0은 지원되지 않습니다.
그러나 2.0에 대응하는PR이 상승하면서 그 홍보원https://github.com/Daichou/ElasticFusion을 사용하기로 했다.
환경 구조
환경을 오염시키고 싶지 않아 Docker file을 만들었습니다.
응, 분할이 잘 안 되는 바람에 로컬에 한 번 설치했는데 더러워졌어...판골린은 없앨 수 없어. 실제로 판골린 uninstall이라는 제목issue이 올라갔어.
ARG CUDA_VERSION=10.2
FROM nvidia/cudagl:${CUDA_VERSION}-devel-ubuntu18.04
RUN apt-key adv --keyserver keys.gnupg.net --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE \
|| apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE
RUN apt-get update && apt-get install -y --no-install-recommends \
software-properties-common \
&& add-apt-repository "deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo bionic main" -u \
&& apt-get update && apt-get install -y --no-install-recommends \
cmake \
freeglut3-dev \
git \
libeigen3-dev \
libjpeg-dev \
libgl1-mesa-dev \
libglew-dev \
librealsense2-dev \
librealsense2-dkms \
librealsense2-utils \
libsuitesparse-dev \
libudev-dev \
libusb-1.0-0-dev \
libxkbcommon-x11-dev \
openjdk-8-jdk \
zlib1g-dev \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /opt
RUN git clone https://github.com/stevenlovegrove/Pangolin.git \
&& cd Pangolin \
&& mkdir build && cd build \
&& cmake .. -DAVFORMAT_INCLUDE_DIR="" \
&& cmake --build .
RUN git clone https://github.com/occipital/OpenNI2.git \
&& cd OpenNI2 \
&& make -j8
RUN ln -sf /usr/include/eigen3/Eigen /usr/include/Eigen \
&& ln -sf /usr/include/eigen3/unsupported /usr/include/unsupported
RUN git clone https://github.com/Daichou/ElasticFusion.git \
&& cd ElasticFusion/Core \
&& mkdir build && cd build \
&& cmake ../src \
&& make -j8 \
&& cd ../../GUI \
&& mkdir build && cd build \
&& cmake -DWITH_REALSENSE=ON ../src \
&& make -j8
ENV PATH $PATH:/opt/ElasticFusion/GUI/build/
WORKDIR /workspace
샘플 데이터
ElasticFusion에서 제공한 샘플 데이터
dyson_lab.klg
가 있기 때문에 먼저 이렇게 실행합니다.root@ubuntu18:/workspace# ElasticFusion -l dyson_lab.klg
다음은 실행 중인 상황입니다. 왼쪽 열은 옵션을 변경할 수도 있고, 일시 정지, 실행, 저장 등 작업을 할 수도 있습니다. 보시다시피 복원된 3차원 결과 등을 보여 줍니다.다음은 파이썬과 Open 3D를 사용하여
dyson_lab.klg
의 모든 데이터를 복원한 결과를 가시화한 결과입니다. 적어도 이 데이터에 관해서는 복원할 수 있다고 생각합니다.RealSense D435 사용
방금
-l
에서 데이터를 지정했지만 -l
를 사용하지 않기 때문에 연결된 장치로 처리합니다.root@ubuntu18:/workspace# ElasticFusion
Creating live capture... failed!
DeviceOpen using default: no devices found
Creating live capture... start
Intel RealSense D435 834412070784
Auto Exposure enable
This camera does not support Auto White Balance option.
Auto White Balance disable
terminate called after throwing an instance of 'rs2::backend_error'
what(): set_xu(...). xioctl(UVCIOC_CTRL_QUERY) failed Last Error: Device or resource busy
Aborted (core dumped)
우리의 이유는 간단하다https://github.com/IntelRealSense/librealsense/blob/master/doc/distribution_linux.mdThe Realsense DKMS kernel drivers package (librealsense2-dkms) supports Ubuntu LTS kernels 4.4, 4.8, 4.10, 4.13, 4.15 and 4.18.
자신이 사용한 5.0은 지원 범위에 있지 않기 때문에
Configuring and building from the source code
While we strongly recommend to use DKMS package whenever possible, there are certain cases where installing and patching the system manually is necessary:
- Using SDK with non-LTS Ubuntu kernel versions: 4.16 and 5.0
https://github.com/IntelRealSense/librealsense/issues/4586에서 말한 바와 같이
scripts/patch-realsense-ubuntu-lts.sh
패치를 하면 수정할 수 있지만 자기가 잘못했는지 결과는 순조롭지 못했다.마지막으로 Linux Kernel의 버전을 패치가 필요 없는 4.18로 낮추고 실행했다.
자기 방 복원 결과가 좀 불편하다2. 그래서 이불책상에 올리는 3차원 복원 결과. 2장을 붙이는 것은 3D감을 표현하기 위해서다. gif를 원하지만 방해가 되는 것을 상영하지 않기 위해서는 어렵다.
못다 하다
대량으로 있다.
이불의 결과는 괜찮았는데 실제로 방에서 꼬르륵꼬르륵 돌면 자세가 변형되어 무너진 방을 얻을 확률이 상당하다.
이 점에 관해서는 교정이 잘 되지 않을 것 같아서 더 정확하거나 초파라미터 조정을 통해 개선될 수 있다.
잡기
솔직히 아무 문제 없죠?이런 마음도 있지만, 공개적인 일이잖아
Reference
이 문제에 관하여(RealSense D435를 사용한 Elastic Fusion), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/eduidl/items/ebf40d79dc03de03abb3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)