Ubuntu系统下Autoware1.14源码安装(GPU版)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

安装组件及相应版本:
Ubuntu: 18.04

Autoware: 1.14

Nvidia Driver: 410及以上

CUDA: 10.0(最好10.0,10.2以上可能会有问题)

cudnn: 10.0-linux-x64-v7.6.5.32

cmake: 3.12.2及以上

Eigen: 3.3.7及以上

ROS Melodic

Opencv: 3.4.0及以上(版本低一些不知道是否可行,但3.4.0肯定没问题)

protobuf: 3.0.0(只能这个版本,一般系统自带)
以上是带有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及以上
ROS Melodic
建议:最好重装系统之后进行安装最佳,否则容易出现各种错误,尤其是安装了Anaconda等,会因为python链接等问题报很多错误,需要一个一个解决,很麻烦,对Linux系统不是非常精通的操作起来很麻烦。
百度网盘链接:百度网盘:https://pan.baidu.com/s/1NXwzxu_W-jpybRn6qdIA5Q 密码: d3lj
此链接为网络资源,根据需要取用。

配置安装

**

1.Nvidia Driver

**
(1) 删除ubuntu自带的英伟达显卡驱动程序

卸载英伟达自带显卡驱动:

sudo apt-get remove --purge nvidia*

关闭自带的英伟达显卡驱动:

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

在打开的文档最后添加:

blacklist nouveau
options nouveau modeset=0

保存退出后运行:

sudo update-initramfs -u

使blacklist生效。
重启电脑后,输入

lsmod | grep nouveau

如果没有输出,说明显卡已经卸载。

(2) 选择推荐安装英伟达驱动版本
这里插入图片描述
选择带有recommended的版本,这里显示的推荐版本为nvidia-driver-460。
在桌面模式下添加英伟达库,并安装驱动

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-driver-460

安装完成后,重启电脑,进入系统后,执行:

nvidia-smi

输出
在这里插入图片描述
说明安装成功,其中的CUDA Version应该为当前驱动最高支持的CUDA版本,并非实际CUDA版本。
**

2. 安装CUDA

**
去网盘下载:cuda_10.0.130_410.48_linux.run,默认下载到Downloads文件夹。
执行

sudo sh cuda_10.0.130_410.48_linux.run

出现说明之后,按Ctrl + C键跳过,会提示是否接受,键入accept。此时,注意:安装第一步会提示是否安装驱动,请一定键入n。之后每一步选择y,当需要确认路径时直接按回车,结束安装。
加入环境变量,键入:

sudo gedit ~/.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,那么说明安装成功。
如果需要卸载重装,运行下列命令卸载 cuda

cd /usr/local/cuda/bin
sudo ./uninstall_cuda_10.0.pl

**

3. 安装cuDNN

**
去网盘下载:cudnn-10.0-linux-x64-v7.6.5.32.tgz,默认路径为Downloads文件夹
解压

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是否安装成功,去网盘下载:cudnn_samples_v7.tar.gz,并解压

tar -xzvf ~/Downloads/cudnn_samples_v7.tar.gz

将cudnn_samples_v7文件夹拷贝到~目录

cp -r ~/Downloads/cudnn_samples_v7 ~/

进入mnistCUDNN,编译并运行

cd  ~/cudnn_samples_v7/mnistCUDNN
make clean && make
./mnistCUDNN

如果安装成功,会出现Test passed!

如果提示./mnistCUDNN: error while loading shared libraries: libcudart.so.10.0: cannot open shared object file: No such file or directory
是库文件路径引发的问题,可以到/etc/ld.so.conf.d目录下,可以自建一个.conf文件(这里建立了cuda.conf),也可以修改其中任意一份conf文件,将lib所在目录写进去。

cd /etc/ld.so.conf.d/
sudo touch cuda.conf
sudo gedit cuda.conf

在cuda.conf中添加:

/usr/local/cuda/lib64

然后运行:

sudo ldconfig

如果提示:/sbin/ldconfig.real: /usr/local/cuda/lib64/libcudnn.so.7 is not a symbolic link
说明libcudnn.so.7是一个文件,它本应是一个符号连接。运行

sudo ln -sf /usr/local/cuda/lib64/libcudnn.so.7.6.5 /usr/local/cuda/lib64/libcudnn.so.7

可以解决。
**

