前置:
Nvidia JetsonTx2 Ubuntu18.04 刷机教程(详细排雷)_prophet_xh的博客-CSDN博客_tx2 虚拟机
Nvidia JetsonTx2 Ubuntu18.04 安装 ros melodic(顺带快速解决sudo rosdep init问题)_prophet_xh的博客-CSDN博客
Nvidia TX2 Ubuntu18.04 安装 IntelRealsense L515 realsense SDK 及 Realsense ROS (make各种问题解答,一篇到位版本)_prophet_xh的博客-CSDN博客
再次强调,不谈环境的安装教程纯属耍流氓。本教程适用于Nvidia TX2 ,cuda 10,ubuntu18.04的环境,并不通用,对其他的版本只起到参考作用。
继完成一系列环境配置后,准备开始用tx2进行rtabslam。但由于刷完机的板子自带的4.1.1的opencv版本,所以我们需要安装opencv3.2.0
没有必要去卸载opencv4,ubuntu下支持多版本的opencv共存,盲目卸载反而会引发更多问题。
1.首先去下载opencv3.2.0的sourse文件。
Releases - OpenCV
去上面这个官网找到3.2.0的版本(一页页翻),下载完成以后,可以提取到home目录下
如果下载慢,就点这个下,不用积分的哈
opncv3.2.0的官方代码包-机器学习文档类资源-CSDN下载
1.1安装一些依赖,一般opencv刷完机就已经存在了,这里补充记录下,刷机完成的用户可以跳过下面,直接到步骤2
sudo apt-get install cmake
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev
这里可能有这个问题
E:无法定位软件包libjasper-dev
解决方案
一般的教程中是 sudo add-apt-repository "……" ,然后即可解决
但是很明显tx2的架构和一般的ubuntu系统不同
如果贸然使用,会出现
E:无法下载http://security.ubuntu.com/ubuntu/dists/xenial-security/main/binary-arm64/Packages 404 Not Found [IP: 91.189.91.38 80]
如果使用了一般教程的解决方案,而没有解决
此时,我们先把刚刚添加的 sudo add-apt-repository "……"去除掉(“.....”是你刚刚添加的ppa,每个教程里的都不一样,我就用'......'来替代泛指一下)
sudo add-apt-repository -r "......"
然后添加tx架构的 ppa
sudo add-apt-repository "deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe"
sudo apt update
sudo apt install libjasper1 libjasper-dev
解决完毕
2.编译
cd opencv-3.2.0
mkdir build
cd build
再在终端输入下面这么一长段,直接复制到终端即可,这些配置适用于cuda10,其他环境请酌情配置
关于CMAKE_INSTALL_PREFIX=/usr/local/opencv320是你的安装路径,那你也可以写其它的
本文opencv320是自己加的文件夹,你可以取其它名字
该路径会影响到后期我们配置cv_birdge 或者 cmake list,记住你安排的路径
一般的CMAKE_INSTALL_PREFIX=/usr/local,这也是opencv默认安装路径
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv320 -D BUILD_PNG=OFF -D BUILD_TIFF=OFF -D BUILD_TBB=OFF -D BUILD_JPEG=OFF -D BUILD_JASPER=OFF -D BUILD_ZLIB=OFF -D BUILD_EXAMPLES=ON -D BUILD_opencv_java=OFF -D BUILD_opencv_python2=ON -D BUILD_opencv_python3=OFF -D ENABLE_PRECOMPILED_HEADERS=OFF -D WITH_OPENCL=OFF -D WITH_OPENMP=OFF -D WITH_FFMPEG=ON -D WITH_GSTREAMER=ON -D WITH_GSTREAMER_0_10=OFF -D WITH_CUDA=ON -D WITH_GTK=ON -D WITH_VTK=OFF -D WITH_TBB=ON -D WITH_1394=OFF -D WITH_OPENEXR=OFF -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-10.0 -D CUDA_ARCH_BIN=6.2 -D CUDA_ARCH_PTX="" -D INSTALL_C_EXAMPLES=ON -D INSTALL_TESTS=ON -D OPENCV_TEST_DATA_PATH=…/opencv_extra/testdata -D WITH_LAPACK=OFF ..
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv320 -D BUILD_PNG=OFF -D BUILD_TIFF=OFF -D BUILD_TBB=OFF -D BUILD_JPEG=OFF -D BUILD_JASPER=OFF -D BUILD_ZLIB=OFF -D BUILD_EXAMPLES=ON -D BUILD_opencv_java=OFF -D BUILD_opencv_python2=ON -D BUILD_opencv_python3=OFF -D ENABLE_PRECOMPILED_HEADERS=OFF -D WITH_OPENCL=OFF -D WITH_OPENMP=OFF -D WITH_FFMPEG=ON -D WITH_GSTREAMER=ON -D WITH_GSTREAMER_0_10=OFF -D WITH_CUDA=ON -D WITH_GTK=ON -D WITH_VTK=OFF -D WITH_TBB=ON -D WITH_1394=OFF -D WITH_OPENEXR=OFF -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-10.0 -D CUDA_ARCH_BIN=6.2 -D CUDA_ARCH_PTX="" -D INSTALL_C_EXAMPLES=ON -D INSTALL_TESTS=ON -D OPENCV_TEST_DATA_PATH=…/opencv_extra/testdata -D WITH_LAPACK=OFF ..
一般这样在tx2,cuda10上cmake,不会出现报错,耐心等待即可
cmake结束后
make -j4
继续耐心等待
sudo make install
这里可能会报错
CMake Error at data/cmake_install.cmake:72 (file):
file INSTALL cannot find
"/home/prophet/opencv-3.2.0/…/opencv_extra/testdata".
Call Stack (most recent call first):
cmake_install.cmake:89 (include)
不要慌,我们去打开这个在date下cmake文件
找到最后,发现是最后出现的问题,而最后是share,分享的功能,对应用不造成影响,可以如图,将后3行注释掉(因为是在home目录下,双击就能编辑)
继续
sudo make install
完成
3.配置环境
创建opencv.conf文件
sudo gedit /etc/ld.so.conf.d/opencv.conf
添加下面内容
/usr/local/opencv320/lib
完成以后,终端输入
sudo ldconfig
接着添加路径
sudo gedit /etc/bash.bashrc
在文件最后添加路径(路径要自己安装路径,比如前文我是/usr/local/opencv320)
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv320/lib/pkgconfig
export PKG_CONFIG_PATH
刷新一下下
source /etc/bash.bashrc
此时我们已经了opencv3.2.0的安装,如果没什么问题的话,重新打开一个终端,输入
pkg-config opencv --modversion
应该会显示当前的opencv版本是3.2.0
4.ros 配置
终于结束了安装,那我们如何去让ros引用,ros下自带的是opencv4.1.1
安装结束了,并不代表就能用上,我们必须去让ros使用,而我们也没有卸载opencv4
故,我们需要将ros与opencv3.2.0连接起来
此时,我们要做的是去更改cv_birdge文件
打开cv_birdgeconfig.cmake文件
sudo gedit /opt/ros/melodic/share/cv_bridge/cmake/cv_bridgeConfig.cmake
修改画线的几行,注释掉的是原文件,下方的是改完的,根据自己的路径该:
像图片中这样改 ,一共是三处。
把
if(NOT "include;/usr/include;/usr/include/opencv " STREQUAL " ")
改成
if(NOT "include;/usr/local/opencv320/include/opencv2;/usr/local/opencv320/include/opencv " STREQUAL " ")
把
set(_include_dirs "include;/usr/include;/usr/include/opencv4")
改成
set(_include_dirs "include;/usr/local/opencv320/include/opencv2;/usr/local/opencv320/include/opencv;/usr/local/opencv320/include;/usr/include")
把
set(libraries "cv_bridge;/usr/lib/aarch64-linux-gnu/libopencv_core.so.3.2.0;/usr/lib/aarch64-linux-gnu/libopencv_imgproc.so.3.2.0;/usr/lib/aarch64-linux-gnu/libopencv_imgcodecs.so.3.2.0")
改成
set(libraries "cv_bridge;/usr/local/opencv320/lib/libopencv_core.so.3.2.0;/usr/local/opencv320/lib/libopencv_imgproc.so.3.2.0;/usr/local/opencv320/lib/libopencv_imgcodecs.so.3.2.0")
保存退出!
目前为止已经完成opencv3.2.0安装及ros环境配置
下一章将进行rtabmap的安装!