Ubuntu18.04安装Autoware1.14-GPU版
以下安装包如果有需要的话可以评论或者私信我,我都有备份。
前面文章介绍了ROS Melodic和Cartographer的配置,基本我每一次安装Ubuntu系统都要安装这两个,毕竟跟我的研究方向是相关的,经常会用到。
这一次介绍一个巨难配置的环境:Autoware1.14,版本根据大家自己来,但不同的版本对应的一些依赖包的版本也不同,所以在安装配置前一定要确定好自己所需的依赖包和版本,这里介绍我的依赖包版本(大家最好根据我写的版本来,比如eigen-3.3.7,不知道高版本是否可行,但是3.3.7一定没问题):
Ubuntu: 18.04
Autoware: 1.14
Opencv: 3.4.0及以上(版本低一些不知道是否可行,但3.4.0肯定没问题)
Nvidia Driver: 410及以上
CUDA: 10.0(最好10.0,10.2以上可能会有问题)
cudnn: 10.0-linux-x64-v7.6.5.32
cmake: 3.12.2及以上
protobuf: 3.0.0(只能这个版本,一般系统自带)
Eigen: 3.3.7及以上
以上是带有GPU的配置,如果没有GPU的参考以下配置版本(没有GPU也不需要安装Nvidia驱动):
Ubuntu: 18.04
Autoware: 1.14
Opencv: 3.4.0及以上(版本低一些不知道是否可行,但3.4.0肯定没问题)
cmake: 3.12.2及以上
protobuf: 3.0.0(只能这个版本,一般系统自带)
Eigen: 3.3.7及以上
配置安装:
1 Nvidia Driver
sudo apt-get update
sudo apt-get upgrade
在更新显卡驱动前最好先执行上面两步,否则容易更新显卡驱动重启后进不去系统;
显卡驱动我是通过系统自带的“软件与更新——附加驱动”选择的,CUDA10.0版本对应的显卡驱动要求是410及以上,不同的CUDA版本对应不同的驱动版本,这个可以在网上查到的(不过Autoware也可以不用GPU,这样就不用CUDA了);
检查显卡驱动更新是否成功:
nvidia-smi
如果更新成功显示如下:
2 cmake
下载cmake包:
wget https://cmake.org/files/v3.12/cmake-3.12.2-Linux-x86_64.tar.gz
tar zxvf cmake-3.12.2-Linux-x86_64.tar.gz #解压
sudo ln -sf /home/luo/cmake-3.12.2-Linux-x86_64/bin/* /usr/bin/ #注意自己的cmake安装路径
这里我的cmake安装路径是/home/luo下,根据自己的安装路径对应着修改第三行代码即可,然后检查安装版本是否正确:
cmake --version #检查版本
3 Eigen
下载Eigen包:
cd && wget http://bitbucket.org/eigen/eigen/get/3.3.7.tar.gz
mkdir eigen && tar --strip-components=1 -xzvf 3.3.7.tar.gz -C eigen #解压
cd eigen && mkdir build && cd build && cmake .. && make && sudo make install #编译安装
cd && rm -rf 3.3.7.tar.gz && rm -rf eigen #这一步是删除文件,最好不要执行,不然后面会有点迷
上述着重介绍一下第三步,如果没法一次成功,就分开运行,不要用“&&”符号,不是很建议这样写;
另一个就是上面只是说安装了3.3.7版本的Eigen,但实际上系统用的版本还是3.3.4(系统自带版本),所以我们要更改软链接:
查看系统Eigen版本:
vim /usr/include/eigen3/Eigen/src/Core/util/Macros.h
这里怎么看系统自带版本可以参考下图:
这里表示版本是3.2.92,更改软链接如下:
sudo rm -rf /usr/local/include/eigen3
sudo rm -rf /usr/local/include/Eigen #删除系统自带eigen版本
将我们安装的Eigen-3.3.7版本放到/usr/include中:
sudo cp -r /usr/local/include/eigen3/Eigen /usr/include
sudo cp -r /usr/local/include/eigen3 /usr/include
这里注意自己的Eigen安装位置,这里的安装位置是/usr/local/include,也可能安装在/home/luo路径下;
建立软链接:
sudo ln -s /usr/include/eigen3 /usr/local/include/eigen3
sudo ln -s /usr/include/Eigen/ /usr/local/include/Eigen
cd /usr/lib/cmake/eigen3 #更新cmake库链接
sudo rm ./* #删除旧版cmake配置
sudo cp /usr/local/share/eigen3/cmake/* ./ #这里也要注意自己的Eigen安装路径
sudo updatedb #更新系统数据库
cd /usr/include
sudo mv eigen eigen3 #改名,便于后面查看版本,不然名字是eigen
最后再查看一遍版本,为3.3.7:
vim /usr/include/eigen3/Eigen/src/Core/util/Macros.h
4 CUDA
在官网下载CUDA10.0
安装:
sudo sh cuda_10.0.130_410.48_linux.run
然后会出现一个最下面有进度0%的界面,类似说明文档,按Ctrl+C跳过,然后输入一个accept,输入一个n(是否安装驱动),接着剩余的全输入n即可,当需要确认路径时直接按回车,结束安装;
接着运行:
sudo gedit ~/.bashrc #加入环境变量
在bashrc最后加入:
export PATH=/usr/local/cuda-10.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH
保存、退出、重启电脑;
然后输入下面的命令行验证安装是否成功:
cd /usr/local/cuda-10.0/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
如果输出PASS,则说明安装成功;
5 cudnn
同样去官网下载包
安装步骤:
tar -xzvf ~/Downloads/cudnn-10.0-linux-x64-v7.6.5.32.tgz #解压
将解压内容拷贝到系统目录,修改访问权限:
sudo cp ~/Downloads/cuda/include/cudnn.h /usr/local/cuda/include
sudo cp ~/Downloads/cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
验证安装是否成功:
在网盘里下载:cudnn_samples_v7.tar.gz;
运行命令行:
tar -xzvf ~/Downloads/cudnn_samples_v7.tar.gz
cp -r ~/Downloads/cudnn_samples_v7 ~/ #拷贝到目录
cd ~/cudnn_samples_v7/mnistCUDNN
make clean && make
./mnistCUDNN #编译运行
安装成功则会出现Test Passed;
6 Opencv
安装依赖包:
sudo apt install build-essential git pkg-config libgtk-3-dev
sudo apt install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev
sudo apt install libjpeg-dev libpng-dev libtiff-dev gfortran openexr libopenblas-dev
sudo apt install python3-dev python3-numpy libtbb2 libtbb-dev libdc1394-22-dev
下载源码并解压:
mkdir ~/opencv_build && cd ~/opencv_build
wget https://github.com/opencv/opencv/archive/3.4.0.zip -O opencv-3.4.0.zip
wget https://github.com/opencv/opencv_contrib/archive/3.4.0.zip -O opencv_contrib-3.4.0.zip
unzip opencv-3.4.0.zip
unzip opencv_contrib-3.4.0.zip
在后面编译安装的时候会失败,因为缺少文件的原因,所以这里需要再下载一个文件,网址https://developer.nvidia.com/designworks/video_codec_sdk/downloads/v8.2-ga2
解压并拷贝文件(同样的,注意自己的解压路径):
unzip Video_Codec_SDK_8.2.16.zip
sudo cp ~/Downloads/Video_Codec_SDK_8.2.16/Samples/NvCodec/NvDecoder/cuviddec.h /usr/local/cuda/include/
sudo cp ~/Downloads/Video_Codec_SDK_8.2.16/Samples/NvCodec/NvDecoder/nvcuvid.h /usr/local/cuda/include/ #拷贝文件
修改opencv-3.4.0下的modules下的五个头文件:
modules/cudacodec/src/precomp.hpp
modules/cudacodec/src/frame_queue.hpp
modules/cudacodec/src/cuvid_video_source.hpp
modules/cudacodec/src/video_decoder.hpp
modules/cudacodec/src/video_parser.hpp
将五个文件中的
#if CUDA_VERSION >= 9000
#include <dynlink_nvcuvid.h>
#else
#include <nvcuvid.h>
#endif
修改为:
#if CUDA_VERSION >= 9000 && CUDA_VERSION < 10000
#include <dynlink_nvcuvid.h>
#else
#include <nvcuvid.h>
#endif
编译安装:
cd ~/opencv_build/opencv-3.4.0 && mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=RELEASE \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DINSTALL_PYTHON_EXAMPLES=ON \
-DINSTALL_C_EXAMPLES=OFF \
-DOPENCV_EXTRA_MODULES_PATH=/home/leon/opencv_build/opencv_contrib-3.4.0/modules \
-DPYTHON_EXCUTABLE=/usr/bin/python2.7 \
-DWITH_CUDA=ON \
-DWITH_CUBLAS=ON \
-DDCUDA_NVCC_FLAGS="-D_FORCE_INLINES" \
-DCUDA_ARCH_BIN="6.1" \
-DCUDA_ARCH_PTX="" \
-DCUDA_FAST_MATH=ON \
-DWITH_TBB=ON \
-DWITH_V4L=ON \
-DWITH_GTK=ON \
-DWITH_OPENGL=ON \
-DCMAKE_C_COMPILER=/usr/bin/gcc-7 \
-DCUDA_HOST_COMPILER=/usr/bin/g++-7 \
-DCUDA_PROPAGATE_HOST_FLAGS=oFF \
-DCMAKE_CXX_FLAGS="-std=c++11" \
-DBUILD_TIFF=ON \
-DBUILD_EXAMPLES=ON .. #从cmake到这里全复制了,这是一句话
make -j$nproc
sudo make install
查看Opencv版本:
pkg-config opencv --modversion
如果这种方法行不通可以再根据这篇博客也是可行的
https://blog.csdn.net/JackSparrow_sjl/article/details/81911855
7 Autoware
安装依赖:
sudo apt update
sudo apt install -y python-catkin-pkg python-rosdep ros-$ROS_DISTRO-catkin
sudo apt install -y python3-pip python3-colcon-common-extensions python3-setuptools python3-vcstool
pip3 install -U setuptools
建立工作空间:
mkdir -p autoware.ai/src
cd autoware.ai
下载Autoware:
wget -O autoware.ai.repos "https://gitlab.com/autowarefoundation/autoware.ai/autoware/raw/1.14.0/autoware.ai.repos?inline=false"
vcs import src < autoware.ai.repos
这里第二句采用vcs命令我会报错,具体原因还未找到(更新:vcs通过sudo apt install python3-vcstool安装就行了,要注意是vcstool而不是vcstools,这是两个工具!真坑),所以我没有通过终端去拉取,而是直接在上方给出的网盘地址里面下载的,解压放进工作空间里就行了;
rosdep update
rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO
个人认为rosdep update这一步可以不需要,反正我没有运行这一句;
编译:
AUTOWARE_COMPILE_WITH_CUDA=1 colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release
这一步是采用CUDA进行编译的,如果没有安装CUDA的话则执行下面这句话:
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release
在编译Autoware中或多或少都会有一些报错,解决方法参考:
https://blog.csdn.net/weixin_44570248/article/details/118463028
最后就是下载官方Demo查看效果了: