Ubuntu 18.04 + DSO-slam配置、运行数据集、摄像头实时运行

一、写在前面

前段时间老师布置了课程任务,让全班同学分组配置和运行slam,我们组选择的是DSO-slam。由于选择的时候并没有对slam并没有什么了解,只有老师上课时一些科普性质的讲解,所以相当于是从0开始。

这一周一直用空闲时间配置环境、运行,和同学一起踩了各种各样的坑。这里把我自己成功运行的配置过程、遇到的一些问题记录下来。里面有我和同学在网上查阅的很多东西,包括配置方法、源码等等。非常感谢提供了这么多资料的前辈们,如果有侵权内容,请联系我删除;如果我这里有什么不当之处,也希望大家指出。

二、系统配置

使用虚拟机安装的Ubuntu 18.04系统,主机为win10。

三、安装DSO并运行数据集

1.克隆源码包:
git clone https://github.com/JakobEngel/dso.git
2.安装所需依赖:
(1)suitesparse和eigen3
sudo apt-get install libsuitesparse-dev libeigen3-dev libboost-all-dev
(2)openCV
sudo apt-get install libopencv-dev
(3)Pangolin
cd ~
git clone --recursive https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin 
mkdir build
cd build
cmake -DCPP11_NO_BOOST=1 ..
build git:(master)   make -j
(4)ziplib
sudo apt-get install zlib1g-dev
cd dso/thirdparty
tar -zxvf libzip-1.1.1.tar.gz
cd libzip-1.1.1/
./configure
make
sudo make install
sudo cp lib/zipconf.h /usr/local/include/zipconf.h   # (no idea why that is needed).
3.编译
cd dso
mkdir build
cd build
cmake ..
make -j4
4.运行数据集

首先下载可用的数据集并解压:https://vision.in.tum.de/data/datasets/mono-dataset?redirect=1

进入build目录,执行

bin/dso_dataset files=XXXXX/sequence_XX/images.zip calib=XXXXX/sequence_XX/camera.txt gamma=XXXXX/sequence_XX/pcalib.txt vignette=XXXXX/sequence_XX/vignette.png preset=0 mode=1

XXXXX是存放数据集的目录,XX是下载数据集的编号。

如果要运行自己的数据集,需要将录制的视频提取为图片,并命名为六位数字(如000001.jpg),然后执行

bin/dso_dataset files=XXXXX/images.zip calib=XXXXX/camera.txt mode=1

其中,images.zip为存放图片的压缩包,camera.txt为相机标定文件。

5.可能遇到的问题:

我在这里主要遇到了以下两个问题:

(1)编译时执行camke,提示找不到Pangolin

在已经安装Pangolin的情况下,依然提示找不到Pangolin,在执行cmake前将build文件夹下的cmakecache删除即可。
在这里插入图片描述

(2)编译时执行make,提示‘decay_t’不是std库的成员等

请添加图片描述
可能是由于新版本的Pangolin有问题,于是在网上找到了旧版本的Pangolin:

旧版本Pangolin下载地址:https://github.com/zzx2GH/Pangolin

在以上的地址中将代码打包下载,其他步骤不变。(注意,不要直接在终端执行以上网站中的git clone https://github.com/stevenlovegrove/Pangolin.git,这个依然是新版本)

四、安装DSO-ROS,使用电脑摄像头实时运行

1.dso_ros安装编译
cd ~
mkdir catkin_ws
cd catkin_ws
mkdir src
cd src
src git clone https://github.com/BlueWhaleRobot/dso_ros.git 
cd ..
export DSO_PATH=xxx/dso  (存放dso的路径)
catkin_make
2.usb_cam安装编译
cd ~/catkin_ws/src
src git clone https://github.com/bosch-ros-pkg/usb_cam.git 
cd ..
catkin_make
source ~/catkin_ws/devel/setup.bash
3.运行摄像头

首先将电脑的摄像头连接到虚拟机:如下图所示:
请添加图片描述
运行ros,在第一个终端中运行:

roscore

运行camera,在第二个终端中运行:

roslaunch usb_cam usb_cam-test.launch

请添加图片描述
运行dso_ros,在第三个终端中运行:

rosrun dso_ros dso_live image:=/usb_cam/image_raw calib=相机参数文件所在路径/camera.txt mode=1

camera.txt文件是相机标定文件,相机标定的具体方法可以见这篇文章https://blog.csdn.net/learning_tortosie/article/details/79901255。这里我没有对笔记本摄像头进行标定,使用了网上下载代码时附带的一份标定文件,能看到运行时图片有比较明显的畸变。
请添加图片描述

4.遇到的问题
(1)安装库时提示无法解决依赖问题

使用aptitude代替apt-get安装,aptitude可以更好地解决库的依赖问题:

sudo aptitude install prime-indicator

但是在我安装时,对于boost库的依赖依然无法解决。查看报错信息发现,是由于期待的boost版本是1.54,而我的库版本是1.65,即版本过高。需要手动卸载原来的boost,并下载安装1.54版本。

(2)catkin_make时找不到util/setting.h

在安装usb_cam中,需要执行一次cmake,这里有可能提示在dso_ros的源文件中,找不到util/setting.h的位置。为什么第一次执行catkin_make没有问题,现在就有问题了呢?我于是新建工作区,下载编译dso_ros后,替换原来的文件,问题解决。也就是说,需要将dso_ros和usb_cam分别编译。

五、使用Android手机摄像头实时运行

在局域网下,使用手机摄像头和Ubuntu系统连接,对手机拍摄到的场景实时重建。

关于手机摄像头和电脑的局域网连接,参考了这篇文章:https://www.cnblogs.com/haijian/p/12044662.html (作者:HaijianYang)

1.安装APP

首先需要在手机上安装RTSPserver,可以进入下面的网址下载,下载解压后,在bin文件夹下找到apk文件,在手机上安装即可。

RTSPserver下载地址: https://github.com/XellossSei/RTSP.Server.Android

2.安装rocon_devices_kinetic

APP完成安装后,需要在Ubuntu系统进行配置。在网上找到了一份免费的源码,下载地址贴在这里了:

rocon_devices_kinetic源码下载链接:https://pan.baidu.com/s/1opt_01-is3ZYuesThnEbFA
提取码:f4g2

在catkin_ws/src文件夹下解压后,进行编译和安装:

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

接着就可以与手机进行连接了:

首先将手机和计算机至于同一局域网,打开APP,点击左侧最下方的按键开启连接,可以看到手机的IP地址,这里是192.168.137.179。
请添加图片描述
然后在终端输入如下的语句:(用手机的IP替换xxx)

export ROCON_RTSP_CAMERA_RELAY_URL=rtsp://×××:5540/ch0
roslaunch rocon_rtsp_camera_relay rtsp_camera_relay.launch

至此,相机已经连通并运行了。在另一个终端输入如下的语句,就可以在自己的电脑上查看手机相机拍摄到的场景了:

rosrun image_view image_view image:=/rtsp_camera_relay/image

请添加图片描述

3.使用手机摄像头实时运行DSO

使用手机摄像头运行DSO的方法和使用电脑摄像头类似。

运行ros,在第一个终端中运行:

roscore

运行camera,在第二个终端中运行:

export ROCON_RTSP_CAMERA_RELAY_URL=rtsp://×××:5540/ch0
roslaunch rocon_rtsp_camera_relay rtsp_camera_relay.launch

在第三个终端中运行:

rosrun image_view image_view image:=/rtsp_camera_relay/image

运行dso_ros,在第四个终端中运行:

rosrun dso_ros dso_live image:=/rtsp_camera_relay/image calib=xxx/camera.txt mode=1

运行结果如下:
请添加图片描述

4.遇到的问题
(1)相机与电脑的局域网连接

这里需要注意的是,一定要在手机APP开始运行后再启动终端;在运行过程中,可能会突然断开连接,手机APP不再显示IP地址,则需要退出终端,在APP重新开启相机后再启动终端。

关于虚拟机与手机置于同一局域网下,网上查阅了很多资料,需要对虚拟机的网络配置进行修改。我使用了一种比较简单的方法:在电脑上开启热点,使用手机连接该热点,虚拟机网络使用NAT模式,此时二者为同一局域网下。

(2)运行至START PANGOLIN后卡住

请添加图片描述
如上图所示,启动dso_ros后,提示无法打开PhotometricUndistorter文件,运行至START PANGOLIN卡住。

注意这里输入的语句中的“image:/”段,与运行电脑摄像头的时候是不同的:

rosrun dso_ros dso_live image:=/rtsp_camera_relay/image calib=xxx/camera.txt mode=1

“image:=xxx”后面填写的部分,是相机运行的终端的名称,也就是第三个终端中输入的"iamge:/"字段。注意下图中窗口的名称和终端的输入:
请添加图片描述

附:

在Ubuntu下使用ros保存图像的方法

https://blog.csdn.net/listen_to_star/article/details/98972581

  • 7
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: 好的,我可以为您提供有关在Ubuntu 18.04运行ORB-SLAM2的一些指导。 ORB-SLAM2是一种用于视觉SLAM(同时定位与建图)的开源库。以下是在Ubuntu 18.04运行ORB-SLAM2的一些步骤: 1. 安装必要的软件包:在终端中执行以下命令来安装ORB-SLAM2所需的软件包: ``` sudo apt-get update sudo apt-get install libglew-dev libboost-all-dev cmake libopencv-dev libeigen3-dev libgtk2.0-dev ``` 2. 下载ORB-SLAM2源代码:可以从ORB-SLAM2的GitHub存储库(https://github.com/raulmur/ORB_SLAM2)中获取源代码。 ``` git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2 ``` 3. 编译ORB-SLAM2:进入ORB-SLAM2的目录并执行以下命令来编译ORB-SLAM2: ``` cd ORB_SLAM2 chmod +x build.sh ./build.sh ``` 4. 下载ORB-SLAM2所需的数据集:ORB-SLAM2需要一些数据集才能运行。可以使用以下命令从ORB-SLAM2的GitHub存储库中下载数据集: ``` cd ORB_SLAM2 ./get_datasets.sh ``` 5. 运行ORB-SLAM2:执行以下命令来运行ORB-SLAM2: ``` ./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml PATH_TO_SEQUENCE_FOLDER ``` 其中,PATH_TO_SEQUENCE_FOLDER是包含图像序列的文件夹的路径。ORB-SLAM2将在终端中输出它的输出。 希望这些步骤能够帮助您在Ubuntu 18.04运行ORB-SLAM2。如果您遇到任何问题,可以随时问我。 ### 回答2: ORB-SLAM2是一款功能非常强大的视觉SLAM系统,适用于机器人、AR/VR、自动驾驶等领域。在Ubuntu18.04运行ORB-SLAM2需要进行以下步骤: 1. 安装必要的软件包:ORB-SLAM2需要使用OpenCV、Eigen、Pangolin等库,可以使用以下命令安装: sudo apt-get install libopencv-dev libeigen3-dev libglew-dev libpython2.7-dev libblas-dev liblapack-dev libatlas-base-dev libboost-all-dev libprotobuf-dev protobuf-c-compiler protobuf-compiler libgoogle-glog-dev libgflags-dev 2. 克隆并编译ORB-SLAM2:在终端中输入以下命令,将ORB-SLAM2代码克隆到本地: git clone https://github.com/raulmur/ORB_SLAM2.git 编译ORB-SLAM2需要使用CMake工具,具体步骤如下: a. 进入ORB-SLAM2目录 cd ORB_SLAM2 b. 创建build文件夹 mkdir build c. 进入build文件夹 cd build d. 运行CMake cmake .. e. 编译ORB-SLAM2 make -j4 3. 准备数据集:在运行ORB-SLAM2之前需要准备一个数据集,可以从KITTI、EuRoC、TUM等网站下载。 4. 运行ORB-SLAM2:在终端中输入以下命令运行ORB-SLAM2: ./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml [数据集路径] 其中,[数据集路径]替换成实际数据集的路径。运行过程中,ORB-SLAM2会显示当前帧的跟踪情况和地图的构建情况。 总之,Ubuntu18.04运行ORB-SLAM2需要安装必要的软件包、克隆并编译ORB-SLAM2、准备数据集,并在终端中运行ORB-SLAM2。这个过程需要一定的计算机视觉和Linux操作系统的基础知识,对于初学者可能会比较困难,需要耐心学习和实践。 ### 回答3: 在Ubuntu18.04运行ORB-SLAM2需要几个步骤: 1.下载ORB-SLAM2并安装必要的库文件 可以在ORB-SLAM2的官方网站上下载最新版本的ORB-SLAM2或者从GitHub网站获取源代码。安装ORB-SLAM2需要用到一些依赖库,如Eigen3、DBoW2、g2o、OpenCV等,可以使用以下命令行安装: sudo apt-get install libeigen3-dev libblas-dev liblapack-dev libboost-all-dev libopencv-dev sudo apt-get install libglew-dev libgoogle-glog-dev libgflags-dev libprotobuf-dev protobuf-compiler libatlas-base-dev libsuitesparse-dev libceres-dev 2.编译ORB-SLAM2 解压缩ORB-SLAM2的压缩包,进入ORB-SLAM2的主目录,运行以下命令进行编译: cd ORB_SLAM2 chmod +x build.sh ./build.sh 3.下载测试数据集运行ORB-SLAM2 可以从ORB-SLAM2的官方网站上下载某些测试数据集,例如TUM RGB-D数据集,测试ORB-SLAM2的性能。先下载TUM RGB-D数据集并解压,然后到ORB_SLAM2目录中运行以下命令: ./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml ~/Data/rgbd_dataset_freiburg1_rpy 其中,Vocabulary/ORBvoc.txt是ORB-SLAM2的字典文件,Examples/RGB-D/TUM1.yaml是配置文件,~/Data/rgbd_dataset_freiburg1_xyz是RGB-D数据集的路径。 4.运行结果分析 ORB-SLAM2的运行结果可以在终端中查看或者在图形界面中可视化。在终端中运行ORB-SLAM2后,它会输出一些关键的信息,例如ORB特征点的数量、相机的位姿、地图点的数量等。通过这些信息可以对ORB-SLAM2的性能进行评估。在图形界面中可以看到ORB-SLAM2的地图、相机的轨迹、当前帧的ORB特征点等,这些信息可以帮助我们更好地了解ORB-SLAM2的运行情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值