4.安装 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/zhangwenbin/cmake-3.12.2-Linux-x86_64/bin/* /usr/bin/  #注意自己的cmake安装路径

这里我的cmake安装路径是/home/zhangwenbin下,根据自己的安装路径对应着修改第三行代码即可,然后检查安装版本是否正确:

cmake --version   #检查版本

**

5.安装eigen3.3.7

**
直接去官网下载:
https://gitlab.com/libeigen/eigen/-/releases
找到eigen3.3.7的压缩包下载下来,我下的是.zip格式的。
然后解压(右键->提取到此处),之后拷贝到主文件夹(home)下面。
接着在eigen-3.3.7文件夹下面新建一个build文件夹,如图:
在这里插入图片描述进入build文件夹,右键打开一个终端,然后以下3步标准操作完成安装(记住这3步,几乎所有cmake库都是这么装的,以后还会经常用到)。

 sudo cmake .. 
 sudo  make 
 sudo make install

**

6. 安装ROS Melodic

**
(1) 找到‘软件和更新’,修改里面的下载源。点击桌面的ubuntu软件图表,然后在左上角ubuntu软件上点击左键,选择软件和更新,如下图所示
(2) 选择中国的服务器,把第二项《其他软件》里的勾勾全部去掉,否则有可能在关闭时弹出“下载软件仓库信息失败 检查您的网络连接“
在这里插入图片描述
在这里插入图片描述
(3)设置sources.list(设置软件源),将电脑设置为可以从http://packages.ros.org接收软件
官网是这一句

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

国内的,速度快(本人使用,建议用此):

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

清华的:

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'

(4) 添加秘钥

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

在这里插入图片描述
(5) 确保软件更新为最新版本

sudo apt-get update

在这里插入图片描述
(6) 下载ros

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

时间较长,需耐心等待,完成界面如下:
在这里插入图片描述
(7)初始化操作,需要先初始化rosdep。rosdep能够轻松地安装要编译的源代码的系统依赖关系,并且需要在ROS中运行一些核心组件。在使用 ROS 之前,需要先初始化 rosdep。rosdep 使得你可以为你想要编译的源码,以及需要运行的 ROS 核心组件,简单地安装系统依赖。

sudo rosdep init

这一步95%以上的概率会出错,出错问题基本都是如下图所示的问题,因为是国外网站,所以很正常,只要一次初始化没通过,建议不要浪费时间,直接手动操作。
在这里插入图片描述
已经运行sudo rosdep init成功,应该在/etc/ros/rosdep/sources.list.d路径下生成20-default.list文件,该文件内容如下:

# os-specific listings first
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx

# generic
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
gbpdistro https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml fuerte

# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead

所以可以手动创建文件,并将内容粘贴进去,完成之后无需再进行初始化,因为初始化的目的就是生成该文件。
sudo rosdep init问题具体解决步骤:
创建文件夹sources.list.d,并生成20-default.list 文件

 sudo mkdir -p /etc/ros/rosdep/sources.list.d  

生成20-default.list

cd /etc/ros/rosdep/sources.list.d  
sudo touch 20-default.list 

到这里已经生成/etc/ros/rosdep/sources.list.d/20-default.list文件-------------------
打开20-default.list文件,

sudo gedit /etc/ros/rosdep/sources.list.d/20-default.list

将里面内容修改为下面的代码:

# os-specific listings first
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx

# generic
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
gbpdistro https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml fuerte

# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead

至此相当于初始化结束,事实上文件内容可结合如下rosdep update部分进行更改,一步到位。

接下来执行rosdep update更新操作:

rosdep update

同时,这一步也几乎是95%概率失败的,报错如下,总的来说就是显示超时,同理为国外网站访问问题,

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

所以尽可能不要浪费时间,接下来:
将rosdistro文件下载到本地:
下载方法一:

git clone https://github.com/ros/rosdistro.git

下载方法二:
直接拷贝https://github.com/ros/rosdistro.git到网页下载,速度提高

下载完成后,需要记得将下载包名字rosdistro-master改称rosdistro
记录rosdistro存放地址,例如/home/xxxx/rosdistro
如果是自己的改成/home/user/rosdistro,其中user表示用户名,下面都是按照这样改

修改/usr/lib/python2.7/dist-packages/rosdep2/rep3.py文件

cd /usr/lib/python2.7/dist-packages/rosdep2 
sudo gedit rep3.py

注意:如果进去不到rosdep2文件夹,直接在usr文件夹下搜索rep3.py。就能查找到对应的路径,以下方法同样。
将REP3_TARGETS_URL = ‘https://raw.githubusercontent.com/ros/rosdistro/master/releases/targets.yaml’ 替换成 REP3_TARGETS_URL = ‘file:///home/zhangwenbin/rosdistro/releases/targets.yaml’
替换后的/home/zhangwenbin 即为第一步clone内容的存放地址

修改/usr/lib/python2.7/dist-packages/rosdistro/init.py文件

cd /usr/lib/python2.7/dist-packages/rosdistro
sudo gedit __init__.py

将原来文件中的 DEFAULT_INDEX_URL = ‘https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml’ 替换成 DEFAULT_INDEX_URL = ‘file:///home/zhangwenbin/rosdistro/index-v4.yaml’
替换后的/home/zhangwenbin 即为第一步clone内容的存放地址
打开20-default.list文件,将里面内容修改为下面的代码,注意内容/home/zhangwenbin修改为自己的记录路径

sudo gedit /etc/ros/rosdep/sources.list.d/20-default.list

内容改成:

# os-specific listings first
yaml file:///home/zhangwenbin/rosdistro/rosdep/osx-homebrew.yaml osx

# generic
yaml file:///home/zhangwenbin/rosdistro/rosdep/base.yaml
yaml file:///home/zhangwenbin/rosdistro/rosdep/python.yaml
yaml file:///home/zhangwenbin/rosdistro/rosdep/ruby.yaml
gbpdistro file:///home/zhangwenbin/rosdistro/releases/fuerte.yaml fuerte

# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead

注意的是yaml file://表示固定格式/home…表示文件目录,所以是yaml file:///
最后直接:

rosdep update

(8) 环境配置,添加ros环境变量。 如果在每次一个新的终端启动时,ROS 环境变量都能自动地添加进你的 bash 会话是非常方便,这可以通过如下命令来实现:

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

(9) 安装rosinstall,rosinstall是一种常用的命令行工具
到这一步,应该已经安装好了运行核心 ROS 包的所有东西。要创建和管理你自己的 ROS workspace,还有单独发布的许多的工具。比如,rosinstall 是一个常用的命令行工具,使你可以通过一个命令为 ROS 包简单地下载许多源码树。

要安装这个工具及其它的依赖以构建 ROS 包,则运行:

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

(10) 测试ROS是否已经安装成功,网上教程很多,也很简单,这里不再进行赘述,有可能出现通过键盘上下左右控制小海龟而2小海龟不动的情况,一般按q退出控制,并重新运行键盘控制节点,或者重新进行测试,一般没问题的。
**

7.OpenCV 安装

**
参考https://blog.csdn.net/weixin_44985971/article/details/123209435
注:一般教程会安装两部分,即opencv和opencv_contrib,但opencv_contrib的安装很容易出问题,可以只安装opencv(即使两者都装,也建议分开装,并且把opencv_contrib需要的相关文件手动下载好,否则会因为下载失败而安装失败)
(1) 下载opencv-4.1.2及opencv_contrib-4.1.2
官网下载或者百度云下载
(2) 安装依赖项

sudo apt install  build-essential
 
sudo apt install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev  
 
sudo apt install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

(3) 使用cmake构建opencv
使用unzip命令将opencv-3.4.0和opencv_contrib-3.4.0解压,opencv-3.4.0放在主目录下,opencv_contrib-3.4.0移到opencv_3.4.0目录下,并在opencv-3.4.0目录下新建build文件夹

unzip opencv-3.4.0.zip
unzip opencv_contrib-3.4.0.zip
 
//自己把opencv-3.4.0放在主目录下,opencv_contrib-3.4.0移到opencv_3.4.0中
 
cd ~/opencv-3.4.0
mkdir build

执行以下代码(重点部分,认真操作)

cd ~/opencv-3.4.0/build
 
//前三行别的设不设置都无所谓,OPENCV_GENERATE_PKGCONFIG如果不设置在opencv4中就不会
//自动生成opencv.pc文件导致查询不到opencv版本号,后续要解决只能自己手写文件(但是容易错)
//或者卸载opencv重装,所以这里直接开启就一劳永逸了
cmake -D WITH_TBB=ON -D WITH_EIGEN=ON -D OPENCV_GENERATE_PKGCONFIG=ON .. 
cmake -D BUILD_DOCS=ON -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=ON ..
cmake -D WITH_OPENCL=OFF -D WITH_CUDA=OFF -D BUILD_opencv_gpu=OFF -D BUILD_opencv_gpuarithm=OFF -D BUILD_opencv_gpubgsegm=OFF ..
//OPENCV_ENABLE_NONFREE:BOOL如果不开启在使用sift/surf等算法时会报错
//因为我是用c++进行编程 所以用INSTALL_C_EXAMPLES=ON,如果想用python则替换为INSTALL_PYTHON_EXAMPLES=ON
//OPENCV_EXTRA_MODULES_PATH后面跟的是opencv_contrib-3.4.0的路径,记得照着自己的电脑路径改一下
//如果不需要装opencv_contrib-3.4.0 那就删掉OPENCV_EXTRA_MODULES_PATH
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_ENABLE_NONFREE:BOOL=ON -D INSTALL_C_EXAMPLES=ON -D OPENCV_EXTRA_MODULES_PATH=~/opencv-4.1.2/opencv_contrib-4.1.2/modules ..

本人最终并未安装opencv_contrib,因此没有添加OPENCV_EXTRA_MODULES_PATH,注意,在代码最后有“ …”,需要将其提前。
接下来开始编译,能选几线程选几线程,我电脑最大就8线程:

//有单线程和多线程两种编译方法 单线程编译比较慢,建议采用多线程
//j后面表示的数字是想要用几线程进行编译,这里我选择了8线程
sudo make -j//单线程
sudo make -j8//多线程

编译结束后

sudo make install 

配置opencv环境

//打开opencv.conf
sudo gedit /etc/ld.so.conf.d/opencv.conf 
//在末尾添加
/usr/local/lib
//保存后执行以下命令,确保配置生效
sudo ldconfig 
//打开bash.bashrc
sudo gedit /etc/bash.bashrc  
//在文末添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig  
export PKG_CONFIG_PATH  
//保存后执行以下命令,确保配置生效
sudo updatedb 

测试

cd ~/opencv-3.4.0/samples/cpp/example_cmake
cmake .
make
./opencv_example

如果摄像头打开,左上角出现 Hello OpenCV 则证明安装成功。
**

8. 安装caffe

**
(1)caffe相关包

$ sudo apt install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
$ sudo apt install -y --no-install-recommends libboost-all-dev
$ sudo apt install -y libgflags-dev libgoogle-glog-dev liblmdb-dev

(2)安装caffe

sudo apt install caffe-cuda

**

9. 安装autoware 1.14

**
(1)安装Ubuntu 18.04 依赖

$ 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

(3)安装autoware 1.14
建立workspace

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

下载Autoware 1.14

$ 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

下载Autoware很可能因为网络原因而失败,因此建议自行下载后放入相应文件夹中,可执行命令并取消,查看下载的相关文件存放关系,删除文件进行替换。
安装ROS依赖

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

注意:这里因为之前安装Ros时更改过相关镜像源,所以执行第二步时可能会出错,更新镜像源即可,阿里云或者清华镜像。
编译环境

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

注意:编译时很大概率会出现calibration_publisher报错而停止,不用紧张,进行下列操作。

修改/home/xxx/autoware.ai/src/autoware/utilities/calibration_publisher/CMakeLists.txt

target_link_libraries(calibration_publisher
        ${catkin_LIBRARIES}
        ${OpenCV_LIBS}     # added
)

修改/home/xxx/autoware.ai/src/autoware/utilities/calibration_publisher/package.xml

<depend>cv_bridge</depend>
<depend>image_transport</depend>
<depend>tf</depend>
<depend>libopencv-dev</depend>    # added

以上修改添加对应代码(带# added的那一行)重新进行编译,即可。
此文为本人第一次进行博客撰写,里面会有诸多纰漏之处,内容仅供大家参考,同时参考了许多网络资源,对此表示非常感谢。

参考资源链接

https://www.cnblogs.com/hgl0417/p/14617025.html
https://blog.csdn.net/weixin_44570248/article/details/118462710?
https://blog.csdn.net/qq_43509129/article/details
https://blog.csdn.net/zhao5269/article/details
https://blog.csdn.net/weixin_44985971/article/details/123209435
https://blog.csdn.net/u014453443/article/details

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值