ZED 相机 ORB-SLAM2安装环境配置与ROS下的调试
? ? ? 注:1. 對(duì)某些地方進(jìn)行了更新(紅色標(biāo)注),以方便進(jìn)行配置。
????????? 2. ZED ROS Wrapper官方github已經(jīng)更新,根據(jù)描述新的Wrapper可能已經(jīng)不適用與Ros Indigo了,如果大家想?yún)⒄者@份博客進(jìn)行安裝ZED ROS Wrapper,有可能會(huì)出現(xiàn)其他問(wèn)題。ZED ROS Wrapper github地址:https://github.com/stereolabs/zed-ros-wrapper
????? 最近想運(yùn)用ZED相機(jī)在ROS系統(tǒng)上實(shí)時(shí)運(yùn)行ORB-SLAM2,在環(huán)境配置的過(guò)程當(dāng)中遇到了不少問(wèn)題并且在網(wǎng)上都沒(méi)有比較系統(tǒng)的解決方法,因此將自己總結(jié)的步驟記錄下來(lái),希望對(duì)大家有幫助。
????? 本文將包括以下內(nèi)容:
- OpenCV 2.4.10 與 3.1.0的安裝
- ORB-SLAM2的安裝與調(diào)試(ROS與非ROS)
- ROS Indigo的安裝
- CUDA7.5的安裝
- ZED SDK與ZED ROS Wrapper的安裝與調(diào)試
- OpenCV多版本管理
- ROS Topic名稱的更改
- ZED ROS Wrapper輸出圖像參數(shù)的更改
? ? ? 一、 配置環(huán)境與閱讀說(shuō)明
? ? ?Ubuntu14.04,ROS Indigo,Nvidia GTX 970。
???? 在此需要說(shuō)明一下,如果想在Ubuntu 14上進(jìn)行相關(guān)配置請(qǐng)不要使用Nvidia GTX 1000系列顯卡,因?yàn)?000系列顯卡及其驅(qū)動(dòng)會(huì)與某一些庫(kù)文件沖突。
???? 同時(shí)希望讀者按照我所列的安裝順序進(jìn)行安裝,因?yàn)檎{(diào)換安裝順序可能會(huì)導(dǎo)致某些依賴項(xiàng)或文件產(chǎn)生沖突。該順序是我多次失敗后總結(jié)出來(lái)的,親測(cè)有用。
? ? ? 二、 配置與安裝步驟
????? 2.1. OpenCV 3.1 安裝
???? 為正常運(yùn)行ZED SDK需要預(yù)先安裝OpenCV 3.1,可從opencv.org/downloads.html上下載,具體步驟如下所示:
???? 首先,安裝OpenCV所要求的包:
[compiler] sudo apt-get install build-essential [required] sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev [optional] sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev???? 然后在Opencv 3.1的下載路徑中生成build文件夾以便cmake,最后運(yùn)用cmake編譯,具體如下:
cd ~/opencv mkdir build cd build cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..???? 之后直接make,OpenCV官網(wǎng)中建議make時(shí)開(kāi)啟7個(gè)線程:
make -j7 # runs 7 jobs in parallel???? 在以上工作完成后執(zhí)行一下命令完成安裝:
sudo make install???? 這樣Opencv 3.1就會(huì)成功的安裝到你的電腦當(dāng)中。
???? 由于版本問(wèn)題,在cmake OpenCV 3.1時(shí)可能會(huì)遇到ippcv_linux下載不正確的問(wèn)題,解決方法是在網(wǎng)上自行重新下載ippicv_linux包,并將其重新放入 opencv/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e 目錄中并重新編譯。
???? 關(guān)于OpenCV 3.1的更多詳細(xì)內(nèi)容請(qǐng)參考官網(wǎng):http://docs.opencv.org/3.1.0/d7/d9f/tutorial_linux_install.html
???? 2.2. OpenCV 2.4.10 安裝
? ?? 雖然ORB-SLAM2現(xiàn)在已經(jīng)支持OpenCV3.1但是由于與Ubuntu 14.04適配的ROS Indigo自帶Opencv2.4.8因此如果不安裝Opencv 2.4會(huì)導(dǎo)致之后在編譯ORB-SLAM2 ROS時(shí)出現(xiàn)Opencv版本錯(cuò)誤。該錯(cuò)誤主要是因?yàn)镽OS Indigo中的cv_bridge指向OpenCV2.4.8但是在不安裝OpenCV2.4時(shí)候ORB-SLAM2是使用OpenCV3.1進(jìn)行編譯(這里理論上是可以通過(guò)重新安裝ROS cv_bridge或相關(guān)包解決的,不過(guò)我ROS不是太熟,因此采用了另外一種方法)。
???? OpenCV 2.4.10的下載和安裝大家可以參考一下高翔博士的博客一起做系列中的相關(guān)內(nèi)容:http://www.cnblogs.com/gaoxiang12/p/4633316.html
???? 2.3. ORB-SLAM2的安裝
???? 現(xiàn)在就可以開(kāi)始安裝ORB-SLAM2了,參考官方網(wǎng)址為:https://github.com/raulmur/ORB_SLAM2
???? 根據(jù)要求我們先下載Eiegn 3:
sudo apt-get install libeigen3-dev???? 然后安裝可視化工具Pangolin:
???? 安裝依賴項(xiàng)
sudo apt-get install cmake libglew-dev libpython2.7-dev???? 直接進(jìn)入到Pangolin的下載目錄,然后執(zhí)行以下命令:????
mkdir build cd build cmake .. make -j???? 如果以上步驟有出現(xiàn)任何錯(cuò)誤,請(qǐng)根據(jù)官方文檔確認(rèn)所有依賴項(xiàng)以正確安裝:https://github.com/stevenlovegrove/Pangolin
???? ORB-SLAM2編譯與配置:
???? 進(jìn)入到ORB-SLAM2目錄執(zhí)行:
chmod +x build.sh ./build.sh???? 在此過(guò)程中,程序會(huì)自動(dòng)安裝G2O庫(kù)。一般來(lái)說(shuō)這一步不會(huì)出現(xiàn)任何問(wèn)題。
????? 安裝完成后可以下載開(kāi)源數(shù)據(jù)集檢測(cè)ORB-SLAM2是否能正確運(yùn)行,下面給出雙目EUROC數(shù)據(jù)集的運(yùn)行命令以作參考:
for terminal./Examples/Stereo/stereo_euroc Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml /home/li/openslam/database/Stereo_data/EUROC/V1_01_easy/mav0/cam0/data /home/li/openslam/database/Stereo_data/EUROC/V1_01_easy/mav0/cam1/data Examples/Stereo/EuRoC_TimeStamps/V101.txtfor IDE - Kdevelop"/home/li/openslam/ORB_SLAM2/Vocabulary/ORBvoc.txt" "Examples/Stereo/EuRoC.yaml" "/home/li/openslam/database/Stereo_data/EUROC/V1_01_easy/mav0/cam0/data" "/home/li/openslam/database/Stereo_data/EUROC/V1_01_easy/mav0/cam1/data" "Examples/Stereo/EuRoC_TimeStamps/V101.txt"? ? ? 2.4. ROS Indigo安裝
? ? ? Ubuntu 14.04適配的ROS版本為Indigo和jade,因?yàn)槲以谂渲肙RB-SLAM2 ROS Jade中出現(xiàn)了錯(cuò)誤,所以推薦大家使用ROS Indigo,并且ROS Indigo也是Ubuntu 14.04的主流版本。
? ? ? ROS Indigo安裝主要參考ros wiki: http://wiki.ros.org/cn/indigo/Installation/Ubuntu?
????? 按照ros wiki中的步驟就可以沒(méi)有任何錯(cuò)誤的安裝好ROS Indigo
????? 在根據(jù)WiKi安裝完整版時(shí)可能會(huì)出現(xiàn)與更新有關(guān)的報(bào)錯(cuò),只需要在控制臺(tái)中輸入(sudo) apt-get update命令重新更新并重新執(zhí)行安裝命令即可安裝成功。
????? 安裝好ROS Indigo后,各位可以使用以下命令,查看打開(kāi)文件最后是否出現(xiàn) source /opt/ros/indigo/setup.bash。如若出現(xiàn)且在控制臺(tái)中可以運(yùn)行roscore則說(shuō)明ROS安裝正確。
gedit ~/.bashrc????? 請(qǐng)注意,以后所配置的ROS空間都可以加入到.bashrc文件中,以免每次都需要申明ROS環(huán)境空間。下面的命令可以查詢當(dāng)前啟用的ROS環(huán)境空間:
echo $ROS_PACKAGE_PATH????? 2.5. ORB-SLAM2 & ROS安裝
????? 現(xiàn)在就可以安裝ORB-SLAM2 ROS了,安裝步驟十分簡(jiǎn)單。
????? 首先用之前所述命令打開(kāi).bashrc文件,并加入ORB-SLAM2的ros包路徑,以配置環(huán)境,示例如下:
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/li/openslam/ORB_SLAM2/Examples/ROS????? 添加路徑后請(qǐng)通過(guò)該命令查看是否添加成功:
echo $ROS_PACKAGE_PATH? ? ? 在添加完路徑后,即使以上命令輸出路徑中包含ORB-SLAM2的ROS包,但是在編譯的時(shí)候仍然無(wú)法識(shí)別出來(lái)(出現(xiàn)報(bào)錯(cuò)rospackage路徑不正確)。此時(shí)就需要重啟電腦,然后重新按照以下命令對(duì)ORB-SLAM2 ROS進(jìn)行編譯。
????? 確認(rèn)添加成功后進(jìn)入ORB-SLAM2目錄執(zhí)行:
chmod +x build_ros.sh ./build_ros.sh???? 完成ORB-SLAM2 ROS的編譯與配置工作。在此過(guò)程中,某些時(shí)候可能會(huì)出現(xiàn)Eigen中Eigen Core文件無(wú)法找到的情況,這是因?yàn)橄嚓P(guān)文件的軟鏈接出現(xiàn)了問(wèn)題,使用以下命令修復(fù)一下就可以了(此問(wèn)題也有可能在編譯ZED ROS Wrapper時(shí)出現(xiàn)):
pkg-config --cflags eigen3 #檢測(cè)Eigen目錄路徑 sudo ln -s /usr/include/eigen3/Eigen /usr/local/include/Eigen #請(qǐng)根據(jù)檢測(cè)后的路徑進(jìn)行更改????? 2.6. CUDA7.5安裝
????? 現(xiàn)在終于可以開(kāi)始安裝CUDA了。
????? 需要說(shuō)明一下,為什么選擇這個(gè)順序在這個(gè)時(shí)候安裝CUDA。這是因?yàn)槲以谂渲玫倪^(guò)程中發(fā)現(xiàn)如果先安裝CUDA再去安裝OpenCV 2.4.10會(huì)遇到'Compute 11'的錯(cuò)誤,該錯(cuò)誤需要更改依據(jù)Opencv 3.1的cmake格式更改cmake命令,比較麻煩。
????? 除此以外,我還發(fā)現(xiàn)有時(shí)候安裝完CUDA以及CUDA自帶的driver后,lib文件中的一些共享庫(kù)的鏈接會(huì)斷開(kāi),從而在安裝別的一些依賴項(xiàng)時(shí)報(bào)錯(cuò),所以在多次安裝出錯(cuò)后,我總結(jié)出來(lái)以上的安裝順序,使得所有的依賴項(xiàng)和環(huán)境都能夠正確的安裝和配置。
????? 根據(jù)ZED SDK要求,Ubuntu 14最好使用CUDA7.5,因此從Nvidia官網(wǎng)上下載安裝文件以及安裝指南,然后執(zhí)行以下步驟:
? ? ? 首先,做相關(guān)的安裝前電腦配置檢查,該部分具體內(nèi)容請(qǐng)?jiān)敿?xì)參照CUDA 7.5安裝指南第二章。 ???
? ? ? 然后,安裝CUDA runfile文件。由于CUDA需要Nvidia驅(qū)動(dòng)程序,且該程序不能與Ubuntu開(kāi)源的 Nouveau共存,因此首先要關(guān)閉掉Nouveau。
lsmod | grep nouveau #檢測(cè)Nouveau是否開(kāi)啟,有輸出則開(kāi)啟,無(wú)輸出則為開(kāi)啟#若Nouveau開(kāi)啟,執(zhí)行以下命令
sudo gedit /etc/modprobe.d/blacklist-nouveau.conf #創(chuàng)建blacklist文件
# 在創(chuàng)建的文件中輸入以下內(nèi)容關(guān)閉掉Nouveau
blacklist nouveau
options nouveau modeset=0
# 更新list,使得更改生效
sudo update-initramfs -u
????? 通常在完成以上步驟后,更改并未立即生效,需要登出用戶或重啟電腦才可生效。
????? 當(dāng)你重新進(jìn)入電腦界面后發(fā)現(xiàn)分辨率降低,則代表blacklist多半設(shè)置成功,Nouveau已經(jīng)被關(guān)閉,不過(guò)為了確保萬(wàn)無(wú)一失,請(qǐng)?jiān)谳斎朐撁畲_認(rèn)狀態(tài)
lsmod | grep nouveau #檢測(cè)Nouveau是否開(kāi)啟,有輸出則開(kāi)啟,無(wú)輸出則為開(kāi)啟????? 確認(rèn)無(wú)輸出后,按ctrl+alt+f1進(jìn)入文本界面,輸入你的ID和密碼(在文本模式中請(qǐng)不要使用小鍵盤)。
????? 然后請(qǐng)輸入以下命令:
sudo service lightdm stop????? 輸入后可俺ctrl+alt+f7看能否進(jìn)入圖形界面,若不能則設(shè)置成功。然后重新進(jìn)入文字界面,輸入以下命令安裝CUDA7.5與相關(guān)組件:
sudo sh cuda_7.5.18_linux.run????? 在安裝過(guò)程中,可以選則是否安裝顯卡驅(qū)動(dòng),CUDA toolkit以及OpenGL庫(kù)等,這個(gè)可以自行選擇。需要注意OpenGL選擇請(qǐng)參照安裝指南所屬。
????? 安裝完成后,查看顯示信息,如果顯示installed則安裝成功。輸入
sudo service lightdm start????? 回到圖形界面,輸入賬戶密碼,如果沒(méi)有出現(xiàn)循環(huán)登陸界面則說(shuō)明CUDA7.5基本安裝成功。
????? 最后一步,配置CUDA的環(huán)境,輸入:
export PATH=/usr/local/cuda-7.5/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64?????? 然后輸入
cat /proc/driver/nvidia/version #檢查顯卡驅(qū)動(dòng)版本 nvcc -V #檢查CUDA版本? ? ? 若輸出無(wú)誤則代表CUDA安裝成功。由于CUDA環(huán)境配置需要在每次開(kāi)機(jī)后都進(jìn)行設(shè)置,因此為了簡(jiǎn)便建議執(zhí)行以下操作:
sudo gedit /etc/profile export PATH=/usr/local/cuda-7.5/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64????? 更多內(nèi)容各位可參考CUDA安裝指南和博客:http://blog.csdn.net/masa_fish/article/details/51882183
? ? ??2.7. ZED SDK安裝
????? 根據(jù)自身軟件環(huán)境我選擇的是 'ZED_SDK_Linux_Ubuntu14_CUDA75_v1.1.0.run' 進(jìn)行安裝。
????? 命令如下:
chmod +x your_installation_file_name ./your_installation_file_name????? 然后就會(huì)進(jìn)入SDK安裝了,安裝時(shí)最開(kāi)始需要用戶按Q鍵確認(rèn)license等信息才能安裝。安裝好后ZED存放于路徑/usr/local/zed/中,相關(guān)操作文件在/tool/中,在運(yùn)行ZED SDK前請(qǐng)下載相機(jī)對(duì)應(yīng)的 calibration file放入/setting/文件中。
?? ?? 2.8. ZED ROS Wrapper安裝
??? ? 安裝好 SDK后就可以安裝ZED和ROS配套的包了。
????? 進(jìn)入ZED ROS Wrapper的下載目錄地址輸入完成安裝:
cd ~/catkin_ws catkin_make source ./devel/setup.bash????? 在此過(guò)程中,某些時(shí)候可能會(huì)出現(xiàn)Eigen中Eigen Core文件無(wú)法找到的情況,這是因?yàn)橄嚓P(guān)文件的軟鏈接出現(xiàn)了問(wèn)題,使用以下命令修復(fù)一下就可以了:
pkg-config --cflags eigen3 #檢測(cè)Eigen目錄路徑 sudo ln -s /usr/include/eigen3/Eigen /usr/local/include/Eigen #請(qǐng)根據(jù)檢測(cè)后的路徑進(jìn)行更改????? 也可能出現(xiàn)報(bào)錯(cuò)" On Ubuntu 14, change line 30 of CMakeLists.txt to CUDA 7.5",根據(jù)錯(cuò)誤提示我們只需要在ZED ROS Wrapper CMakeLists.txt文件的CUDA版本改為7.5就可以了,該文件的路徑為:zed_ros/catkin_ws/src/zed-ros-wrapper。
else() # Ubuntu DesktopSET(OCV_VERSION "3.1.0")SET(CUDA_VERSION "7.5") #更改版本號(hào)為7.5message("*** On Ubuntu 14, change line 30 of CMakeLists.txt to CUDA 7.5")????? 此過(guò)程中還會(huì)出現(xiàn)OpenCV報(bào)錯(cuò),這是因?yàn)閆ED ROS Wrapper所需求的OpenCV版本為3.1,但是之前為了使ORB-SLAM2適配ROS Indigo我們將電腦的默認(rèn)OpenCV版本設(shè)置為了2.4.10。可以通過(guò)以下命令查看電腦當(dāng)前的OpenCV版本號(hào)。
pkg-config --modversion opencv?????? 現(xiàn)在我們電腦中默認(rèn)的OpenCV版本為2.4.10但是其中也安裝了3.1.0版本的,所以我們可以通過(guò)OpenCV多版本管理,使得在編譯ZED ROS Wrapper時(shí)使用OpenCV3.1.0。
????? 2.9. OpenCV多版本管理
????? OpenCV的多版本管理可以在CMake或Makefile下進(jìn)行。由于我們是應(yīng)用的ORB-SLAM2因此采用CMake下指定OpenCV版本的方式。
????? 首先我們進(jìn)入OpenCV3.1.0的安裝目錄,在/build目錄中找到OpenCVConfig.cmake文件。該文件通常會(huì)指定CMake尋找OpenCV的路徑,如:
# ====================================================== # Include directories to add to the user project: # ======================================================# Provide the include directories to the caller set(OpenCV_INCLUDE_DIRS "/home/li/software/opencv-3.1.0/build" "/home/li/software/opencv-3.1.0/include" "/home/li/software/opencv-3.1.0/include/opencv")# ====================================================== # Link directories to add to the user project: # ======================================================????? 要想使自己的工程調(diào)用該版本的OpenCV,只需要確保在被調(diào)用工程的CMakeLists.txt文件中將OpenCV_DIR指定為上述路徑即可。在ZED ROS Wrapper中,我們?cè)贑MakeLists.txt中加入如下語(yǔ)句:
# OpenCV多版本管理 set(OpenCV_DIR "/home/li/software/opencv-3.1.0/build") # 指定路徑 message (STATUS "This is opencv_dir" ${OpenCV_DIR}) # 打印確認(rèn)路徑是否正確????? 完成更改后保存,重新執(zhí)行2.9中的步驟就可以成功完成ZED ROS Wrapper的安裝了。ZED ROS Wrapper更改后完整代碼如下:
cmake_minimum_required(VERSION 2.8.7)project(zed_wrapper)# if CMAKE_BUILD_TYPE is not specified, take 'Release' as default IF(NOT CMAKE_BUILD_TYPE)SET(CMAKE_BUILD_TYPE Release) ENDIF(NOT CMAKE_BUILD_TYPE)find_package(ZED 1.1 REQUIRED)#If you have compilation issues, edit OCV_VERSION and CUDA_VERSION according to the following values : #ZED SDK 1.1.1 : (https://www.stereolabs.com/developers/#download_anchor) # TX1 Jetpack 2.3 : OpenCV 2.4, CUDA 8.0 # TX1 Jetpack < 2.3 : OpenCV 2.4, CUDA 7.0 # TK1 : OpenCV 2.4, CUDA 6.5 # Ubuntu 14 : OpenCV 3.1, CUDA 7.5 # Ubuntu 16 : OpenCV 3.1, CUDA 8.0##For Jetson, OpenCV4Tegra is based on OpenCV2.4 exec_program(uname ARGS -p OUTPUT_VARIABLE CMAKE_SYSTEM_NAME2) if ( CMAKE_SYSTEM_NAME2 MATCHES "aarch64" ) # Jetson TX1SET(OCV_VERSION "2.4")SET(CUDA_VERSION "8.0")SET(CUDA_USE_STATIC_CUDA_RUNTIME OFF) elseif(CMAKE_SYSTEM_NAME2 MATCHES "armv7l" ) # Jetson TK1SET(OCV_VERSION "2.4")SET(CUDA_VERSION "6.5")SET(CUDA_USE_STATIC_CUDA_RUNTIME OFF) else() # Ubuntu DesktopSET(OCV_VERSION "3.1.0")SET(CUDA_VERSION "7.5")message("*** On Ubuntu 14, change line 30 of CMakeLists.txt to CUDA 7.5") endif() # OpenCV多版本管理 set(OpenCV_DIR "/home/li/software/opencv-3.1.0/build") message (STATUS "This is opencv_dir" ${OpenCV_DIR}) find_package(OpenCV ${OCV_VERSION} COMPONENTS core highgui imgproc REQUIRED) find_package(CUDA ${CUDA_VERSION} REQUIRED)find_package(PCL REQUIRED)find_package(catkin REQUIRED COMPONENTSimage_transportroscpprosconsolesensor_msgsdynamic_reconfiguretf2_rospcl_conversionsnodelet )generate_dynamic_reconfigure_options(cfg/Zed.cfg )catkin_package(CATKIN_DEPENDSroscpprosconsolesensor_msgsopencvimage_transportdynamic_reconfiguretf2_rospcl_conversions )############################################################################### # INCLUDES# Specify locations of header files. include_directories(${catkin_INCLUDE_DIRS}${CUDA_INCLUDE_DIRS}${ZED_INCLUDE_DIRS}${OpenCV_INCLUDE_DIRS}${PCL_INCLUDE_DIRS} )link_directories(${ZED_LIBRARY_DIR}) link_directories(${CUDA_LIBRARY_DIRS}) link_directories(${OpenCV_LIBRARY_DIRS}) link_directories(${PCL_LIBRARY_DIRS})############################################################################################################################################################## # EXECUTABLEadd_definitions(-std=c++11)# -m64) #-Wall)set(LINK_LIBRARIES${catkin_LIBRARIES}${ZED_LIBRARIES}${CUDA_LIBRARIES} ${CUDA_nppi_LIBRARY} ${CUDA_npps_LIBRARY}${OpenCV_LIBS}${PCL_LIBRARIES})add_library(ZEDWrapper src/zed_wrapper_nodelet.cpp) target_link_libraries(ZEDWrapper ${LINK_LIBRARIES}) add_dependencies(ZEDWrapper ${PROJECT_NAME}_gencfg)add_executable(zed_wrapper_node src/zed_wrapper_node.cpp) target_link_libraries(zed_wrapper_node ZEDWrapper ${LINK_LIBRARIES}) add_dependencies(zed_wrapper_node ${PROJECT_NAME}_gencfg)################################################################################Add all files in subdirectories of the project in # a dummy_target so qtcreator have access to all files FILE(GLOB_RECURSE extra_files ${CMAKE_SOURCE_DIR}/*) add_custom_target(dummy_${PROJECT_NAME} SOURCES ${extra_files})############################################################################### # INSTALLinstall(TARGETSZEDWrapperzed_wrapper_nodeARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}) install(FILESnodelet_plugins.xmlDESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}) install(DIRECTORYlaunchDESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION})????? 2.10. ROS Topic更改
????? 在完成以步驟后我們?nèi)孕枰腞OS或ZED ROS Wrapper中topic的名稱才能使得ORB-SLAM2 ROS與ZED相機(jī)相配合。
????? 根據(jù)ZED ROS Wrapper官網(wǎng)(http://www.stereolabs.com/blog/index.php/2015/09/07/use-your-zed-camera-with-ros/)中的信息,我們可以查詢到ZED ROS Wrapper所發(fā)布的topic名稱。我們可以選擇更改ZED的相關(guān)文件使得其匹配ORB-SLAM2 ROS的topic名字,也可以反過(guò)來(lái)更改更改ORB-SLAM2的topic名字。我選擇的是更改ORB-SLAM2 ROS所接收的Topic名稱。
????? ORB-SLAM2 ROS相關(guān)的Topic名稱在路徑ORB_SLAM2/Examples/ROS/ORB_SLAM2/src/中的相關(guān)文件中(式例如截圖所示,ros_stereo_rect.cc為我自己創(chuàng)建的)。? ? ??
????? 選擇你所想要更改的文件,并將其內(nèi)容更改為如下所示:
message_filters::Subscriber<sensor_msgs::Image> left_sub(nh, "/zed/left/image_raw_color", 1); message_filters::Subscriber<sensor_msgs::Image> right_sub(nh, "/zed/right/image_raw_color", 1);????? 保存,并重新2.6中ROS部分重新編譯。然后分別運(yùn)行ZED ROS Wrapper和ORB-SLAM2 ROS即可實(shí)現(xiàn)ORB-SLAM2實(shí)時(shí)使用ZED相機(jī)的輸入圖像進(jìn)行運(yùn)算的功能了。
????? 2.11. ZED ROS Wrapper輸出的圖像相關(guān)內(nèi)容的更改
????? ZED ROS Wrapper中輸出的圖像的像素,fps等參數(shù)都是我們可以自行更改的。只需要更改zed-ros-wrapper/launch/zed_camera.launch文件中的參數(shù)即可。該文件中各參數(shù)定義如下:
????? 這樣我們就能選擇與我們自己編寫的ORB-SLAM2 setting file相匹配的輸入圖像了。
????? 至此,ORB-SLAM2與ZED相關(guān)的配置與調(diào)試工作就基本全部完成,我們可以在ROS下進(jìn)行實(shí)時(shí)的調(diào)試與測(cè)試,也可以在非ORB情況下通過(guò)ZED相機(jī)構(gòu)建自己的數(shù)據(jù)集檢測(cè)ORB-SLAM2在不同情況下的運(yùn)行效果。
???? 如果博客中內(nèi)容有任何錯(cuò)誤還望大家告知,祝各位配置順利。
轉(zhuǎn)載于:https://www.cnblogs.com/leexiaoming/p/6576274.html
總結(jié)
以上是生活随笔為你收集整理的ZED 相机 ORB-SLAM2安装环境配置与ROS下的调试的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: angularjs文档下载
- 下一篇: 电子测量第三次作业 bgd1502