星火计划学习笔记——第八讲Apollo控制模块解析与实践1
创始人
2024-04-25 11:33:33
0

文章目录

  • 1. 控制理论简介
    • 1.1 控制的作用
    • 1.2 自动驾驶控制的目标
    • 1.3自动驾驶控制器的设计
  • 2. 汽车运动学与动力学
    • 2.1 常用的自动驾驶控制算法
    • 2.2 车辆运动学模型 Kinematics
    • 2.3 车辆动力学模型 Dynamics
  • 3. Apollo控制模块
    • 3.1 Apollo控制模块
    • 3.2 规划与控制相配合
    • 3.3 Apollo控制模块的代码结构
      • 3.3.1 代码文件与目录结构
      • 3.3.2 如何创建和使用自己的控制器
  • 4. 参数调节与分析工具
    • 4.1 Apollo控制参数配置
    • 4.2 Apollo控制分析工具
  • 参考文献

1. 控制理论简介

1.1 控制的作用

在这里插入图片描述在这里插入图片描述
1.环境感知:激光雷达(Lidar)、雷达(Radar)、超声波、视觉相机、惯导(IMU)等
2.高精度地图(HD Map):周围环境及地形的高精度建模(10cm左右的精度)0
3.控制规划及决策:对汽车进行智能控制
在这里插入图片描述思想实验:

  1. 可以睁开眼睛,但是换成更小的杯子
  2. 闭上眼睛,往杯子里面倒水,要求不能洒出来
  3. 如果眼睛是不能睁开的?找一个人在旁边指导,通过触觉系统感知,多试错几次

1.2 自动驾驶控制的目标

在这里插入图片描述

1.3自动驾驶控制器的设计

在这里插入图片描述
    对于控制理论方面,如果想要进一步了解,可以参考胡寿松的《自动控制原理》这本书以及现代控制论的有关知识。

2. 汽车运动学与动力学

2.1 常用的自动驾驶控制算法

在这里插入图片描述
    PID 控制无需基于模型。对于PID在车道保持方面的应用。自动驾驶之PID原理简述(简单易懂)

    控制油门和刹车可以控制车的纵向速度和位移,而横向控制不仅依赖于车辆转向还依赖于横向速度.纵向控制与横向控制无法完全解耦。

2.2 车辆运动学模型 Kinematics

    对于运动学与动力学的基本概念自动驾驶路径跟踪控制——车辆动力学建模基本概念这篇文章有所介绍。

在这里插入图片描述    两轮车模型(自行车模型)自动驾驶路径跟踪控制——纯追踪控制之前这篇文章对自行车模型以及纯追踪控制有所介绍。

  1. 只考虑车辆的平面运动
  2. 左右车辆合并,不考虑转向时候左右轮子的转角差

ooo:车辆瞬心
zzz:车辆质心
RRR:转弯半径
βββ:速度与车辆纵轴的侧偏角(车身坐标系)
δδδ:车辆转角(车身坐标系)
ψψψ:车身横摆角(世界坐标系)
lll:前后轮轴质心距
LLL:前后轮轴距
    当车速比较慢时有βββ→0,前轮转向 δf{\delta _f}δf​→0
在这里插入图片描述在这里插入图片描述只考虑运动学的缺点:

  1. 实际情况下βββ不一定为0
  2. 车辆速度方向不一定与轮胎方向一致
  3. 模型完全由几何关系确立,没有考虑
    到运动过程中力的影响。

2.3 车辆动力学模型 Dynamics

二自由度侧向动力学模型

  1. 考虑轮胎侧偏特性(轮胎受力变形)
  2. 不考虑路面坡度影响

在这里插入图片描述    当轮胎受到横向力时,轮胎由于形变产生侧滑。在这里插入图片描述
Fy=Cθ{F_y}={C\theta}Fy​=Cθ
CCC: 侧偏刚度(负值)
θθθ: 侧偏角(逆时针为正)
在这里插入图片描述在这里插入图片描述
    受力分析中,第一条式子是对力的平衡进行分析;第二条式子是对力矩的分析。

在这里插入图片描述    根据角度关系可以得到下列关系式。在这里插入图片描述    根据上述公式,可以得到二自由度侧向动力学模型。在这里插入图片描述
缺点:

  1. 没有考虑坡度的影响(模型扩展:侧倾动力学模型)
  2. 侧偏角较大时,轮胎侧向力与侧偏角不成正比。
    侧向力的大小取决于侧偏角,轮胎载荷,摩擦系数和轮胎纵向受力

    该模型并不是这么精确。

3. Apollo控制模块

3.1 Apollo控制模块

在这里插入图片描述在这里插入图片描述

3.2 规划与控制相配合

在这里插入图片描述

3.3 Apollo控制模块的代码结构

3.3.1 代码文件与目录结构

/apollo/modules/control

  • common (可复用的基础运算,包括差值计算,PID运算,超前滞后运算,轨迹分析计算等)
  • conf (配置文件)
  • controller (控制器,包括纵向控制器,横向控制器,MPC控制器)
  • dag (CyberRT组件启动配置)
  • proto
  • submodules
  • control_component (程序入口)

3.3.2 如何创建和使用自己的控制器

  1. 在/apollo/modules/control/controller文件夹中
    创建控制器文件,继承controller.h,实现里面的接口
    在这里插入图片描述2. 修改control_conf.proto文件,添加新的控制器名称
    enum ControllerType {LAT_CONTROLLER = 0;LON_CONTROLLER = 1;MPC_CONTROLLER = 2;XXX_CONTROLLER = 3;}
  1. 在ControllerAgent中注册新的控制器
    在ControllerAgent::RegisterControllers() 函数中添加
    case ControlConf::XXX_CONTROLLER:controller_factory_.Register(ControlConf::XXX_CONTROLLER,[]() -> Controller * { return new xxxController(); });break;
  1. 修改control_conf.pb.txt配置文件
 active_controllers: XXX_CONTROLLER

在这里插入图片描述

4. 参数调节与分析工具

4.1 Apollo控制参数配置

在这里插入图片描述在这里插入图片描述注意:
/apollo/modules/control/conf/control_conf.pb.txt 只是一个临时文件
配置文件改完记得保存到 /apollo/modules/calibration/ 对应的车辆文件夹中
(如:/apollo/modules/calibration/data/Lincoln2017MKZ_LGSVL/control_conf.pb.txt)
在这里插入图片描述    在DreamView切换车辆的时候,DreamView会从选中的车辆文件夹中拿到实际的配置文件来覆盖临时文件.

4.2 Apollo控制分析工具

在这里插入图片描述

实时分析工具:DreamView PNC Monitor

在这里插入图片描述
注意不同段曲线的含义
在这里插入图片描述
纵向误差
在这里插入图片描述
横向误差
在这里插入图片描述
方位角误差

离线分析:输出CSV文件

    修改配置 /apollo/modules/control/conf/control_conf.conf
添加 --enable_csv_debug=true。

    运行代码之后会生成两个csv文件。
/tmp/steer_log_simple_optimal_2022-xx-xx_xxxxxx.csv
/tmp/speed_log__2022-xx-xx_xxxxxx.csv

    以protobuffer的方式输出到Channel中,然后Python进行数据分析,用Matplotlib做可视化。

  1. 创建一个节点实时监听Channel中的数据
    参考代码
    /apollo/modules/tools/plot_control/plot_control.py
  2. 使用Cyber Recorder把数据录下来,然后使用Python解读
    在这里插入图片描述在这里插入图片描述

     还可以使用python进行数据分析。

参考文献

《车辆动力学及控制》

相关内容

热门资讯

银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
ASM贪吃蛇游戏-解决错误的问... 要解决ASM贪吃蛇游戏中的错误问题,你可以按照以下步骤进行:首先,确定错误的具体表现和问题所在。在贪...