盘点Ubuntu20.04实操《视觉SLAM十四讲》时遇到的问题及解决方案

前言

        学习《视觉SLAM十四讲》时,由于本人电脑网卡较为少见,安装Ubuntu18时折腾很久未能找到合适的驱动,无奈转向Ubuntu20.04。本文就来盘点用Ubuntu20.04实操《视觉SLAM十四讲》时遇到的问题及解决方案。

一、Eigen/Dense库的使用部分(书P47-48)

1、查找文件命令

        书中代码:

sudo updatedb
locate eigen3

        遇到的问题:

        在终端运行sudo updatedb时,报错:找不到“updatedb”命令。

        解决措施:

                需先安装mlocate包。在终端中输入:

sudo apt-get install mlocate

        然后按书中代码运行即可正常运行。

2、VS code中Eigen库头文件报错:

        书中代码:

#include <Eigen/Core>
#include <Eigen/Dense>

        遇到的问题:

        Eigen/Core:没有那个文件或目录;

        Eigen/Dense:没有那个文件或项目。

        解决措施:

        在网上检索相关错误,找到的解决方案大致有三种:

1、没安装Eigen3
终端中输入:sudo apt-get install libeigen3-dev进行安装。

2、因为 eigen 库默认安装在了 /usr/include/eigen3/Eigen 路径下,需在终端中输入下面命令映射到 /usr/include 路径下:

sudo ln -s /usr/include/eigen3/Eigen /usr/include/Eigen

3、没有包含.h文件

在VS code代码中添加绝对路径:

#include "/home/lwz/vh-mpc-example/include/quad_dynamics.h"

        最终通过措施2解决

二、第三讲可视化演示部分(书P66-69)

        书中对于可视化演示这部分的说明极少,碰壁多次后总结出如下修改及步骤:

1.安装Pangolin库

        安装git工具:

sudo apt-get install git

       下载github上的源码并安装依赖:

apt-get install libglew-dev
apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev
git clone http://github.com/stevenlovegrove/Pangolin

        如GitHub连接不上,可尝试gitee镜像下载:

git clone https://gitee.com/krisnat/pangolin.git

        新建想安装库的文件夹并进入:  

mkdir resource && cd resource  //也可直接安装在主文件夹下

        编译安装Pangolin库:

cd Pangolin 
mkdir build
cd build
cmake -DCPP11_NO_BOOST=1 ..
make -j
sudo make install 

2、显示运动轨迹(plotTrajectory.cpp文件)

        首先我们打开plotTrajectory.cpp文件,将其中的./examples/trajectory.txt改为../../examples/trajectory.txt

        因为观察外边的目录结构,就发现这个txt文件是存在examples下面的,但是呢你执行的时候,是在examples/build下执行的

        所以要先… 退出build 再 … 退出examples 然后 /examples/trajectory.txt。

        否则会出现如下报错,找不到该文件:

       

        另外,要添加头文件:

#include <Eigen/Geometry>

        编译,切换到plotTrajectory所在目录

mkdir build
cd build
cmake ..
make
./plotTrajectory

        运行成功:

3、显示相机的位姿(visualGeometry):

        在编译运行时,出现报错:error: ‘decay_t’ is not a member of ‘std’

        打开CMakeLists.txt文件,将其中的set(CMAKE_CXX_FLAGS "-std=c++11")替换为:

set(CMAKE_CXX_FLAGS "-std=c++14")

        问题解决。

三、第四讲Sophus的使用部分(P86-91)

1、Sophus的基本使用方法(P86)

        运行时报fmt相关的错误,修改CmakeList.txt文件中的代码如下:

cmake_minimum_required( VERSION 2.8 )

project( useSophus )

# 为使用 sophus,您需要使用find_package命令找到它

find_package( Sophus REQUIRED )

include_directories( ${Sophus_INCLUDE_DIRS} )

include_directories( "/usr/include/eigen3/" )

add_executable( useSophus useSophus.cpp )

target_link_libraries( useSophus ${Sophus_LIBRARIES} fmt)

        结果如下:

2、评估轨迹误差(P90):

        出现报错:找不到文件estimated.txt和groundtruth.txt,是因为当前执行目录是build文件夹,自然找不到这两个文件。

        将trajectoryError.cpp文件打开,找到这两行代码(应该是第10和11行):

string groundtruth_file = "./example/groundtruth.txt";
string estimated_file = "./example/estimated.txt";

        修改为

string groundtruth_file = "../../example/groundtruth.txt";
string estimated_file = "../../example/estimated.txt";

        这样就能在build的上一级目录找到这两个文件了。

        如果你是Ubuntu20.04版本(18版本不用修改此处):

        将example文件夹下的CMakeList.txt文件打开,将代码option(USE_UBUNTU_20 "Set to ON if you are using Ubuntu 20.04" OFF)替换为:

option(USE_UBUNTU_20 "Set to ON if you are using Ubuntu 20.04" ON)

        运行结果如下:

说明

        剩余章节的内容过多过杂,我将发布新的文章以更新相关内容。

        因为本人第一次接触Ubuntu及视觉SLAM,下面有些问题是由于版本不同,也有些是基础操作不熟或操作有误所致。本文更新至阅读完此书止。

猜你喜欢

转载自blog.csdn.net/weixin_50578602/article/details/127143995
今日推荐