百度Apollo学习笔记(更新中)

Apollo学习笔记

  • 一、首先介绍百度开源代码中文件结构内容
    • 1.Apollo总的索引文档
    • 2.帮助文档,目录:apollo/docs
      • 2.1 Quick Start Guide
      • 2.2 Technical Tutorial
      • 2.3 Cyber
      • 2.4 Specs
      • 2.5 Howto Guides
      • 2.6 demo_guide 运行线下演示
      • 接下总结一些关于Apollo运行的教程,帮助快速入门
  • 二、Apollo快速入门及仿真环境搭建教程
      • 1.Docker
      • 2.硬件接入
        • 一个很重要的问题,如何将不同于参考硬件的传感器继承到Apollo平台?
      • 3.编译
  • 三、Apollo传感器标定指南
  • 四、Apollo 3.5各功能模块启动过程解析

近期学习百度Apollo,特在此博客作学习笔记来总结相关知识。
因为只关注apollo中定位和激光雷达3d感知部分,大致的学习思路是,首先阅读apollo源码中的帮助文档,学习Cyber RT相关知识以及apollo的3d障碍物感知,定位部分。接着查看部分源码。

一、首先介绍百度开源代码中文件结构内容

相信大家同我一样,刚开始碰到apollo完全是一筹莫展,所以十分有必要梳理整个源码的结构内容。

1.Apollo总的索引文档

目录:apollo/docs/README.md
其中quick start guide里面主要讲的是如何安装apollo等教程。

2.帮助文档,目录:apollo/docs

百度Apollo学习笔记(更新中)_第1张图片

2.1 Quick Start Guide

  • A hardware and software guide to setting up Apollo, segregated by versions
  • quidkstart文件夹主要介绍如何安装apollo。

2.2 Technical Tutorial

  • Everything you need to know about Apollo. Written as individual versions with links to every document related to that version.
  • 该文件是Apollo5.0教程,推荐按照这个目录进行索引学习。目录:docs/apollo_5.0_technical_tutorial.md

2.3 Cyber

该文件夹下主要存放关于Cyber RT计算框架的相关知识文档。关于Cyber RT的总索引文档目录为:apollo/cyber/README.md
Cyber RT:
Apollo Cyber RT是百度自研得无人车计算任务实时并行计算框架,框架核心理念基于组件,通过组件实现有预先设定的“输入”、“输出”。实际上,在框架中,每个组件代表一个专用的算法模块。可以暂且理解为百度研发的升级版ROS。

Apollo Cyber RT is an open source, high performance runtime framework designed specifically for autonomous driving scenarios. Based on a centralized computing model, it is greatly optimized for high concurrency, low latency, and high throughput in autonomous driving.

During the last few years of the development of autonomous driving technologies, we have learned a lot from our previous experience with Apollo. The industry is evolving and so is Apollo. Going forward, Apollo has already moved from development to productization, with volume deployments in the real world, we see the demands for the highest level of robustness and performance. That’s why we spent years building and perfecting Apollo Cyber RT, which addresses that requirements of autonomous driving solutions.

百度Apollo学习笔记(更新中)_第2张图片

  • How to Develop Cyber RT inside Docker Environment on Both x86 and ARM Platform: Official docker image for Cyber RT development, which is easiest way to build and play with Cyber RT. On top of that, we officially support development of Cyber RT on both x86 and ARM platform.文档:CyberRT_Docker.md,介绍如何在Docker环境下build cyber。

  • Apollo Cyber RT Quick Start: Everything you need to know about how to start developing your first application module on top of Apollo Cyber RT.文档:CyberRT_Quick_Start.md,介绍如何简单的开发一个组件。

  • Apollo Cyber RT Developer Tools: Detailed guidance on how to use the developer tools from Apollo Cyber RT.文档:CyberRT_Developer_Tools.md,介绍了三种关于cyber的开发工具。

  • Apollo Cyber RT API for Developers: A comprehensive guide to explore all the APIs of Apollo Cyber RT, with many concrete examples in source code.文档:CyberRT_API_for_Developers.md,关于cyber的详细运用。

  • Apollo Cyber RT FAQs: Answers to the most frequently asked questions about Apollo Cyber RT.文档:CyberRT_FAQs.md,一些常见问题。

  • Apollo Cyber RT Terms: Commonly used terminologies in Cyber RT documentation and code.文档:CyberRT_Terms.md,一些专有名词的解释。

还有other文件,可以自行去查看。
关于Cyber RT的具体知识,请转到Cyber RT

2.4 Specs

  • A Deep dive into Apollo’s Hardware and Software specifications (only recommended for expert level developers that have successfully installed and launched Apollo)
  • 文件夹下存放Apollo软硬件的详细说明,包含一些算法详细说明。

2.5 Howto Guides

  • Brief technical solutions to common problems that developers face during the installation and use of the Apollo platform
  • howto文件夹下主要存放一些特定问题的解决方法。可以查看README.md进行索引查找。

