1.安装g++,打开终端,输入:
sudo apt-get install g++
g++是C++的一个编译器,在安装完之后,可以直接将.cpp文件编译成可执行文件.out
g++ hello_slam.cpp -o hello.out
./hello.out
输入sudo apt install git,后期安装库会用到
2.安装cmake,在终端下输入:
sudo apt-get install cmake
理论上,任意一个C++程序都可以用g++来编译,但是一个工程可能有许多文件夹和源文件,使用cmake会变得更加方便,cmake会生成一个makefile文件,然后用make命令根据makefile文件的内容来编译整个工程
CMakeLists.txt:
#声明要求的cmake最低版本
cmake_minimum_required(VERSION 2.8)
#声明一个cmake工程
project(HelloSlam)
#添加一个可执行程序
add_executable(helloSlAM hello_slam.cpp)
之后终端中输入cmake .对工程进行编译后会生成CMakefiles,再利用make对工程进行编译,
编译成功后在终端运行./helloSLAM,即可得到输出结果,运行指令为映射的节点名
更新:如果在安装一些库的时候提示cmake版本不足,参考以下博客:
Ubuntu升级Cmake的正确方式_cmake 升级_Liangtao`的博客-CSDN博客
3.使用库,学习如何使用cmake生成库,并且使用库中的函数,库中没有可执行程序
编写slambook中p33的hello库
add_library(hello libHelloSLAM.cpp)
这条命令告诉cmake,我们想把这个文件编译成一个叫做hello的库,使用cmake编译整个环境
4.安装VS Code ,参考下面链接:
1.4.2 安装VScode · Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程
下载链接:Documentation for Visual Studio Code
下载完之后,可以将VS Code添加到收藏夹,
安装几个插件C++、Python、Cmake Tools、中文插件chinese、ROS
5.在VS Code中添加自定义库:
右下角点击Linux,配置json,将自己编写的库文件和头文件添加
在c_cpp_properties.json的includePath里面添加引用库的头文件路径
在tasks.json里的args里添加头文件的库文件
6.安装Eigen库: 输入:
sudo apt-get install libeigen3-dev
Eigen是一个C++开源线性代数库,提供了快速的有关矩阵的线性代数运算,只有头文件!
许多上层的软件库也是用Eigen进行矩阵运算,包括g2o、Sophus等利用
sudo updatedb
locate eigen3
来进行eigen库的定位
如果ubuntu无法打开源文件eigen/core,是因为Eigen的库默认位置在"/usr/include/eigen3/Eigen"中,需要输入sudo ln -s /usr/include/eigen3/Eigen /usr/include/Eigen,将其映射到"/usr/include"中,(奇怪的是Eigen并没有库,照做就是)
7.安装OpenCV,之前在这里卡壳好多次了,我们安装的是3.2.0,参考:
高翔视觉slam第五讲:opencv版本冲突情况安装3.2+测试代码imageBasics_Evanzxh的博客-CSDN博客
手动下载 https://codeload.github.com/opencv/opencv/zip/3.2.0
下载完成之后如果跑代码失败,提示If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config
ubuntu安装、卸载opencv以及报错解决措施_MclarenSenna的博客-CSDN博客_卸载opencv报错
下面附上两个版本共存的操作,遇到了可以查看
Ubuntu下OpenCV2和OpenCV3共存的方法_qiqzhang的博客-CSDN博客
注意CMakeLists.txt文件的编写
如果使用find_package(OpenCV REQUIRED)的时候,其本质是去/usr/local/share下面寻找cmake文件,而两个版本的cmake文件同名,所以必然是后安装的版本覆盖前安装版本的cmake文件
如上图所示,OpenCV的cmake文件在 /usr/local/opencv3/share/OpenCV下面
所以要在find_package前面加上
set(OpenCV_DIR "usr/local/opencv3/share/OpenCV")
# 寻找OpenCV库
find_package( OpenCV REQUIRED )
# 添加头文件
include_directories( ${OpenCV_INCLUDE_DIRS} )
# 可执行程序
add_executable( imageBasics imageBasics.cpp )
# 链接OpenCV库
target_link_libraries( imageBasics ${OpenCV_LIBS} )
8.安装Ceres:
ubuntu18.04安装Ceres - 科研路上的绊脚石 - 博客园
9.安装Pangolin,详见下网址:
ubuntu18.04安装Pangolin - 科研路上的绊脚石 - 博客园
按照流程走,记住最后一步cmake --build .<br><code
class
=
"cpp plain hljs"
>sudo make install</code>,不用管他直接执行sudo make install
安装完之后,pangolin相关的程序可运行
报错:“
/usr/local/include/sophus/common.hpp:36:10: fatal error: fmt/core.h: 没有那个文件或目录”
可以参考:
视觉SLAM十四讲——第三四讲笔记_cmakefiles/trajectoryerror.dir/trajectoryerror.cpp_Cc1924的博客-CSDN博客
10.安装g2o:
ubuntu18.04安装g2o - 科研路上的绊脚石 - 博客园
error while loading shared libraries: libg2o_core.so: cannot open shared object file: No such file or directory:
在build文件夹目录环境下输入:sudo ldconfig
然后编译就可以了,因为g2o刚装,没生效。
11.安装Sophus:
装完可以运行ch4之前的程序,前提注意更改程序内语句的路径
ubuntu18.04安装sophus - 科研路上的绊脚石 - 博客园
安装好之后应该就可以运行ch4里的程序,前提是启动器需要提前配置好
12.安装Meshlab(ch9):
①终端安装:
sudo add-apt-repository ppa:zarquon42/meshlab
sudo apt-get install meshlab
②软件中心安装
参考
高翔视觉SLAM十四讲(第二版)各种软件、库安装的以及报错解决方法_m0_60355964的博客-CSDN博客_slam软件
13.安装DBoW3(ch11):
git clone https://github.com/rmsalinas/DBow3.git
按照cmake流程对它进行编译安装,在运行ch11里面的词袋模型程序时,提示:
没有规则可制作目标“/usr/local/lib/libDBoW3.a”,由“gen_vocab” 需求
解决办法:只需要将CMakeList.txt中的libDBow3.a改为libDBow3.so即可。
13安装PCL库(ch12):
只需要一条命令:
sudo apt-get install libpcl-dev pcl-tools
14.安装octomap库(ch12):
sudo apt-get install liboctomap-dev octovis
15.安装GTest(ch13):
在运行ch13的整体SLAM框架时,首先cmake会报错
这是因为没有安装GTest,直接用以下命令来进行
sudo apt-get install libgtest-dev
cd /usr/src/gtest
sudo mkdir build
cd build
sudo cmake .. //一定要以sudo的方式运行,否则没有写入权限
sudo make //这个也一样要以sudo的方式
sudo cp libgtest*.a /usr/local/lib //将生成的libgtest.a 和 libgtest_main.a 拷贝到系统的lib路径下
参考
[Ubuntu]GTest安装和测试_PangCoder的博客-CSDN博客_ubuntu18.04 gtest
①在cmake和make之后,我们需要运行bin/run_kitti_stereo,注意,这里有一个操作,即修改run_kitti_stereo.cpp文件,不要assert,在vo->Run()前面加一行vo->Init()
②还有一个细节就是,不要进入bin目录启动run_kitti_stereo,而是在ch13的终端下,输入./bin/run_kitti_stereo
最终可以看到整个SLAM框架的运行:
16.安装ROS-melodic:
第一步:sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
第二步:sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
第三步:(进行第三步的时候记得换阿里源,并切换外网)
sudo apt update
sudo apt install ros-melodic-desktop-full
第四步:(这一步可以不用管)
sudo rosdep init
rosdep update
如果失败:#打开hosts文件
sudo gedit /etc/hosts
#在文件末尾添加
151.101.84.133 raw.githubusercontent.com
#保存后退出再尝试
第五步:
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
最后一步:
sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential