IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 自动驾驶车辆控制 最终项目作业 实现分析 -> 正文阅读

[人工智能]自动驾驶车辆控制 最终项目作业 实现分析

本项目是多伦多大学在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 signal

if u >= 0:
  throttle_output = u
  brake_output    = 0
elif u < 0:
  throttle_output = 0
  brake_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

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-12-01 17:42:25  更:2021-12-01 17:45:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 2:15:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码