自动驾驶决策规划——坐标转换

以下内容来自b站up主忠厚老实的老王,视频链接:自动驾驶决策规划算法序章 总纲与大致目录_哔哩哔哩_bilibiliicon-default.png?t=N7T8https://www.bilibili.com/video/BV1hP4y1p7es/?spm_id_from=333.999.0.0&vd_source=d36e625f376908cfa88ef5ecf2fb0ed8侵删。

决策规划算法概述

数学基础

五次多项式

 其中隐含的限制就是f(t)的定义域和值域都应该是实数,因为s和t都是真实空间中的轨迹和时间坐标,不能有虚数。

要想使得上面的那个jark最小,积分号中是平方项,也就是当其为0时最小,也就是f(t)的三阶导数为0,也就是f(t)是二次或者二次以下的函数时,三阶导数才为0。

 

 

也就是求泛函 在后面的那三个约束条件下极小值对应的f(t)。

上面把一个带约束的泛函化成了一个无约束的泛函,但是L和f点、f两点、f三点都有关,不能直接使用上面只能处理一阶导数的欧拉——拉格朗日方程。要使用广义的欧拉——拉格朗日方程:

 凸优化

 所以一般求复杂函数在复杂约束条件下的最小值问题都采用迭代法。迭代法的求解速度要比求导法快很多。

以梯度下降法为例说明大概原理:

紫色区域是约束,所以迭代法对初值比较敏感,有可能收敛到局部最小值。

 凸优化是最简单的非线性规划方法。自动驾驶的规划求解不是一个凸优化问题,凸优化必须满cost function是一个凸函数,约束空间是一个凸空间,以避障工况为例:

 整个过程就是:

上述方法也有一定的缺点:

采样点少的话会比较容易收敛到局部最优,采样点多的话会发生维度灾难,如下:

frenet坐标系和Cartesian坐标系坐标转换

概述和基本量

也就是在直角坐标系下想对一个函数求导,那它只有一个dx,这个dx是不区分点在x坐标上的位移还是点的实际位移在x坐标上的分量,因为这两者一样;但是在frenet坐标系中,它们是一样的所以在frenet坐标系中会有d/ds和d/dsx之分。在直角坐标系中可能只有一个dx,但是在frenet坐标系中,可能会有多个ds,举例说明如下:

这里使用dsx和ds来区分不同的s,在很多推导教程中可能中只用ds,会造成理解困难。

预备知识1

证明这个质点位矢r的导数等于v的模乘以τ,τ是质点在切线方向的单位向量。

当dt趋近于0时,ds和dr无限的接近,比值为1,方向会无限的趋近于在位矢r处的切线方向,也就是τ。

 预备知识2:frenet坐标系

其中ds是黑色曲线的弧微分,证明如下:

其中τ+dτ和τ以及dτ形成的三角形是一个等腰三角形,可以求出dτ的大小(也即使dτ的模),方向趋近于τ的法线方向。

其中当dτ无限趋近于0时,sin(dθ/2)等价无穷小于(dθ/2)。

其中 kh是质点轨迹的曲率,kr是道路中心线的曲率,这里的曲率都是在直角坐标系下的曲率。

 这里的ds指的是frenet坐标轴下的弧微分。  

其中ρ是曲率半径,法向加速度是向心加速度。

预备知识总结

 坐标转换(从直角坐标转为frenet坐标)

下面的问题就是已知在笛卡尔坐标系下的,以及frenet坐标系下的坐标起点算这个点在frenet坐标系下的,其中

其中向量三角形是黄色区域,由向量三角形可以得到核心的公式:

得到上面的核心公式,可以该公式和微积分依次求出,但是这个公式还不能直接使用,因为只知道rh,rr和nr未知,此时要找到投影点的相关信息。

投影点及其相关的信息的确定方法如下:

最后计算得到rr的原理如下:

为什么可以原理如下:

 至此投影点的信息已经基本求值完毕。

 下面可以使用上面的核心公式来计算相关量。

s的计算方法是从离散规划点起点开始把各个点的长度累加起来一直累加到投影点(xr,yr)为止。也就是以直线长度近似代替弧长:

 小结

坐标变换(从frenet转换到直角坐标)

 ​​​​​​

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql存储比特位

