自动驾驶规控课程学习——决策规划

news2024/9/23 19:20:10

行为决策系统的规划

1 行为决策基础

1.1 基本概念与任务

行为类型:

系统输入输出:

输入:定位、感知、地图等

输出:决策意图

小例子:

1.2决策系统的评价与挑战

评价指标

挑战

(1)决策密度

(2)决策时的不确定性

从功能模块看不确定性:

定位:误差、偏差

控制:跟踪误差

感知:感知到信息的不确定性

预测:未来状态的不确定性

可见性:环境中有不可见的信息

1.3 决策系统的基本分类

2 有限状态机

2.1 模型概述

车辆在某些状态下的动作,适用于有限的简单场景

基本例子:

5个动作可选择,根据车辆的状态选择动作。

另一个停车的例子:

2.2 状态机的有向图表示

2.3 有限状态机的问题

(1)很复杂,系统模型庞大,有向图难以全面绘制,所以引入分层状态机

分层状态机:将相同的状态划分到子集

比如下图中的变道子集合

(2)其他的一些问题

庞大、可扩展性、可读性、可维护性、复用性很差

3 行为树决策法

3.1 基本结构

将场景的任务模块化。

和状态机的方法是类似的,都是将场景任务与决策联系起来。换了一种方式表述。

更容易被理解,不容易出错。

行为树被公式化为具有树结构的有向图,并具有以下特点:

行为树是树:它们从根节点开始,设计为按特定顺序遍历,直到达到终端状态(成功或失败)。

叶节点是可执行的行为:每个叶都会执行一些操作,无论是简单检查还是复杂操作,并输出状态(成功、失败或正在运行)。换句话说,叶节点是将BT连接到特定应用程序的较低级别代码的地方。

内部节点控制树遍历:树的内部(非叶)节点将接受其子节点的结果状态,并应用自己的规则来指定下一个应该扩展哪个节点。

模型结构

构成行为树的节点有6种基本类型,它们以图形方式表示:

行为树在离散的更新步骤中执行,称为滴答声。

节点发出滴答声后,它会向其父节点返回一个状态,可以是“成功”、“失败”或“正在运行”。

动作节点

动作节点是树的叶子

它执行任务,如果操作完成,则返回成功;如果任务无法完成,则为失败;如果任务正在执行,则返回运行。

序列节点

一个序列节点按顺序标记其子节点,试图确保所有序列任务都被执行。

如果任何子级返回失败,则序列已失败,并将向上传播。序列节点仅在所有子级成功时返回成功。

条件节点

条件节点类似于简单的if语句。

如果条件检查为true,则节点返回Success,如果为false,则返回Failure。条件节点永远不会返回Running状态。

选择节点

选择器节点将开始按顺序勾选其子节点。

如果第一个子节点失败,执行将继续到下一个子节点,并勾选。

如果一个子节点成功了,选择器也会返回成功,并且不会继续下一个。

并行节点

并行节点同时标记其所有子节点,从而允许多个Action节点同时进入arunning状态。

并行节点自身报告访问/失败之前需要多少子节点才能成功的要求可以根据每个实例进行自定义。

装饰器节点

decorator节点包装底层子树或子树的功能。

例如,它可以影响基础节点的行为或修改返回状态。

超车场景的节点图

3.2 与状态机的比较

理论上,可以将任何东西表示为BT、FSM、其他抽象之一或asplain代码。然而,每种模型都有其自身的优点和缺点,它们的意图是在更大的规模上进行设计。

具体到BTs和FSM,在模块化和反应性之间存在权衡。通常,BTs更容易组成和修改,而FSM在设计反应性方面具有优势。

4 基于部分可观的马尔科夫决策过程

4.1 马尔科夫过程简述

下一状态仅仅由当前状态决定。

隐性马尔科夫链

4.2 马尔科夫决策过程

为基本的马尔科夫链加入了Action

部分可观的马尔科夫决策过程

上述几个过程的比较表格

部分马尔科夫决策过程的解决方法:引入预测模型

4.3 马尔科夫决策过程在无人车中的应用

MDP的基本模块再次表述

无人车的基本问题:找到一个目标策略,使得奖励最大化

马尔科夫决策过程的挑战:

(1)奖励设计(2)安全性(3)舒适性

5 模仿学习

应用在多步决策方面效果较好。

