官方公开课 | Apollo自动驾驶入门课程

官方公开课

Apollo自动驾驶入门课程第①讲—无人驾驶概览

Apollo自动驾驶入门课程第②讲 — 高精地图

Apollo自动驾驶入门课程第③讲 — 定位

Apollo自动驾驶入门课程第④讲 — 感知(上)

Apollo自动驾驶入门课程第⑤讲 — 感知(下)

Apollo自动驾驶入门课程第⑥讲 — 预测

Apollo自动驾驶入门课程第⑦讲 — 规划(上)

Apollo自动驾驶入门课程第⑧讲 — 规划(下)

Apollo自动驾驶入门课程第⑨讲 — 控制(上)

Apollo2.5技术文档学习指南

Apollo 2.5正式发布,开放了视觉感知、实时相对地图和高速规划与控制三大能力,帮助开发者迅速起步,快速验证。同时,开发者也可以使用更多、更高效的开发工具,进一步提升开发效率。这里,我们将Apollo 2.5的技术文档进行整理、归纳分享给开发者,帮助开发者更好更快地使用Apollo。

640?wx_fmt=png&wxfrom=5&wx_lazy=1

总览

Apollo基本概念学习及Apollo 2.5 快速入门。

  • Apollo 2.5 快速入门指南 (中文版)

【https://github.com/ApolloAuto/apollo/blob/master/docs/quickstart/apollo_2_5_quick_start_cn.md】

硬件系统安装向导

介绍Apollo 2.5 硬件系统安装流程及注意事项。

  • Apollo 2.5 硬件系统安装向导(中文版)

【https://github.com/ApolloAuto/apollo/blob/master/docs/quickstart/apollo_2_0_sensor_calibration_guide_cn.md】

标定向导

介绍Apollo感知硬件之间的标定服务流程。

  • 激光雷达与惯导标定向导(中文版) 

【https://github.com/ApolloAuto/apollo/blob/master/docs/quickstart/apollo_1_5_lidar_calibration_guide_cn.md】

  •  相机到相机、相机到激光雷达、毫米波雷达到相机、惯导到车辆标定向导(中文版)

【https://github.com/ApolloAuto/apollo/blob/master/docs/quickstart/apollo_2_0_sensor_calibration_guide_cn.md】

  • 多激光雷达与GNSS标定向导

【https://github.com/ApolloAuto/apollo/blob/master/docs/quickstart/multiple_lidar_gnss_calibration_guide.md】

  • Apollo坐标系

【https://github.com/ApolloAuto/apollo/blob/master/docs/specs/coordination.pdf】

软件安装向导

介绍Apollo软件平台安装流程及注意事项。

  • Apollo软件安装向导(中文版) 

【https://github.com/ApolloAuto/apollo/blob/master/docs/quickstart/apollo_software_installation_guide_cn.md】

  • 如何调试Dreamview启动问题 

【https://github.com/ApolloAuto/apollo/blob/master/docs/howto/how_to_debug_dreamview_start_problem.md】

  • 运行离线演示(中文版) 

【https://github.com/ApolloAuto/apollo/blob/master/docs/demo_guide/README_cn.md】

软件架构及原理

介绍Apollo整体软件架构及核心模块原理。

  • Apollo软件架构 

【https://github.com/ApolloAuto/apollo/blob/master/docs/specs/Apollo_2.0_Software_Architecture.md】

  • 3D障碍物感知(中文版) 

【https://github.com/ApolloAuto/apollo/blob/master/docs/specs/3d_obstacle_perception_cn.md】

  • Apollo 2.5 感知 

【https://github.com/ApolloAuto/apollo/blob/master/docs/specs/perception_apollo_2.5.md】

  • QP-Spline-Path 优化控制 

【https://github.com/ApolloAuto/apollo/blob/master/docs/specs/qp_spline_path_optimizer.md】

  • QP-Spline-ST-Speed 优化控制 

【https://github.com/ApolloAuto/apollo/blob/master/docs/specs/qp_spline_st_speed_optimizer.md 】

  • 参考线平滑 

【https://github.com/ApolloAuto/apollo/blob/master/docs/specs/reference_line_smoother.md 】

  • 交通信号灯感知

