Apollo实践课程
- 第0讲 导论
- 第1讲:Apollo硬件连接集成—硬件介绍
- 第2讲 Apollo硬件连接集成—集成实操
- 第3讲 Apollo软件系统部署
- 第4讲 定位模块配置
- 第5讲 车辆动力学标定
- 第6讲 启动车辆循迹
第0讲 导论
循迹自动驾驶:车辆按照录制好的轨迹线进行自动驾驶。
解决问题:
第1讲:Apollo硬件连接集成—硬件介绍
关于循迹:
- 循迹就是车辆按照事先录制好的一段轨迹进行自动驾驶。
- 循迹的过程中车辆不能进行避障
- 循迹是车辆进行自动驾驶时的一个最基本的能力
1.1 车辆循迹的硬件组成
Apollo提供了硬件选型指南,车辆选型指南,以及Apollo开发套件。
该套件由5部分组成
- 车辆底盘
- 计算单元:推荐使用工控机
- 感知系统:包括摄像头、前置毫米波雷达、激光雷达
- 定位系统:包括前后GPS天线,GPS接收机和惯性测量单元IMU
- 其他配件:CAN卡,4G路由器,键盘鼠标等。
循迹不具备避障能力,所以在搭建时不需要考虑感知传感器。
1.1.1计算单元
-
计算单元是自动驾驶的大脑,为车辆提供了实时的传感器数据采集、计算处理、感知规划、决策控制等各项工作。同时,计算单元位于车辆内部,长期处于颠簸震动状态,工作环境较为恶劣。因此推荐使用工控机作为计算单元。
-
工控机:工业控制计算机,是一种采用总线结构,对生产过程及机电设备、工艺装备进行检测与控制工具总称。
-
工控机的主要类别
- IPC(PC总线工业电脑)
- PLC(可编程控制系统)
- DCS(分散型控制系统)
- FCS(现场总线系统)
- CNC(数控系统)
-
Apollo推荐使用的工控机
同时配备:- GTX1080显卡
- 多个USB接口,支持多路摄像头输入
- 多个支持PCI-E的接口
1.1.2 定位系统
- IMU的作用:
- 双天线定位
可以实现静态定位的初始化。
1.1.3 CAN卡
开发套件选用的是EMUC-CAN卡。
1.2 硬件连接与通讯简介
-
基于硬件本身正常工作时的供电
需要注意:
①正负极不要接反
②达到额定电压才能正常工作,但不能超过 -
各硬件的用电情况
-
硬件的连接
-
良好的接线习惯
1、接线前要确定额定电压
2、接线时要确保正负极接对
3、连接完毕后请仔细检查
4、检查无误后再上电测试
第2讲 Apollo硬件连接集成—集成实操
2.1 CAN卡的安装和要求
2.1.1 准备工作
-
需将两个跳帽安装在指定位置以确保两路CAN通讯同时工作
-
将CAN卡和DB9数据线连接,注意接口的对应关系
2.1.2 拆装工控机
- 拆解螺丝
- 取下工控机外壳
- 找到工控机的mini PCI-E接口
- 固定CAN卡
- CAN卡接线,CN1接CAN0,CN2接CAN1
2.2 将工控机安装在车辆上
- 将工控机支架安装在工控机底部
- 将工控机安装在车辆上(工控机带接口的部分朝后安装)
- 安装工控机电源
2.3 定位硬件的安装
2.3.1 安装GPS天线
- 将天线本体和天线底座连接
- 底座通过磁铁和双面胶固定在车体上
- 连接GPS线束
注意:保证两个GPS天线在一条直线上
2.3.2 安装GPS接收机和IMU
注意:IMU惯性测量单元一般安装至车辆后轴中心附近,可以减少测量误差,有效表征车辆运动姿态。
- 安装在车辆后轴中心
- 将GPS天线与接收机连线
- 给GPS接收机供电
3.1 连接集成线束(有电源线、信号线、网线灯等)
3.2 车辆盘供电线与接收机供电线连接(中间加一个保险盒)
2.4 4G路由器及显示器的安装
- 双面胶固定在车辆底盘(布置在工控机和M2接收器附近)
- 连接4G路由器电源
- 整理线束
注意:显示器的电流一般是7-8A,因此需要连接在15A的保险盒上
2.5 连接通信接口
- 4G路由器分别与工控机和GPS接收器连网线
- GPS接收机数据线和工控机相连(工控机的USB接口上)
- 显示器接口与工控机相连(HDMI接口)
- 将工控机的CAN口与底盘CAN口相连
第3讲 Apollo软件系统部署
- 软件系统:
(1)Ubuntu操作系统
(2)linux4.4内核
(3)apollo1.5.5内核 - 驱动软件:
(1)GPU显卡驱动
(2)ESD-CAN卡驱动
(3)socket-CAN卡驱动 - 应用软件:
(1)docker软件
(2)git软件
(3)apollo源代码
3.1 BIOS设置
- 工控机启动时,按F2进入BIOS设置菜单
1选择advanced
2设置风扇的相关参数
3设置温度达到50时风扇达到最大转速
4设置温度达到20时风扇开始起转 - 设置工控机一直以最佳状态运行
1进入power
2找sku power config设置为max tdp
3.2 软件安装
3.2.1 计算机操作系统软件
-
安装Ubuntu操作系统
(1)准备一个U盘,下载镜像文件(Ubuntu 14.04 LTS)
(2)创建一个可启动的U盘
(3)将U盘插入工控机,按开机键启动
(4)按F12进入启动菜单
(5)选择U盘进行启动引导
(6)安装Ubuntu系统,重新启动工控机 -
Linux 4.4内核安装
(1)在安装Ubuntu系统且联网的情况下
(2)在终端使用cd -进入home路径
(3)使用sudo apt-get update进行软件包的升级
(4)使用sudo apt-get install linux-generic-lts-xenial安装linux4.4内核
(5)重启工控机 -
apollo内核安装
(1)下载apollo内核,下载网站https://github.com/ApolloAuto/apollo-kernel/releases
(2)使用tar zxvf linux-4.4.32-apollo-1.5.5.tar.gz进行解压
(3)cd跳转到install目录
(4)sudo bash install_kernel.sh启动安装
(5)重启工控机
3.2.2 硬件驱动的安装
-
GPU驱动安装
(1)通过wget http://us.download.nvidia.com/XFree86/Linux-x86_64/375.39/NVIDIA-Linux-x86_64-375.39.run下载驱动
(2)终端输入sudo bash ./NVIDIA-Linux-x86_64-375.39.run --no-x-check -a -s --no-kernel-module安装
(3)重启工控机 -
CAN卡的驱动
-
ESD-CAN卡驱动
(1)从CAN卡供应商拿到CAN卡驱动安装包,一般命名为esdcan-pcie4 开头的文件
(2)拷贝到工控机,并解压
(3)通过cd esdcan-pcie402-linux-2.6.x-x86_64-3.10.3使用cd命令跳转到解压好的文件夹中
(4)通过cd crc/跳转到stc目录
(5)通过make -C /lib/modules/uname -r/build M=‘pwd’
对程序进行编译
(6)通过sudo make -C /lib/modules/uname -r/build M=pwd module_install安装ESD-CAN卡驱动
(7)如果目录中存在驱动文件则成功 -
socket CAN卡驱动安装
略
3.2.3 应用软件的安装
- docker安装
(1)在 docker 的官网上下载 deb 安装包
(2)双击 deb 安装包,在 software center 进行安装,重启工控机 - GIT安装
工控机在联网的状态下输入以下命令:sudo apt-get install git
3.3 操作指令
3.3.1 拉取Apollo源代码
(1)通过cd ~进入 home 目录:
(2)通过git init初始化git仓库
(3)下载源代码git clone https://github.com/ApolloAuto/apollo.git
(4)通过cd ~/apollo跳转到 Apollo 目录:
(5)将代码切换到工作分支 r3.0.0:git checkout -b r3.0.0 origin/r3.0.0
(6)设置 Apollo 环境变量:echo "export APOLLO HOME-$(pwd)">> ~/. bashrc && source ~/. bashro source ~/. bashrc
(7)将当前用户加入 docker 用户组:
sudo gpasswd -a SUSER docker
sudo usermod -aG docker SUSER
(8)重启
3.3.2 启动并加入docker容器
3.3.3 编译apollo
3.3.4 apollo控制界面以及操作界面
第4讲 定位模块配置
4.1 卫星定位的基本原理
测量原理是三角测量,每个卫星都有高精度的原子钟。
- 米级的定位精度无法满足无人驾驶汽车的需求。
- 在无人车定位中广泛应用的定位技术是通过 RTK(实时动态差分),获得准确的定位信息。在空旷无遮挡的户外,能够达到厘米级精度。
- 差分技术是在一个精确的已知位置-基站,上面安装定位监测接收机,计算得到基站与定位卫星之间的距离,通过实时处理基站载波相位观测量将基站的定位信息补偿实时发送到用户的接收机上进行求差解算。
4.2 定位系统的配置
-
定位系统主要包括 GPS 天线、接收机和 IMU 惯性测量单元,通过 IMU惯性测量单元获取车辆的姿态信息补偿到定位系统当中,在车辆安装好GPS 天线和 IMU 后根据实际安装位置测量杆臂值,将杆臂补偿值配置到GPS 接收机中,这样才能得到解算后的定位信息才是准确的。
-
车辆的杆臂值是指后天线的几何中心位置相对于 IMU 的几何中心在直角坐标系内 x、y、z 三方向的位置差。
-
将M2的升级口和工控机连接
(1)M2 升级线连接到 M2 上
(2)通过延长线连接 M2 升级口
(3)另一端接到工控机 COM1 串口
(4)配置 M2 前要先给设备连接电源
4.3 配置M2
4.3.1 配置M2——基础配置
- 前提:
工控机上安装 Linux 系统、下载并安装 Apollo 软件系统。
在工控机上下载 cutecom 串口助手,通过串口助手与 M2 设备进行交互,写入配置信息。 - 步骤:
(1)打开终端,输入 sudo apt-get install cutecom 下载 cutecom
(2)输入 sudo cutecom 启动 cutecom 的界面
(3)在 cutecom 界面我们先选择端口号/dev/ttyS0,因为工控机连接的是COM1 串口,它默认的就是这个 ttyS0 的接口。空白处是收发数据的记录面板。点击 open device 正常情况下,数据记录面板上是没有数据收发的,如果是有数据一直在面板上刷屏的话,则需要进行端口的重置
(4)因为数据记录面板没有数据收发,可以先输入一条获取配置信息的命令测试通讯是否正常,比如输入获取杆臂值的指令,可以看到数据面板返回之前写入的 levelarm 配置值,只要有返回值,那么说明我们的连接是正常的,这是我们可以在 input 命令窗口内写入 M2 设备的配置命令
(5)配置 M2 的所有参数
(6)每次在输入 input 中输入一条命令,如果正常就会在空白面板反馈一条命令行
4.3.2 配置M2——网口信息
- 根据路由器在设置好一次后基本是不会改变的,但是如果换了一个路由器或者把 M2 拿到别的地方后,这时网络地址就会发生改变,需要重新配置。设置网口信息主要是保证 M2 设备能够正确的连接网络。
- 设置 M2 设备的本地 IP 地址要和路由器本地的 IP 地址是在一个网段上,一般把路由器的 IP 地址设置为 192. 168. 1. 1,那我们就可以把M2 的 IP 地址设置为 192. 168. 1. 2 或者任何 192. 168. 1. x(确保不和其他设备冲突),将子网掩码默认设置为 255. 255. 255. 0,默认网关设置为 192. 168. 1. 1
4.3.3 配置M2——定位基站信息
确保基站格式是 RTCM32,准确获知基站的端口号、用户名、密码和挂载点。
4.3.4 配置M2——杆臂值
将杆臂值 X 的偏差、Y 的偏差、Z 的偏差替换到实际的车辆测量的杆臂值,然后进行设置,设置成功后会返回OK。
.
.
完成上述配置操作之后,需要对配置进行保存,输入命令:
$cmd,save,config*ff
需要对 M2 设备进行断电,重新上电,配置才会生效
4.4 在 Apollo 软件中配置定位信息的配置文件
- 首先修改 Apollo 配置文件内的基站信息,修改时区、杆臂值
- 修改定位的配置,因为循迹时不适用激光雷达这些设备,定位只使用 RTK 的定位方法,所以需要将定位模块下的激光雷达设置为 false
4.5 车辆实操
将车开到室外,进行定位信号的实测验证,用于检验定位配置是否正确,通过启动 GPS 定位模块,验证定位信息是否准确
- 将车辆底盘上电,工控机开机,进入到 Linux 操作系统来启动 Apollo,首先进入 Docker 环境,bash docker/scripts/dev start. sh
- 进入 Apollo 容器当中
- 执行 bootstrap 脚本
- 打开浏览器并输入 localhost:8888 进入 Dreamview 的页面,在车辆的地方选择 Ch,即默认配置文件是在 Ch 目录下
- 启动定位相关模块
- 查看每个模块所广播的 topic,检查定位状态类型和定位输出
第5讲 车辆动力学标定
5.1 标定的目的和基本原理
- 标定表
标定表提供一个描述车辆速度、油门/刹车踏板开合度、加速度量之间关系的映射表。供Apollo查询使用。
5.2 标定的操作方法和步骤
5.2.1 标定前准备——启动各模块
- 进入Docker环境—通过终端输入
bash docker/scrips/dev_start.sh
拉起Docker - 启动模块:模块有canbus、gps、localization和rescore
- 检查:通过输入命令行检查canbus,再通过输入命令行检查GPS情况,最后输入命令行检查定位。
5.2.2 进入标定
- 标定脚本执行目录
/apollo/modules/tools/calibration
5.2.3 标定实操演示——紧急停车介绍
-
遥控器有急停开关,当车不按照预想行进时,需要及时接管。
-
车尾部也有急停开关。
5.2.4 标定实操演示——数据采集
-
数据采集前的准备
确保遥控器不再接管车辆,并且急停按钮是弹开的状态 -
数据采集
- 标定脚本执行目录
/apollo/modules/tools/calibration
- 执行数据采集脚本
python data_collector.py
- 输入标定参数含义:输入x,y,z的值,分别标识油门开合度(百分比)、车辆目标到达速度和刹车开合度(百分比),z一定是负值,否则车辆无法停止。
- 数据采集停止命令:
q
,退出本次数据采集。 - 进行下一次采集,从步骤2开始,这次的x,y,z不一样。
- 最后会得到.csv 标定数据采集文件。
5.2.5 标定实操演示——数据处理
提示:车辆运动数据记录文件均以油门、刹车的比例命名,对记录文件进行处理,以得到标定表。
- 新建目录存放数据
mkdir cal_1001
(cal_1001是文件名) - 拷贝.csv文件到新目录下
cp *.csv ./cal_1001/
- 处理原始数据命令1
bash process_data.sh cal 1001
- 绘制标定结果
python plot_results.py result.csv
- 生成protobuf标定文件
bash result2pb.sh result.csv
- 得到记录数据值后,对该数据进行绘制标定并删除无用数据,拷贝数据段等内容处理。
第6讲 启动车辆循迹
6.1 循迹原理介绍
- 循迹文件包含的信息
轨迹信息
车速反馈
车辆加速度反馈
车辆的动作信息:油门/刹车踏板反馈、档位、方向盘转角等 - 循迹需要用到的软件
所以需要启动的模块有:Canbus, Control, GPS Localization, Planning roscore, Dreamview
6.2 Apollo开发套件配置文件简介
- 配置文件目录
apollo/modules/calibration/data/ch
- 包含的文件有:
- CAN bus配置文件
- 车辆参数brand
- can卡参数brand
- can卡参数type
- debug信息
- 标定文件
- 横向控制器和纵向控制器的相关参数
- 横向控制器LQR相关参数
- 车辆轮胎刚度
- 四轮的质量
- LQR的q参数
- 纵向控制通过速度PID和位置PID进行调节
- station
- speed
- 整车参数的配置文件
- IMU到车辆四边距离
- 整车长宽高
- 最小转弯半径
- 最大加速度、最大减速度
- 方向盘最大转角、最大转速、最小转速
- 转向传动比
- 车辆轴距、轮胎滚动半径
- 车辆停止时的速度
6.3 实操演示
- 确认车辆已上电,工控机已开启并进入Linux操作系统
- 启动docker,进入docker,启动bootstrap
- 进入dreamview
- 启动EMUC-CAN驱动程序
- 启动canbus、启动GPS、定位模块bash script/canbus(gps/localization).sh;查看topic
- 循迹
来源:oschina
链接:https://my.oschina.net/u/4287847/blog/4501657