SLAM十四讲ch5部分代码的运行
在学习SLAM十四讲的过程中,环境配置是一个很让人头大的事情。
在不了解C++和cmake的编译会遇到很多头大的错误(对于我自己来说),因此本文总结了一些我在运行ch5代码中犯过的一些困难便于学习,也希望对大家能有一点点的帮助。
代码运行环境:
ubuntu20.04
opencv4.5.3
IDE:vscode
ch5-imageBascis运行
程序不详细介绍,只写一下如何运行
方法一(终端运行)
进入/home/user/slambook2/ch5/imageBasics
目录中输入如下命令:
mkdir build && cd build
cmake ..
make
cd ..
build/imageBascis ubuntu.png #向程序传递参数
即可成功运行
方法二(vscode中运行)
使用vscode对代码进行调式只需要修改launch.json
文件如下即可
{
"version": "0.2.0",
"configurations": [
{
"name": "C/C++",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/build/${fileBasenameNoExtension}",
"args": ["${fileDirname}/ubuntu.png"], //传入图片参数
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"preLaunchTask": "Build",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
ch5-rgbd运行
运行该代码之前我们还需要安装pcl
库用来显示拼合的点云地图,pcl
库安装的终端命令如下:
sudo apt-get install libpcl-dev pcl-tools
安装好pcl库后,我们便可以运行代码,以终端命令运行为例如下:
mkdir build && cd build
cmake ..
make
./joinMap
如果没有出现点云图片,可以在build
文件夹或者build
上级文件夹执行如下命令
pcl_viwer map.pcd #运行完可执行文件会产生pcd文件,使用pcl_viwer即可查看点云
使用ide安装好pcl库运行即可
VSCode常用的launch.json和task.json配置
launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "C/C++",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/build/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"preLaunchTask": "Build",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
tasks.json
{
"version": "2.0.0",
"options": {
"cwd": "${workspaceFolder}/build"
},
"tasks": [
{
"type": "shell",
"label": "cmake",
"command": "cmake",
"args": [
".."
]
},
{
"label": "make",
"group": {
"kind": "build",
"isDefault": true
},
"command": "make",
"args": [
]
},
{
"label": "Build",
"dependsOrder": "sequence", // 按列出的顺序执行任务依赖项
"dependsOn":[
"cmake",
"make"
]
}
]
}