Ubuntu 18.04 安装ROS Melodic与ORB-SLAM2 gaunthan Posted on Dec 20 2018 ? Linux Tutorial ? ? SLAM ? ? Robotics ? > ORB-SLAM2是视觉SLAM实现的佼佼者,许多研究都基于该框架进行。而在机器人工程领域中,ROS是研究者第一想到的操作平台。ROS对许多底层的操作和机器人领域常用的算法进行了封装。考虑到ROS的易用性和广泛性,ORB-SLAM2的作者提供了该框架的ROS封装。本文讲解如何在Ubuntu 18.04上安装ROS和ORB-SLAM2。 ## Installing ROS Melodic on Ubuntu 18.04 ROS的发行版是构建在Ubuntu之上的,因此选择Ubuntu作为操作系统能大大简化安装过程。ROS官方Wiki上已经维护了很详细的[安装教程](http://wiki.ros.org/Installation/Ubuntu),因此这里我们只将命令整合起来,方便读者直接复制到终端运行(运行前请到源配置中启用restricted,universe和multiverse软件源): ```bash # Setup your sources.list sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' # Set up your keys sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 # Update Debian package index sudo apt update # Desktop-Full Install sudo apt install ros-melodic-desktop-full -y # Initialize rosdep sudo rosdep init rosdep update # Environment setup echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc source ~/.bashrc # Dependencies for building packages sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential git -y ``` ## Install ORB-SLAM2 ### Install dependencies 安装ORB-SLAM2之前还需要先安装它依赖的第三方库或工具。 #### C++11 or C++0x Compiler C++11编译器已经在先前安装ROS时安装了,因此该步骤可跳过。 #### Pangolin 安装命令如下: ```sh # Install dependencies sudo apt-get install libglew-dev -y sudo apt-get install cmake -y # Build Pangolin from source and install it curr_dir=`pwd` cd /tmp git clone https://github.com/gaunthan/Pangolin cd Pangolin mkdir build cd build cmake .. make sudo make install cd "$curr_dir" ``` #### OpenCV ROS自带OpenCV,因此不需要再单独安装它。由于ROS支持Python,因此可以安装OpenCV的Python接口,这样就可以用Python调用Opencv: sudo apt install python-opencv python3-opencv -y #### Eigen3 安装命令如下: ```sh curr_dir=`pwd` cd /tmp wget http://bitbucket.org/eigen/eigen/get/3.3.4.tar.gz tar xzvf 3.3.4.tar.gz cd eigen-eigen-* mkdir build cd build cmake .. sudo make install cd "$curr_dir" ``` **Eigen目前最新版本已经到3.3.7,但是使用该版本在运行Examples时会遇到Segment fault(原因不明),因此建议安装3.3.4版本。** #### DBoW2 and g2o DBoW2和g2o的代码已经包含在ORB-SLAM2源码下的Thirdparty目录中。由于ORB-SLAM2对这两个库的原版代码进行了修改,因此请使用该目录下的代码进行库的构建。由于构建命令也包含在了ORB-SLAM2的构建脚本中,因此该步骤可跳过。 ### Build ORB-SLAM2 from source 首先从Github下载ORB-SLAM2的源码。由于[官方源码](https://github.com/raulmur/ORB_SLAM2)有些小Bug,因此可以使用[笔者修正的源码](https://github.com/gaunthan/ORB_SLAM2)。 运行下述命令即可自动完成ORB-SLAM2的安装: ```sh mkdir -p ~/workspace cd ~/workspace git clone https://github.com/gaunthan/ORB_SLAM2 cd ORB_SLAM2 chmod +x build.sh build_ros.sh ./build.sh echo 'export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:'"`pwd`/Examples/ROS" >> ~/.bashrc ./build_ros.sh ``` ## 运行ROS Stereo测试代码 ROS例程的功能很简单,创建SLAM系统与ROS环境,订阅左右相机话题,接受到图片就回调`TrackStereo()`,进行追踪。为了进行测试,我们可以下载用于ROS仿真的bag数据包:[V1_01_easy.bag](http://robotics.ethz.ch/~asl-datasets/ijrr_euroc_mav_dataset/vicon_room1/V1_01_easy/V1_01_easy.bag)。 ### 运行roscore ros结点的运行需要ros master的支持,因此先新开终端窗口,执行以下命令加载相应环境: roscore ### 运行ROS Stereo结点 下载好了bag文件后,我们可以使用rosrun命令对该数据包进行仿真,命令如下: rosbag play --pause ./V1_01_easy.bag /cam0/image_raw:=/camera/left/image_raw /cam1/image_raw:=/camera/right/image_raw 从上面的命令得知,只要我们的ROS例程订阅这两个话题,就能得到两张对应左右目相机的图像帧,从而进行双目追踪。 命令运行后,终端会输出以下信息,注意其中的"Paused"字眼。仿真一开始是暂停的,直到我们按下空格键:  ### 运行ORB-SLAM2 ROS例程 首先进入ORB-SLAM2根目录,然后运行以下命令即可 rosrun ORB_SLAM2 Stereo Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml true ROS例程运行后会进行等待状态,直到从话题收到图像数据。该命令会打开两个GUI窗口,一个窗口显示所构建的地图与相机的姿态,另一个窗口显示当前帧及检测的特征。 回到刚才运行bag仿真的终端窗口,按下空格键,可以看到"Pasued"变成了"Running",此时仿真数据开始发送。回到ROS例程打开的GUI窗口,就可以看到SLAM系统跑起来了。 赏 Wechat Pay Alipay Building Dense Map for visual SLAM 记一次MS Word意外自动限制编辑导致的问题