最近为实现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驱动
安装nvidia有三种办法,我使用的是最简单的方法,即在ubuntu的软件和更新 选项中 附加驱动 中选择对应的版本(选择(专用,texted)这个版本),然后点击应用更改。
安装完成后,重启ubuntu
终端输入下命令,查看驱动是否安装成功。(如果显示查询不到驱动,再次打开软件更新,查看附加驱动中所安装的驱动是否已经更改,若更改则多重启几次)
nvidia-smi
第二部:安装cuda和cudnn
上图中右侧已经说明,适合的cuda最高版本为11.4,本人安装过11.4,1但由于各种不兼容原因导致安装失败。于是选择了cuda11.3和cudnn8.2.1,具体安装可查看此贴cuda11.3和cudnn8.2.1的安装
第三步:安装SDK
官方下载链接,因为我的cuda版本为11.3,因此选择下图中ubuntu18对应的版本:
下载好后将文件放到主目录中
然后打开终端,开始安装
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
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.launch文件
cd ~/catkin_ws
source ./devel/setup.bash
roslaunch zed_wrapper zed.launch
可以通过以下命令查看话题:
rqt_image_view
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