Ubuntu18.04+ZED+ROS Melodic+ORB_SLAM2

Ubuntu18.04+ZED+ROS Melodic+ORB_SLAM2

本文包括内容:

  • OpenCV 3* 的安装
  • 更新Nvidia显卡驱动
  • CUDA的安装
  • ZED SDK的安装
  • ROS Melodic的安装
  • ZED ROS Wrapper安装
  • ORB_SLAM2安装

OpenCV 3.4.4的安装

首先,安装OpenCV所要求的依赖包:

sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

然后在进行编译及安装:

cd ~/opencv
mkdir bulid
cd build
cmake ..
make -j7
sudo make install

Nvidia显卡驱动

  • 第一步:禁用自己的secure boot,进入bios,将secure boot设置为disable
  • 第二步:进入终端,输入
ubuntu-drivers devices
sudo ubuntu-drivers autoinstall
  • 第三步:重新启动,然后在应用中找到NVIDIA X Server Settings,出现如下界面,则安装成功。
    Ubuntu18.04+ZED+ROS Melodic+ORB_SLAM2
    在设置->详细信息里,可以看到显卡已经切换。
    Ubuntu18.04+ZED+ROS Melodic+ORB_SLAM2

CUDA的安装

sudo dpkg -i cuda-repo-<distro>_<version>_<architecture>.deb
sudo apt-get update
sudo apt-get install cuda

ZED SDK的安装与调试

参考官方文档:https://www.stereolabs.com/docs/getting-started/installation/

chmod +x ZED_SDK_Linux_*.run
./ZED_SDK_Linux_*.run
  • 第三步:重启,完成安装。

ROS Melodic的安装

参考官方文档: http://wiki.ros.org/melodic/Installation/Ubuntu

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
  • 第四步:设置**
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
  • 第五步:安装
sudo apt update
sudo apt install ros-melodic-desktop-full

此处采用桌面完整安装,其他配置参考官方文档。

  • 第六步:初始化rosdep
sudo rosdep init
rosdep update
  • 第七步:环境设置
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
  • 第八步:构建软件包的依赖关系(可选)
    安装rosinstall和其他依赖关系:
sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential

ZED ROS Wrapper安装

  • 第一步:下载并放置在ROS工作空间
cd ~/catkin_ws/src
git clone https://github.com/stereolabs/zed-ros-wrapper
  • 第二步:编译
cd ~/catkin_ws
catkin_make zed-ros-wrapper
source ./devel/setup.bash

ORB_SLAM2安装

cd ~/catkin_ws/src
git clone https://github.com/raulmur/ORB_SLAM2 ORB_SLAM2
  • 第二步:配置环境变量
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/username/catkin_ws/src/ORB_SLAM2/Examples/ROS

添加路径后通过该命令查看是否添加成功:

echo $ROS_PACKAGE_PATH
  • 第三步:安装相关依赖项
    1)安装Boost
    2)安装g2o
    3)安装Eigen3
    4)安装Pangolin

  • 第四步:编译

cd ~/catkin_ws/src/ORB_SLAM2
chmod +x bulid.sh
./build.sh
chmod +x build_ros.sh
./build_ros.sh

使用ROB_SLAM2+ZED

仿照/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src目录下的ros_stereo.cc建立一个新文件,如zed_stereo_rect.cc。将代码复制过去,修改以下部分:

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

此处选取了ZED的两个数据流。
然后修改CmakeLists.txt,仿照加入:

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

target_link_libraries(zed_Stereo_rect
${LIBS}
)

然后在ORB_SLAM2的根目录下重新编译:

./build_ros.sh

会新生成一个可执行文件 zed_Stereo_rect
然后

cd ~/catkin_ws
source ./devel/setup.bash

roscore
//另开一个命令行
cd ~/catkin_ws
source ./devel/setup.bash //不知道为什么不执行这一步就无法找到zed.launch
roslaunch zed_wrapper zed.launch
//另开一个命令行
cd ~/catkin_ws/src/ORB_SLAM2
rosrun ORB_SLAM2 zed_Stereo_rect Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml false