Ubuntu18.04下autoware1.14版本搭建(包括CUDA/cudnn/ROS/QT/NVIDIA drive)


没有声明版本的环境搭建都是耍流氓,因此需要首先明确安装autoware.ai1.14版本所需要的依赖环境,根据官网可知:

Ubuntu:18.04

ROS:Melodic

QT:5.9.5或者更高

CUDA:10.0

NVIDIA driver:410.48或者更高

cudnn(依照cuda选择对应的版本)


  • Ubuntu的安装就不说了,需要注意一点是安装完ubuntu之后更新一下国内的下载源:

https://www.cnblogs.com/mengw/p/11408118.html

使用国内的源进行下载比较快

  • 安装NVIDIA driver

在安装新的驱动之前先将之前安装的NVIDIA驱动卸载,如果是新装的系统,那么默认采用的是第三方驱动nouveau

卸载存在的NVIDIA driver:

sudo apt-get --purge remove nvidia*
sudo apt autoremove

输入以下命令查看,如果没反应说明卸载成功了

sudo dpkg --list | grep nvidia-*

安装driver的时候要注意先禁用一下UEFI secure boot(根据不同的电脑自行百度,但是奇怪的是有的电脑需要禁用有的不需要禁用),如果没有禁用,安装完driver之后重启会出现/dev/sda  clean... 的错误,还要注意一下driver版本的问题。

输入以下命令查看系统推荐的版本

ubuntu-drivers devices

输出中有一行为

driver : nvidia-driver-440-server - distro non-free recommended

说明推荐的驱动版本是440(一般会满足的),因此输入以下命令采用自动安装就行:

sudo ubuntu-drivers autoinstall

安装完成之后重启

重启之后输入以下命令显示显卡信息

nvidia-smi

注意:这时候会显示一个CUDA version,一般会大于我们所需的版本,不用担心,这不是运行的时候CUDA版本,下面正常安装CUDA就行。

  • 安装CUDA 10.0

根据官网上autoware.ai 1.14版本比如安装CUDA 10.0,所以要根据官网上来以免出错。

前提一定要禁用nouvean(其实在安装完驱动重启之后就会使用安装的NVIDIA driver了)

使用以下命令查看nouvean有没有在运行,没有输出就说明没有运行

lsmod | grep nouveau

如果nouveau运行的话就禁用它

sudo gedit /etc/modprobe.d/blacklist.conf

打开文件之后在最后一行加上:

blacklist nouveau

 保存之后在终端执行以下命令使其生效

sudo update-initramfs -u

下载CUDA 10.0 runfile文件:

Ubuntu18.04下autoware1.14版本搭建(包括CUDA/cudnn/ROS/QT/NVIDIA drive)

系统的选择就按照上图来,然后在runfile文件所在的文件夹下运行:

sudo sh cuda_10.0.130_410.48_linux.run

这里需要注意一点就是:当询问你是否安装driver的时候选n,因为我们之前单独安装过了。其余的选y或者默认就可以了

还有一点,网上说在执行安装命令的时候,后面加上 –no-opengl-files,但是我没加,安装选项里也没有类似的选择,但是不加安装下来也没有问题

最后安装的2个东西是:

CUDA 10.0 ToolKit

CUDA 10.0 Samples

然后添加环境变量~/.bashrc(下面是3个命令):

cd /usr/local/cuda/samples/1_Utilities/deviceQuery 
sudo make
./deviceQuery

 

出现下图说明成功了

Ubuntu18.04下autoware1.14版本搭建(包括CUDA/cudnn/ROS/QT/NVIDIA drive)

 

  • QT 5.12的安装(版本高于5.9.5就可以)

QT的安装没啥踩的坑,老老实实按照参考链接安装就行

  • ROS Melodic的安装

ROS安装的坑还算是比较多的,不过按照下面的方法是可以的,最起码能安装上就可以了不是吗?

ROS官方推荐软件源设置为中国科技大学(USTC)或清华大学(Tsinghua),这里将软件源切换成中科大的源,执行以下命令(下面是1个命令):

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'

添加Keys,执行以下命令(下面是1个命令):

sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

然后执行以下命令来更新源:

sudo apt update
sudo apt upgrade

一定要保证所有的源都被命中或者被获取,如果出现以下错误:

Ubuntu18.04下autoware1.14版本搭建(包括CUDA/cudnn/ROS/QT/NVIDIA drive)

