技术文档丨循迹搭建--Apollo系统安装
该用户手册旨在帮助用户在开发套件上安装、配置软硬件,并启动使用Apollo自动驾驶平台。
ENJOY THE FOLLOWING
在集成车辆之前,首先需要完成工控机的硬件安装,如CAN卡安装;之后需要完成工控机的软件安装,包括Ubuntu Linux安装、Apollo软件系统安装等。
工控机硬件安装包括CAN卡的安装和相关线缆的连接,以及BIOS相关的设置。
IPC配置
参考下述IPC配置:
Nuvo-6108GC-RTX2060s-E3-1275
DDR4-32GB-ECC
三星SSD 256G
EMUC-B202 CAN
PA-280W-OW
或者:
Nuvo-8108GC-RTX2070s-i9-9900k
DDR4-32GB-ECC
Seagate M.2 2280 NVMe SSD(PCIe Gen3x4)512G
EMUC-B202 CAN
480W适配器
注意,在较早版本的8108工控机中,CAN口的标号为从右向左分别为CAN1、CAN2,文档中将统一按照上图所示,分别称为CAN0、CAN1,请使用较早版本8108的用户注意。新用户可以忽略。
准备IPC
参考下述步骤:
准备好CAN卡并进行安装
在IPC中,显卡被预先安装在一个PCI插槽中。如果我们收到的是EMUC-B202 CAN,它已被预装在IPC内,则CAN卡安装这一步,可以跳过。如果我们收到的是ESDCan,我们需要将CAN卡安装在另外一个PCI插槽中,步骤如下:
a. 找到并拧下机器边上的8个螺丝(显示在棕色方框内或棕色箭头指向的区域)。
b. 移除机器盖板。
在机箱底部将能看到固定着的3个PCI插槽(其中一个已经被显卡占据)。
c. 设置CAN卡的终端跳线:将4个红色的跳线帽从原位置移除并放置在终端位置,如下图所示:
d. 将CAN卡插入到一个PCI插槽中。
e. 安装IPC的盖板。
配置IPC加电组件
a. 将电源线接入到为IPC配置的电源连接器(接线板)。
6108的电源线
8108的电源线
8108的电源线是四跟,两正两负,正极的两根电源线是贴有V+的白色标签的,如下图所示:
将接有正极的两根电源线的端子插入V+接口,将接有负极的两根电源线的端子插入GND接口,如下图所示:
b. 将显示器、以太网线、键盘和鼠标接入IPC。
启动计算机
1- 计算机启动时按F2进入BIOS设置菜单
2- 进入 [Advanced] => [Smart Fan Setting]
3- 设置 [Fan Max. Trip Temp] 为 50
4- 设置 [Fan Start Trip Temp] 为 20
<左右滑动以查看完整代码>
如果使用的是较早没有预装显卡驱动及Apollo镜像的工控机版本,则需使用DVI线或AGV线将显示器与工控机集成显卡接口相连,按照如下步骤将显示模式设置为AUTO,设置成功后,使用HMDI线连接显示器与工控机的HDMI接口,并重启工控机:
1- 计算机启动时按F2进入BIOS设置菜单
2- 进入 [Advanced]=>[System Agent (SA) Configuration]=>[Graphics Configuration]=>[Primary Display]=> 设置为 "AUTO"
<左右滑动以查看完整代码>
1- 计算机启动时按F2进入BIOS设置菜单
2- 进入 [Power] => [SKU POWER CONFIG] => 设置为 "MAX TDP"
<左右滑动以查看完整代码>
连接电源
配置Linux系统
开发套件的客户的工控机已经预装了Ubuntu18.04LTS操作系统和apollo运行所需的环境,预装系统的IPC的用户名和密码均为apollo。
安装并降级GCC和G++
请执行以下命令安装4.8版本的gcc和g++,命令如下:
1sudo apt update
2sudo apt-get install g++-4.8 g++-4.8-multilib gcc-4.8 gcc-4.8-multilib
3sudo /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++的版本:
1gcc --version
2g++ --version
<左右滑动以查看完整代码>
若输出的gcc和g++是4.8版本的,则确认安装成功;否则请重新安装直到成功为止。
升级Apollo源代码
当前用户的home目录下已有Apollo代码,请按照以下步骤来更新代码:
1cd ~/apollo
2git checkout .
3git pull origin r5.5.0
<左右滑动以查看完整代码>
设置Apollo编译环境
a. 设置环境变量,在终端输入以下命令:
1cd ~
2echo "export APOLLO_HOME=$(pwd)" >> ~/.bashrc && source ~/.bashrc
3source ~/.bashrc
<左右滑动以查看完整代码>
b. 将当前账户加入docker账户组中并赋予其相应权限,在终端输入以下命令:
1sudo gpasswd -a $USER docker
2sudo usermod -aG docker $USER
3sudo chmod 777 /var/run/docker.sock
<左右滑动以查看完整代码>
命令执行完成后,重新启动一下计算机。
c. 请输入以下命令加载docker的image镜像:
1cd ~/images_r5.5.0
2sudo bash LoadImages.sh
<左右滑动以查看完整代码>
编译Apollo源代码
a. 启动并进入docker容器,在终端输入以下命令:
1cd ~/apollo
2bash 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
<左右滑动以查看完整代码>
运行DreamView
a. 若您已经在docker环境中,请忽略此步骤,否则请执行以下命令进入docker环境:
1cd ~/apollo
2bash docker/scripts/dev_start.sh
3bash docker/scripts/dev_into.sh
<左右滑动以查看完整代码>
b. 启动apollo 在终端输入以下命令:
bash scripts/bootstrap.sh
<左右滑动以查看完整代码>
如果启动成功,在终端会输出以下信息:
1nohup: appending output to 'nohup.out'
2Launched module monitor.
3nohup: appending output to 'nohup.out'
4Launched module dreamview.
5Dreamview 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系统已经部署成功!
现在,您已经完成Apollo系统安装,接下来可以开始《循迹搭建--车辆集成》(链接见文末)。
a. docker进不去,no matching entries in passwd file。
安装好ubuntu Linux,apollo-kernel,docker后,执行:
1bash docker/scripts/dev_start.sh
2bash 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。
b. 编译的时候CAN警告
若您的CAN卡是EMUC-CAN卡,请直接忽略;若您的CAN卡是ESD-CAN卡,请接着往下看。
编译的时候,刚开始就报出几行黄色的提示找不到ESD CAN的报错,原因是CAN驱动没有安装好,参见下图:
首先要下载ESD CAN安装包,按照
https://github.com/ApolloAuto/apollo-kernel/blob/master/linux/ESDCAN-README.md进行CAN驱动安装。其次需要从安装包中拷贝头文件和库文件到指定目录。具体操作如下: 检查apollo/apollo.sh脚本中的check_esd_files()函数,这里看到1.0.0版本会检查3个文件: libntcan.so, libntcan.so.4, libntcan.so.4.0.1, 所以对应应该建立的软链接是:
1ln -s libntcan.so.4.0.1 libntcan.so.4
2ln -s libntcan.so.4.0.1 libntcan.so.4.0
<左右滑动以查看完整代码>
请看apollo.sh的check_esd_files()函数:
1function check_esd_files() {
2if [ -f ./third_party/can_card_library/esd_can/include/ntcan.h \
3 -a -f ./third_party/can_card_library/esd_can/lib/libntcan.so \
4 -a -f ./third_party/can_card_library/esd_can/lib/libntcan.so.4 \
5 -a -f ./third_party/can_card_library/esd_can/lib/libntcan.so.4.0.1 ]; then
6 USE_ESD_CAN=true
7else
8 warning "${YELLOW}ESD CAN library supplied by ESD Electronics does not exit.${NO_COLOR}"
9 warning "${YELLOW}If you need ESD CAN, please refer to third_party/can_card_library/esd_can/README.md${NO_COLOR}"
10 USE_ESD_CAN=false
11fi
12}
<左右滑动以查看完整代码>
不同的apollo版本可能对检查的库文件名称的要求不同,可根据实际情况建立软连接。
c. apollo代码没有git remote -v、git branch -a和git log等相关的git信息。
造成以上问题的原因是用户错误地使用了git init等相关的命令而导致的apollo代码的git信息丢失。依次输入以下命令即可恢复apollo代码的git信息,切记在操作之前备份自己的apollo代码。
1cd ~/apollo
2git init
3git remote add origin https://gitee.com/ApolloAuto/apollo.git
4git clean -fd
5git pull origin master
6git pull
7git checkout -b r5.5.0 origin/r5.5.0
8git branch -D master
<左右滑动以查看完整代码>
*《循迹搭建--车辆集成》
https://gitee.com/ApolloAuto/apollo/blob/master/docs/D-kit/Waypoint_Following/vehicle_integration_cn.md
以上是“循迹搭建--车辆循迹演示”的全部内容,更多话题讨论、技术交流可以扫描下方二维码添加『Apollo小哥哥』为好友,进开发者交流群。