本文已被apollo 官方公众号收录,链接以下:
https://mp.weixin.qq.com/s/c3eeIjZBx4Fd76sbAtvvhA
可参考:
安装Windows10,Ubuntu双系统14.04LTS记录
https://www.cnblogs.com/arcsinw/p/5303615.html
写在前面:5月14日apollo官方已停用 git - lfs,大家只需git ,不用再安装git-lfs ,此步骤现已弃用。
1.安装curl
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install curl
2.添加地址
# Required for Ubuntu 14.04 / 16.04.
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
3.安装git-lfs
# Ubuntu 14.04 / 16.04 / 18.04.
sudo apt-get install -y git-lfs
PS:若未安装git,需先执行 sudo apt-get install git .
写在前面:用SSH 方式 下载apollo镜像需要秘钥,用HTTP方式 下载则可以跳过此步骤。
1.首先注册一个github账号
2.参考:
https://blog.csdn.net/qq_34446663/article/details/81106018
或者 https://www.cnblogs.com/qcwblog/p/5709720.html
添加秘钥
1.从github源代码下载Apollo源代码并查看正确的分支:
git clone https://github.com/ApolloAuto/apollo
cd apollo
git checkout master
echo "export APOLLO_HOME=$(pwd)" >> ~/.bashrc && source ~/.bashrc
#文件下载大概1.8G,这里的APOLLO_HOME应该替换为apollo文件夹所在根目录
参考:
https://blog.csdn.net/qq_34906391/article/details/81478968
第三点设置Docker环境
写在前面:apollo3.5可不用安装ros,但apollo很多驱动都是从ros移植过来的,安装ros仍有研究价值。
参考:
https://blog.csdn.net/qq_34906391/article/details/81478968
第四点安装 ros-indigo 和 第六点安装 apollo-platform
写在前面:在安装apollo内核之前先卸载 NVIDIA显卡驱动(参考十点第1步),因为apollo内核是实时系统,而默认安装的NVIDIA驱动内核不支持实时系统(会造成循环登录),如果只是用于学习研究用途可以不安装内核,用于真实驾驶则必须安装内核。安装apollo内核后,再安装NVIDIA 驱动时必须加上 --no-kernel-module 参数(参考十点第6步)。
从GitHub上的发布部分下载发行包:
https://github.com/ApolloAuto/apollo-kernel/releases
下载发布包后安装内核:
tar zxvf linux-4.4.32-apollo-1.5.0.tar.gz
cd install
sudo bash install_kernel.sh
sudo reboot
参考:
https://blog.csdn.net/qq_34906391/article/details/81478968
第七点编译Apollo
参考:
https://github.com/ApolloAuto/apollo/blob/master/docs/demo_guide/README.md
进行演示
在docker中执行
bash scripts/bootstrap.sh
python docs/demo_guide/rosbag_helper.py demo_3.5.bag
cyber_recorder play -f docs/demo_guide/demo_3.5.record --loop
顺利执行后,打开网页 localhost:8888 ,便可以看到小车运动起来。效果如图:
这一步官方教程写得较为简略,故安装容易出错。
sudo apt-get --purge remove nvidia-*
sudo apt-get autoremove
若之前禁用了nouveau,需要重新启用nouveau,在blacklist中将nouveau注释掉。
sudo gedit /etc/modprobe.d/blacklist.conf
sudo update-initramfs -u
sudo reboot
开机后要确保NVIDIA驱动已经被删掉了,进入了低分辨率显示。
可用 lsmod | grep nouveau 检查nouveau 是否正在运行。
-v /usr/src:/usr/src \
-v /lib/modules:/lib/modules \
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt search nvidia-384
sudo apt-get install nvidia-384
b. 在docker中安装NVIDIA驱动
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt search nvidia-384
sudo apt-get install nvidia-384
注意:docker中NVIDIA驱动和主机中NVIDIA驱动的细分版本号(如384.130)必须保持完全一致,否则安装失败。
成功安装NVIDIA驱动后,需要重新禁用nouveau。
注意:通过ppa成功安装NVIDIA驱动后,不用再执行第4-8点步骤。
但此方式安装的驱动与Apollo内核不兼容,若需要安装Apollo内核,需通过run方式安装nvidia驱动。
下载官方Nvidia驱动程序安装文件,apollo官方推荐375.39的版本
wget http://us.download.nvidia.com/XFree86/Linux-x86_64/375.39/NVIDIA-Linux-x86_64-375.39.run
下载后默认放在 /apollo 目录下。
cd apollo
./docker/scripts/dev_start.sh
docker exec -it apollo_dev /bin/bash
若第三步报错,则执行 docker exec -it apollo_dev_username /bin/bash ,这里的username指你的用户名。
PS:在命令行中启动docker 是为了后面关闭 图形界面。
source /apollo/scripts/install_gcc.sh
ln -s /usr/bin/cc /usr/bin/cc1
chmod +x ./NVIDIA-Linux-x86_64-375.39.run
sudo ./NVIDIA-Linux-x86_64-375.39.run --no-opengl-files -a -s --no-kernel-module
source /apollo/scripts/recover_gcc.sh
rm /usr/bin/cc1
a. apollo自带gcc为4.8.4版本,而安装NVIDIA驱动需要gcc4.9版本,故先执行 install_gcc.sh 安装gcc4.9 。安装完驱动后需切换回4.8.4版本,故执行recover_gcc.sh 删掉 gcc 4.9。
b. --no-opengl-files 这个参数非常非常重要,安装时必须加上。
c. 在执行NVIDIA安装程序时应该会出现
‘’ X.Org X server is running ‘’ 之类的错误提示,出现之后说明我们需要关闭 图形界面。
sudo service lightdm stop
执行之后再按CTRL+ALT+F7 应该看不到图形界面了。若在F1 的docker中关不掉图形界面,可按CTRL+ALT+F2 后再关闭图形界面。
d. 如果在执行NVIDIA安装程序时出现
‘‘An NVIDIA kernel module ‘nvidia-drm’ appears to already be loaded in your kernel.’’
之类的提示,说明之前NVIDIA驱动未卸载干净。
e. 关闭掉图形界面之后,再执行
sudo ./NVIDIA-Linux-x86_64-375.39.run --no-opengl-files -a -s --no-kernel-module
可以在docker中成功安装驱动。
安装完成可用
whereis nvidia
检查是否安装成功。
nvidia: /usr/src/nvidia-375.39/nvidia /usr/share/nvidia
若显示有这两个目录则安装成功,否则失败。
cd apollo
sudo ./NVIDIA-Linux-x86_64-375.39.run --no-opengl-files -a -s --no-kernel-module
sudo service lightdm start
可重新启动图形界面。
docker ps #查看正在运行的docker
docker images #查看主机上的镜像文件
docker commit CONTAINER_ID apolloauto/apollo:NEW_DOCKER_IMAGE_TAG
其中,CONTAINER_ID 为 docker ps 查看到的第二行第一列信息,NEW_DOCKER_IMAGE_TAG 为我们自定义保存新镜像的名称 ,对应于 docker images 的第二行第二列信息。我们按照它的命名规则对新TAG进行命名,以笔者为例,正在运行docker的TAG 为 dev-x86_64-20181216_1500 ,命名为dev-x86_64-20181217_1500,执行
docker commit e5dfeb8a0b2f apolloauto/apollo:dev-x86_64-20181217_1500
则将刚刚的改动保存为新的镜像文件,可通过docker images 查看新的镜像文件。
在主机与docker中均成功安装NVIDIA驱动后,重启Ubuntu。
cd apollo
/docker/scripts/dev_start.sh -l -t NEW_DOCKER_IMAGE_TAG
./docker/scripts/dev_into.sh
其中,NEW_DOCKER_IMAGE_TAG 为 刚刚为新镜像取的名称。
若启动docker过程中 若出现 nvidia not found 等提示,则说明主机nvidia驱动未成功安装。
whereis nvidia
cat /usr/local/cuda/version.txt
dpkg -l | grep libcudnn7
cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2
在主机的终端中执行 nvidia-smi 确认驱动是否正确安装。
若所有条件均已达成,则开始编译:
./apollo.sh build_gpu
./bazel-bin/modules/perception/camera/test/camera_lib_obstacle_detector_yolo_region_output_test
若出现 error while loading shared libraries: libcuda.so.1: cannot open shared object file: No such file or directory ,之类的错误提示,则说明docker 或者主机的NVIDIA驱动未正确安装。
或者直接运行所有测试
./apollo.sh test
如果出现PASSED,恭喜你已经成功编译GPU版本的APOLLO!
主要参考文档:
百度Apollo平台搭建步骤详解
https://blog.csdn.net/qq_34906391/article/details/81478968
官方Apollo软件安装教程
https://github.com/ApolloAuto/apollo/blob/94c9fa5043f80e36ea28ee4c66a657ab0e3aa291/docs/quickstart/apollo_software_installation_guide.md#download-apollo-source
如何在Ubuntu 16中运行Apollo
https://github.com/ApolloAuto/apollo/blob/master/docs/howto/how_to_run_apollo_2.5_with_ubuntu16.md
阿波罗安装NVIDIA驱动和cudnn (CUDA默认已安装)
https://github.com/ApolloAuto/apollo/blob/master/docs/howto/how_to_run_perception_module_on_your_local_computer.md