2.6 demo_guide 运行线下演示

如果你没有车辆及车载硬件, Apollo还提供了一个计算机模拟环境,可用于演示和代码调试。

线下演示首先要Fork并且Clone Apollo在GitHub的代码,然后需要设置docker的release环境,请参照 how_to_build_and_release文档中的Install docker章节。

Apollo演示的安装步骤:

  1. 运行如下命令启动docker的release环境:

    bash docker/scripts/dev_start.sh
    
  2. 运行如下命令进入docker的release环境:

    bash docker/scripts/dev_into.sh
    
  3. 在Docker中编译Apollo:

    bash apollo.sh build
    

    Note: 如果没有GPU,请使用下面的命令

    bash apollo.sh build_cpu
    
  4. 启动DreamView

    bash scripts/bootstrap.sh
    
  5. 下载demo record:

    cd docs/demo_guide/
    python rosbag_helper.py demo_3.5.record
    
  6. 运行如下命令回放record:

    cyber_recorder play -f docs/demo_guide/demo_3.5.record --loop
    

    选项 --loop 用于设置循环回放模式.

  7. 打开Chrome浏览器,在地址栏输入localhost:8888即可访问Apollo Dreamview
    现在你能看到有一辆汽车在模拟器里移动!

接下总结一些关于Apollo运行的教程,帮助快速入门

二、Apollo快速入门及仿真环境搭建教程

Apollo快速入门

1.Docker

Docker是一种容器的技术,它在是Linux内核的基础上做了一些轻量级和隔离机制的优化,让环境更小,部署起来更快。利用Docker可以使整个工程的安装更加简单。Docker镜像通常是一个配置好的运行环境,包括依赖的第三方库等,使得用户不需要对环境编译做过多复杂的操作。例如,在Release版本中,Apollo各个模块是一个已经编译好的二进制文件,可以直接运行;如果是开发版本,通常已经加载了所需的第三方库,用户只需要执行对应的编译指令。

2.硬件接入

一个很重要的问题,如何将不同于参考硬件的传感器继承到Apollo平台?

要完成自己硬件的集成,需要遵循以下三步,如图所示:第一需要原始的 UDP(User Data Packet,用户数据包)。第二是做一个ROS Driver方法,把驱动编译到Apollo里面。第三是把数据发布出来。下面举两个例子讲述具体如何操作。
百度Apollo学习笔记(更新中)_第3张图片
第一个例子是如何使用一个新型号的Camera,假设是USB接口的相机。如图4所示,最下层是相机硬件;往上一层是一个标准的底层驱动,即Video for Linux driver; 再上一层是一个ROS Driver,最上层是Apollo可以接收到的内容。要使用该相机,主要的工作是底层硬件的解析,使得Apollo可以接收到相应的数据。
百度Apollo学习笔记(更新中)_第4张图片
第二个例子是激光雷达。它大致的工作流程是:硬件通常以基于内核Socket的方式把数据传输给PC,PC端做一些数据处理之后发布对应的消息类型。对于激光雷达来而言,发布的是Pointcloud消息类型,该消息将被最上层的Apollo感知模块接收如图5所示。右图给出了ROS Driver如何解析UDP数据包的过程。
百度Apollo学习笔记(更新中)_第5张图片

3.编译

编译安装Apollo的步骤大概分为三个阶段,如图6所示:第一阶段是在Ubuntu环境下进行操作,包括下载Apollo源码,安装Docker。Docker的安装方式有在线和离线两种方式,大家可以根据网络环境选取合适的安装方式。第二阶段是进入Docker,拉取Apollo镜像,并以此镜像创建容器。第三个阶段是进入创建的容器,编译Apollo源码。
百度Apollo学习笔记(更新中)_第6张图片
编译结束之后可以做RTK循迹测试。循迹比较简单,它包含两个文件,核心就是一个Record,用来录制轨迹的信息,也就是一些GPS点;另外记录车辆底盘返回的速度信息、加速度信息、曲率、朝向等。RTK循迹测试就是把车辆底盘发出的这些主题和定位输出进行融合。

Apollo平台简单操作指南
Apollo仿真环境搭建教程

三、Apollo传感器标定指南

Link
Apollo激光雷达-IMU标定

四、Apollo 3.5各功能模块启动过程解析

在apollo3.5及之后的版本,apollo由ros改为cyber rt框架作为底层通讯与调度平台,此为前提。
Apollo Cyber RT 框架核心理念是基于的组件,组件有预先设定的输入输出。
在运行时刻,框架把融合好的传感器数据和预定义的组件打包在一起形成用户级轻量任务,之后,框架的调度器可以根据资源可用性和任务优先级来派发这些任务。

具体的内容在该博客中可以查阅。

Apollo感知模块

还有许多未写,时间紧迫,未完待续。。。

本文主要参考:
百度开源代码
Apollo开发者社区

你可能感兴趣的:(无人驾驶,apollo,Cyber,RT)