双系统ubuntu18+melodic+zed双目相机运行orbslam2

最近为实现ORB-SLAM2算法,在电脑上安装了双系统ubuntu18+zed相机的驱动,在此作好记录:
记录一下安装双系统中内存的分配,我的移动硬盘256G:

分区 内存的大小
swap(逻辑分区) 空间起始位置 交换空间 25G
boot(逻辑分区) 空间起始位置 ext4 25G
home(逻辑分区) 空间起始位置 ext4 剩余所有空间
/(主分区) 空间起始位置 ext4 100G

PS:

简要说下ubuntu上的nvidia驱动,cuda/cudnn、SDK三者的关系。
1、安装ZED相机的驱动也就是SDK必须要有其对应版本的cuda/cudnn(cudnn版本需要与cuda匹配),
2、cuda的安装需要安装与其对应版本的nvidia驱动。
3、nvidia驱动的安装需要看你的显卡信息

附上nvidia驱动和对应的cuda版本图:
双系统ubuntu18+melodic+zed双目相机运行orbslam2_第1张图片

安装流程
第一步:安装nvidia驱动
安装nvidia有三种办法,我使用的是最简单的方法,即在ubuntu的软件和更新 选项中 附加驱动 中选择对应的版本(选择(专用,texted)这个版本),然后点击应用更改。
安装完成后,重启ubuntu
终端输入下命令,查看驱动是否安装成功。(如果显示查询不到驱动,再次打开软件更新,查看附加驱动中所安装的驱动是否已经更改,若更改则多重启几次)

nvidia-smi

出现下图,则说明安装成功
双系统ubuntu18+melodic+zed双目相机运行orbslam2_第2张图片

第二部:安装cuda和cudnn
上图中右侧已经说明,适合的cuda最高版本为11.4,本人安装过11.4,1但由于各种不兼容原因导致安装失败。于是选择了cuda11.3和cudnn8.2.1,具体安装可查看此贴cuda11.3和cudnn8.2.1的安装

第三步:安装SDK
官方下载链接,因为我的cuda版本为11.3,因此选择下图中ubuntu18对应的版本:
双系统ubuntu18+melodic+zed双目相机运行orbslam2_第3张图片
下载好后将文件放到主目录中
然后打开终端,开始安装

chmod +x ZED_SDK_Ubuntu18_cuda11.5_v3.6.3.run
./ZED_SDK_Ubuntu18_cuda11.5_v3.6.3.run

如果安装过程中,提示报错:Python API 安装失败,看此贴。

第四步:安装ros-melodic

查看我的这个帖子。

第五步:安装ORBSLAM2

安装前准备:

1)安装Pangolin

git clone https://github.com/stevenlovegrove/Pangolin

2)安装OpenCV 推荐安装opencv3.4.5
opencv官网

3)安装Eigen

sudo apt-get install libeigen3-dev

安装orbslam2

mkdir -p catkin_ws/src
cd catkin_ws/src
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
cd ORB_SLAM2
chmod +x build.sh
./build.sh

**./build.sh中出现的问题 **可查看此贴

ROS环境下编译

chmod +x build_ros.sh
./build_ros.sh

第六步:安装zed_ros_wrapper

下载zed_ros_wrapper,存放到catkin_ws/src下

cd ~/catkin_ws/src
git clone https://github.com/stereolabs/zed-ros-wrapper.git
cd ../
catkin_make
source ./devel/setup.bash

catkin_make报错:

CMake Error at /opt/ros/melodic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
Could not find a package configuration file provided by "zed_interfaces"
with any of the following names:
 	zed_interfacesConfig.cmake
    zed_interfaces-config.cmake

解决办法,下载该文件至catkin_ws/src下
git clone https://github.com/stereolabs/zed-ros-interfaces

再重新编译:

cd ../
catkin_make
source ./devel/setup.bash

使用ORB-SLAM2+ZED

进入到

/home/username/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src

目录下,将ros_stereo.cc复制一份,重新命名zed_stereo_rect.cc并修改其内容:

注意!!!!!!!这里一定要注意话题名称,否则最终会导致运行ZED相机时黑屏。

查看话题之前需要启动zed.launch文件

cd ~/catkin_ws
source ./devel/setup.bash
roslaunch zed_wrapper zed.launch

可以通过以下命令查看话题:

rqt_image_view

如下图所示:
双系统ubuntu18+melodic+zed双目相机运行orbslam2_第4张图片
所以修改节点为:

message_filters::Subscriber<sensor_msgs::Image> left_sub(nh, "/zed/zed_node/left/image_rect_color", 1); 
message_filters::Subscriber<sensor_msgs::Image> right_sub(nh, "/zed/zed_node/right/image_rect_color",1);

然后修改cmakelist:

# Node for ZED camera
rosbuild_add_executable(zed_Stereo_rect
src/zed_stereo_rect.cc
)

target_link_libraries(zed_Stereo_rect
${LIBS}
)

然后在catkin_ws/src/ORB_SLAM2的下重新编译:

./build_ros.sh

利用zed相机实现orbslam2

//开一个终端
cd ~/catkin_ws
source ./devel/setup.bash
roscore

//另开一个终端
cd ~/catkin_ws
source ./devel/setup.bash //不执行这一步,就无法启动launch文件
roslaunch zed_wrapper zed.launch

//另开一个终端
cd ~/catkin_ws
source ./devel/setup.bash//必须source,否则rosrun也无法启动
cd /src/ORB_SLAM2
rosrun ORB_SLAM2 zed_Stereo_rect Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml false

碰到的几个问题在此记录下:

问题1:
lijing@lijing:~/catkin_ws$ roslaunch zed_wrapper zed.launch  
RLException: [zed.launch] is neither a launch file in package [zed_wrapper] nor is [zed_wrapper] a launch file name The traceback for the exception was written to the log file
解决办法:
  cd ~/catkin_ws
  source ./devel/setup.bash
  roslaunch zed_wrapper zed.launch
  
问题2:启动文件
rosrun ORB_SLAM2 Stereo Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml false 
提示错误:
       Failed to load module "canberra-gtk-module"
解决办法:
       sudo apt-get install libcanberra-gtk-module

你可能感兴趣的:(笔记,ubuntu,自动驾驶,linux,人工智能,视觉检测)