在Ubuntu18.04上实现apollo5.5系统部署javascript
笔者在Ubuntu18.04上部署了一下Apollo,中间遇到的各类问题解决了好久,真的有不少坑须要注意,到今天基本上是部署上了,总结一下具体操做步骤和几个须要注意的问题:html
1.在终端执行如下命令完成最新软件包的更新:java
~$ sudo apt update
2.安装并降级GCC和G++
请先用如下命令检查gcc和g++的版本:
python
~$ gcc --version ~$ g++ --version
若输出的gcc和g++的版本是4.8版本的,则跳过此步骤;不然,请执行如下两条命令安装4.8版本的gcc和g++,命令以下:linux
~$ sudo apt-get install g++-4.8 g++-4.8-multilib gcc-4.8 gcc-4.8-multilib ~$ sudo /usr/bin/update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 99 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8
安装完成后,用以上命令检查gcc和g++的版本以确认安装成功;若安装未成功,请从新安装直到成功为止。git
3.安装Apollo内核
a.从releases文件夹下载发布的包
github
https://github.com/ApolloAuto/apollo-kernel/releases
b.安装包下载完成后,解压后安装:docker
tar zxvf linux-4.4.32-apollo-1.5.5.tar.gz cd install sudo bash install_kernel.sh
c.在终端输入sudo gedit /etc/default/grub打开配置文件。
把grub_timeout_style=hidden注释掉,
把grub timeout=0中的0修改成10,
把grub_cmdline_linux_default=”quiet splash”中的“quiet splash”修改成”text”,
修改完成后保存退出。在终端中执行 sudo update-grub更新grub配置。 使用reboot命令从新启动计算机。
bootstrap
d.重启ubuntu系统进入grub引导界面,在引导界面选择高级选项,在高级选项里选择倒数第二项的apollo-kernel来引导系统。进入系统后,在终端中输入uname -r,若输出“4.4.32-apollo-2-RT”字样,则表示此时系统是以apollo-kernel引导的。 注意:今后之后,每次开机都须要以apollo-kernel来引导系统。ubuntu
注:如下操做均要在内核系统完成
4.安装网卡驱动
默认状况下,IPC的两个网卡中有一个网卡是没有安装驱动链接不了互联网的。请从如下地址下载驱动安装包e1000e-3.8.4.tar.gz,在打开的页面中点击下载按钮会弹出“英特尔软件许可协议”对话框,接着点击“我接受许可协议中的条款”就能够开始下载了。下载完成后进入驱动文件的下载目录,执行如下命令来安装驱动:
下载地址:https://downloadcenter.intel.com/zh-cn/download/15817?_ga=1.159975677.114505945.1484457019
tar -zxvf e1000e-3.8.4.tar.gz cd e1000e-3.8.4/src/ sudo make install sudo modprobe e1000e
安装完成后,再检查驱动是否能够上网就能够了。
5.安装GPU驱动
下载apollo-kernel官网上的脚本install-nvidia.sh至当前用户的home目录下,注意是内核仓库下的,这个脚本很容易弄错,下载地址为:
https://github.com/ApolloAuto/apollo-kernel
输入如下命令完成显卡驱动内核模块的安装:
cd ~ sudo apt install make sudo bash install-nvidia.sh
完成显卡驱动内核模块的安装后,在当前用户的home目录下会出现一个名为NVIDIA-Linux-x86_64-430.50.run的文件,执行如下命令完成显卡驱动用户库的安装:
cd ~ sudo bash ./NVIDIA-Linux-x86_64-430.50.run --no-x-check -a -s --no-kernel-module
完成显卡驱动用户库的安装后,从新启动。
在终端中输入如下命令来检查显卡驱动内核模块是否安装成功:
cat /proc/driver/nvidia/version
若输出的内容中包含”430.50”字样,则表示显卡驱动内核模块安装成功;若不是,请从新安装显卡驱动内核模块。
在终端中输入如下命令来检查显卡驱动用户库是否安装成功:
sudo dpkg --list | grep nvidia*
若输出的内容中显示显卡的用户库的版本是430.50的,则表示显卡驱动用户库安装成功;若不是,请从新安装显卡驱动用户库。
在终端中输入nvidia-smi,能看到显卡的信息且最下面没有出现No running processes found的相关字样,输入nvidia-settings能调出显卡的配置界面,则表示显卡驱动安装成功。(这里笔者驱动用户库没有装上去,官方回应调用独显试试,我这里没有弄好,可是发现同样能用,只要不循环启动就行)。
6.安装Can驱动
can卡驱动我不知道本身的电脑怎么安装,由于没有can卡驱动包,工控机的can卡驱动厂家会提供,因此这步我没管。
7.安装docker软件
参考网上的安装教程,这里我参考的
https://www.cnblogs.com/wt7018/p/11880666.html
8.下载Apollo源代码
建议去Apollo官网在GitHub仓库上直接下载:
https://github.com/ApolloAuto/apollo
解压到主目录,这里默认是apollo–master
另外一个分支是apollo–r5.5.0,笔者用第二个分支作的编译
9.设置Apollo编译环境
a.设置环境变量,在终端输入如下命令:
cd ~ echo "export APOLLO_HOME=$(pwd)" >> ~/.bashrc && source ~/.bashrc source ~/.bashrc
b.将当前帐户加入docker帐户组中并赋予其相应权限,在终端输入如下命令:
sudo gpasswd -a $USER docker sudo usermod -aG docker $USER sudo chmod 777 /var/run/docker.sock
命令执行完成后,从新启动一下计算机。
10.编译Apollo源代码
a.启动并进入docker容器,在终端输入如下命令:
cd ~/apollo-r5.5.0 bash docker/setup_host/install_docker.sh bash docker/scripts/dev_start.sh
第一次进入docker时或者image镜像有更新时会自动下载apollo所需的image镜像文件,下载镜像文件的过程会很长,请耐心等待;若是你确信计算机本地有你须要的image镜像文件或者你不但愿更新image镜像时,可使用bash docker/scripts/dev_start.sh -n这个命令代替上面的命令,这样apollo就不会去github的官方网站比较本地image镜像和官方网站image镜像的区别了,这样能够省去两者比较的时间和避免因网络问题而致使的两者比较失败的现象,能够加快启动docker容器的速度。这个过程完成后,请输入如下命令以进入docker环境中:
bash docker/scripts/dev_into.sh
b.编译apollo,在终端输入如下命令,等待编译完成,整个编译过程大约耗时25分钟:
bash apollo.sh build_opt
11.运行DreamView
a.若您已经在docker环境中,请忽略此步骤,不然请执行如下命令进入docker环境:
cd ~/apollo bash docker/scripts/dev_start.sh bash docker/scripts/dev_into.sh
b.启动apollo 在终端输入如下命令:
bash scripts/bootstrap.sh
若是启动成功,在终端会输出如下信息:
nohup: appending output to 'nohup.out' Launched module monitor. nohup: appending output to 'nohup.out' Launched module dreamview. Dreamview is running at http://localhost:8888
在浏览器中输入如下地址:
http://localhost:8888
能够访问DreamView。
c.回放数据包 在终端输入如下命令下载数据包:
python docs/demo_guide/rosbag_helper.py demo_3.5.record
输入如下命令能够回放数据包,在浏览器DreamView中应该能够看到回放画面。
cyber_recorder play -l -f demo_3.5.record
若是成功在浏览器中看到回放画面,则代表您的apollo系统已经部署成功!