# 循迹搭建--Apollo系统重装 - [循迹搭建--Apollo系统重装](#循迹搭建--Apollo系统重装) - [概览](#概览) - [工控机系统重装](#工控机系统重装) - [工控机软件系统安装](#工控机软件系统安装) - [安装Linux系统](#安装Linux系统) - [创建引导盘](#创建引导盘) - [安装Ubuntu](#安装Ubuntu) - [执行软件更新与安装](#执行软件更新与安装) - [安装GCC和G++](#安装GCC和G++) - [安装Apollo内核](#安装Apollo内核) - [安装GPU驱动](#安装GPU驱动) - [安装驱动](#安装驱动) - [检查驱动](#检查驱动) - [安装Can驱动](#安装Can驱动) - [安装EmucCan驱动](#安装EmucCan驱动) - [检查EmucCan驱动](#检查EmucCan驱动) - [安装docker软件](#安装docker软件) - [安装docker](#安装docker) - [检查docker](#检查docker) - [下载Apollo源代码](#下载Apollo源代码) - [设置Apollo编译环境](#设置Apollo编译环境) - [编译Apollo源代码](#编译Apollo源代码) - [运行DreamView](#运行DreamView) - [NEXT](#NEXT) - [常见问题](#常见问题) ## 概览 本手册旨在帮助用户在开发套件上重新安装Ubuntu操作系统、配置软件,并启动使用Apollo自动驾驶平台。 ## 工控机系统安装 在本小结需要完成工控机的软件安装,包括Ubuntu Linux安装、Apollo软件系统安装等。 ### 工控机软件系统安装 ![tip_icon](images/tip_icon.png) 在本小结中,工控机软件系统安装包括计算机操作系统的安装,硬件驱动的安装,应用软件的安装和Apollo软件系统的安装。 #### 安装Linux系统 Apollo软件系统依赖于Linux操作系统而运行,而Linux操作系统种类繁多,且又分为服务器版本和桌面版本,这里我们选择当下比较流行的Ubuntu桌面操作系统的64位版本。安装Ubuntu Linux的操作系统的步骤如下: ##### 创建引导盘 创建一个可以引导启动的Ubuntu Linux USB闪存驱动器,下载Ubuntu,并按照在线说明创建可引导启动的USB闪存驱动器。 ![tip_icon](images/tip_icon.png) 推荐使用 **Ubuntu 18.04.5**. ![tip_icon](images/tip_icon.png)开机按F2进入BIOS设置菜单,建议禁用BIOS中的快速启动和静默启动,以便捕捉引导启动过程中的问题。建议您在BIOS中禁用“快速启动”和“静默启动”,以便了解启动过程中遇到的问题。 获取更多Ubuntu信息,可访问: ![online_icon](images/link.png)Ubuntu桌面站点: [https://www.ubuntu.com/desktop](https://www.ubuntu.com/desktop) ##### 安装Ubuntu a.将Ubuntu安装驱动器插入USB端口并启动IPC。 b.按照屏幕上的说明安装Linux。 ##### 执行软件更新与安装 ![warning_icon](images/warning_icon.png)**WARNING**:在整个Apollo系统的安装和操作的过程中,全程禁用root账户,皆用普通账户进行操作,切记! a.安装完成,重启进入Linux,请选用默认的内核进入系统即可。 b.在终端执行以下命令完成最新软件包的更新: ``` sudo apt update && sudo apt upgrade ``` ![tip_icon](images/tip_icon.png)IPC必须接入网络以便更新与安装软件,所以请确认网线插入并连接,如果连接网络没有使用动态分配(DHCP),需要更改网络配置。 ##### 安装GCC和G++ 请执行以下命令安装7.5.0版本的gcc和g++,命令如下: ``` sudo apt install gcc g++ -y ``` 安装完成后,用以下命令检查gcc和g++的版本是否为7.5.0以确认安装成功;若安装未成功,请重新安装直到成功为止: ``` gcc --version g++ --version ``` #### 安装Apollo内核 开发套件上运行Apollo需要Apollo Kernel,请按照如下步骤下载、安装预编译的内核: a.从[linux-kernel-5.4.115-apollo-rt](https://apollo-system.cdn.bcebos.com/release_installer/linux-kernel-5.4.115-apollo-rt.zip)下载发布的Apollo Kernel的预编译的安装包linux-kernel-5.4.115-apollo-rt.zip压缩文件。 b.安装包下载完成后,解压后安装: ``` unzip linux-kernel-5.4.115-apollo-rt.zip cd linux-kernel-5.4.115-apollo-rt sudo dpkg -i ../*.deb ``` c.安装完成后,使用`reboot`命令重新启动计算机。进入系统后,在终端中输入`uname -r`,若输出“5.4.115-apollo-rt”字样,则表示此时系统是以apollo-kernel引导的。 注意:从此以后,每次开机都需要以apollo-kernel来引导系统。 #### 安装GPU驱动 客户自己重新安装系统,请先安装驱动,然后再检查驱动以确认驱动已装好。 ##### 安装驱动 下载apollo-kernel官网上的脚本[install-nvidia.sh](https://github.com/ApolloAuto/apollo-kernel/blob/master/linux/install-nvidia.sh)至当前用户的`home`目录下,输入以下命令完成显卡驱动内核模块的安装: ``` cd ~ sudo apt install make sudo bash install-nvidia.sh ``` 完成显卡驱动内核模块的安装后,在当前用户的`home`目录下会出现一个名为`NVIDIA-Linux-x86_64-460.32.03.run`的文件,执行以下命令完成显卡驱动用户库的安装: ``` cd ~ sudo bash ./NVIDIA-Linux-x86_64-460.32.03.run --no-x-check -a -s --no-kernel-module ``` 完成显卡驱动用户库的安装后,重新启动工控机。 ##### 检查驱动 在终端中输入以下命令来检查显卡驱动内核模块是否安装成功: ``` cat /proc/driver/nvidia/version ``` 若输出的内容中包含”460.32.03”字样,则表示显卡驱动内核模块安装成功;若不是,请重新安装显卡驱动内核模块。 在终端中输入`nvidia-smi`,能看到显卡的信息且最下面没有出现No running processes found的相关字样,输入`nvidia-settings`能调出显卡的配置界面,则表示显卡驱动安装成功。 #### 安装Can驱动 若是蓝色的8108的IPC,请先安装EmucCan驱动然后再检查EmucCan驱动。 ##### 安装EmucCan驱动 在Nuvo-8108GC中,系统搭配的是EmucCan卡,其驱动安装步骤如下所示: a.安装EmucCan并添加rules文件 在系统`/etc/udev/rules.d/`目录下执行`sudo touch 99-kernel-rename-emuc.rules`命令新建一个文件`99-kernel-rename-emuc.rules`,执行`sudo vim 99-kernel-rename-emuc.rules`命令添加文件内容: ACTION=="add",SUBSYSTEM=="tty",MODE=="0777",KERNELS=="1-11:1.0",SYMLINK+="ttyACM10" 然后先按`ESC`键然后再按`:wq`保存文件内容退出,并重启系统。重启系统后执行`cd /dev`命令,用`ls -l ttyACM*`命令查看设备,要确保`ttyACM10`存在。 b.下载emuc-B202驱动包 下载地址[emuc-B202 Driver](https://www.innodisk.com/Download_file?D7856A02AF20333811EBF83A6E6FDFE33EA1E6ADE20CB07A5FC76B45308372115093FDFBD74CB08F81E813C3A8FBECB1910E9D0AF44AF538CBECD9763FE8F62FE22E10EA399FD3BB2B1D88917B01FBAD74D57A372ECD399714E2782387CE085F) 将EMUC-B202文件下的Linux下的驱动安装包解压出来放到当前用户的home目录下并将文件夹重命名为SocketCAN,将当前目录设置到这个文件夹下,并执行`make`命令: ``` cd SocketCAN/ make ``` 生成的文件如下图所示 : ![图片](images/software_installation_emuc1.png) c.启动can卡 将`start.sh`中的第四行的内容`dev_name=ttyACM0`修改为`dev_name=ttyACM10`后保存文件。在当前目录下执行`bash start.sh`命令,如下图所示: ![图片](images/software_installation_emuc2.png) ##### 检查EmucCan驱动 a.测试can卡发送接收 在终端中输入以下命令安装can的测试工具:`sudo apt install can-utils -y`,然后执行命令`cansend can0 1FF#1122334455667788`,在另开一个终端执行以下命令: ``` candump can0 ``` 循环发送cansend命令,能够在candump中收到发送的数据,如下图所示 : ![图片](images/software_installation_emuc4.png) 则表示Can驱动安装成功。 b.注意事项 在后续启动apollo的canbus模块时,需要先在docker外运行start.sh脚本。 #### 安装docker软件 重新安装操作系统的客户请先安装docker,然后再检查docker。 ##### 安装docker 使用apollo官网上的[install_docker.sh](https://github.com/ApolloAuto/apollo/blob/v6.0_edu/docker/setup_host/install_docker.sh)来安装docker。工控机在联网情况下在终端中输入以下命令来完成安装: ``` sudo apt update sudo apt install curl sudo bash install_docker.sh ``` ##### 检查docker 在终端中输入以下命令来验证docker是否安装成功: ``` sudo docker run hello-world ``` 若能看到helloworld的相关信息,则表示docker安装成功。 ![warning_icon](images/warning_icon.png)**WARNING**:在以下模块的操作中,如非本文档或操作系统要求,禁用一切`sudo`操作,切记! #### 下载Apollo源代码 a、请参考以下操作来下载Apollo源代码: ``` cd ~ sudo apt update sudo apt install git -y git init git clone -b r5.5.0 https://gitee.com/ApolloAuto/apollo.git ``` 代码下载的时间视网速的快慢而有所区别,请耐心等待;下载完成后的代码在~/apollo目录下,若您需要和Apollo代码保持完全同步,请接着执行以下命令: ``` git remote set-url origin https://github.com/ApolloAuto/apollo.git git pull ``` #### 设置Apollo编译环境 a.设置环境变量,在终端输入以下命令: ``` cd ~ echo "export APOLLO_HOME=$(pwd)" >> ~/.bashrc source ~/.bashrc ``` b.将当前账户加入docker账户组中并赋予其相应权限,在终端输入以下命令: ``` sudo gpasswd -a $USER docker sudo usermod -aG docker $USER sudo chmod 777 /var/run/docker.sock ``` 命令执行完成后,重新启动一下计算机。 #### 编译Apollo源代码 a.启动并进入docker容器,在终端输入以下命令: ``` cd ~/apollo bash docker/scripts/dev_start.sh ``` 第一次进入docker时或者image镜像有更新时会自动下载apollo所需的image镜像文件,下载镜像文件的过程会很长,请耐心等待。这个过程完成后,请输入以下命令以进入docker环境中: ``` bash docker/scripts/dev_into.sh ``` b.编译apollo,在终端输入以下命令,等待编译完成,整个编译过程大约耗时38分钟: ``` bash apollo.sh build_opt_gpu ``` #### 运行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.回放数据包 在终端输入以下命令下载数据包: ``` python3 docs/demo_guide/record_helper.py demo_3.5.record ``` 输入以下命令可以回放数据包,在浏览器DreamView中应该可以看到回放画面。 ``` cyber_recorder play -l -f demo_3.5.record ``` 如果成功在浏览器中看到回放画面,则表明您的apollo系统已经部署成功! ## NEXT 现在,您已经完成Apollo系统安装,接下来可以开始[循迹搭建--车辆集成](vehicle_integration_cn.md) ## 常见问题 a.显卡的驱动没有安装或者没有安装成功 请参考显卡的驱动安装的部分重新安装,注意需要在apollo内核中安装GPU的驱动并且安装后需要重新启动计算机。 b.docker进不去, no matching entries in passwd file 安装好ubuntu Linux,apollo-kernel,docker后,执行 ``` bash docker/scripts/dev_start.sh bash docker/scripts/dev_into.sh ``` 遇到报错如下: unable to find user xxx : no matching entries in passwd file. 主要是由于用户权限没有加进docker去导致。执行如下两行命令: `sudo gpasswd -a $USER docker` `sudo usermod -aG docker $USER` 其中$USER是登陆用户名,执行成功后logout,然后重新登陆ubuntu。 如果没有解决,那么有可能是/apollo/scripts/docker_adduser.sh没有权限,需要`sudo chmod a+rx /apollo/scripts/docker_adduser.sh`增加权限。( 我们曾遇到一种情况就是/apollo/scripts/目录下有一个docker_adduser.sh~文件,导致报错,所以需要检查是否存在副本文件或者交换文件之类的,需要删除掉 )。 如果还是不行,可以试试`sudo chmod 777 /var/run/docker.sock docker/scripts`。 c.编译的时候CAN警告 这个CAN警告是ESD-CAN卡的编译警告,开发套件小车使用的是EMUC-CAN卡,请直接忽略这个警告。 d.`apollo`代码没有`git remote -v`、`git branch -a`和`git log`等相关的`git`信息。 造成以上问题的原因是用户错误地使用了`git init`等相关的命令而导致的`apollo`代码的`git`信息丢失。依次输入以下命令即可恢复`apollo`代码的`git`信息,切记在操作之前备份自己的`apollo`代码。 ``` cd ~/apollo git init git remote add origin https://gitee.com/ApolloAuto/apollo.git git clean -fd git pull origin master git pull git checkout -b r5.5.0 origin/r5.5.0 git branch -D master ```