【https://github.com/ApolloAuto/apollo/blob/master/docs/specs/traffic_light.md 】

软件模块介绍及扩展向导

介绍Apollo软件模块及模块扩展流程。

  • Canbus 模块 

【https://github.com/ApolloAuto/apollo/blob/master/modules/canbus/README.md】

  • 公共模块 

【https://github.com/ApolloAuto/apollo/blob/master/modules/common/README.md】

  • Control 模块 

【https://github.com/ApolloAuto/apollo/blob/master/modules/control/README.md】

  • Data 模块 

【https://github.com/ApolloAuto/apollo/blob/master/modules/data/README.md】

  • Localization 模块 

【https://github.com/ApolloAuto/apollo/blob/master/modules/localization/README.md】

  • Perception 模块

【https://github.com/ApolloAuto/apollo/blob/master/modules/perception/README.md】

  • Planning 模块 

【https://github.com/ApolloAuto/apollo/blob/master/modules/planning/README.md】

  • Prediction 模块 

【https://github.com/ApolloAuto/apollo/blob/master/modules/prediction/README.md】

  • Routing 模块

【https://github.com/ApolloAuto/apollo/blob/master/modules/routing/README.md】

  • 如何增加一个新的GPS接收器 

【https://github.com/ApolloAuto/apollo/blob/master/docs/howto/how_to_add_a_gps_receiver.md】

  • 如何增加一个新的CAN卡

【https://github.com/ApolloAuto/apollo/blob/master/docs/howto/how_to_add_a_new_can_card.md】

  • 如何增加一个新的控制算法

【https://github.com/ApolloAuto/apollo/blob/master/docs/howto/how_to_add_a_new_control_algorithm.md】

  • 如何在预测模块中增加一个新的Evaluator

【https://github.com/ApolloAuto/apollo/blob/master/docs/howto/how_to_add_a_new_evaluator_in_prediction_module.md】

  • 如何在预测模块中增加一个新的Predictor 

【https://github.com/ApolloAuto/apollo/blob/master/docs/howto/how_to_add_a_new_predictor_in_prediction_module.md】

  • 如何增加一个新的车辆

【https://github.com/ApolloAuto/apollo/blob/master/docs/howto/how_to_add_a_new_vehicle.md】

  • 如何增加一个外部依赖

【https://github.com/ApolloAuto/apollo/blob/master/docs/howto/how_to_add_an_external_dependency.md】

开发人员友好性

介绍Apollo开发人员友好性的相关议题。

  • Apollo 2.5 地图自采集向导(中文版) 

【https://github.com/ApolloAuto/apollo/blob/master/docs/quickstart/apollo_2_5_map_collection_guide_cn.md】

  • 使用VSCode构建、调试Apollo项目

【https://github.com/ApolloAuto/apollo/blob/master/docs/howto/how_to_build_and_debug_apollo_in_vscode_cn.md】

  • Apollo 2.5 导航模式的使用方法

【https://github.com/ApolloAuto/apollo/blob/master/docs/howto/how_to_use_apollo_2.5_navigation_mode_cn.md】

  • Dreamview 使用介绍

【https://github.com/ApolloAuto/apollo/blob/master/docs/specs/dreamview_usage_table.md】

Apollo 3.0技术文档资料(中文版)[百度无人驾驶,无人驾驶论坛]

这里,我们将Apollo 3.0的技术文档(中文版)进行整理、归纳分享给开发者,帮助开发者更好更快地使用Apollo。

 

Apollo 3.0 技术指南


概 况

了解Apollo 3.0基础概念和Apollo 3.0快速入门指南。

  • Apollo 3.0快速入门指南

    https://github.com/ApolloAuto/apollo/blob/master/docs/quickstart/apollo_3_0_quick_start_cn.md

硬件和系统安装

了解Apollo 3.0硬件和系统安装过程。

  • Apollo 3.0硬件和系统安装指南

    https://github.com/ApolloAuto/apollo/blob/master/docs/quickstart/apollo_3_0_hardware_system_installation_guide_cn.md

校 准

了解校准的过程。

  • Apollo激光雷达校准指南

    https://github.com/ApolloAuto/apollo/blob/master/docs/quickstart/apollo_1_5_lidar_calibration_guide_cn.md

  • Apollo 2.0传感器校准指南

    https://github.com/ApolloAuto/apollo/blob/master/docs/quickstart/apollo_2_0_sensor_calibration_guide_cn.md

  • 多激光雷达全球导航卫星系统(Multiple-LiDAR GNSS)校准指南

    https://github.com/ApolloAuto/apollo/blob/master/docs/quickstart/multiple_lidar_gnss_calibration_guide_cn.md

  • Apollo坐标系统

    https://github.com/ApolloAuto/apollo/blob/master/docs/specs/coordination_cn.md

软件安装

了解Apollo 3.0的软件安装过程。

  • Apollo软件安装指南

    https://github.com/ApolloAuto/apollo/blob/master/docs/quickstart/apollo_software_installation_guide_cn.md

  • 如何调试Dreamview启动问题

    https://github.com/ApolloAuto/apollo/blob/master/docs/howto/how_to_debug_dreamview_start_problem_cn.md

  • 运行线下演示

    https://github.com/ApolloAuto/apollo/blob/master/docs/demo_guide/README_cn.md

Apollo系统架构和原理

了解核心模块的架构和原理。

  • Apollo 3.0 软件架构

    https://github.com/ApolloAuto/apollo/blob/master/docs/specs/Apollo_3.0_Software_Architecture_cn.md

  • 3D 障碍物感知

    https://github.com/ApolloAuto/apollo/blob/master/docs/specs/3d_obstacle_perception_cn.md

  • Apollo 3.0感知

    https://github.com/ApolloAuto/apollo/blob/master/modules/perception/README.md

  • 二次规划(QP)样条路径优化

    https://github.com/ApolloAuto/apollo/blob/master/docs/specs/qp_spline_path_optimizer_cn.md

  • 二次规划(QP)样条ST速度优化

    https://github.com/ApolloAuto/apollo/blob/master/docs/specs/qp_spline_st_speed_optimizer_cn.md

  • 参考线平滑设定

    https://github.com/ApolloAuto/apollo/blob/master/docs/specs/reference_line_smoother_cn.md

  • 交通信号灯感知

    https://github.com/ApolloAuto/apollo/blob/master/docs/specs/traffic_light_cn.md

功能模块和相关扩展知识

了解Apollo功能模块和相关扩展知识。

  • 控制总线模块

    https://github.com/ApolloAuto/apollo/blob/master/modules/canbus/README.md

  • 通用模块

    https://github.com/ApolloAuto/apollo/blob/master/modules/common/README.md

  • 控制模块

    https://github.com/ApolloAuto/apollo/blob/master/modules/control/README.md

  • 数据模块

    https://github.com/ApolloAuto/apollo/blob/master/modules/data/README.md

  • 定位模块

    https://github.com/ApolloAuto/apollo/blob/master/modules/localization/README.md

  • 感知模块

    https://github.com/ApolloAuto/apollo/blob/master/modules/perception/README.md

  • Planning模块

    https://github.com/ApolloAuto/apollo/blob/master/modules/planning/README.md

  • 预测模块

    https://github.com/ApolloAuto/apollo/blob/master/modules/prediction/README.md

  • 寻路模块

    https://github.com/ApolloAuto/apollo/blob/master/modules/routing/README.md

  • 如何添加新的GPS接收器

    https://github.com/ApolloAuto/apollo/blob/master/docs/howto/how_to_add_a_gps_receiver_cn.md

  • 如何添加新的CAN卡

    https://github.com/ApolloAuto/apollo/blob/master/docs/howto/how_to_add_a_new_can_card_cn.md

  • 如何添加新的控制算法

    https://github.com/ApolloAuto/apollo/blob/master/docs/howto/how_to_add_a_new_control_algorithm_cn.md

  • 如何在预测模块中添加新评估器

    https://github.com/ApolloAuto/apollo/blob/master/docs/howto/how_to_add_a_new_evaluator_in_prediction_module_cn.md

  • 如何在预测模块中添加一个预测器

    https://github.com/ApolloAuto/apollo/blob/master/docs/howto/how_to_add_a_new_predictor_in_prediction_module_cn.md

  • 如何在Apollo中添加新的车辆

    https://github.com/ApolloAuto/apollo/blob/master/docs/howto/how_to_add_a_new_vehicle_cn.md

  • 如何添加新的外部依赖项

    https://github.com/ApolloAuto/apollo/blob/master/docs/howto/how_to_add_an_external_dependency_cn.md

