Ubuntu18.04 系统 Ros Melodic,Nvidia驱动,Cuda10,Cudnn,Autoware1.13的安装

前言

本人借鉴了许多博主的博客,在此表示感谢。安装这些东西实属不易,踩了不少坑,希望这篇我整理的文章能帮助你们顺利安装,有些安装包下载不了的,可以私聊或在评论区留言。
**

前期配置

**

sudo apt install ipython
sudo apt install ipython3
sudo apt install ipython-pip
sudo apt install ipython3-pip
sudo apt install qtcreator(不安装cmake)

**

配置环境变量

**
终端执行以下命令,打开.bashrc文件sudo gedit ~/.bashrc
然后再文件末尾添加一行文字,然后右上方记得保存:export PATH="/home/felix/anaconda3/bin:$PATH"
最后输入以下命令使配置马上生效:source ~/.bashrc

**

Ros安装(安装Ros前不要安装Anaconda,容易出错)

**

1. 调整Ubuntu镜像源

在安装之前先将Ubuntu的镜像源调为国内镜像源,这一步是为了让接下来的下载过程中使用中国的服务器,加快下载速度。从桌面左下角“显示应用程序”-》“软件与更新”,配置Ubuntu允许universe、restricted、multiverse这三种安装模式,并把软件源更改为清华大学的源(中国科技大学USTC也行)。
Ubuntu18.04 系统 Ros Melodic,Nvidia驱动,Cuda10,Cudnn,Autoware1.13的安装_第1张图片

2. 添加source.list

这一步配置将镜像添加到Ubuntu系统源列表中,这里使用清华的镜像源。

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'

3. 添加秘钥

添加秘钥到本地的trusted数据库中并加以验证:

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

若密钥服务器hkp://ha.pool.sks-keyservers.net:80无法添加成功,则可以尝试hkp://pgp.mit.edu:80或者hkp://keyserver.ubuntu.com:80,我安装时用的是hkp://keyserver.ubuntu.com:80。
在更新之前,需要安装公钥,否则无法验证签名,这一步有的教程上有有的教程上没有,保险起见我也照着做了,命令如下:sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654
问题一:
导入秘钥失败:
方法一:
执行:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 76F1A20FF987672F

结果如下:

Executing: /tmp/apt-key-gpghome.uBwlOPqFFF/gpg.1.sh --keyserver hkp://keyserver.ubuntu.com:80 --recv 76F1A20FF987672F(这个是你自己的)
gpg: key 76F1A20FF987672F: 1 signature not checked due to a missing key
gpg: 密钥 76F1A20FF987672F:公钥“WineHQ packages <[email protected]>”已导入
gpg: 合计被处理的数量:1
gpg:               已导入:1

再执行:

sudo apt-get update && apt-get upgrade

方法二:
下载导入公钥,导入key:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6AF0E1940624A220 #此处6AF0E1940624A220需要是错误提示的key

此时继续更新发现没有公钥错误提示,但是还是效验存在问题,此时需要打开软件源的界面,将其他软件选项中的Canpnical合作伙伴/独立等四个选项取消勾选,再执行sudo apt-get update

4.更新列表

更新Ubuntu 18.04 LTS的最新可用软件包列表:sudo apt update

5.开始安装

下面开始安装ROS,推荐安装桌面完整版,这样就可以将ROS、rqt、rviz、机器人通用库、2D/3D仿真器、导航、2D/3D感知等功能一次性安装完成。
安装之前,需要安装其他依赖库,一次性安装如下:

sudo apt install libvtk6-jni libvtk6-java libvtk6-dev libvtk6-qt-dev libpcl-dev
sudo apt install ros-melodic-pcl-conversions ros-melodic-pcl-ros ros-melodic-perception-pcl ros-melodic-perception

**PS:**我在安装时这些依赖库是一个一个安装的,因为网络不稳定,一次性安装容易报错。
最后终于开始安装ROS Melodic,方法如下:

sudo apt install ros-melodic-desktop-full

如果希望安装特定的ROS程序包,则可以首先查看当前可用的程序包列表,然后选择自己需要的程序包进行安装,这里暂且不提。

6.安装核心组件rosdep

开始使用ROS之前,还需要安装rosdep,rosdep是ROS一些核心组件的运行基础,会在编译ROS源码时检查和安装程序包依赖。安装ROS方法如下:

sudo rosdep init
# fix-permission限制权限为当前用户
sudo rosdep fix-permissions
# 可能由于网络原因会失败,多运行几次即可
rosdep update

问题一:
安装ROS时执行到sudo rosdep init时出现sudo rosdep:找不到命令提示
解决方法:需要输入:

sudo apt install python-rosdep 或者 sudo apt install python-rosdep2 (推荐输入前面的命令)

然后输入:

sudo rosdep init

问题二:
这里在执行sudo rosdep init指令时报错:

ERROR: cannot download default sources list from:
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
Website may be down.

根本原因是无法解析raw.githubusercontent.com,可参考博客解决sudo rosdep init和rosdep update的错误解决,主要是在hosts中修改IP地址,特别需要注意的是这里要编辑hosts需要先切换至root,不然权限不够会报错。

sudo -i

切换至root后,直接在终端输入:

sudo gedit /etc/hosts

然后再打开的hosts文档最后增加一行内容:

151.101.76.133 raw.githubusercontent.com

此时仍然可能有gedit警告:
(gedit:4287):警告:01:27:40.477:设置文档元数据失败:设置属性元数据::不支持gedit拼写语言

(gedit:4287):警告:01:27:40.478:设置文档元数据失败:设置属性元数据::不支持gedit编码

(gedit:4287):警告:01:27:43.365:设置文档元数据失败:设置属性元数据::不支持gedit位置
12345
这些只是警告,基本上可以无视,如果实在忍受不了,在终端输入下面的指令可以消除:

sudo -H gedit /some/where/file.txt &>/dev/null

问题三:
执行rosdep update时报错(超时)

reading in sources list data from /etc/ros/rosdep/sources.list.d
Hit http://github.com/ros/rosdistro/raw/master/rosdep/osx-homebrew.yaml
 
