gaoxiang12 / slambook2

edition 2 of the slambook
MIT License
5.54k stars 2.02k forks source link

ch4 - useSophus : No such file or directory #100

Open Hanchen-Yao opened 4 years ago

Hanchen-Yao commented 4 years ago

a>环境: 虚拟机ubuntu,64位,版本16.04。

b>尝试: 1、git了高翔博士的slambook2,,其中3rdparty下有Sophus文件夹,但是为Sophus文件夹为空文件夹;

2、手动下载了第一版slambook文件夹下的Sophus压缩文件,解压安装了Sophus;

3、cmake和make文件夹ch4中的“useSophus.cpp”,报错: fatal error : sophus/se3.hpp: No such file or directory

4、检查CMakeLists.txt: cmake_minimum_required(VERSION 2.8) project(useSophus)

find_package(Sophus REQUIRED) include_directories(${Sophus_INCLUDE_DIRS})

include_directories("/usr/include/eigen3") add_executable(useSophus useSophus.cpp) add_subdirectory(example)

5、git了strasdat的地址,cmake和make了该文件夹: git clone http://github.com/strasdat/Sophus.git

6、重新cmake和make文件夹ch4中的“useSophus.cpp”,仍然如第二步报错。

v1otusc commented 4 years ago

我遇到了同样的问题,尝试了一下 sudo make install 解决的

Hanchen-Yao commented 4 years ago

我遇到了同样的问题,尝试了一下 sudo make install 解决的

谢谢,我也尝试一下。这两天查阅了一些资料,Sophus分为非模板型和模板型的,以前的版本是非模板型的安装方法,文件夹下为"sophus/se3.h"。只有安装模板型的Sophus,才会得到“sophus/se3.hpp”。

tsunghan-wu commented 4 years ago

git clone --recursive https://github.com/gaoxiang12/slambook2.git can solve the problem. The --recursive options can download the submodule and thus you won't have an "empty Sophus directory".

taylorgy commented 4 years ago

平台:liunx 16.04(64)

@Hanchen-Yao 关于3rdparty文件夹为空的解决: 方法一:可以参见 @tsunghan-mama 的解决方案重新下载整个目录 方法二:在已经下载的文件夹根目录(\slambook2),CMD输入 git submodule init git submodule update 就可以成功下到高翔博士使用的同版本3rdparty库, 随后即可正确编译useSophus.cpp程序。 (建议顺带了解github关于submodule的相关功能。)

另注,使用此版本Sophus在CMakeLists.txt中需要加入如下链接库语句 target_link_libraries(useSophus Sophus::Sophus) 否则会出现make时无法找到<sophus/se3.hpp>等问题。 (在当前版本ch4根目录的CMakeLists.txt中含有此句, 但后续其他用到Sophus的程序中有一部分缺少此句而产生了无法正确编译的问题,如ch5/rgbd。 @gaoxiang12 )