开发者工具

了解开发者工具。

  • 使用VSCode构建、调试Apollo项目

    https://github.com/ApolloAuto/apollo/blob/master/docs/howto/how_to_build_and_debug_apollo_in_vscode_cn.md

  • DreamView用法介绍

    https://github.com/ApolloAuto/apollo/blob/master/docs/specs/dreamview_usage_table_cn.md

apollo部署好后apollo简单使用 [百度无人驾驶,无人驾驶论坛]

上一篇我们已经将apollo部署好,我们可以使用apollo来为应用配置应用属性,环境变量等。下面我们来看看apollo是怎么使用的。

一 准备

1.maven私服

由于下面三个jar是随着配置好后的编译文件编译生成的,所以不能放入maven中央仓库,需要放到自己的maven仓库。所以需要搭建maven私服,搭建方法见:http://blog.csdn.net/dhmpgt/article/details/9998321

注意:搭建好maven后需要将.m2/settings的maven地址修改成自己搭建的maven地址

2.jar

将编译好的apollo-core-0.8.0.jar,apollo-client-0.8.0.jar,apollo-buildtools-0.8.0.jar推入maven仓库,上传方法有很多种,推荐使用如下命令:

 

  1. mvn deploy:deploy-file -DgroupId=com.digitalchina.framework.apollo -DartifactId=apollo-client -Dversion=0.8.0 -Dpackaging=jar -Dfile=D:\Desktop\apollo-client-0.8.0.jar -Durl=http://172.16.1.112:9212/nexus/content/repositories/ms-release/ -DrepositoryId=ms-release
  2.  mvn deploy:deploy-file -DgroupId=com.digitalchina.framework.apollo -DartifactId=apollo-core -Dversion=0.8.0 -Dpackaging=jar -Dfile=D:\Desktop\apollo-core-0.8.0.jar -Durl=http://172.16.1.112:9212/nexus/content/repositories/ms-release/ -DrepositoryId=ms-release
  3.  mvn deploy:deploy-file -DgroupId=com.digitalchina.framework.apollo -DartifactId=apollo-buildtools -Dversion=0.8.0 -Dpackaging=jar -Dfile=D:\Desktop\apollo-buildtools-0.8.0.jar -Durl=http://172.16.1.112:9212/nexus/content/repositories/ms-release/ -DrepositoryId=ms-release

根据自己的情况修改参数-DgroupId,-Dfile,-Durl

二 配置apollo

访问apollo配置中心,地址为apollo-portal的访问地址,访问首页如下:

点击创建项目

填入相应的信息提交即可。

接下来该如何配置属性,来达到不同环境使用不同配置,不同环境使用相同配置,同一环境适用不同配置等的目的。

1新建集群

注意:

(1)红框中的文字,如果想使不同的集群环境使用不同的集群,则需要创建集群,并在客户端调用的时候指定集群名称。若没有配置集群,则默认集群名称为default。

(2)选择环境是指配置将被发布在那个环境中,如果没有将集群和环境关联,客户端是不能读取配置的。

2.新建namespace

namespace和集群配制方法差不多,只是多了一个关联的概念,下面讲解一下apollo的namespace的概念和用法。

1.概念

namespace其实就相当于一个配置池,有公共的和私有的。公共的namespace可以被所有的应用访问,所以这里边的配置都是一些公共的配置,例如数据库连接,日志配置等一些公共配置资源。那么可想而知,私有的namespace只能够被当前应用访问,但是可以关联公共的namespace并覆盖其中的配置。

如上图:应用B配置了一个公共的namespace,应用A和应用B可以使用这个namespace的配置。只要关联一下就可以了。下面来看一下怎么配置namespace

2.namespace使用方法

点击新建namespace出现如下页面

