文件 -> 首选项 -> 设置 -> 搜索“终端”->
找到Terminal>Integrated:Font Family -> 更改为monospace即可
找到Terminal>Integrated:Font Size -> 即可更改字体大小
明明设置了Tab Size为8但每个缩进只有2个空格
解决:文件->首选项->设置->搜索 Tab->找到Editor:Tab Size->点击"Editor: Detect Indentation"后会进行跳转->取消该选项重启即可
1.c/c++
2.Chinese (Simplified)
3.CMake
4.CMake Tools
以下均为个人理解,如有错误或偏差,欢迎评论区指正,万分感激!!
注:我最初一直以为json文件是自动生成的,主要是由于不了解json文件,其实launch.json和tasks.json只是两个文件罢了,可以vscode自动生成,也可以手动编写,当你了解文件的作用时,你便无须顾虑手动编写相对于自动生成的会带来哪些隐患,手动编写和vscode自动生成的都是一样的,同时这两个文件都是在.vscode文件夹下,如果没有出现.vscode文件夹,你也可以手动创建,同样没有区别
1.launch.json文件:这是一个调试的配置文件,能够控制调试过程
创建launch.json文件:
1.点击左侧边栏的运行和调试标志(或按ctrl+shift+d)
2.点击创建launch.json文件,在跳出的选项中找到C++(GDB/LLDB)并点击
(注:若没有C++(GDB/LLDB)选项,则在第一步开始前,先打开一个cpp文件,再开始按步骤创建)
(有些人在第2步做完后还会出现一个选项步骤,但我没有,所以创建的launch.json没有配置息,以下是我创建后的内容)
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": []
}
3.创建完后会你会发现左侧边栏的资源管理器中会出现.vscode文件夹,launch.json文件就在其中
4.因创建的launch.json无配置信息,所以点击右下角的“添加配置”按钮,选第一个就好,你的launch.json内容应该是如下的(自动生成的)
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
"program": "输入程序名称,例如 ${workspaceFolder}/a.out",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
}
]
}
5.你会发现在"configurations"下出现了一个大括号的内容,每个大括号都是一个配置信息, 且对应有名称"name",你在运行和调试栏中会发现有个下拉选项,该下拉栏中会出现每个配置信息的名称,他决定着你调试时使用哪个配置信息
6.关于配置信息中的每个成员表示什么,你只需将鼠标放在上面便会知晓
7.在这些配置信息中,我们暂时只需关注"program"成员,即你想调试的可执行程序的完整路径,${workspaceFolder}表示你当前的工程目录,比如我生成的可执行文件为demo,在build文件夹下,那么这一项会被填为:"${workspaceFolder}/build/demo"
22.06.22补充:前面提到的只能运行无参的可执行文件,但当我们需要运行带参数的可执行文件时(例如我需要执行orb_cv可执行文件,该文件的执行需要传入2个参数:img1和img2的路径),我们就需要关注"args"成员
(1).若在终端直接执行时,你需要输入:./orb_cv ../img1.png ../img2.png
(2).若需要调试时,只需将参数../img1.png ../img2.png填入"args"成员中,如下
"program": "${workspaceFolder}/build/orb_cv",
"args": [
"../1.png",
"../2.png",
],
至此launch.json基本创建完成(后续还将会添加一句),你可以设置一个断点,编译后按F5(vscode默认的开始Debug快捷键)进入调试,看一看能否命中你设置的断点,如果可以,则说明你成功了,如果没有命中,一种可能是你编译过程没有添加调试信息,尝试在你的CMakeLists.txt中添加该句,你的问题大概率会得到解决(该句的意思是在编译时添加调试信息的编译选项):
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
2.tasks.json文件:据我了解这是一个任务脚本(我暂时只了解将其用于launch前的准备任务,以及单独执行其中的某个任务。我想,在浏览下文后,你会有所收获)
创建tasks.json文件:
1.点击顶部栏的终端,选择“配置默认生成任务”,如果你像我一样只关注调试,那后面的选项随便选,生成tasks.json文件后删除tasks里的所有内容,此时,你的tasks.json文件应该是如下的:
{
"version": "2.0.0",
"tasks": [
]
}
(注:你同样可以将鼠标放在成员上了解该成员的作用)
2.在tasks下创建task任务,每一个大阔花{}都表示一个任务
3.首先明确我们使用task.json是用来做为调试前的准备工作,在调试之前我不想再在命令行中输入cmake,make等指令,将这些任务都放在task中,委托task.json文件来帮我们执行,因此我们大致需要准备两条task command任务,第一个是执行cmake,第二个是执行make
4.创建第一个任务:该任务的通俗理解是在build文件夹下执行:cmake ../ 命令
{
"type": "shell",
"label": "cmake",
"options": {"cwd": "${workspaceFolder}/build"},
"command": "cmake ../",
"args": [],
},
(你可以去了解“type”成员,这里不做解读,我尝试去掉type成员最终也成功了)
label成员你可以理解为该任务的标签或者任务名称(可自定义)
option这一句的意思是进入${workspaceFolder}/build目录,即在build目录下进行该任务
command是任务命令
args是任务命令的参数,你可以将参数"../"移动到args中,也可以直接写到command中
4.创建第二个任务:该任务的通俗理解是在build文件夹下执行:make 命令
{
"type": "shell",
"label": "make",
"options": {"cwd": "${workspaceFolder}/build"},
"command": "make",
"args": [],
},
5.因为上述两个任务是独立的,因此我们将其整合为一个任务中,重新创建一个任务,该任务依赖上述两个任务,在调用该任务时,将顺次执行上述两个任务
{
"type": "shell",
"label": "build",
"dependsOrder": "sequence",
"dependsOn":[
"cmake",
"make",
],
},
可以看到该任务没有command成员,而是加入了dependsOn成员,故我将此理解为一个依赖任务;该任务的通俗理解是在build文件夹下顺次执行(sequence):cmake ../ + make 命令
最终我的tasks.json内容为:
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "cmake",
"options": {"cwd": "${workspaceFolder}/build"},
"command": "cmake ../",
"args": [],
},
{
"type": "shell",
"label": "make",
"options": {"cwd": "${workspaceFolder}/build"},
"command": "make",
"args": [],
},
{
"type": "shell",
"label": "build",
"dependsOrder": "sequence",
"dependsOn":[
"cmake",
"make",
],
},
]
}
(如何只执行其中一个任务:在vscode软件中按下 F1按键进入命令搜索模式,顶部会出来一个输入框,在框中输入tasks,会出来一个:"任务:运行任务"的选项,点击后可以看到你在tasks.json中配置的任务,你可以随便点击一个任务来运行该任务,后续弹出的选择框选择“继续而不扫描任务输出”即可。你也可以在"任务:运行任务"选项的右侧点击齿轮来设置对应的快捷键)
至此两个文件均已构建,那么如何能够让tasks.json在launch调试前发挥作用呢?
在launch.json文件的"configurations"的最后添加一个成员:"preLaunchTask",并指定要执行的任务为build标签对应的任务(也就是我们创建的最后一个任务的名称)。最后的launch.json文件如下:
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/demo",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
],
"preLaunchTask": "build",
}
]
}
至此,所有的json文件已完成,你可以尝试修改代码后直接按F5,将会自动执行cmake、编译并进入调试
F5是vscode的默认“Debug:开始调试”的快捷键
【22.6.10新发现】:在编写代码后,在没有task和launch两个json文件的情况下,直接按f5选择:
g++生成和调试活动文件 prelaunchTask:c/c++:g++生成活动文件
将会自动创建task.json文件并执行代码
eigen是c++的线性代数库,是用纯粹的头文件搭建起来的库,因此只存在头文件,不存在库文件,故无需进行库的链接,只需包含头文件即可
1.下载:终端输入如下命令即可
sudo apt-get install libeigen3-dev
一般下载到了/usr/include/eigen3
你也可以在终端输入如下命令查找
sudo updatedb #updatedb 命令用来创建或更新 slocate/locate 命令所必需的数据库文件locate eigen3
或者你也可以在CMakeLists.txt中加上如下内容进行路径显示
find_package(Eigen3)
if(Eigen3_FOUND)
#找到库后 EIGEN3_INCLUDE_DIR 才会有值
message("ok" ${EIGEN3_INCLUDE_DIR} )
endif(Eigen3_FOUND)
在编程中我没有添加eigen的头文件是可以的,只要将include写为:
#include
我在尝试添加eigen头文件并将include写为:#include
1.去github下载相应版本的库到你选择的文件夹下
https://github.com/stevenlovegrove/Pangolin
2.进入你选择的文件目录,做如下操作
//安装Pangolin所需依赖项
sudo apt-get install libglew-dev
sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev
//安装Pangolin
mkdir build //创建build文件夹
cd build //进入build文件夹
cmake ../ //cmake
make //make 编译
sudo make install //安装
最后一步很关键,我在安装时找了许多资料,很多都没有最后一步,导致在编程时,
#include
该句会报错(出现下划线) (但似乎能够正常make)
在进行最后一步操作后问题解决,下划线消失,且在输入Pangolin时有代码补充
在后续的学习中发现最后一句是必要的,查了一下该句的意思是将库安装到指定地址;这个安装地址和安装的库是在顶层CMakeLists.txt文件中指定的,你打开该文件可以看到如下内容:
install(
TARGETS ${component_list}
EXPORT ${PROJECT_NAME}Targets
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
RUNTIME DESTINATION bin
INCLUDES DESTINATION include
)
install(
FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
DESTINATION ${CMAKECONFIG_INSTALL_DIR}
)
install(
EXPORT ${PROJECT_NAME}Targets DESTINATION ${CMAKECONFIG_INSTALL_DIR}
)
为什么要安装库呢,你可以把安装理解为将库文件拷贝到本地,因为你在make时,生成的库文件只存在于你的build文件夹中,若想让其他代码找到这些库,最好将其都安装到本地(也就是拷贝到本地)
3.在你项目的CMakeLists.txt中添加两行内容(out为你生成的可执行文件)
find_package( Pangolin )
target_link_libraries( out ${Pangolin_LIBRARIES} ) #链接库
4.如果有报错建议补充执行:
sudo ldconfig
我在执行生成的可执行代码时,如果没有该句命令会出现如下报错:
error while loading shared libraries: libpango_core.so: cannot open shared object file: No such file or directory
原因:安装完成某个工程后生成许多动态库,为了让这些动态链接库为系统所共享,还需运行动态链接库的管理命令–ldconfig
补充:
问题:在执行slam14讲中的trajectory代码时,偶然出现了如下错误
解决:重启系统便恢复正常
启发:在遇到突发的BUG时,第一解决策略就是重启
X11 Error: BadValue (integer parameter out of range for operation)
X11 Error: BadValue (integer parameter out of range for operation)
terminate called after throwing an instance of 'std::runtime_error'
what(): Pangolin X11: Failed to create an OpenGL context
已放弃 (核心已转储)
关于fmt编译报错解决方案的一篇博客:视觉SLAM十四讲 报错ch13 问题汇总 /usr/bin/ld: /usr/local/lib/libfmt.a(format.cc.o)_CSSDCC的博客-CSDN博客
该博文中建议在编译fmt之前在fmt的CMakeLists中添加
add_compile_options(-fPIC)
以防止后续出现该类报错
安装步骤:
进入到你需要下载的目录
git clone https://github.com/strasdat/Sophus.git
cd Sophus
mkdir build
cd build
cmake ../
依照上述步骤进行,会出现如下报错:
By not providing "Findfmt.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "fmt", but
CMake did not find one.
因为Sophus需要依赖fmt库,因此优先安装fmt:
在进行如下安装步骤:
进入到你需要下载fmt的目录
git clone https://github.com/fmtlib/fmt.git
cd fmt
mkdir build
cd build
cmake ../
make
sudo make install
进入到你需要下载Sophus的目录
git clone https://github.com/strasdat/Sophus.git
cd Sophus
mkdir build
cd build
cmake ../
make
sudo make install(书上说只需编译即可,无需安装,但我将下载的包删除后发现依然无法找到Sophus库,所以我还是把他install到系统中了)
最后的make之后又出现了一大堆报错,例如:
/usr/local/include/fmt/core.h:3264:44: in constexpr expansion of ‘fmt::v8::make_format_args<>((* & args#0))’
/usr/local/include/fmt/core.h:1724:3: error: static assertion failed: Cannot format an argument. To make type T formattable provide a formatter specialization: https://fmt.dev/latest/api.html#udt
static_assert(
^~~~~~~~~~~~~
看到这篇博主写的后(fmt/core.h:1711:3: error: static assertion failed: Cannot format an argument.解决方案_荡神咩的博客-CSDN博客),我又重新下了一个8.1.1版本(之前下的为:fmt (GNU coreutils) 8.28),这次直接在官网上搜索该版本下载(之前的版本没删),重新安装后问题解决
完成安装后,发现虽然Sophus可以用,但在包含头文件#include
解决:将鼠标放在下划线处,会弹出报错框:
无法打开源文件 "Eigen/Dense" (dependency of "sophus/so3.hpp")
点击下面的快速修复,选择:
添加到"includePath":/usr/include/eigen3
你会在左侧工程栏中的.vscode中发现一个c_cpp_properties.json文件,里面包含了"/usr/include/eigen3",至此,红色下划线消失
之前有尝试在CMakeLists.txt中直接添加eigen3的头文件路径,但无法解决下划线问题
1.安装依赖项
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev libtbb-dev
2.下载opencv(我下载的版本是3.4.16)
3.进入解压后的文件夹,进行安装
mkdir build
cd build
cmake ../
make -j4
sudo make install
打开vscode的设置 -> 搜索cpp standard -> 找到C_Cpp>Default: Cpp Standard -> 可以选择你想要的标准
对‘fmt::v8::detail::assert_fail(char const*, int, char const*)’未定义的引用
原因:未链接fmt的库,在CMAKE中找到库并链接便可解决
1.安装依赖项
sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-dev
2.下载ceres
git clone https://github.com/ceres-solver/ceres-solver
3.安装ceres
mkdir build
cd build
cmake ../
make -j4
然后....make时就疯狂报错,比如:
error: ‘exclusive_scan’ is not a member of ‘std’
然后看到这篇文章后:SLAM疑难篇一:ceres安装和编译报错——实践高翔SLAM十四讲_j_shuttworth的博客-CSDN博客_ceres
我直接去ceres官网上重新下载
1.进入ceres官网
1.进入ceres官网
http://ceres-solver.org/installation.html#linux
2.点击“latest stable release”(最新的稳定版本),开始下载tar.gz压缩包
3.解压后进入文件夹
by the way:官网往下翻会有ceres库的指导安装过程,包括其依赖项等
4.安装:
mkdir build
cd build
cmake ../
make -j16 (成功无报错)
sudo make install
最后在CMakeLists.txt中添加然后执行cmake命令,会显示ceres found!,即成功安装
find_package(Ceres REQUIRED)
if(Ceres_FOUND)
message(STATUS "ceres found ! " )
endif()
后续发现在cmake工程时会出现以下两条信息:
-- Did not find Intel TBB library, assuming SuiteSparseQR was not compiled with TBB.
-- Could NOT find METIS (missing: METIS_INCLUDE_DIR METIS_LIBRARY)
第一个暂未解决!暂未发现有影响!
第二个输入以下一句便可解决
sudo apt-get install libmetis-dev
22.06.16第一次使用Ceres:
在包含ceres头文件后进行编译,会产生报错:
/usr/local/include/ceres/internal/fixed_array.h:33:10: fatal error: Eigen/Core: 没有那个文件或目录
#include// For Eigen::aligned_allocator
按照这篇文章的办法使问题得到解决:ceres-solver&eigen fatal error: Eigen/Core: No such file or directory #include <Eigen/Core> // For_me,too的博客-CSDN博客
1.安装依赖项
sudo apt-get install qt5-qmake qt5-default libqglviewer-dev-qt5 libsuitesparse-dev libcxsparse3 libcholmod3
2.下载g2o库
git clone https://github.com/RainerKuemmerle/g2o
3.进入g2o文件夹
4.安装
mkdir build
cd build
cmake ../
cmake时产生报错:
CMake Error at CMakeLists.txt:1 (cmake_minimum_required):
CMake 3.14 or higher is required. You are running version 3.10.2
vscode自带的cmake版本低了,因此我下一个新版的cmake(后续的操作中又重新换回了之前的版本(3.10.2),因为最新版本的会有一些新规则)
先删除老版本:
sudo apt remove cmake
如果是下载的源码安装的,则在下载的文件中使用:
sudo make uninstall
进行删除
进入官网Download | CMake下载最近发行版本(Latest Release),我下载的版本是3.23.1
进入解压后的cmake文件夹进行安装:
这次安装直接输入:
./bootstrap
然后有报错:
Could not find OpenSSL. Install an OpenSSL development package or...
缺依赖项,那就直接安装
sudo apt-get install libssl-dev
./bootstrap(无报错)
make
sudo make install(可以看到默认安装地址为/usr/local/share)
最后cmake --version 可以看到刚才安装的版本号
------------回到g2o的安装
接着执行:
cmake ../
make -j16
sudo make install
安装完成,无报错!
后续发现在cmake工程时会出现Warming:
CMake Warning (dev) at /usr/local/share/cmake-3.23/Modules/FindOpenGL.cmake:315 (message):
Policy CMP0072 is not set: FindOpenGL prefers GLVND by default when
available. Run "cmake --help-policy CMP0072" for policy details. Use the
cmake_policy command to set the policy and suppress this warning.
依据CMP0072 — CMake 3.23.1 Documentation
在CMakeLists.txt中添加以下一行解决问题
cmake_policy(SET CMP0072 NEW)
22.06.16首次编译g2o代码发现问题:
首先是各种函数找不到 -----原因是没有把g2o的库链接到可执行文件,且find_package(G2O REQUIRED)中g2o应当是大写
在CMakeLists.txt中添加相关库链接时,发现链接的内容如:${G2O_CORE_LIBRARY},${G2O_STUFF_LIBRARY}
后续发现在安装时有个小细节丢le:
在安装完g2o后,不要急着删掉解压的安装包,把里面的cmake_modules文件夹复制出来,放在你的工程文件下,然后在CMakeLists.txt中添加如下内容,此后库文件就不是空的了
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/[dir])
其中${PROJECT_SOURCE_DIR}/[dir]为你cmake_modules的路径
1.git clone https://github.com/dorian3d/DBoW2
2.进入下载目录
3.安装:
mkdir build
cd build
cmake ..
make
sudo make install
22.06.20:
重新安装了DBoW3
1.git clone https://github.com/rmsalinas/DBow3
2.进入下载目录
3.安装:
mkdir build
cd build
cmake ..
make (会有一些警告,直接忽略)
sudo make install
直接用sudo apt-get install libpcl-dev pcl-tools安装会出现Ensenso,DSSDK,RSSDK无法找到的情况,暂未解决,故删了后按照该博文进行手动下载安装
Ubuntu18.04安装PCL(详细教程)_一盆柠檬的博客-CSDN博客_ubuntu安装pcl
但是在cmake阶段,出现了一些问题:
1.Could NOT find ClangFormat (missing: ClangFormat_EXECUTABLE ClangFormat_VERSION) (Required is at least version "10")
解决方法:sudo apt-get install clang-format-10
2.Checking for module 'metslib'-- No package 'metslib' found
解决办法:参考Ubuntu18.04安装PCL遇到的问题_yunluoxiaobin的博客-CSDN博客
(1)https://www.coin-or.org/download/source/metslib/metslib-0.5.3.tgz
(2)执行:
sh ./configure
make
sudo make install
3.The CUDA compiler identification is unknown
解决办法:参考报错 The CUDA compiler identification is unknown;No CMAKE_CUDA_COMPILER could be found._wangxinRS的博客-CSDN博客
4.The imported target "vtkRenderingPythonTkWidgets" references the file
"/usr/lib/x86_64-linux-gnu/libvtkRenderingPythonTkWidgets.so"
but this file does not exist解决办法:sudo ln -s /usr/lib/python2.7/dist-packages/vtk/libvtkRenderingPythonTkWidgets.x86_64-linux-gnu.so /usr/lib/x86_64-linux-gnu/libvtkRenderingPythonTkWidgets.so
5.The imported target "vtk" references the file
"/usr/bin/vtk"
but this file does not exist解决办法:sudo ln -s /usr/bin/vtk7 /usr/bin/vtk
6.Could NOT find Pcap (missing: PCAP_LIBRARIES PCAP_INCLUDE_DIRS)
解决办法:参考Could NOT find PCAP (missing: PCAP_LIBRARIES PCAP_INCLUDE_DIRS)_HeyMountain的博客-CSDN博客
在make阶段,出现了一些问题:
1.没有规则可制作目标“/usr/lib/libOpenNI2.so
原因:libOpenNI2.so.0文件进而缺失libOpenNI2.so与其的链接
解决办法:参考make: *** 没有规则可以创建“/usr/lib/x86_64-linux-gnu/libGL.so”需要的目标“XXX”。 停止_抢地生蔓的博客-CSDN博客
(1)删除sudo apt-get remove libopenni2-dev libopenni2-0
(2)重新下载sudo apt-get install libopenni2-dev
在安装ROS系统后,pcl编译出现了一些问题,所以直接将软件包安装的pcl又给卸载了(直接删除相关文件),之后的编译出现了以下问题:
(1)没有规则可制作目标“/usr/lib/x86_64-linux-gnu/libpcl_common.so”
原因:参考前面的原因,是因为.so的软链接文件丢失
解决办法:用sudo apt-get remove 卸载pcl然后重装也无法还原软链接,后来直接在其他电脑拷贝相关软链接文件后解决问题
(2)
-- Could NOT find ensenso (missing: ENSENSO_LIBRARY ENSENSO_INCLUDE_DIR)
** WARNING ** io features related to ensenso will be disabled
-- Could NOT find DAVIDSDK (missing: DAVIDSDK_LIBRARY DAVIDSDK_INCLUDE_DIR)
** WARNING ** io features related to davidSDK will be disabled
-- Could NOT find DSSDK (missing: _DSSDK_LIBRARIES)
** WARNING ** io features related to dssdk will be disabled
** WARNING ** io features related to pcap will be disabled
** WARNING ** io features related to png will be disabled
** WARNING ** io features related to libusb-1.0 will be disabled
-- Could NOT find ensenso (missing: ENSENSO_LIBRARY ENSENSO_INCLUDE_DIR)
** WARNING ** visualization features related to ensenso will be disabled
-- Could NOT find DAVIDSDK (missing: DAVIDSDK_LIBRARY DAVIDSDK_INCLUDE_DIR)
** WARNING ** visualization features related to davidSDK will be disabled
-- Could NOT find DSSDK (missing: _DSSDK_LIBRARIES)
** WARNING ** visualization features related to dssdk will be disabled
-- Could NOT find RSSDK (missing: _RSSDK_LIBRARIES)
** WARNING ** visualization features related to rssdk will be disabled解决办法:由于暂无影响,且不影响编译,故暂不理会
Could NOT find GTest (missing: GTEST_LIBRARY GTEST_MAIN_LIBRARY)
记录 Could NOT find GTest (missing: GTEST_LIBRARY GTEST_MAIN_LIBRARY) 解决方法_Numberors的博客-CSDN博客
1.本质矩阵 - 奇异值
【学长小课堂】什么是奇异值分解SVD--SVD如何分解时空矩阵_哔哩哔哩_bilibili
矩阵的【奇异值分解】(SVD),图像压缩_哔哩哔哩_bilibili
[SLAM] -- 证明本质矩阵E的内在性质_z轴的博客-CSDN博客_本质矩阵的内在性质
从本质矩阵恢复相机矩阵_kokerf的博客-CSDN博客_本质矩阵分解
立体视觉入门指南(2):关键矩阵(本质矩阵,基础矩阵,单应矩阵) - 知乎
为什么尺度等价性要减少一个自由度(本质矩阵举例)_CSSDCC的博客-CSDN博客_尺度等价性
【 图像梯度 | L-K基础知识】如何理解L-K光流计算中的图像梯度? - 哔哩哔哩
2.关于LK光流的讲解
http://www.cs.cmu.edu/~16385/s15/lectures/Lecture21.pdf
经典光流算法Lucas-Kanade(有图助理解)_木盏的博客-CSDN博客_lucaskanade光流法流程图
Lucas-Kanade稀疏光流法 - 简书
3.关于范数
向量的【范数】:模长的推广,柯西不等式_哔哩哔哩_bilibili
4.关于一阶梯度和二阶梯度法(牛顿法)
《迭 代》 | 牛顿迭代法与最速下降法 | 机器学习 最优化 数值计算_哔哩哔哩_bilibili
第4.3讲-牛顿法(上)_哔哩哔哩_bilibili
“随机梯度下降、牛顿法、动量法、Nesterov、AdaGrad、RMSprop、Adam”,打包理解对梯度下降法的优化_哔哩哔哩_bilibili
视觉SLAM笔记--第4篇: 高斯牛顿法(GN)和列文伯格-马夸特算法(LM)的算法流程,优劣分析_w风的季节的博客-CSDN博客_马夸特算法
5.关于病态矩阵,矩阵条件数
9 矩阵的条件数_哔哩哔哩_bilibili
6.关于双线性差值法
图像处理-双线性插值_哔哩哔哩_bilibili
7.中心差分法求导
数值微分|中心差分法(Central Finite Difference Approximations) - 云+社区 - 腾讯云
8.关于对极几何的尺度等价性
本质矩阵的几何意义及其性质和分解 - 知乎
8.超定方程组的最小二乘解
超定方程的求解、最小二乘解、Ax=0、Ax=b的解,求解齐次方程组,求解非齐次方程组(推导十分详细)_一点儿也不萌的萌萌的博客-CSDN博客_超定方程求解
9.关于位姿图
SLAM14讲学习笔记(七)后端(BA与图优化,Pose Graph优化的理论与公式详解、因子图优化)_zkk9527的博客-CSDN博客_因子图优化
10.关于14讲回环检测中的一点补充
k-mean聚类针对的是特征点的描述子,即依据描述子(一个m维向量)进行分类,故应在向量空间中进行实现。在向量空间中,每个特征点的描述子均可看成一个点分布于m维向量空间,因此在k-mean算法的第一步:随机选取k个中心点时,应当是在向量空间中进行随机选点,即这些随机点是一些m维向量
验证方法:在获取词袋后,打印一个单词的尺寸,这个结果将与你的描述子尺寸是一致的
11.关于多线程
c++11并发于多线程_2章_8节_哔哩哔哩_bilibili
C++ std::thread join()的理解 - 代萌 - 博客园
12.关于slam14讲第13讲代码注释
slam14讲之设计slam系统(第二版ch13)代码注释一(前端)_MIKingZCC的博客-CSDN博客
13.关于代码中的三角化公式来源
三角测量(Triangulation 三角化)与 SVD 求解_村口电器铺老世的博客-CSDN博客_三角化测量
14.安装参考
Ubuntu18.04安装Ros(最新最详细亲测)_向日葵骑士Faraday的博客-CSDN博客_ubuntu18.04安装ros
15.vins-mono,gvins运行参考
VINS-Mono笔记01_VINS-Mono的编译运行_ncepu_Chen的博客-CSDN博客_vinsmono运行
跑通GVINS——港科大新作_小海盗haner的博客-CSDN博客_gvins运行
16.关于RTK的解释
GPS、RTK、PPK三种定位技术的原理及应用_外来务工人员徐某的博客-CSDN博客_rtk定位原理
17.关于左右扰动的理解
四元数及error-state kalman | HyperPlane
18.关于马氏距离
马氏距离通俗解读_大写的ZDQ的博客-CSDN博客
19.关于 VIO中残差雅可比推导
VIO 中残差雅可比的推导
移动机器人位姿不同的表示方法
20.关于多元高斯分布的推导过程和理解(已检验-删除多余链接)
多元高斯密度函数完全看不懂怎么办? - 知乎
多元线性回归(高斯分布--->最小二乘法) - 知乎
21.关于vins-mono
VINS-Mono论文学习与代码解读——目录与参考_Manii的博客-CSDN博客_vinsmono代码解读
VINS论文解读与代码详解(集百家之精华)_月夕花晨KaCa的博客-CSDN博客_vins 论文
【SLAM】VINS-MONO解析——综述_iwander。的博客-CSDN博客_vins解析
22.imu
毕业设计总结(惯性导航)_ctoast001的博客-CSDN博客
互补滤波:为什么用向量叉积PI滤波补偿?_不会写代码的美年达的博客-CSDN博客
23.随机游走
马尔可夫模型_Fitz1318的博客-CSDN博客_马尔科夫模型
馬可夫過程 - 中文维基百科【维基百科中文版网站】
二阶和三阶马尔可夫特征是什么?_百度知道
24.imu与相机融合
SLAM_相机与imu的融合基础知识_惊鸿一博的博客-CSDN博客_imu与相机融合
25.gvins学习(已检验)
GVINS 原理推导+源码阅读(1) - 知乎
四、GNSS测量误差来源及其影响_竺元枫的博客-CSDN博客_gnss误差来源及分类
“GPS定位”学习笔记 - 知乎