执行以下语句:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654

(后面的签名就改成错误里报的签名)

然后执行更新命令看看是否成功。

执行如下命令安装ROS桌面完整版(这里会遇到下载过慢的问题,我的解决方式:用VPN)(下面是2个命令)

sudo apt install ros-melodic-desktop-full
sudo apt-get install ros-melodic-rqt*

初始化rosdep:

sudo rosdep init

执行这句话一般会遇到两个问题:

没有该指令,解决方法:运行以下命令

sudo apt install python-rosdep

出现cannot download ...问题,解决方式:用VPN

然后执行更新指令:

rosdep update

 安装rosinstall:

sudo apt-get install python-rosinstall

加载环境设置文件:

source /opt/ros/melodic/setup.bash

设置环境变量(下面是2个命令):

sudo apt install net-tools
gedit ~/.bashrc

在打开的文件中加入下面一行:

source /opt/ros/melodic/setup.bash

 下面就是进行测试了:

然后进行小海龟测试:打开3个终端,依次输入(下面是3个命令)

roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key

如果能正常测试就没问题了。

  • Autoware.ai 1.14的安装

Autoware的小毛病还是比较多的,因此最好还是根据成功的经验来

首先应该将ubuntu的编码方式设为en_US.UTF-8否则在运行aotuware的时候你会收获一下两种错误:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe5 in position 103339: invalid continuation byte

xmbtextlisttotextproperty result code -2

 设置方式:

sudo gedit /etc/default/locale

删除全部内容后在文件中添加:

LC_ALL="en_US.UTF-8"

然后执行

source /etc/default/locale

需要将当前用户设置为不需要密码的方式,否则会遇到如下错误:

sudo:没有终端存在,且未指定askpass程序

 设置方式:

sudo visudo

在最后一行加入(注意一定是最后一行

用户名 ALL=(ALL) NOPASSWD: ALL

这两个准备工作完成之后重启一下再进行接下来的安装

安装阶段:

安装相关依赖(下面是4个命令)

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

创建工作空间(下面是2个命令)

mkdir -p autoware.ai/src
cd autoware.ai

下载工作空间的配置

wget -O autoware.ai.repos "https://raw.githubusercontent.com/Autoware-AI/autoware.ai/1.14.0/autoware.ai.repos"

下载autoware到工作区

vcs import src < autoware.ai.repos

使用rosdep安装依赖项(下面是2个命令)

rosdep update
rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO

进行到这里该下载的就下载完了,下面是编译阶段,但是在编译开始之前还要进行一个操作,否则会有以下错误:

CMake Error at /home/sai/autoware.ai/install/autoware_build_flags/share/autoware_build_flags/cmake/autoware_build_flags-extras.cmake:32 (message):

GPU support on Melodic requires Eigen version>= 3.3.7

 这是因为autoware对于Eigen库的版本有要求,执行如下升级库(下面是4个命令):

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

升级完了之后生效的目录依然是旧版的目录,因此还要进行如下操作:

将/usr/local/share/eigen3/cmake下的全部文件拷贝到/usr/lib/cmake/eigen3目录下替换

下面就可以进行编译了,注意一个细节:要将当前终端的目录cd 到autoware.ai下

执行以下命令编译支持CUDA的autoware:

AUTOWARE_COMPILE_WITH_CUDA=1 colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release

 安装完之后要修改一下run脚本,否则在运行autoware的时候会提示找不到路径,修改步骤如下(下面是2个命令):

cd ~/autoware.ai/install/runtime_manager/share/runtime_manager/scripts
gedit run

将对应的行修改为:

${OPTION_COMMAND}="bash -c 'source ~/autoware.ai/install/setup.bash;

下面就可以跑官方的demo了。

  • cudnn的安装

在NVIDIA官网下载好对应版本的文件后解压进入目录可以看到cuda文件夹,在当当前文件夹打开终端,执行以下语句:

sudo cp cuda/include/cudnn.h /usr/local/cuda/include/

sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/

sudo chmod a+r /usr/local/cuda/include/cudnn.h

sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

然后查看是否安装成功:

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

如果出现以下则说明安装成功

Ubuntu18.04下autoware1.14版本搭建(包括CUDA/cudnn/ROS/QT/NVIDIA drive)

 

上一篇:一个Python程序,可以帮助您自动备份文件


下一篇:如何在Mac上禁用iCloud驱动器?