Apollo学习

Apollo入门

安装

内存尽量大,100G + ,交换空间也要大一些16G,或者12G,按照教程流程基本可以安装好。

文档学习


基本框架

Apollo学习_第1张图片

Apollo学习_第2张图片
主要包括四个部分:最底层的车辆认证平台,往上一层的硬件开发平台,第三层的核心开源软件平台以及最上层的云服务层。

Ubuntu 18.04安装Apollo 6.0:从零开始到启动Demo(超多细节)


一、云端服务平台(Cloud Service Platform)

包括高精地图(HD Map);仿真服务(Simulation);量产服务组件(Production component);Apollo数据管道(Apollo data Pipeline);安全(Security);OTA(空中下载技术),通过移动通信的接口实现对软件进行远程管理,传统的做法到4S店通过整车OBD对相应的ECU进行软件升级。);V2X(Vehicle-to-Everything,车路协同),根据不同的协同要素,V2X主要分为车与车之间(V2V)、车与路之间(V2I)、车与人之间(V2P)、车与网络之间(V2N)四大应用版块。


二、开源软件平台

总体框架

Apollo学习_第3张图片
核心开源软件层又可以细分为三层:
最下面的是RTOS实时操作系统,在Apollo中,我们使用打补丁的方式来实现实时的效果。
运行时框架:是Apollo的操作环境,是ROS的定制版即机器人操作系统。为了使ROS适应无人车,Apollo团队改进了共享内存的功能和性能、去中心化和数据兼容性。
应用程序模块层(框架为Apollo Cyber RT):Apollo软件平台具有各种模块,这些模块包括 MAP引擎、定位、感知、规划、控制、端到端驾驶以及人机接口(HMI)。每个模块都有自己的算法库。

代码结构

代码结构
结构

Apollo Cyber RT

常用术语
Apollo学习_第4张图片
开发工具

  • 可视化工具 cyber_visualizer
  • 命令行工具 cyber_monitorcyber_recorder

运行
1.前提:安装环境,

source /apollo/cyber/setup.bash

2.然后:并进入docker容器

cd apollo
bash docker/scripts/dev_start.sh
bash docker/scripts/dev_into.sh

3.下载数据包

#下载
wget https://apollo-system.cdn.bcebos.com/dataset/6.0_edu/demo_sensor_data.tar.xz
#解压
tar -xvf demo_sensor_data.tar.xz

Apollo学习_第5张图片
4.运行cyber_recorder

cyber_recorder play -f /path/to/your_record
#此处
cyber_recorder play -f sensor_rgb.record -loop

打开新的终端,注意进入另个容器的时候,不能再dev_start.sh,只用dev_into.sh就可
5.查看channel数据

cyber_monitor

步骤五:运行Cyber_visualizer
重新打开一个终端,在 Apollo Docker 环境中执行如下命令运行 cyber_visualizer:

cyber_visualizer

三、硬件开发平台

Apollo学习_第6张图片

Apollo学习_第7张图片

四、车辆认证平台


编译

四个步骤:

  • 预处理
  • 编译
  • 汇编
  • 链接

bazel编译

bazel优势:精细,对依赖的管理更好。

bazel文件类型

  • WORKSPACE :bazel相对根目录,工作区存放了所有源代码和Bazel编译输出的文件。
    Bazel工程的根目录下,必须包含一个文件名为Workspace的文件,它用来指明构建的根目录,Workspace采用类似于Python的语法。
    Workspace下包含多个Package,而每个Package又包含多个编译目标Target。

  • BUILD: 编译文件,文章理解
    cc_library,cc_binary, cc_test 三种规则

  • .bzl:rules文件,bazel扩展

  • .bazelrc:配置文件,可指定

  • bazelignore:忽略的目录

一个 bazel demo网址

依赖非bazel文件的方法:

  1. 添加local repository,git repository or http archive
    在本地的WORKSPACE中
local_repository
(
name= "coworkers_project",
path=" ",
)
  1. 带new_前缀的规则,比如,new_local_repository
new_local_repository(
build_file ="Myworker.BUILD",
#build_file指定要在现有项目上叠加BUILD文件

  1. 编译成so后缀的文件,比如引用OpenCV的库之类的,
cc_libary(
name="mylib",
srcs=["mylib.so"],
hdrs=["mylib.h"],
)
#可通过@mylib来引用


链接

分为动态库和静态库,动态库用的多,后缀是.so。Apollo学习_第8张图片
使用命令ldd 可以查看动态库的链接。
Apollo学习_第9张图片

启动Cyber_RT(默认情况下,cyber的日志信息是写出到磁盘文件中,并不会在终端输出,为了方便查看运行结果,我们需要修改cyber的配置文件,使其能够将日志消息输出到终端上)


进入容器and Cyber_RT

第一步:启动docker容器

cd apollo
bash docker/scripts/dev_start.sh

第二步:进入docker

bash docker/scripts/dev_into.sh

第三步 修改文件

vim cyber/setup.bash
#参数GLOG_alsologtostderr的默认值为0,修改为1
#加载资源
source setup.bash

第四步:编译cyber
./apollo.sh build
or
bazel build cyber

生成了bazel-bin/文件夹
Apollo学习_第10张图片

Docker

个人理解
Docker解决的问题就是环境的问题。一个比方,docker把操作系统,代码,配置全部放到集装箱里。再打包放到鲸鱼上,由鲸鱼给我们送到服务器上,在我的机器上怎么运行,在别的机器上也怎么运行。不会有任何的问题。

常用命令
docker pull
docker push
docker stop
docker restart
docker run
docker ps:列出容器
docker start
docker stop
docker restart
docker run

Apollo学习_第11张图片

制作docker镜像
Dokerfile:通过编译dockerfile可以用来制作docker容器
docker build -f dockerfile -t tag

Apollo学习_第12张图片

你可能感兴趣的:(Apollo,学习,ubuntu)