自动驾驶车辆控制 最终项目作业 实现分析
本项目是多伦多大学在Coursera上提供的自动驾驶汽车入门课程的最终项目作业。“controller2d.py”文件包含一个控制器对象。我在 update_controls 方法中实现了控制器。[视频] https://www.youtube.com/watch?v=Pu3B4sGw5uc&pbjreload=10
自动驾驶汽车纵向和横向控制设计
在这个项目中,我用 Python 实现了一个控制器,并使用它在 Carla Simulator 中自动驾驶汽车绕轨道行驶。控制器的输出将是车辆油门、刹车和转向角指令。油门和刹车来自纵向速度控制,转向来自横向控制。
1.纵向控制
对于纵向控制,我实现了一个 PID 控制器,该 PID 控制器将以所需的速度作为参考并输出油门和刹车。
PID 控制器由三个组件组成。首先,纯增益 Kp 根据速度误差缩放车辆加速度。这确保车辆在正确的方向上加速,其幅度与误差成正比。
其次,在积分项 KI 中,根据累积的过去误差设置输出。这可确保消除斜坡参考的稳态误差。
最后,微分项 KD 抑制了由积分项引起的过冲。
为了完成纵向控制,我们必须将PID控制器的加速度输出转换为油门和刹车指令。为简单起见,正输出将是油门,负输出将对应于刹车。
PID控制器
PID 控制器背后的基本思想是读取传感器,然后通过计算比例、积分和微分响应并将这三个分量相加以计算输出来计算所需的执行器输出。
P - 比例部分
- 比例部分最容易理解:比例部分的输出是增益与测量误差 e 的乘积。因此,比例增益或误差越大,比例部分的输出越大。将比例增益设置得太高会导致控制器反复超过设定值,从而导致振荡。
e = r – y
e:误差,r:用户输入参考,y:实际测量输出比例部分 = Kp * e
Kp:P 的输入增益 – 调节器(比例调节器)
# Proportional part
Proportional = kp * e_current
I - 整体部分
- 将积分视为一个篮子,其中循环将所有测量的误差存储在 E 中。请记住,误差可以是正的也可以是负的,因此有时误差会填满篮子(当正误差添加到正误差或负误差添加到负时)有时它会清空篮子——就像正误差被添加到负误差,反之亦然。
- 随着时间的推移收集所有这些错误(随着时间的推移采取积分)。
积分部分 = Ki * E
其中E = E + e(current) * ∆t
,回路将所有测量误差存储在 E 中
# integral part
self.vars.E = self.vars.E + e_current * delta_t
integral = ki * self.vars.E
D - 衍生部分
- 导数正在查看误差的变化率。误差变化越大,导数因子就越大。
- Kd 必须小于 1。
- 导数部分 =
Kd * ((e(current) - e(previous)) / ∆t)
# derivative part
if delta_t == 0:derivate = 0
else:derivate = kd * ((e_current - self.vars.e_previous)/delta_t)
u - 系统输入信号(PID控制器输出信号)
u = Proportional + integral + derivate # u : input signalif u >= 0:throttle_output = ubrake_output = 0
elif u < 0:throttle_output = 0brake_output = -u
pid 控制器输出图
上升时间:达到参考值的90%所需的时间。
Th 过冲:输出超过此参考值的最大百分比。
稳定时间:稳定到参考值 5% 以内的时间。
稳态误差: te 输出与稳态参考值之间的误差。
2. 横向控制
对于横向控制,我实现了 Stanley 控制器。Stanley 方法是斯坦福大学自动驾驶汽车在 DARPA 大挑战赛中使用的路径跟踪方法,Stanley。Stanley 方法是横向误差的非线性反馈函数,从前轴中心到最近的路径点测量。
- e:交叉跟踪误差
- θ_c:车辆的航向(偏航)。
- ψ + θ_c:路径的航向(路径偏航)。
- ψ:航向错误。
- δ:转向角。
- v:当前前进速度(米每秒)。
- x_c:当前 X 位置(米)
- y_c:当前 Y 位置(米)
由此产生的转向控制律给出为
当 e 不为零时,第二项调整 δ 以使预期轨迹与距离前轴 kv(t) 单位的路径切线相交。
参考
https://github.com/ahmedmoawad124/Self-Driving-Vehicle-Control
自动驾驶车辆控制 最终项目作业 实现分析相关推荐
- 自动驾驶车辆控制测评标准
自动驾驶中,车辆控制是基础,以什么指标来测评就显的很关键,以下是Apollo 车辆控制评测分析指标,可以在此基础上做裁剪,来满足自己自动驾驶车辆控制的需求. 序号 参数 名称 说明 平均控制性能相关参 ...
- 关于自动驾驶车辆控制
目录 1. 本文目的 2. 自动驾驶中控制原理 2.1 控制在自动驾驶中的位置 2.2 控制的数据流 3. 汽车控制模型 3.1 汽车运动学模型 3.2 汽车动力学模型 3.3 运动学模型和动力学模型 ...
- 自动驾驶车辆控制(车辆运动学模型)
本文应配合b站up主"忠厚老实的老王"的自动驾驶控制算法系列视频食用. 文章目录 1. 两个车辆运动学模型 1.1 三个坐标系 1.2符号定义 1.3车辆运动学模型 1.4车辆动力 ...
- 自动驾驶车辆控制(坐标转换与横向积分误差)
文章目录 前言 一. Frenet坐标变换与横向误差微分方程 1.1问题描述 1.2 公式推导 前言 本文应配合b站up主"忠厚老实的老王"的自动驾驶控制算法系列视频食用.. 一. ...
- 自动驾驶车辆转向控制(通过扭矩控制实现方向盘转角控制)
本文介绍通过增量式PID控制器实现通过对自动驾驶车辆的EPS进行扭矩响应控制从而实现对期望方向盘转角的控制. 控制器采用增量式PID 对连续PID控制以一定离散化方法离散后就可以得到数字PID控制,离 ...
- 自动驾驶车辆运动控制过程中,对PID控制参数的优化和整定。 传统PID控制算法
自动驾驶车辆运动控制过程中,对PID控制参数的优化和整定. 传统PID控制算法,由于参数固定,在道路曲率较大和车速变化情况下难以满足控制需求,采用RL强化学习算法(DDPG算法,Actor-Criti ...
- 自动驾驶车辆运动规划综述-2015
0.摘要 智能车辆已经提高了其在受控环境下实现高度.甚至完全自动驾驶的能力.使用车载传感器和通信网络系统(即基础设施和其它车辆)接收场景信息.考虑到可用的信息,不同的运动规划和控制技术已经被实现用于复 ...
- 综述:城市道路自动驾驶车辆规划与控制技术
作者 | 深蓝学院 编辑 | 深蓝AI 点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心[规划控制]技术交流群 后台回复[规划控制综述 ...
- 全新 ADAS 和自动驾驶车辆系统的处理器性能和安全要求
简介 当今汽车行业的创新正在加速,因为各公司正在竞相成为安全和自动驾驶车辆领域的市场领导者.随着车辆控制正在从人类转变为车辆的主动安全系统,更多传感器 – 摄像头.雷达.激光雷达等 – 正被添加到汽车 ...
- 解惑 | 关于自动驾驶车辆的一些问答(长文警告)
解惑 | 关于自动驾驶车辆的一些问答 01李骏院士:为什么说智能汽车科技创新是国家工程 02我国智能汽车"卡脖子"技术有哪些? 03汽车电子:拥抱软件或落后 04软件定义汽车时代( ...
最新文章
- Java基础:面向对象
- 2021-01-07 matlab数值分析 常微分方程初边值问题数值解 标准龙格库塔四阶四段公式 欧拉法
- ssh框架分页显示问题
- c++ 读取文件 最后一行读取了两次
- JavaScript this 关键字
- python get post请求_使用python封装get+post请求
- 转usb驱动cmw500 ni_支持USB Type-C接口的外置蓝光驱动器IO Data BRP-UT6 / MC2本月发售...
- 《软件需求最佳实践》——阅读笔记一
- 【codeforces】【比赛题解】#937 CF Round #467 (Div. 2)
- rhadoop连接mysql数据库_rhadoop连接mysql数据库
- C专家编程 第1章 C:穿越时空的迷雾 1.1 C语言的史前阶段
- Python Head First学习笔记
- Ubuntu18.04下利用Gazebo搭建赛道完成ROS机器人定位导航仿真 + 加载YOLO检测识别标记物体【智能车】
- 摩云ktv点歌系统服务器,摩云ktv点歌服务器系统更新
- 学号在java是什么意思_在JAVA程序中增加姓名学号
- 输入一系列整数,建立二叉排序树,并进行前序,中序,后序遍历。
- QA:filter-自适应均衡器
- 泰拉瑞亚服务器怎么让玩家注册,泰拉瑞亚服务器权限指令大全
- 书评--把信送给加西亚
- 全能型终端神器!好用、免费!
热门文章
- 三星emcp型号详解_eMCP终将成为过去式?解析:三星、美光所推出的uMCP为何物?...
- k3c最新官改非常稳定了_软件聚分享库APP最新版下载-软件聚分享库v1.0.0安卓版下载...
- 6-vue-component
- Rails开发细节《六》ActiveRecord Validationa and Callbacks验证和回调
- 你还敢用鼠标吗?黑客在百米之外控制你的鼠标
- Vuex 实战:如何在大规模 Vue 应用中组织 Vuex 代码 | 掘金技术征文
- mac 下 word 2011 使用笔记
- Android--Menus
- Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile 解决办法
- 计算机外围设备哪两类,计算机原理2010年4月真题(02384)