最近要用到Apollo自动驾驶框架,便花了两天时间在Ubuntu16.04上搭建了Apollo2.5。
首先是下载apollo源代码,有两种方法(这里选择的F2):
git clone --branch v2.5.0 https://github.com/ApolloAuto/apollo.git
拉取之后会有一个apollo文件夹在home下,但是这种方法比较慢,我试了几次都是下载一半就断开。
从apollo-v2.5.0下载代码文件到home目录下,我下载的是Source code(tar.gz),然后解压
tar –zxvf apollo.2.5.0.tar.gz
为了免除环境差异造成的各种问题,apollo运行环境依赖于docker。因此如果还没有安装docker的话,需要先安装docker。可以参考https://docs.docker.com/install/linux/docker-ce/ubuntu/
1、卸载旧版本
docker的旧版本被称为docker,docker.io或docker-engine,如果已安装,要先卸载他们:
$ sudo apt-get remove docker docker-engine docker.io containerd runc
2、开始安装docker
2.1 更新apt包索引:
$ sudo apt-get update
2.2 安装软件包以允许apt通过HTTPS使用存储库:
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
2.3 添加Docker的官方GPG密钥:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88通过搜索指纹的后8个字符,验证您现在是否拥有带有指纹的密钥 。
$ sudo apt-key fingerprint 0EBFCD88
2.4 使用以下命令来设置稳定的存储库:
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
2.5 更新apt包索引:
$ sudo apt-get update
2.6 安装最新版本的Docker Engine-Community和containerd:
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
至此,docker已安装完成。
apollo中运行docker要使用非root方式运行,否则可能会出现一些莫名其妙的问题。
#添加 docker group
$ sudo groupadd docker
#将用户加入该 group 内
$ sudo usermod -aG docker $USER或$ sudo gpasswd -a ${USER} docker
#重启服务
$ sudo service docker restart或$ sudo /etc/init.d/docker restart
#切换当前会话到新 group
$ newgrp - docker
在此之后还需要安装Git LFS,这个是一个git对大文件的扩展支持。
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt-get install -y git-lfs
至此,在终端内输入docker images应该就可以看到一个没有内容的docker镜像表格,但是里面是没有内容的,因为我们还没有拉取所需要的镜像。
3.若要卸载Docker Engine-社区
3.1 卸载Docker Engine-Community软件包:
$ sudo apt-get purge docker-ce
3.2 主机上的映像,容器,卷或自定义配置文件不会自动删除。要删除所有图像,容器和卷:
$ sudo rm -rf /var/lib/docker
首先要了解apollo2.5是2018年版本的框架。
cd apollo.2.5.0
sudo chmod 777 /var/run/docker.sock
bash docker/scripts/dev_start.sh
会拉取几个镜像并启动container,运行结束后再用docker images指令可以看到以下
REPOSITORY TAG IMAGE ID CREATED SIZE
apolloauto/apollo dev-x86_64-20180413_2000 2d338b6e1942 3 weeks ago 7.17GB
apolloauto/apollo localization_volume-x86_64-latest 75cf8c77134c 4 weeks ago 6.94MB
apolloauto/apollo map_volume-sunnyvale_big_loop-latest 9d9581178ffe 6 weeks ago 995MB
apolloauto/apollo yolo3d_volume-x86_64-latest 562d2b2b5a71 7 weeks ago 70.6MB
apolloauto/apollo map_volume-sunnyvale_loop-latest 36dc0d1c2551 3 months ago 906MB
PS:其实每一个images也可以用docker pull [apolloauto/apollo:TAG_NAME]单独拉取。稍后我们要进入的container就是dev-x86_64-20180413_2000那个image创建的container(名为apollo_dev)。
//dev_start是pull各种需要的docker镜像,并且把容器跑起来
./docker/scripts/dev_start.sh -l -t new20200207
//dev_into是进入容器
./docker/scripts/dev_into.sh
bash apollo.sh build
编译过程中没有错误就可以跑dreamview
bash scripts/bootstrap.sh
dreamview跑起来后,打开浏览器输入localhost:8888
回车
因为apollo2.5是基于ros操作系统的,测试rosbag之前还需要安装ros。
我们按官方文档先跑下demo。先下载回放数据包:
sudo bash docs/demo_guide/rosbag_helper.sh download
下载完成后,回放数据位于docs/demo_guide目录下。Apollo基于ROS,而rosbag是其中的数据记录和回放工具。用该命令可以开始回放:
source /apollo/bazel-apollo/external/ros/setup.bash
rosbag play docs/demo_guide/demo.bag --loop
参考文献:
1、Ubuntu16.04安装apollo2.5(GPU版本)
2、自动驾驶平台Apollo 2.5环境搭建
3、Ubuntu下docker使用非root权限运行docker
4、Ubuntu16.04安装ROS Kinetic详细过程
5、Apollo 2.5 安装踩坑指南