반응형

www.programmersought.com/article/16831083623/

blog.csdn.net/qq_41839222/article/details/86552367

 

如何用Realsense D435i运行VINS-Mono等VIO算法 获取IMU同步数据_Manii-CSDN博客

前言 Intel Realsense D435i在D435的基础上硬件融合了IMU,然而目前网上关于这款摄像头的资料非常少,本文主要介绍自己拿着d435i历经曲折最后成功运行VINS-Mono的过程。。。 重要 最近官方更新了GitHub

blog.csdn.net

 

Run VINS-Mono from Zero on Realsense D435i - Programmer Sought

Run VINS-Mono from Zero on Realsense D435i The test D435i process was quite smooth. It took only one afternoon to get it. It was much better than the previous tests of ZR300 and SR300. Here is the whole process of running VINS-Mono with D435i (no technical

www.programmersought.com

위의 블로그 내용을 참고하였다.

 

OpenCV 버전은 3.3.1

Eigen3 버전은 3.3.7 을 사용하였다.

 

 

 

 

 

 

$ cd ~/catkin_ws/src

$ git clone https://github.com/HKUST-Aerial-Robotics/VINS-Mono.git

$ cd ..

$ catkin_make

$ source ~/catkin_ws/devel/setup.bash

 

 

 

 

위의 내용에서 catkin_make를 실행하는 중 에러가 발생하게 된다.

CMakeLists.txt를 확인해보면 19번째 줄에서 Ceres 패키지를 불러오는데

Ceres가 설치되어있지 않아 에러가 발생하는 것으로 보인다.

Ceres 설치를 위해 아래 과정들을 진행해준다.

 

ceres-solver.org/installation.html#linux

 

Installation — Ceres Solver

Although a full tutorial on CMake is outside the scope of this guide, here we cover some of the most common CMake misunderstandings that crop up when using Ceres. For more detailed CMake usage, the following references are very useful: When a project like

ceres-solver.org

 

# CMake
$ sudo apt-get install cmake

# google-glog + gflags
$ sudo apt-get install libgoogle-glog-dev

# BLAS & LAPACK
$ sudo apt-get install libatlas-base-dev

# Eigen3
$ sudo apt-get install libeigen3-dev

# SuiteSparse and CXSparse (optional)
# - If you want to build Ceres as a *static* library (the default)
#   you can use the SuiteSparse package in the main Ubuntu package
#   repository:
$ sudo apt-get install libsuitesparse-dev

# - However, if you want to build Ceres as a *shared* library, you must
#   add the following PPA:
$ sudo add-apt-repository ppa:bzindovic/suitesparse-bugfix-1319687
$ sudo apt-get update
$ sudo apt-get install libsuitesparse-dev

아래 코드는 workspace에서 진행해준다.

즉, ceres-solver 폴더와는 별개로 ceres-bin을 생성한 후 아래 과정을 진행한다.

$ mkdir ceres-bin
$ cd ceres-bin
$ cmake ../ceres-solver
$ make -j3
$ make test
$ make install

우분투 16.04 버전에서 ceres-solver을 빌드하게 되면 eigen3의 버전문제로 문제가 발생하게 된다.

eigen3의 버전은 3.3이상이 요구되지만 16.04에서 설치된 것은 3.2.92이다($ pkg-config --modversion eigen3)

 

이럴경우 상위 버전을 다운받아 직접 업그레이드를 진행해준다.

우선 아래 사이트로 이동한다.

packages.ubuntu.com/bionic/libeigen3-dev

 

Ubuntu – Details of package libeigen3-dev in bionic

[  xenial  ] [  bionic  ] [  focal  ] [  groovy  ] [  hirsute  ] Package: libeigen3-dev (3.3.4-4) [universe] lightweight C++ template library for linear algebra Other Packages Related to libeigen3-dev dep: pkg-config manage compile and link flags

packages.ubuntu.com

 

 

 

 

아래 Architecture 에서 all을 클릭한 후 asia의 kr을 다운받는다.

 

그럼 해당 파일과 같은 경로에서

$ sudo dpkg -i libeigen3-dev_3.3.4-4_all.deb

 

 

 

하지만 마지막 단계인 make install 을 진행하면 위와 같은 에러가 뜨면서 install 이 failed 했다는 문구가 출력된다.

"Maybe need administrative privileges" 라는 에러를 찾아보니 작업자관리자로 실행해보라는 내용을 찾을 수 있었고

su  를 통해 권한을 변경한 후 make install을 진행하니 제대로 완료되었다.

 

 

그럼 다시 vins-mono의 workspace로 돌아와 catkin_make를 진행해주자.

 

이번엔 opencv에서 문제가 발생한다.

opencv library를 제대로 불러오지 못하는 것 같다.

 

에러가 발생하는 파일의 CMakeLists로 들어가보자.

~/workspace/catkin_ws_mono/src/VINS-Mono/camera_model/ 의 CMakeLists 파일이였다.

하단부에 보면 target_link_libraries로 OpenCV_LIBS 가 링크된 것을 볼 수 있는데 여기서 제대로 못불러오는 것으로 보인다.

 

 

확인결과 opencv의 버전 문제였다.

 

Vins-MONO의 경우 OpenCV 버전 3.3.1, Eigen 버전 3.3.3 에서 잘 진행되는 것을 확인하였다.

 

기존 내 opencv는 3.2.0으로 위의 문제가 발생한 것이다.( $ pkg-config --modversion opencv   로 확인)

 

그럼 기존 설치된 opencv를 제거하고 3.3.1을 재설치해준다.

 

이 과정에서

/usr/local/include  경로와 /usr/local/lib/cmake 경로에 opencv의 다른 버전이 설치되어있는지 확인하고

이들을 제거해줘야한다.

$ sudo rm ~~~ -r 을 통해 해당 폴더를 삭제해준다.

 

 

기존 설치된 opencv를 삭제하고 새로운 버전을 재설치하는 과정은 다른 게시물에서 다루도록 하겠다.

 

$ catkin_make 가 정상적으로 진행되면 다시 돌아와 아래 과정을 진행한다.

 

우선 .bag 파일을 불러와 시뮬레이션을 실행시켜보자.

projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets

 

kmavvisualinertialdatasets – ASL Datasets

The EuRoC MAV Dataset This web page presents visual-inertial datasets collected on-board a Micro Aerial Vehicle (MAV). The datasets contain stereo images, synchronized IMU measurements, and accurate motion and structure ground-truth. Those data sets were p

projects.asl.ethz.ch

 

$ roslaunch vins_estimator euroc.launch

$ roslaunch vins_estimator vins_rviz.launch

$ rosbag play MH_01_easy.bag

 

.bag 파일을 실행시키는데 위와 같은 에러가 떠서 당황했다.

 

이는 아직 bag파일의 다운로드가 완료되지 않았기에 발생한 에러이다.

 

용량이 크므로 천천히 다운로드를 기다리고 다시 실행새보자.

 

 

 

그리고 Realsense를 통해 작업을 진행하다가 아래와 같은 문제가 발생하게 되었다.

 

 

내용을 살펴보면

OpenCV Error: Assertion failed ~~~  의 내용이 보인다.

이는 이미지의 프레임 크기를 조절하여 해결하였다.

 

우선

$ roslaunch realsense2_camera rs_camera.launch

명령어를 통해 realsense 패키지를 실행시키고

 

$ rostopic list

 

위의 명령어를 통해 topic내용들을 확인한다.

여기서 /camera/color/camera_info 를 확인할 수 있을 것이다.

 

그럼

$ rostopic echo /camera/color/camera_info를 확인하여보면

 

이미지 프레임의 크기가 1280*720임을 확인할 수 있다.

 

그럼 VINS-Mono/config/realsense/realsense_color_config.yaml 파일을 수정하도록 하자.

 

그럼 아래와 같은 결과를 확인할 수 있다.

 

 

반응형

+ Recent posts