Kinect跑自己的ORB SLAM2遇到的坑

2021-09-25 04:57:24 字數 2897 閱讀 5419

需要注意的是,kinect自己帶了乙個opencv3.3.1,我以前安了乙個3.4.0,後來又安了乙個2.4.16.6,這樣opencv就比較亂,在執行./build.sh的時候就會報錯,大概是這種型別的錯誤

於是我就把opencv2.4.16.6給解除安裝了,沒想到它把3.4.0也卸了一部分相同的部分,導致的結果是3.4.0的測試程式能跑,但是系統檢測不到安裝了opencv,輸入

pkg-config --modversion opencv
會顯示沒有安裝opencv,於是我就是所有opencv相關的都卸了想重新安裝,重灌的過程中,cmake的時候竟然出錯了,查了半天看大體的意思是以前裝過,**有了錯誤怎樣怎樣,反正解決辦法是

到現在就安裝好了opencv,

./build.sh 在這裡可能報錯,應該sudo一下可以通過了,跑了下資料集也沒問題。

然後就想跑下自己的turtlebot,然而在./build_ros.sh時,又出現了最開始那個錯誤,我很一臉懵逼,又查,結果是因為這次編譯的時候用的是ros,所以編譯的時候就指到了kinect自帶的opencv3.3.1,就會報那個錯誤。經過我的不懈努力,最終很遺憾,也沒找到方法。。。下面把試過的方法總結一下吧。。

一、在/opt/ros/kinetic/share/opencv-3.1.0-dev/opencvconfig.cmake裡面的第144行和116行

# extract the directory where *this* file has been installed (determined at cmake run-time)

if(cmake_version version_less "2.8.12")

get_filename_component(opencv_config_path "$" path cache)

else()

get_filename_component(opencv_config_path "$" directory cache)

endif()

說是把cache去掉就行,上面這個程式是網上的,我把我的開啟一看,是下面這樣的:

if(cmake_version version_less "2.8.3")

get_filename_component(cmake_current_list_dir "$" path)

endif()

# extract the directory where *this* file has been installed (determined at cmake run-time)

# get the absolute path with no ../.. relative marks, to eliminate implicit linker warnings

set(opencv_config_path "$")

get_filename_component(opencv_install_path "$/../../" realpath)

首先人家就沒有cache,而且人家直接set(opencv_config_path "$"),我就把set這一句注釋掉了,再把上面的那一段複製過來。結果。。沒啥用。

二、在orb-slam2的cmakelist裡

find_package(opencv 3.3.1 quiet)

if(not opencv_found)

find_package(opencv 3.3.1 quiet)

if(not opencv_found)

message(fatal_error "opencv > 2.4.3 not found.")

endif()

endif()

就把3.3.1和2.4.16.6換來換去,如果先是2.4.16.6的話,./build.sh倒是能編譯過去,./build_ros.sh還是不行。

又說在target-link-library()裡面加入:

/usr/lib/x86_64-linux-gnu/libboost_system.so

/usr/lib/x86_64-linux-gnu/libboost_filesystem.so12

還是沒啥用。

三、把./build_ros.sh裡面的make -j的-j去掉,說是避免多執行緒執行的錯誤,我感覺沒啥用,事實證明,確實沒啥用。。

四、在orb-slam2/examples/ros/orb-slam2/cmakelists中,加入下面的部分:

set(libs$$

$$/../../../thirdparty/dbow2/lib/libdbow2.so

$/../../../thirdparty/g2o/lib/libg2o.so

$/../../../lib/liborb_slam2.so

-lboost_system

)

也沒啥用。

五、在orb-slam2的src的orbextractor.cc中加入:

#include #include 12
沒啥用。

總結:沒找到合適的辦法,猜測可能有用的方法是:

1.把kinect自帶的opencv卸了。。感覺風險有點大,不想這麼做。

2.把自己安裝的opencv卸了,用kinect自帶的。但是感覺也夠嗆。

補充:試過了,也不行。而且解除安裝了後,./build.sh也編譯不過去了,,心累。

3.kinect跑自己的orb-slam2不適合。。還是14.04把。

在caffe上跑自己的資料

本文介紹如何使用 caffe 對自己的影象資料進行分類。1 資料庫準備 由於資料收集比較費時,為了簡單說明,我用了兩類,dog和 bird 每種約 300張。train200 張,val100張。新建乙個資料夾 mine 放自己的資料,在 mine 資料夾下新建 train 和val 資料夾,tra...

在caffe上跑自己的資料

本文介紹如何使用 caffe 對自己的影象資料進行分類。1 資料庫準備 由於資料收集比較費時,為了簡單說明,我用了兩類,dog和 bird 每種約 300張。train200 張,val100張。新建乙個資料夾 mine 放自己的資料,在 mine 資料夾下新建 train 和val 資料夾,tra...

在caffe上跑自己的資料

本文介紹如何使用 caffe 對自己的影象資料進行分類。1 資料庫準備 由於資料收集比較費時,為了簡單說明,我用了兩類,dog和 bird 每種約 300張。train200 張,val100張。新建乙個資料夾 mine 放自己的資料,在 mine 資料夾下新建 train 和val 資料夾,tra...