点击创建namespace并选择public类型即可创建公共的namespace,然后在进行关联即可,关联类型的namespace会覆盖掉关联的公共namespace的配置。

三配置客户端

1.引入一下依赖 

  1. <!– 引入guava –>
  2.  <dependency>
  3.  <groupId>com.google.guava</groupId>
  4.  <artifactId>guava</artifactId>
  5.  <version>21.0</version>
  6.  </dependency>
  7.  <!– 引入GSON–>
  8.  <dependency>
  9.  <groupId>com.google.code.gson</groupId>
  10.  <artifactId>gson</artifactId>
  11.  </dependency>
  12.  <!–引入apollo-client–>
  13.  <dependency>
  14.  <groupId>com.digitalchina.framework.apollo</groupId>
  15.  <artifactId>apollo-client</artifactId>
  16.  <version>0.8.0</version>
  17.  </dependency>
  18.  <dependency>
  19.  <groupId>com.digitalchina.framework.apollo</groupId>
  20.  <artifactId>apollo-core</artifactId>
  21.  <version>0.9.0</version>
  22.  </dependency>
  23.  <dependency>
  24.  <groupId>com.digitalchina.framework.apollo</groupId>
  25.  <artifactId>apollo-buildtools</artifactId>
  26.  <version>0.8.0</version>
  27.  </dependency>
  28.  <dependency>
  29.  <groupId>com.google.inject</groupId>
  30.  <artifactId>guice</artifactId>
  31.  <version>4.1.0</version>
  32.  </dependency>
      注意:1)如果本地maven仓库包含apollo的jar,请重新从maven私服拉取
          2)guice和guava如果工程没有引用,需要引用。若有,则不需要。

2.在classpath:resources/META_INF下新建app.properties文件,并编辑以下内容 

  1. local.meta=http://localhost:8555
  2.  dev.meta=http://0.0.0.0:8555
  3.  fat.meta=http://0.0.0.0:8555
  4.  uat.meta=http://0.0.0.0:8555
  5.  lpt.meta=http://0.0.0.0:8555
  6.  pro.meta=http://0.0.0.0:855地址为部署apollo-configservice的地址

3.添加ApolloConfiguration.java类

 

  1. @Configuration
  2. @EnableApolloConfig
  3.  public class ApolloConfiguration {
  4. @Bean
  5. public InstanceConfigBean instanceConfigBean(){
  6. return new InstanceConfigBean();
  7. }
  8. } 

4.指定运行时环境变量,即JVM参数,-Denv=DEV(必填),-Dapollo.cluster=SomeCluster(可选)

至此,apollo客户端使用配置中心可以取到配置了。像监听等更高级的使用方式后续会不断更新。

无人驾驶汽车系统入门(五)——运动学自行车模型和动力学自行车模型[百度无人驾驶,无人驾驶论坛]

在简要了解了PID控制以后,我们就要接触一些现代的控制算法。在了解高级的车辆控制算法之前,掌握车辆运动模型是非常有必要的。车辆运动模型就是一类能够描述我们的车辆的运动规律的模型。显然,越复杂的模型就越接近现实中的车辆运动规律,本节我们一起了解一下两个广泛使用的车辆模型——运动学自行车模型(Kinematic Bicycle Model) 和 动力学自行车模型(Dynamic Bicycle Model)

原创不易,转载请注明出处:http://blog.csdn.net/adamshan/article/details/78696874

无人驾驶系统往往分成感知,决策和控制三个模块,其中无人车的路径规划和底层控制是工作在不同的层的,路径规划层往往会基于更加高层的(感知层,定位层)的信息和底层的(控制层)的实时信息指定行驶的路径,那么从路径规划层传来的就是车辆的参考路径,控制系统需要做的就是严格按照这个参考路径(以及速度等控制输入量)去驾驶我们的车辆,一般来说,我们会用多项式的行驶来描述这个路径曲线,如下所示的三次多项式就可以描述绝大多数的路径了:

其中 θ是其在 Yaw 方向的偏转角度,它是相对于 x 轴的逆时针方向的角度,v 是 θ 方向的速度,L 是车辆的轴距(前后轮胎的距离), (x,y) 是车辆的坐标。

下图是该车辆的自行车模型: