slam十四讲~环境安装以及问题记录

这篇具有很好参考价值的文章主要介绍了slam十四讲~环境安装以及问题记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SLMA十四讲”中环境配置

参考资料:
https://zhuanlan.zhihu.com/p/452256687
https://blog.csdn.net/qq_38629044/article/details/95355859
https://blog.csdn.net/Bonaventure/article/details/122835996
https://blog.csdn.net/weixin_44986556/article/details/108962861
https://blog.csdn.net/qq_38364548/article/details/122055690
https://blog.csdn.net/rong11417/article/details/103905794
https://blog.csdn.net/CSSDCC/article/details/123442605

运行官方ORB-SLAM2代码可以安装0.5版本Pangolin,相关报错参考:https://zhuanlan.zhihu.com/p/411027681

系统版本:Ubuntu 20.04
参考书:slam十四讲 第二版

安装软件或者库时,建议加上 sudo 命令!!!
运行代码时注意检测代码中读取文件的路径!!!

1、安装 VScode 工具:

建议使用普通用户登陆系统,root用户可能无法正常打开 VScode :
可以在软件商店安装(速度较慢);
slam十四讲~环境安装以及问题记录
slam十四讲~环境安装以及问题记录

安装vscode完成后遇到无法打开软件的情况:推荐使用普通用户登录 Ubuntu,一般能够正常打开VScode

2、配置 SLAM 环境:

2.1 安装 C++、cmake、git :

sudo apt-get install -y g++		
sudo apt-get install -y cmake
sudo apt-get install -y git

2.2 安装 Eigen(第三讲中用到)
因为后续安装g2o的时候需要Eigen(线性代数)支持,所以先进行Eigen的配置:

sudo apt-get install libeigen3-dev 	 #安装Eigen	
pkg-config --cflags eigen3		#检查安装
sudo apt-get remove libeigen3-dev		#卸载

Eigen 安装完成后可以尝试运行“SLMA十四讲”第三讲48页代码“eigenMatrix.cpp”。
使用VScode运行时,可能会遇到报错,查看后文linux下运行Vscode代码的问题处理部分

2.3 安装可视化显示库:
Pangolin——可视化显示库 (第三讲中用到)

sudo apt-get install libglew-dev  libboost-dev libboost-thread-dev libboost-filesystem-dev 	
sudo apt install libgl1-mesa-dev
#安装依赖项
git clone https://github.com/stevenlovegrove/Pangolin.git  #自行指定文件夹下载pangolin
cd Pangolin
mkdir build
cd build
cmake -DCPP11_NO_BOOST= 1 ..
make -j12
sudo make install

Pangolin 安装完成后可以在pangolin路径下使用以下代码测试:

cd examples/HelloPangolin
./HelloPangolin

安装完成可以尝试运行“SLMA十四讲”第三讲65页代码“coordinateTransform.cpp”以及67页代码“plotTrajectory.cpp”

2.4安装 Sophus——李代数
Sophus的安装存在两个问题,一个是Sophus模板类和非模板类的区别,为了新手方便使用十四讲中推荐的是非模板类的Sophus,需要将git到的Sophus回滚到a621ff版本;另一个就是由于编译器版本的不同,出现非模板类Sophus编译不过。
报错1:报错c++: fatal error: 已杀死 signal terminated program cc1plus
建议安装Sophus前先建一个交换分区(swap分区):

# 创建分区路径
sudo mkdir -p /var/cache/swap/
# 设置分区的大小
# bs=64M是块大小,count=64是块数量,所以swap空间大小是bs*count=4096MB=4GB
sudo dd if=/dev/zero of=/var/cache/swap/swap0 bs=64M count=64
# 设置该目录权限
sudo chmod 0600 /var/cache/swap/swap0
# 创建SWAP文件
sudo mkswap /var/cache/swap/swap0
# 激活SWAP文件
sudo swapon /var/cache/swap/swap0
# 查看SWAP信息是否正确
sudo swapon -s

分区创建并激活的效果图如下:
swap0文件的路径在/var/cache/swap/下,编译完后, 如果不想要交换分区了, 可以删除。
slam十四讲~环境安装以及问题记录

#删除交换分区的命令
sudo swapoff /var/cache/swap/swap0
sudo rm /var/cache/swap/swap0
释放空间命令:
sudo swapoff -a
#详细的用法:swapoff --help
#查看当前内存使用情况:free -m

安装Sophus库

git clone https://github.com/strasdat/Sophus.git
cd Sophus
git checkout a621ff 		**#运行第二版代码不需要回滚**
mkdir build
cd build
cmake ..
make -j12 	# 提高编程效率,表示以12线程运行,电脑会变卡建议使用交换分区
sudo make install 	#安装sophus库 

问题2:在 ubuntu18.04 下会出现“unit_complex_.real() = 1.; unit_complex_.imag() = 0. ;"的错误
解决方法:在sophus/so2.cpp文件中,将

unit_complex_.real() = 1. ;
unit_complex_.imag() = 0. ;

改为

unit_complex_.real(1.) ;
unit_complex_.imag(0.) ;

然后重新编译即可

2.5 安装fmt库

可以在fmt编译前将CMakeLists.txt中添加“add_compile_options(-fPIC)” 避免在ch13中出现错误
slam十四讲~环境安装以及问题记录

git clone https://github.com/fmtlib/fmt.git
cd fmt
git checkout b6f4ceae	//回退到 release 8.1.1 版本防止出现问题
mkdir build
cd build
cmake ..
make -j12
sudo make install

2.6 安装 OpenCV3
安装依赖项:

sudo apt install -y build-essential 
sudo apt install -y  libgtk2.0-dev 
sudo apt install -y libvtk5-dev		#可以安装新版本 sudo apt install -y libvtk6-dev
sudo apt install -y libjpeg-dev 
sudo apt install -y libtiff5-dev 
sudo apt install -y libjasper-dev 
sudo apt install -y  libopenexr-dev
sudo apt install -y libtbb-dev

从官网下载 OPenCV 3.4.15版本 linux安装包,进行编译安装:

cd opencv-3.4.15
mkdir build && cd build
cmake ..
make -j12
sudo make install

后续编译运行代码可能出错,详情见第3部分报错记录第 6 节。

2.7安装:Ceres——最小二乘优化 slam 十四讲 ch6 需要

先安装依赖:

sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-dev

下载Ceres:

git clone https://github.com/ceres-solver/ceres-solver

安装Ceres:

cd ceres-solver
mkdir build
cd build/
cmake ..
make -j4
sudo make install

2.8 安装 g2o 库
下载 g2o

git clone https://github.com/RainerKuemmerle/g2o

安装依赖环境,终端输入:

sudo apt-get install qt5-qmake qt5-default libqglviewer-dev-qt5 libsuitesparse-dev libcxsparse3 libcholmod3

在slambook2/3rdparty/g2o文件夹下打开终端并输入:

cd g2o
mkdir build
cd build/
cmake ..
make -j4
sudo make install

2.9 安装点云库:pcl——点云库

sudo apt-get install libpcl-dev pcl-tools

2.10 安装 DBoW3 库:
自行指定文件夹下下载并安装,终端并输入:

git clone https://github.com/rmsalinas/DBow3
cd DBow3
mkdir build
cd build/
cmake ..
make -j12
sudo make install

2.11 安装 octomap 终端输入:
sudo apt-get install liboctomap-dev octovis
slam十四讲~环境安装以及问题记录

3、运行代码时的报错问题记录:

注意多检查代码运行时需要的参数以及代码中的文件路径 !!!

3.1 vscode运行代码报错:
找不到“Egin/core”,修改源码中的“Egin/core”为:“eigen3/Egin/core”
或者添加软链接将 eigen3/Eigen 指向 Eigen :
sudo ln -sf eigen3/Eigen Eigen
sudo ln -sf eigen3/unsupported unsupported
slam十四讲~环境安装以及问题记录
3.2 Linux中 error while loading shared libraries错误解决办法

错误提示:

./plotTrajectory: error while loading shared libraries: libpango_windowing.so: cannot open shared object file: No such file or directory

错误原因:找不到共享库libpango_windowing.so
查看usr/local/lib 下有没有,看到已经有了。
slam十四讲~环境安装以及问题记录
终端使用命令刷新共享库:

sudo ldconfig

如果是build里编译的话可能或找不到trajectory.txt文件,会出现以下报错:

cannot find trajectory file at ../examples/trajectory.txt

改一下slam十四讲 3.7显示运动轨迹的程序 trajectory.txt文件路径,可以写绝对路径,建议改成相对路径。
string trajectory_file = “./examples/trajectory.txt”;
#改为自己的实际路径
string trajectory_file = “/home/dal/slambook2/ch3/examples/trajectory.txt”;slam十四讲~环境安装以及问题记录

3.3 遇到报错:error: ‘decay_t’ is not a member of ‘std’; did you mean ‘decay’?
修改编译器标准即可解决问题。
将CmakeLists.txt中
set(CMAKE_CXX_FLAGS “-std=c++11”)
改为
set(CMAKE_CXX_STANDARD 14)
如图:
slam十四讲~环境安装以及问题记录
修改后可正常编译运行: slam十四讲~环境安装以及问题记录

3.4 报错:

error: ‘slots_reference’ was not declared in this scope
 1180 |         cow_copy_type<list_type, Lockable> ref = slots_reference();

注意将CMakelists.txt中的C++版本切换到C++14。

3.5 运行ch4中的代码出现类似“fatal error: fmt/core.h: 没有那个文件或目录”
之所以出现该问题是因为原书使用Sophous库时,仅仅需要EIgen一个依赖,而如今版本的Sophous库还需要fmt依赖。
因此,要解决此问题按照本文2.5安装该库即可。

然而在安装好fmt之后,虽然解决了寻找不到fmt的问题,但编译时又出现了新的报错:

usr/bin/ld: CMakeFiles/trajectoryError.dir/trajectoryError.cpp.o: in function `std::make_unsigned<int>::type fmt::v8::detail::to_unsigned<int>(int)':
trajectoryError.cpp:(.text._ZN3fmt2v86detail11to_unsignedIiEENSt13make_unsignedIT_E4typeES4_[_ZN3fmt2v86detail11to_unsignedIiEENSt13make_unsignedIT_E4typeES4_]+0x23): undefined reference to `fmt::v8::detail::assert_fail(char const*, int, char const*)'
/usr/bin/ld: CMakeFiles/trajectoryError.dir/trajectoryError.cpp.o: in function `std::make_unsigned<long>::type fmt::v8::detail::to_unsigned<long>(long)':
trajectoryError.cpp:(.text._ZN3fmt2v86detail11to_unsignedIlEENSt13make_unsignedIT_E4typeES4_[_ZN3fmt2v86detail11to_unsignedIlEENSt13make_unsignedIT_E4typeES4_]+0x25): undefined reference to `fmt::v8::detail::assert_fail(char const*, int, char const*)'

此时ch4中的 useSophus.cpp 可以正常编译,但是 example 中的 trajectoryError.cpp 无法编译成功,注意检查 cpp 文件中的内容和 CMakelists 的内容。

应遵循调用层次,从依赖到被依赖。所以在CMakeLists.txt中添加:
target_link_libraries(trajectoryError ${Sophus_LIBRARIES} fmt)
slam十四讲~环境安装以及问题记录

trajectoryError依赖于Sophus,Sophus依赖于fmt。
此时可以编译完成,运行文件提示找不到文件:
slam十四讲~环境安装以及问题记录

修改cpp文件中的代码,将文件路径修改为绝对路径或者相对路径。再次编译后运行成功。
slam十四讲~环境安装以及问题记录

3.6 进行编译 ch5 imageBasics.cpp 时报错:

