自动驾驶之心规划控制笔记

2024-04-04 04:44

本文主要是介绍自动驾驶之心规划控制笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Search-based Path Planning Methods

Path Finding Problem

一般来说指标有距离,耗费时间,能量,或者多目标。

左图是拓扑地图,蓝色的点就是顶点,绿色的线是连接关系。最后得到的是一个从哪里走的一个最优,并非精细解。

右图是栅格地图,这个搜索出来的是在相对分辨率比较高的情况下的最优路径。

路径搜索问题的输入输出是什么:

输入:给出一副由节点和边构成的图论上的图,起点和终点

输出:返回一条由节点和边组成的path

Graph Basic

无向图(可以从节点A-B,也可以B-A)、有向图(可以从A-B,但是不可以B-A)、带权重的图(有了每条边的代价,来定义哪条路最优)

Some ways to Construct Graph

基于实现的效果来定制图。

栅格地图:每个顶点就描述栅格中心世界坐标系下的坐标,有天然的连接关系,与周围八个节点天生连接。

概率路图:通过采样得到的,采样顶点,通过规则,选择边。

state graph sampled from control space :运动基元构成的,给定转角和速度,通过积分的方式得到一小段轨迹。

state graph sampled from state space:给定起点终止顶点,根据逆动力学来构造运动基元。

Graph Traversal Algorithm

BFS

队列,先进先出,层序遍历。

算法输入是:一幅图,起始节点、终止节点。

输出是:从终点回溯到起点的最短路径。

步骤:先定义队列Q,然后把起始节点加入到队列中,然后把起始节点标记成已访问。

主循环:终止条件:队列Q没有节点,也就是所有节点都访问过了,另外一个条件式访问的节点是终点。

弹出队列的第一个节点,依次访问节点周围的邻居节点,如果节点没有访问过,就把节点加入到队尾中,并且把父节点标记成当前节点,并且把这个节点标记成已访问的状态。不断循环,就可以遍历到所有节点,如果存在可行路径,一定能找到。

BFS Search Process

Summary

1、会相同的探索所有的方向

2、如果所有边的权重为1,那么BFS搜索出来的路径就是cost最优的路径。

Dijkstra

维护了一个新的变量g(n),g(n)是从起始节点到当前节点n累计的代价,访问的是在openset中累计代价最小的那个节点去访问,采用贪心的思想。

Priority queue

优先级队列,为容器赋予优先级。

Algorithm Dijkstra

输入:有个图,有个起点的节点和终点节点

输出:一条从终点节点向起点节点回溯得到的最短路径

Dijkstra Search Process

Summary

优点:

1、可以获得到起点到任何节点的最短路径

2、满足最优性

缺点:

1、无启发函数

A* Algorithm

Core ideas

Dijkstra在搜索的过程中是不知道终点信息的,搜索效率不高。A*算法设计一个到目标点的启发式函数,此时用f来描述每个节点的cost(f = g + h)。

这里可以简单的画个图,如图所示,Dijkstra会浪费一部分计算资源去扩展与终点较远的节点,对于A*算法会更有目的性一些。

A* Search Process

Heuristic Function Design

启发式函数的设计和具体任务有关系,如果说搜索问题的最优指标和距离有关系的话,那么可以用下面这几种距离来定义启发式函数。

Euclidian distance其实对应的是一个二范数,在几何上就是直线距离。

Manhattan distance在数学上就是一范数。

Great circle distance描述的是球面上两点的最短路径,对应于是弧长的概念。

Optimality

如何设计启发式函数能保证A*算法的最优性:heuristic function不能高于costs。也就是估计值需要小于真实值。如果满足这一点,那么A*算法一定能找到最优解的,且比Dijkstra快。

What’s Wrong with Overestimated Heuristics?

对于上图而言,根据A*的逻辑,选择ACD这个路径,但是真实情况是ABD的代价最小,出现这样的计算错误是由于B的h值大于真实的cost。

Heuristic Function Design in Gridmap

对于八连通的形式,用Manhattan distance会高估cost,可能导致找不到最优解。欧式距离可以使用。

Efficiency and Accuracy

Summary

Dynamic Programming

What is Dynamic Programming

对于一个动态规划的问题,具有

1、有一个最优的子结构

2、对于所有的子问题,有很多是重复的。(这里相当于,如果一个子问题之前计算过了,那么就将结果保存起来,后续可以通过查表的形式,不用重复计算)

Tiny Example of Dynamic Programming

Dynamic Programming in Path Search

Sampling-based Planning Methods

General Recipe

Probabilistic Roadmap (PRM)

PRM

1、撒点来学习出图的结构,得到一个graph

2、用图搜索来搜索出最优的路径

配置空间是指,在这样空间中规划的其实是一个质点,机器人的几何信息都被近似到forbidden space里面了。

对于图中的freespace来说,只要质点是在图中,那么可以忽略机器人几何形状的影响。

随机采样:依据某种分布,在一定范围内随

这篇关于自动驾驶之心规划控制笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/874822

相关文章

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

动态规划---打家劫舍

题目: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 思路: 动态规划五部曲: 1.确定dp数组及含义 dp数组是一维数组,dp[i]代表

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

poj 2976 分数规划二分贪心(部分对总体的贡献度) poj 3111

poj 2976: 题意: 在n场考试中,每场考试共有b题,答对的题目有a题。 允许去掉k场考试,求能达到的最高正确率是多少。 解析: 假设已知准确率为x,则每场考试对于准确率的贡献值为: a - b * x,将贡献值大的排序排在前面舍弃掉后k个。 然后二分x就行了。 代码: #include <iostream>#include <cstdio>#incl

代码随想录冲冲冲 Day39 动态规划Part7

198. 打家劫舍 dp数组的意义是在第i位的时候偷的最大钱数是多少 如果nums的size为0 总价值当然就是0 如果nums的size为1 总价值是nums[0] 遍历顺序就是从小到大遍历 之后是递推公式 对于dp[i]的最大价值来说有两种可能 1.偷第i个 那么最大价值就是dp[i-2]+nums[i] 2.不偷第i个 那么价值就是dp[i-1] 之后取这两个的最大值就是d

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

Python3 BeautifulSoup爬虫 POJ自动提交

POJ 提交代码采用Base64加密方式 import http.cookiejarimport loggingimport urllib.parseimport urllib.requestimport base64from bs4 import BeautifulSoupfrom submitcode import SubmitCodeclass SubmitPoj():de