提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
安装组件及相应版本:
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