ERROR: unable to process source [http://github.com/ros/rosdistro/raw/master/rosdep/base.yaml]:
 
<urlopen error _ssl.c:489: The handshake operation timed out> (http://github.com/ros/rosdistro/raw/master/rosdep/base.yaml)
 
ERROR: error loading sources list:
    The read operation timed out

连手机热点,多试几次,这个问题真的是玄学。

7.配置ROS环境变量

默认情况下,ROS_HOME的路径为"~/.ros",该目录保存着日志文件和测试结果文件。另外,第一次启动ROS时,需要进行环境变量配置,命令如下:

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc

查看环境变量是否设置正确,命令如下:

env | grep ROS 

我运行时查看环境变量结果如下,可以对照检查一下:

ROS_ETC_DIR=/opt/ros/melodic/etc/ros
ROS_ROOT=/opt/ros/melodic/share/ros
ROS_MASTER_URI=http://localhost:11311
ROS_VERSION=1
ROS_PYTHON_VERSION=2
ROS_PACKAGE_PATH=/opt/ros/melodic/share
ROSLISP_PACKAGE_DIRECTORIES=
ROS_DISTRO=melodic

至此,ROS的核心程序包安装完毕。

8.安装rosinstall

为了构建和管理开发者自己的ROS工作空间,还需要安装编译依赖,方法如下:

sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential

成功安装后,就可以体验ROS和创建ROS应用了。

9.小海龟测试

打开第一个终端:

roscore

利用Ctrl+Shift+T快捷键打开第二个终端:

rosrun turtlesim turtlesim_node

此时会出现一个画布,画布中有一只小海龟,此时小海龟还不会动。
继续打开第三个终端,

rosrun turtlesim turtle_teleop_key

此时在当前终端下,可以通过键盘上的方向键控制小海龟移动。

问题一:
安装结束后,输入:roscore 报错:

Command ‘roscore’ not found, but can be installed with:
sudo apt install python-roslaunch

根据提示输入:sudo apt install python-roslaunch 报错:

Unable to correct problems, you have held broken packages.

解决方案

指令 “roscore” 之所以能够被执行,首先需要在文件夹 “/opt/ros/indigo/bin/” 里面存在名为 “roscore” 的二进制可执行文件,打开文件夹,检查文件是否存在:

cd /opt/ros/melodic/bin
ls -l

果然没有。
输入:

sudo apt-get install ros-melodic-desktop

cd 进去再看,有了!
执行

source ~/.bashrc

再次启动ROS

roscore

问题二:
ros下载过程中遇到了这个问题,用apt-get安装其他软件都会跳出一些依赖不会安装从而无法下载。

python-rosdep-modules : 依赖: python-rosdistro-modules (>= 0.7.5) 但是它将不会被安装
python-rosdep-modules : 依赖: python-rosdistro-modules (>= 0.7.5) 但是它将不会被安装
E:Sub-process /usr/bin/dpkg returned an error code 
E: 有未能满足的依赖关系。请尝试不指明软件包的名字来运行“apt --fix-broken install”。

运行

sudo apt --fix-broken install

如果还是不能解决,就输入下面这几行

sudo mv /var/lib/dpkg/info /var/lib/dpkg/info.bk
sudo mkdir /var/lib/dpkg/info
sudo apt-get update
sudoapt-get install -f

然后就可以用apt-get下载了。

安装Nvidia驱动

首先,Ubuntu下查看Nvidia显卡的详细信息:

nvidia-smi

结果:

$ nvidia-smi
Fri Aug 16 08:46:25 2019     
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 430.26       Driver Version: 430.26       CUDA Version: 10.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce 940MX       Off  | 00000000:3C:00.0 Off |                  N/A |
| N/A   46C    P0    N/A /  N/A |    183MiB /  2004MiB |      3%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      3038      G   /usr/lib/xorg/Xorg                            94MiB |
|    0      4709      G   /usr/bin/gnome-shell                          86MiB |
+-----------------------------------------------------------------------------+

查看cuda 版本:

cat  /usr/local/cuda/version.txt 
or
nvcc -V

结果:

$ cat /usr/local/cuda/version.txt 
CUDA Version 10.1.243

查看cudnn版本:

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

如果上述命令你都没有输出,那么请往下看:
第一:Ubuntu下双显卡笔记本如何安装NVIDIA卡驱动
安装显卡驱动
检查自己电脑的gpu是否CUDA-capable

lspci | grep -i nvidia
#没有lspci就安装
  apt install pciutils

输出:

NVIDIA Corporation GM108M [GeForce 940M] (rev a2)

禁用nouveau并重启(安装Nvidia显卡的官方驱动和系统自带的nouveau驱动冲突)

lsmod | grep nouveau
#没有lsmod就安装
apt install module-init-tools

如果有输出说明nouveau正在加载
打开禁用列表

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

在打开文本的最后一行添加:

 blacklist nouveau
 options nouveau modeset=0

更新,重启:

 sudo update-initramfs -u
 reboot

再次查看是否禁用nouveau

lsmod | grep nouveau

重点:
先安装 gcc :

sudo yum -y install gcc-c++

或者

sudo apt install build-essential

删除旧的NVIDIA驱动:

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

或者:

sudo apt-get --purge remove nvidia-*
# sudo ./NVIDIA-Linux-x86_64-410.57.run -uninstall

sudo update-initramfs -u
sudo reboot now

更新系统软件仓库列表

sudo apt-get update

使用下面的命令查看系统推荐安装哪个版本的N卡驱动

ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:1d.0/0000:3c:00.0 ==
modalias : pci:v000010DEd0000134Dsv000017AAsd000039C8bc03sc02i00
vendor   : NVIDIA Corporation
model    : GM108M [GeForce 940MX]
driver   : nvidia-driver-410 - third-party free
driver   : nvidia-driver-415 - third-party free
driver   : nvidia-driver-390 - third-party free
driver   : nvidia-driver-430 - third-party free recommended
driver   : xserver-xorg-video-nouveau - distro free builtin

在上面这些输出中可以看到recommended关键词,说明系统推荐安装的N卡驱动是"nvidia-driver-430"
选择你看到推荐版本安装,本例使用nvidia-driver-430,然后安装几个必要组件,命令如下

sudo apt-get install nvidia-settings nvidia-driver-430 nvidia-prime

我的建议安装的是nvidia-440版本驱动,然后继续在命令行输入:

sudo ubuntu-drivers autoinstall

将会自动安装所推荐的nvidia-440版本驱动

安装双显卡切换指示器

~$ sudo add-apt-repository ppa:nilarimogard/webupd8
~$ sudo apt-get update
~$ sudo apt-get install prime-indicator

重新启动

sudo reboot 

新启动后会在右上角看到一个显卡指示器,默认情况下是Nvidia图标,说明现在使用的是N卡,点击这个图标选择"Quick switch graphics…",按下确认后会自动重启桌面,此时就会切换到Intel显卡了,图标也变成了Intel。
大家可以尝试着在两个显卡之间切换,并使用下面的命令查看是否切换成功,然后测试其性能
切换到Intel卡后,查看N卡是否关闭,如果N卡末尾是(rev ff),则表示成功关闭了N卡,现在使用的是I卡,如果末尾不是ff,则说明现在使用的是N卡

~$ lspci | grep VGA

00:02.0 VGA compatible controller: Intel Corporation .... (rev 09)

01:00.0 VGA compatible controller: NVIDIA Corporation .... (rev ff)

如果上面的命令没有看到NVIDIA卡,可以直接使用下面的命令来查看N卡状态

~$ lspci | grep NVI

qyh@qyh-mas:$ lspci | grep NVI
3c:00.0 3D controller: <font color="#EF2929"><b>NVI</b></font>DIA Corporation GM108M [GeForce 940MX] (rev a2)
qyh@qyh-mas: $ lspci | grep VGA
00:02.0 <font color="#EF2929"><b>VGA</b></font> compatible controller: Intel Corporation Skylake GT2 [HD Graphics 520] (rev 07)

使用下面的命令来测试显卡的性能,数字越大代表显卡性能越好,这条命令可以明显看到N卡的性能强于I卡

glxspheres64 

安装CUDA10、CUDNN

CUDA官网选择适合自己系统的版本下载。
我的系统是Ubuntu18.04、64位,选择CUDA10版本如下:
Ubuntu18.04 系统 Ros Melodic,Nvidia驱动,Cuda10,Cudnn,Autoware1.13的安装_第2张图片

安装CUDA

在命令行中输入:

sudo sh cuda_10.0.130_410.48_linux.run

一直按Enter直至把声明读完
如果驱动是独立安装了,一定要选择不安装驱动!选择如下:
Ubuntu18.04 系统 Ros Melodic,Nvidia驱动,Cuda10,Cudnn,Autoware1.13的安装_第3张图片
会提示:

***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 384.00 is required for CUDA 10.0 functionality to work.
To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
sudo <CudaInstaller>.run -silent -driver

这是因为我们在安装CUDA的时候没有选择安装驱动,提示需要安装驱动,忽略就行。

添加环境变量:

export CUDA_HOME=/usr/local/cuda 
export PATH=$PATH:$CUDA_HOME/bin 
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

保存并退出

source ~/.bashrc

测试是否安装成功
上面的选项选择安装了CUDA例子,运行其中一个来测试是否安装成功:

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

结果如下就表明成功啦
Ubuntu18.04 系统 Ros Melodic,Nvidia驱动,Cuda10,Cudnn,Autoware1.13的安装_第4张图片

安装CUDNN

在官网下载安装包,需要注册登录才能下载。选择适合自己的版本
Ubuntu18.04 系统 Ros Melodic,Nvidia驱动,Cuda10,Cudnn,Autoware1.13的安装_第5张图片
下载完成后解压并进入文件夹:

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*

在终端查看CUDNN版本:

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

Ubuntu18.04 系统 Ros Melodic,Nvidia驱动,Cuda10,Cudnn,Autoware1.13的安装_第6张图片

Autoware 1.13安装

配置列表

系统:Ubuntu 18.04
ROS:Melodic
CUDA:10.0以上
Eigen:3.3.7以上
已经将我的显卡驱动以及CUDA上传到网盘:链接: https://pan.baidu.com/s/1xgPwZVVF18eoJesABWau7g 提取码: qsg9

安装依赖

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

安装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

安装Autoware 1.13

建立workspace

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

下载Autoware 1.13

wget -O autoware.ai.repos "https://gitlab.com/autowarefoundation/autoware.ai/autoware/raw/1.13.0/autoware.ai.repos?inline=false"
vcs import src < autoware.ai.repos

安装ROS依赖

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

编译环境

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

如果编译ndt_gpu会出现错误:GPU support on Melodic requires Eigen version>= 3.3.7
原因:新安装的eigen和旧版的eigen在Eigen3Config.cmake文件的目录不同,而生效的目录是旧版的目录,所以需要将新安装的Eigen3Config.cmake拷贝到旧版所在的目录中。
解决方法:
在/usr目录下搜索Eigen3Config.cmake文件,/usr/lib/cmake/eigen3目录下与/usr/local/share/eigen3/cmake目录下存在这个文件,区别在于:
/usr/local/share/eigen3/cmake目录下的Eigen3Config.cmake文件第32行为:set (EIGEN3_VERSION_STRING “3.3.7”)
/usr/lib/cmake/eigen3目录下的Eigen3Config.cmake文件第42行为:set (EIGEN3_VERSION_STRING “3.3.4”)
(上面的区别请参考自己的实际文件)
所以只需要将/usr/lib/cmake/eigen3下的全部文件保存到别处后删除,然后将/usr/local/share/eigen3/cmake下的全部文件拷贝到/usr/lib/cmake/eigen3目录下即可。
重新执行上面的命令。

运行Autoware 1.13

$ source ~/autoware.ai/install/setup.bash
$ roslaunch runtime_manager runtime_manager.launch

这是就可以看到Autoware的界面了。

DEMO下载

下载数据:

$ cd ~/Downloads
$ wget http://db3.ertl.jp/autoware/sample_data/sample_moriyama_data.tar.gz
$ wget http://db3.ertl.jp/autoware/sample_data/sample_moriyama_150324.tar.gz

下载完成后,建立.autoware文件夹并解压数据到.autoware。

$ cd ~
$ mkdir .autoware
$ cd .autoware
$ cp ~/Downloads/sample_moriyama_* .
$ tar zxfv sample_moriyama_150324.tar.gz
$ tar zxfv sample_moriyama_data.tar.gz

运行Autoware 1.13

$ cd autoware.ai
$ source install/setup.bash
$ roslaunch runtime_manager runtime_manager.launch

运行autoware
为了以后能不需要每打开一次autoware就要source一次

sudo gedit ~/.bashrc

然后往最后一行添加
当然,这里也要看看自己的autoware装在哪里,看一下setup.bash的具体位置

source ~/autoware.ai/install/setup.bash

打开autoware

roslaunch runtime_manager runtime_manager.launch

你可能感兴趣的:(笔记,ubuntu,linux)