没有声明版本的环境搭建都是耍流氓,因此需要首先明确安装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文件:
系统的选择就按照上图来,然后在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
出现下图说明成功了
- 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
一定要保证所有的源都被命中或者被获取,如果出现以下错误:
执行以下语句:
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
如果出现以下则说明安装成功