一、介绍 二、SQL CREATE TABLE bits_table (id INT PRIMARY KEY AUTO_INCREMENT,bit_value BIGINT UNSIGNED );-- 插入一个 8 位的 BIT 值 INSERT INTO bits_table (bit_value) VALUES (B10101010);-- 查询并格式化输出 SELECT id,bit_value,CONCAT(b, LPAD(BIN(bit_value),…

C++——动态规划

公共子序列问题 ~待补充 最长公共子序列 对于两个字符串A和B,A的前i位和B的前j位的最大公共子序列必然是所求解的一部分,设dp[i][j]为串A前i位和B串前j位的最长公共子序列的长度,则所求答案为dp[n][m],其中n,m分别为…

【linux】进程(一)

1. 冯诺依曼体系结构 计算机基本都遵循着冯诺依曼体系 我们使用的计算器是由一个个硬件构成的: 中央控制器(CPU) : 运算器 控制器 等输入设备 : 键盘,鼠标,网卡 等输出设备 : 显示器,网卡 等…

Python概述

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 了解Python Python,本义是指“蟒蛇”。1989年,荷兰人Guido van Rossum发明了一种面向对象的解释型高级编程语言,…

[数据集][目标检测]弹簧上料检测数据集VOC+YOLO格式142张2类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):142 标注数量(xml文件个数):142 标注数量(txt文件个数):142 标注类别…

实现本地访问云主机,以及在云主机搭建FTP站点

前言 云计算是一种基于互联网的计算模式,通过网络提供按需访问的计算资源和服务。核心概念是把计算能力视作一种公共资源,用户可以根据自身需求动态分配和管理这些资源。 云主机 ECS (Elastic Compute Server)是一种按需获取的云端服务器,提…

ArrayList和LinkedList的使用

ArrayList List<> list new ArrayList<>(); LinkedList

树的非递归遍历(层序)

层序是采用队列的方式来遍历的 就比如说上面这颗树 他层序的就是&#xff1a;1 24 356 void LevelOrder(BTNode* root) {Que q;QueueInit(&q);if (root){QueuePush(&q, root);}while (!QueueEmpty(&q)){BTNode* front QueueFront(&q);QueuePop(&q);print…

二十五、openlayers官网示例CustomOverviewMap解析——实现鹰眼地图、预览窗口、小窗窗口地图、旋转控件

官网demo地址&#xff1a; Custom Overview Map 这个示例展示了如何在地图上增加一个小窗窗口的地图并跟随着地图的旋转而旋转视角。 首先加载了一个地图。其中 DragRotateAndZoom是一个交互事件&#xff0c;它可以实现按住shift键鼠标拖拽旋转地图。 const map new Map({int…

家政预约小程序05服务管理

目录 1 设计数据源2 后台管理3 后端API4 调用API总结 家政预约小程序的核心是展示家政公司提供的各项服务的能力&#xff0c;比如房屋维护修缮&#xff0c;家电维修&#xff0c;育婴&#xff0c;日常保洁等。用户在选择家政服务的时候&#xff0c;价格&#xff0c;评价是影响用…

深度学习之基于Tensorflow卷积神经网络脑肿瘤分类识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 脑肿瘤是医学领域的一个重要问题&#xff0c;对人类的健康构成了严重威胁。传统的脑肿瘤分类识别方法…

MVVM_MVVMLight架构

介绍 MVVMLight是一个实现MVVM模式的轻量级框架&#xff08;相对于Prism&#xff09;&#xff0c;能够更好的帮助我们开发WPF Windows Phone、Windows 8、SilverLight相关项目。 安装 在NuGet 工具箱上搜索MVVMLight进行下载 下载后它帮你生成ViewModel文件夹&#xff0c;里面…

顶顶通呼叫中心中间件-自动外呼输入分机号(比如隐私号)(mod_cti基于FreeSWITCH)

顶顶通呼叫中心中间件-自动外呼输入分机号(比如隐私号)(mod_cti基于FreeSWITCH) 比如有些人的号码是这样的就需要用上自动外呼输入分机号了 号码1&#xff1a;182XXXX8111-1234 号码2&#xff1a;182XXXX8222 如果号码是这样的就根据以下步骤配置 注意使用这个需要&#xff1a;…

web4.0-元宇宙虚拟现实

互联网一直在不断演变和改变我们的生活方式&#xff0c;从Web逐渐 1.0时代的静态网页到Web 2.0时代的社会性和内容制作&#xff0c;再从Web逐渐 在3.0阶段&#xff0c;互联网发展一直推动着大家时代的发展。如今&#xff0c;大家正站在互联网演化的新起点上&#xff0c;迈入Web…

k8s pv 一直是release状态

如下图所示&#xff0c;pv 一直是release状态 这个时候大家可能就会想到现在我的 PVC 被删除了&#xff0c;PV 也变成了 Released 状态&#xff0c;那么我重建之前的 PVC 他们不就可以重新绑定了&#xff0c;事实并不会&#xff0c;PVC 只能和 Available 状态的 PV 进行绑定。…

OpenAI宫斗剧番外篇: “Ilya与Altman联手对抗微软大帝,扫除黑恶势力”,“余华”和“莫言”犀利点评

事情是这样的。 小编我是一个重度的智谱清言用户&#xff0c;最近智谱清言悄悄上线了一个“划词引用”功能后&#xff0c;我仿佛打开了新世界的大门。我甚至用这个小功能&#xff0c;玩出来了即将为你上映的《OpenAI宫斗剧番外篇》。 3.5研究测试&#xff1a;hujiaoai.cn 4研…

Github上传时报错The file path is empty的解决办法

问题截图 文件夹明明不是空的&#xff0c;却怎么都上传不上去。 解决方案&#xff1a; 打开隐藏文件的开关&#xff0c;删除原作者的.git文件 如图所示&#xff1a; 上传成功&#xff01;

vue三级联动组件

背景 项目中经常出现三级下拉框组件的要求&#xff0c;这种组件其中一级发生变化&#xff0c;子级的组件就会发生变化如果这一个组件&#xff0c;单独作为搜索条件使用&#xff0c;很好写&#xff0c;同时作为搜索条件和form回写组件&#xff0c;回显就比较困难 子组件代码 将与…

Vitis HLS 学习笔记--控制驱动TLP - Dataflow视图

目录 1. 简介 2. 功能特性 2.1 Dataflow Viewer 的功能 2.2 Dataflow 和 Pipeline 的区别 3. 具体演示 4. 总结 1. 简介 Dataflow视图&#xff0c;即数据流查看器。 DATAFLOW优化属于一种动态优化过程&#xff0c;其完整性依赖于与RTL协同仿真的完成。因此&#xff0c;…