/usr/bin/ld: CMakeFiles/undistortImage.dir/undistortImage.cpp.o: in function `main':
undistortImage.cpp:(.text+0xdc): undefined reference to `cv::imread(cv::String const&, int)'
/usr/bin/ld: undistortImage.cpp:(.text+0x120): undefined reference to `cv::Mat::Mat(int, int, int)'

原因:由于使用 OPenCV 版本的不同,需要在 CMakelists 前添加一段:

cmake_minimum_required(VERSION 2.8)
# 寻找OpenCV库
find_package(OpenCV REQUIRED)
# 添加头文件
include_directories(${OpenCV_INCLUDE_DIRS})

#所有涉及到 OPenCV 的源代码,前面都可以添加。

编译成功后运行代码,遇到新问题:

./imageBasics: error while loading shared libraries: libopencv_core.so.3.4: cannot open shared object file: No such file or directory
(1) 打开路径
			cd /etc/ld.so.conf.d
(2) 创建文件:
			touch OpenCV.conf
    或者不创建文件:直接下载OpenCV.conf,将该文件放在第1步的路径下,然后直接进行第四步(注意:OpenCV.conf中的路径一定要是自己opencv的install路径,具体参看步骤3)
		(3) 在OpenCV.conf中写入:
			/usr/local/lib
			注:该路径为opencv install之后的路径,一般默认的路径为/usr/local/lib,即lib*.so库文件所在的路径。
		(4) 在终端执行命令:
	sudo ldconfig
	完成后可以正常运行

3.7 运行ch5 中 undistorImage.cpp 时报错:

terminate called after throwing an instance of 'cv::Exception'
  what():  OpenCV(3.4.15) /root/opencv-3.4.15/modules/imgproc/src/median_blur.dispatch.cpp:283: error: (-215:Assertion failed) !_src0.empty() in function 'medianBlur'
已放弃 (核心已转储)

解决方法:检查 cpp 文件中的文件路径是否正确。
如果确认文件位置正确后依然报错,尝试参考博客,对比报错代码进行修改:
https://blog.csdn.net/weixin_45617478/article/details/102648651
https://blog.csdn.net/BigDream123/article/details/89477248

3.8 运行ch5 中的 joinMap.cpp 文件报错:

/usr/bin/ld: CMakeFiles/joinMap.dir/joinMap.cpp.o: in function `std::make_unsigned<int>::type fmt::v8::detail::to_unsigned<i    nt>(int)':
joinMap.cpp:(.text._ZN3fmt2v86detail11to_unsignedIiEENSt13make_unsignedIT_E4typeES4_[_ZN3fmt2v86detail11to_unsignedIiEENSt13    make_unsignedIT_E4typeES4_]+0x23): undefined reference to `fmt::v8::detail::assert_fail(char const*, int, char const*)'
 ... ...
joinMap.cpp:(.text._ZN3fmt2v86detail13width_checkerINS1_13error_handlerEEclIjLi0EEEyT_[_ZN3fmt2v86detail13width_checkerINS1_    13error_handlerEEclIjLi0EEEyT_]+0x33): undefined reference to `fmt::v8::detail::error_handler::on_error(char const*)'
/usr/bin/ld: CMakeFiles/joinMap.dir/joinMap.cpp.o:joinMap.cpp:(.text._ZN3fmt2v86detail13width_checkerINS1_13error_handlerEEc    lIxLi0EEEyT_[_ZN3fmt2v86detail13width_checkerINS1_13error_handlerEEclIxLi0EEEyT_]+0x36): more undefined references to `fmt::    v8::detail::error_handler::on_error(char const*)' follow
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/joinMap.dir/build.make:120:joinMap] 错误 1
make[1]: *** [CMakeFiles/Makefile2:76:CMakeFiles/joinMap.dir/all] 错误 2
make: *** [Makefile:84:all] 错误 2

产生这个错误的原因是 CMakeLists文件没有写完整,
修改文件内容为:

project(rgbd)
cmake_minimum_required(VERSION 3.10)
find_package(Sophus REQUIRED)
add_executable(joinMap joinMap.cpp)
include_directories(${Sophus_INCLUDE_DIRS})
#链接OpenCV库
find_package(OpenCV REQUIRED)
#添加头文件
include_directories( ${OpenCV-INCLUDE_DIRS})
target_link_libraries(joinMap ${OpenCV_LIBS} ${Pangolin_LIBRARIES})
find_package(Pangolin REQUIRED) 
target_link_libraries(joinMap ${OpenCV_LIBS} ${Pangolin_LIBRARIES})
# Eigen
include_directories("/usr/local/include/eigen3")
target_link_libraries(joinMap ${Sophus_LIBRARIES} fmt)
#链接c++11
set(CMAKE_CXX_STANDARD 14)
按照以上内容修改 CMakeLists.txt 文件后,运行程序提示:

root@slam-virtual-machine:/home/slam/slambook2-master/ch5/rgbd/build# ./joinMap
转换图像中: 1
转换图像中: 2
转换图像中: 3
转换图像中: 4
转换图像中: 5
点云共有0个点.
Point cloud is empty!
root@slam-virtual-machine:/home/slam/slambook2-master/ch5/rgbd/build#

检查 cpp 中文件路径是否正确,共有两处文件路径需要根据实际路径修改。
slam十四讲~环境安装以及问题记录

3.9 SLAM十四讲 ch7 代码报错:
slam十四讲~环境安装以及问题记录
此时将 CMakeLists.txt 中的C++11 改为C++14(之前也有过类似错误):
slam十四讲~环境安装以及问题记录
重新编译,报错:

/usr/bin/ld: CMakeFiles/pose_estimation_3d2d.dir/pose_estimation_3d2d.cpp.o: in function `unsigned long long fmt::v8::detail::width_checker<fmt::v8::detail::error_handler>::operator()<float, 0>(float) [clone .isra.0]':
pose_estimation_3d2d.cpp:(.text+0xe): undefined reference to `fmt::v8::detail::error_handler::on_error(char const*)'
/usr/bin/ld: CMakeFiles/pose_estimation_3d2d.dir/pose_estimation_3d2d.cpp.o: in function `unsigned long long fmt::v8::detail::precision_checker<fmt::v8::detail::error_handler>::operator()<float, 0>(float) [clone .isra.0]':
pose_estimation_3d2d.cpp:(.text+0x2e): undefined reference to `fmt::v8::detail::error_handler::on_error(char const*)'
/usr/bin/ld: CMakeFiles/pose_estimation_3d2d.dir/pose_estimation_3d2d.cpp.o: in function `Sophus::SO3Base<Sophus::SO3<double, 0> >::normalize() [clone .part.0]':

原因是没有引用 fmt :
修改CMakeList.txt中所有的 target_link_libraries :

		target_link_libraries(orb_self ${OpenCV_LIBS}

改为:

	target_link_libraries(orb_self ${OpenCV_LIBS} fmt)

slam十四讲~环境安装以及问题记录
此时编译可能有一个缺少返回的语句,不影响程序运行,可以自行修改。
slam十四讲~环境安装以及问题记录

3.10 运行ch9中的代码报错。
slam十四讲~环境安装以及问题记录
CMakeLists.txt中的 C++ 版本问题,修改即可(下面还有一处需要修改,修改截图在最后)。
重新编译,有告警信息可以暂时不管。
slam十四讲~环境安装以及问题记录

报错,由于没有链接 fmt :
slam十四讲~环境安装以及问题记录

解决方法:
slam十四讲~环境安装以及问题记录

同时注意cpp文件中的目录部分是否和自己当前文件目录一直,确认无误后重新编译运行正常。

3.11 运行ch10时报错:
参考问题10,同样是C++版本的问题,后续fmt未链接的问题。(后续同样问题不再写)
slam十四讲~环境安装以及问题记录

解决方法: slam十四讲~环境安装以及问题记录
编译时会产生一个告警:
slam十四讲~环境安装以及问题记录
可以在 pose_graph_g2o_lie_algebra.cpp 文件54行的部分,添加 return true语句,重新编译。
slam十四讲~环境安装以及问题记录
注意检查 CPP 文件中的部分文件路径(次数没有需要修改的路径)。

3.12 在ch11中需要安装 DBow3 库,未安装会报错:
slam十四讲~环境安装以及问题记录
安装完成后编译代码报错:
slam十四讲~环境安装以及问题记录 修改CMakeLists.txt 中的库文件后缀。则将cmakelist中的libDBoW3.a改为libDBoW3.so即可。
slam十四讲~环境安装以及问题记录

若cmakelist中原来是libDBoW3.so,则改为libDBoW3.a
slam十四讲~环境安装以及问题记录

重新编译运行,注意cpp文件中的路径。

slam十四讲~环境安装以及问题记录
注意检查gen_vocab_large.cpp 文件,此处应该带参数运行程序“gen_vocab”。
slam十四讲~环境安装以及问题记录
(此处存在部分疑问,尚未解决)

3.13 编译ch12中“dense_RGBD”的代码报错:

	By not providing "Findoctomap.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "octomap", but
  CMake did not find one.

此时需要安装:octomap
终端输入:

sudo apt-get install liboctomap-dev octovis

安装完成后编译,运行 pointcloud_mapping 后使用 pcl_viewer 对此章生成的点云图“map.pcd”进行查看。
slam十四讲~环境安装以及问题记录
3.14 编译ch13报错:注意修改CMakeLists.txt中的C++版本,改为C++ 14。

 error: ‘index_sequence’ is not a member of ‘std’
  199 |   struct HessianTupleType<std::index_sequence<Ints...>>

3.15 编译ch13报错:

/usr/bin/ld: 找不到 -lglut
collect2: error: ld returned 1 exit status

安装库文件:

sudo apt install freeglut3-dev

3.16 编译ch13报错:

/usr/bin/ld: ../../lib/libmyslam.so: undefined reference to `fmt::v8::detail::error_handler::on_error(char const*)'
/usr/bin/ld: ../../lib/libmyslam.so: undefined reference to `std::locale fmt::v8::detail::locale_ref::get<std::locale>() const'
/usr/bin/ld: ../../lib/libmyslam.so: undefined reference to `fmt::v8::detail::assert_fail(char const*, int, char const*)'
/usr/bin/ld: ../../lib/libmyslam.so: undefined reference to `fmt::v8::vprint(fmt::v8::basic_string_view<char>, fmt::v8::basic_format_args<fmt::v8::basic_format_context<fmt::v8::appender, char> >)'
/usr/bin/ld: ../../lib/libmyslam.so: undefined reference to `fmt::v8::detail::th

需要链接fmt库。在ch13中src文件夹中加入以下代码:

target_link_libraries(myslam
        ${THIRD_PARTY_LIBS}
        fmt::fmt # 加入这一行
        )

3.17 编译ch13报错:

[ 75%] Linking CXX shared library ../../lib/libmyslam.so
/usr/bin/ld: /usr/local/lib/libfmt.a(format.cc.o): relocation R_X86_64_PC32 against symbol `stderr@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: 最后的链结失败: bad value
collect2: error: ld returned 1 exit status
make[2]: *** [src/CMakeFiles/myslam.dir/build.make:273:../lib/libmyslam.so] 错误 1
make[1]: *** [CMakeFiles/Makefile2:136:src/CMakeFiles/myslam.dir/all] 错误 2
make: *** [Makefile:95:all] 错误 2

此处提供一种方法:
如果之前已经安装过fmt,删除fmt路径下的文件"libfmt.a"后重新安装fmt
slam十四讲~环境安装以及问题记录

下载fmt编译前在CMakeLists.txt中添加“add_compile_options(-fPIC)”
slam十四讲~环境安装以及问题记录

重新编译安装fmt。安装完fmt后重新编译ch13代码没有报错。编译fmt见上文2.5节。
slam十四讲~环境安装以及问题记录文章来源地址https://www.toymoban.com/news/detail-413623.html

到了这里,关于slam十四讲~环境安装以及问题记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 视觉SLAM十四讲——ch9实践(后端1)

    Ceres BA使用的是BAL数据集。在本例中,使用problem-16-22106-pre.txt文件。 BAL的数据集自身存在的特殊 BAL的相机内参模型由焦距f和畸变参数k1,k2给出。 因为BAL数据在投影时假设投影平面在相机光心之后,所以按照我们之前用的模型计算,需要在投影之后乘以系数-1。 安装meshlab,

    2024年02月09日
    浏览(48)
  • 《视觉SLAM十四讲》报错信息和解决方案

    ch4-Sophus 编译报错 报错信息: 解决方法:修改Sophus下的so2.cpp文件 将下面这个修改一下: 修改为: ch5/imageBasics 安装opencv4.x报错 环境:Unbuntu22.04,安装opencv4.x 报错信息: 解决方案:参照https://blog.csdn.net/qq_51022848/article/details/128095476 ch5/joinMap/CMakeLists.txt 编译报错 报错信息:

    2024年02月14日
    浏览(37)
  • 《视觉 SLAM 十四讲》V2 第 5 讲 相机与图像

    空间点 投影到 相机成像平面 前面内容总结: 1、机器人如何表示自身位姿 视觉SLAM: 观测 主要是指 相机成像 的过程 。 投影过程描述: 针孔 + 畸变 相机 内参 外参 像素坐标系 与 成像平面之间,相差了一个缩放 和一个原点的平移。 像素坐标系: 原点 o ′ o^{prime} o ′ 位

    2024年02月07日
    浏览(45)
  • 视觉SLAM十四讲|【五】相机与IMU时间戳同步

    Z [ u v 1 ] = [ f x 0 c x 0 f y c y 0 0 1 ] [ X Y Z ] = K P Z begin{bmatrix} u \\\\ v \\\\ 1 end{bmatrix}= begin{bmatrix} f_x 0 c_x \\\\ 0 f_y c_y \\\\ 0 0 1 end{bmatrix} begin{bmatrix} X \\\\ Y \\\\ Z end{bmatrix}= KP Z ​ u v 1 ​ ​ = ​ f x ​ 0 0 ​ 0 f y ​ 0 ​ c x ​ c y ​ 1 ​ ​ ​ X Y Z ​ ​ = K P 其中, K = [ f x 0 c x 0 f y c y 0 0

    2024年01月20日
    浏览(49)
  • 《视觉 SLAM 十四讲》V2 第 4 讲 李群与李代数 【什么样的相机位姿 最符合 当前观测数据】

    P71 什么样的相机位姿 最符合 当前观测数据。 求解最优的 R , t bm{R, t} R , t , 使得误差最小化。 群 : 只有一个(良好的)运算的集合。 封结幺逆 、 丰俭由你 李群 : 具有连续(光滑)性质的群。 在 t = 0 附近,旋转矩阵可以由 e x p ( ϕ 0 ∧ t ) exp(phi_0^{land}t) e x p ( ϕ 0 ∧ ​ t

    2024年02月07日
    浏览(52)
  • 自学SLAM(8)《第四讲:相机模型与非线性优化》作业

    小编研究生的研究方向是视觉SLAM,目前在自学,本篇文章为初学高翔老师课的第四次作业。 现实⽣活中的图像总存在畸变。原则上来说,针孔透视相机应该将三维世界中的直线投影成直线,但是当我们使⽤⼴⾓和鱼眼镜头时,由于畸变的原因,直线在图像⾥看起来是扭曲的

    2024年02月05日
    浏览(44)
  • Git第十四讲 Git标签管理

    Git标签是用于标记项目中的特定版本的重要工具。它们通常用于标识发布版本或里程碑。本文将介绍如何在Git中创建、查看和管理标签。 要在Git中创建一个标签,可以使用 git tag 命令。有两种类型的标签:轻量标签和附注标签。 轻量标签 轻量标签是指向特定提交的静态引用

    2024年02月09日
    浏览(88)
  • telegraf 编译安装以及问题记录

    代码下载: 直接编译: 编译报错问题列表 问题1: 解决方法:直接替换go.sum里面的h1 问题2 解决方法:设置代理 问题3 执行命令读取配置,发生错误 问题定位:telegraf.conf配置文件错误,建议重新生成新的配置文件;

    2024年02月11日
    浏览(35)
  • ElasticSearch第十四讲 ES有条件复杂查询

    模糊匹配 模糊匹配主要是针对文本类型的字段,文本类型的字段会对内容进行分词,对查询时,也会对搜索条件进行分词,然后通过倒排索引查找到匹配的数据,模糊匹配主要通过match等参数来实现 match : 通过match模糊匹配条件内容 prefix : 前缀匹配 regexp : 通过正则表达

    2024年02月03日
    浏览(48)
  • OpenCV中initUndistortRectifyMap ()函数与十四讲中去畸变公式的区别探究

    最近在使用OpenCV对鱼眼相机图像去畸变时发现一个问题,基于针孔模型去畸变时所使用的参数和之前十四讲以及视觉SLAM中的畸变系数有一点不一样。 1.十四讲中的去畸变公式 首先是十四讲或者视觉SLAM中的方法,针孔模型的畸变系数为 [k1, k2, p1, p2] ,使用以下去畸变公式计算:

    2024年02月05日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包