1 安装Kalibr
使用kalibr工具标定ZED2双目相机
1)安装依赖项
sudo apt-get install python-setuptools python-rosinstall ipython libeigen3-dev libboost-all-dev doxygen libopencv-dev ros-melodic-vision-opencv ros-melodic-image-transport-plugins ros-melodic-cmake-modules software-properties-common software-properties-common libpoco-dev python-matplotlib python-scipy python-git python-pip ipython libtbb-dev libblas-dev liblapack-dev python-catkin-tools libv4l-dev
2)安装igraph
sudo pip install python-igraph --upgrade
若出现错误,可尝试
sudo add-apt-repository ppa:igraph/ppa
sudo apt-get update # update your package database
sudo apt-get install python-igraph
这个方法会自动帮你下载igraph的依赖包,完成之后,查看目录/usr/lib/python2.7/dist-packages/就可以看到python-igraph安装成功.
3)创建工作区间
mkdir -p ~/kalibr_workspace/src
cd ~/kalibr_workspace
source /opt/ros/melodic/setup.bash
catkin init
catkin config --extend /opt/ros/melodic
catkin config --merge-devel # Necessary for catkin_tools >= 0.4.
catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release
4)下载源码
cd ~/kalibr_workspace/src
git clone https://github.com/ethz-asl/Kalibr.git
5)编译源码
cd ~/kalibr_workspace
catkin build -DCMAKE_BUILD_TYPE=Release -j4
时间有点长,耐心等待它完成。
**2 下载编译code_utils、imu_utils **
用imu_utils标定IMU,依次安装编译code_utils、imu_utils。
注意,不要同时把imu_utils和code_utils一起放到src下进行编译。
由于imu_utils 依赖 code_utils,所以先把code_utils放在工作空间的src下面,进行编译。然后再将imu_utils放到src下面,再编译。
~/imu_utils/src$ git clone https://github.com/gaowenliang/code_utils
catkin_make
编译时出现编译错误,路径错误
解决办法:
在CMakeLists.txt中加入包含路径:include_directories( “include/code_utils”)
重新编译,出现
解决:
执行指令sudo apt-get install libdw-dev
再次编译,通过。
~/imu_utils/src$ git clone https://github.com/gaowenliang/imu_utils
cd ../
catkin_make
编译成功,此过程完成。
此处加段CUDA介绍:
统一计算设备架构(Compute Unified Device Architecture, CUDA),是由NVIDIA推出的通用并行计算架构。解决的是用更加廉价的设备资源,实现更高效的并行计算。
cuda是英伟达(NVIDIA)推出的——这个英伟达是何方神圣?没听说过英伟达,也应该听说过GPU了吧。没错,提出GPU概念的,正是英伟达。和中央处理器(Central Processing Unit, CPU)相对,图形处理器(Graphics Processing Unit, GPU)是显卡的核心芯片。而cuda正是暴露了英伟达开发的GPU的编程接口。
几乎所有的编程语言,不使用特定框架,都只能实现CPU编程——std::thread也是将线程开在CPU中。而不同于每一位程序员都接触过的CPU编程,GPU编程可以使用更多的流处理器、更多的线程数。
1 下载
下载链接的页面中有对应的cuda版本,这里我选择的是cuda 10.2、ZED SDK for Ubuntu 18这两个驱动版本。
ZED2 SDK 官方网站:https://www.stereolabs.com/developers/release/
CUDA10.2下载链接:https://developer.nvidia.com/cuda-10.2-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1804&target_type=deblocal
2 安装Nvidia驱动
快捷安装,打开软件和更新->附加驱动,自动搜索显卡驱动,选择其中一个驱动版本;点击应用更改等待安装完成,重启即可;(如下图)
3 安装CUDA
1)按照下载界面的命令行安装。
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
sudo apt-key add /var/cuda-repo-10-2-local-10.2.89-440.33.01/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda
最后一步安装,如果一直回车是同样的界面,可尝试复制粘贴或打入sudo gedit /etc/apt/sources.list再回车也去问题就解决了,因为安装过程出现了,进度也出现了。
在用apt-get安装软件包的时候遇到E: Sub-process /usr/bin/dpkg returned an error code (1)问题,解决方法如下:
1 cd /var/lib/dpkg/
2 sudo mv info/ info_bak # 现将info文件夹更名
3 sudo mkdir info # 再新建一个新的info文件夹
4 sudo apt-get update # 更新
5 sudo apt-get -f install # 修复
6 sudo mv info/* info_bak/ # 执行完上一步操作后会在新的info文件夹下生成一些文件,现将 这些文件全部移到info_bak文件夹下
7 sudo rm -rf info # 把自己新建的info文件夹删掉
8 sudo mv info_bak info # 把以前的info文件夹重新改回
2)配置CUDA环境变量
sudo gedit ~/.bashrc
在.bashrc末尾添加两行环境变量
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64
保存并退出;并执行
source ~/.bashrc
4 重启电脑,并测试CUDA
cd /usr/local/cuda-10.2/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
显示失败
./deviceQuery Starting...
CUDA Device Query (Runtime API) version (CUDART static linking)
cudaGetDeviceCount returned 100
-> no CUDA-capable device is detected
Result = FAIL
这个原因是由于Nvidia驱动没有安装成功,关于Ubuntu18.04安装Nvidia驱动问题真是折腾了好久,埋了好多坑依旧无法解决,最终为了放过自己,选择换个系统继续,具体原因和解决过程见博客 ubuntu18.04安装NVIDIA驱动的心酸(失败)经历及解决方法(换系统成功)
Nvidia 驱动安装成功后,从上面的图中可以看到我的显卡最高可以支持cuda11.4,重复以上CUDA安装过程:
下载cuda:https://developer.nvidia.com/cuda-toolkit-archive
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget http://developer.download.nvidia.com/compute/cuda/11.0.2/local_installers/cuda-repo-ubuntu2004-11-0-local_11.0.2-450.51.05-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2004-11-0-local_11.0.2-450.51.05-1_amd64.deb
sudo apt-key add /var/cuda-repo-ubuntu2004-11-0-local/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda
查看CUDA
nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2020 NVIDIA Corporation
Built on Thu_Jun_11_22:26:38_PDT_2020
Cuda compilation tools, release 11.0, V11.0.194
Build cuda_11.0_bu.TC445_37.28540450_0
重启nvidia驱动不显示了,啊啊啊啊啊啊~
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver
经排查,怀疑是CUDA版本与NVIDIA驱动版本不一致导致,想到之前步骤,所以乖乖重新安装CUDA11.4版本。 原谅我的无知,安装CUDA 11.4以下(包括)版本都可以,该问题解决方案请看解决NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver
Nvidia驱动安装见博客ubuntu18.04安装NVIDIA驱动的心酸(失败)经历及解决方法(换系统成功)
找到自己需要的cuda版本如下选择,最下面虚线框内会给出下载和命令下载CUDA
wget https://developer.download.nvidia.com/compute/cuda/11.4.0/local_installers/cuda_11.4.0_470.42.01_linux.run
sudo sh cuda_11.4.0_470.42.01_linux.run
(我没遇到这个问题,建议换网络测试)第一条语句可能执行后下载到99%时,可能会报错 “S段错误”,当时搜了半天有说下载的trunk size太小巴拉巴拉的,捣鼓一通也没解决,后来猜测可能时因为文件太大了直接wget才报错的,这时我们用另一个方法进行下载
使用axel进行下载,axel是一个多线程的下载工具,具体是什么请自行百度
sudo apt install axel
# 下载cuda
# -n 50 指的是使用50个线程进行下载
axel -n 50 http://developer.download.nvidia.com/compute/cuda/11.0.2/local_installers/cuda_11.0.2_450.51.05_linux.run
下载完成后进行cuda安装
cd到下载的cuda所在目录执行第二条语句
可能报错解决方案
1)如果报下面的错误提示,是因为下载的cuda出错了,重新下载再安装即可。
Extraction failed.
Ensure there is enough space in /tmp and that the installation package is not corrupt Signal caught, cleaning up
2)ubuntu 20.04LTS下安装cuda时提示/tmp空间不足问题的解决方案
网上查了一下资料,有博客说有两种原因:
1 安装包没下完整。本人在下载这个.run文件的过程中,确实多次遇到过下载到99%后突然报一个错的这种情况。(太坑了,看到报错的一瞬间整个人都裂开了)这一点上没啥特别的解决方案,就是多尝试几次,最后终于下载成功了。确保安装的错误来自第二种情况。
2就是让人心态崩溃的 tmp 上的磁盘空间不足。有博客上说新建一个文件夹,然后用软连接指向这个文件夹,本人尝试过了,也没有成功。下面说一下我的解决方案:
1.在/home下新建一个文件夹tmp。命令:sudo mkdir /home/tmp
2.官网给出的安装命令是:sudo sh cuda_11.4.0_470.42.01_linux.run。这里需要对该安装命令作一点修改,改为:
sudo sh cuda_11.4.0_470.42.01_linux.run --tmpdir=/home/tmp/
等几十秒,成功。
正常安装的情况下,会出现下面显示:
这是软件协议,跟普通软件安装时一样,这时输入: accept
在Driver处敲回车,选择不安装驱动,因为之前已经安装过驱动程序,这里是因为每个cuda都会自带一套符合当前版本cuda最低要求的驱动程序,如果这里选择安装的驱动的话,在Windows上安装时会将之前安装的驱动覆盖,但是在linux上覆盖安装的话,可能会出现错误,具体没有试过,如果想试试可以自行测试。我们使用之前自己下载的驱动。
然后按方向键将光标选中最后的Install再回车,开始安装,过一会儿会显示如下:
如果显示如上图,则表示安装完成,这时还不算安装成功,根据上面提示需要配置环境变量,进行如下操作:
# 打开.bashrc文件
gedit ~/.bashrc
在文件末尾输入如下内容并保存退出。
# 将下面的11.4替换为你的cuda版本,其他不变,如果不知道自己安装的是哪个版本,就去/usr/local/文件夹下找一下
export PATH=/usr/local/cuda-11.4/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.4/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
完事儿以后,执行如下命令更新变量,使其生效
source ~/.bashrc
在终端输入
nvcc -V
如果显示