状态——动作映射关系的学习

状态:感知信息

动作:驾驶员的操作数据

进行监督学习

存在复合误差

数据增强

这个文章的作者将优化目标转移到了采集的数据上

人为打标签

模仿学习的基本问题:

其他挑战:

1.如果没有自己的反馈,专家很难为转弯提供正确的幅度

解决方案:向专家提供视觉反馈

2.专家对车辆行为的反应时间很长,这会导致不完美的命令

解决方案:离线慢动作回放并记录他们的行为

3.执行不完善的策略会导致事故、崩溃障碍

解决方案:安全措施再次使列车和测试之间的数据分布不匹配,但足够好。

两种广泛的方法:

直接:监督政策培训(将状态映射到行动),使用演示轨迹作为基本事实(又称行为克隆)

间接:了解教师的未知奖励功能/目标,并从中得出政策,即反向强化学习。

6 总结

基于规则的方法与基于学习的方法之间的比较:

(1)基于规则的方法

逻辑容易理解稳定

易于建模和调整

对处理器性能的要求更低

通过级联多层易于扩展

车辆行为的不连续性

如果没有精心设计,规则可能会变得无效。有限状态机可能无法覆盖所有场景

长尾效应

(2)基于学习的方法

更好的场景覆盖率优势,每个场景都可以用大数据进行训练

通过网络可以简化决策

一些学习算法能够提取环境特征和决策财产。

无需遍历所有场景,随着收集到更多数据,将对WnIcn进行培训/改进。

难以理解为什么要做出某些决定

难以修改模型

不同的场景可能会导致完全不同的模型

需要大量实验数据作为训练样本

性能高度依赖于数据的质量

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/341054.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

卡尔曼滤波器与DSP实现

卡尔曼滤波器是利用系统状态方程,结合测量结果对系统状态进行进行最优估计的算法。本文介绍它的主要公式,并举例在C6000 DSP上实现。 推荐资料 KalmanFilter.NETUnderstanding Kalman Filters卡尔曼滤波与组合导航原理 “If you can’t explain it sim…

rust 程序设计语言入门(1)

本文是阅读《Rust程序设计语言》的学习记录,配合视频《Rust编程语言入门教程》食用更佳 环境搭建 windows下载rustup_init.exe,点击安装,默认选择msvc的toolchain,一路default即可 解决下载慢的问题,在powershell中修…

libxlsxwriter条件格式

今天来看一个libxlsxwriter的高级用法:一个条件格式的示例。 说它“高级”,也是基于非Excel专家的小白们的视角。对,没错,本小白正是这样的小白。 1 一个简单的问题 来看我们今天的场景问题:有一列数据,有…

操作系统(一): 进程和线程,进程的多种状态以及进程的调度算法

文章目录前言一、进程和线程1. 进程2. 线程二、进程和线程的区别(面试常问)三、进程调度算法3.1. 批处理系统3.2. 交互式系统3.2.1 时间片轮转3.2.2 优先级调度3.2.3 多级别反馈队列3.3. 实时系统四、进程的状态五、进程同步5.1 什么是进程同步5.2 进程同步应该遵循的几点原则前…

Qt 学习(四) —— QGridLayout栅格布局

目录一、QGridLayout布局规则二、创建QGridLayout三、成员函数1. 控件间距2. 可拉伸控件(弹簧)3. 最小行高/列宽4. 行数和列数5. 锁定纵横比6. 添加控件7. 添加布局8. 设置栅格布局原点位置9. 操作布局项9.1 访问布局项9.2 删除布局项9.3 通过索引获取布…

Git教程个人分享:如何将一个本地项目上传至远程仓库的流程

前言: 今天来分享一下,关于Git的一些教程,同时这也是我自己曾今学习Git时候的笔记,之所以更,也是方便后期自己可以去回顾,当然后面也会出一部分关于Git其他操作方面的内容。 这次我们分享的是&#xff0c…

基于JavaScript的Web端股票价格查看器——大道

🐶 基于JavaScript的Web端股票价格查看器——大道 一、项目背景 当下互联网发展迅速,互联网已经不断向传统金融领域渗透。在互联网上有大量金融领域的数据,如何利用好这些数据,对于投资者来说是十分重要的一件事情。股票价格实时…

JavaSE学习day4_01 循环for,while,do...while

1. 循环高级 1.1 无限循环 for、while、do...while都有无限循环的写法。 最为常用的是while格式的。 因为无限循环是不知道循环次数的,所以用while格式的 代码示例: while(true){} 1.2 跳转控制语句(掌握) 跳转控制语句&…

MySQL 插入数据

数据库与表创建成功以后,需要向数据库的表中插入数据。在 MySQL 中可以使用 INSERT 语句向数据库已有的表中插入一行或者多行元组数据。 你可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据。 语法 以下为向MySQL数据表…

51单片机——步进电机实验,小白讲解,相互学习

步进电机简介: 步进电机是将电脉冲信号转变为角位移或多线位移的开源控制元件。在非超载的情况下,电机的转速,停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机…

Android - 自动系统签名

一、系统签名 以下是两类应用开发场景: 普通应用开发:使用公司自定义 keystore 进行签名,如:微信、支付宝系统应用开发:使用 AOSP 系统签名或厂商自定义 keystore 进行签名,如:设置、录音 系…

数学建模拓展内容:卡方检验和Fisher精确性检验(附有SPSS使用步骤)

卡方检验和Fisher精确性检验卡方拟合度检验卡方独立性检验卡方检验的前提假设Fisher精确性检验卡方拟合度检验 卡方拟合度检验概要:卡方拟合度检验也被称为单因素卡方检验,用于检验一个分类变量的预期频率和观察到的频率之间是否存在显著差异。 卡方拟…

第一部分:简单句——第二章:简单句的补充

简单句的核心构成:一主一谓 主语/宾语/表语 可以变成名词/代词/doing/to do 谓语动词有四种核心变化:三态 一否 时态语态情态否定 简单句的核心:将简单句给写对 简单句的补充:将简单句给写的更好、更充分 简单句的补充 1、限定…

计算机网络之HTTP04ECDHE握手解析

DH算法 离散读对数问题是DH算法的数学基础 (1)计算公钥 (2)交换公钥,并计算 对方公钥^我的私钥 mod p 离散对数的交换幂运算交换律使二者算出来的值一样,都为K k就是对称加密的秘钥 2. DHE算法 E&#…

DNS 原理入门指南(一)

DNS 是互联网核心协议之一。不管是上网浏览,还是编程开发,都需要了解一点它的知识。 本文详细介绍DNS的原理,以及如何运用工具软件观察它的运作。我的目标是,读完此文后,你就能完全理解DNS。 一、DNS 是什么&#xff1…

记录每日LeetCode 1138.字母板上的路径 Java实现

题目描述: 我们从一块字母板上的位置 (0, 0) 出发,该坐标对应的字符为 board[0][0]。 在本题里,字母板为board ["abcde", "fghij", "klmno", "pqrst", "uvwxy", "z"]&#x…

Linux重定向符、管道符讲解

目录 重定向 将命令与文件进行互动 输出重定向 输入重定向 管道符 将命令与命令互动起来 重定向 将命令与文件进行互动 重定向分类 一般情况下,Linux命令运行时都会打开一下三个文件 标准输入文件:stdin文件,文件描述符为0,Li…

自定义ESLint规则开发与使用

自定义eslint及使用 项目结构 |-eslint-plugin-demo //自定义eslint插件项目 | |-demo-app // 使用自定义eslint的测试应用 |-README.md 项目效果: github项目地址 自定义ESLint环境准备 安装脚手架 执行下列命令来安装开发eslint的脚手架。 yo(y…

中小学信息学相关编程比赛清单及报名网站汇总(C++类)

1、NOI系列比赛(CSP-J CSP-S NOIP NOI APIO CTSC IOI ISIJ等) NOI官网 NOI全国青少年信息学奥林匹克竞赛https://www.noi.cn/ 2、蓝桥杯青少年创意编程大赛 https://www.lanqiaoqingshao.cn/home 3、中国电子协会考评中心

数据结构 - Set 与 Map 接口介绍(TreeMap,HashMap,TreeSet,HashSet类)

文章目录前言1. Set / Map接口2. TreeSet类3. TreeMap 类4. HashSet 与 HashMap4.1 HashSet / HashMap 底层哈希表4.2 解决哈希冲突总结✨✨✨学习的道路很枯燥,希望我们能并肩走下来! 编程真是一件很奇妙的东西。你只是浅尝辄止,那么只会觉得…