03Frenet与Cardesian坐标系(Frenet转Cardesian公式推导)
Frenet转Cardesian
1 明确目标
已知车辆质点在Frenet坐标系下的状态:
- Frenet 坐标系下的纵向坐标: s s s
- 纵向速度: s ˙ \dot{s} s˙
- 纵向加速度: s ¨ \ddot{s} s¨
- 横向坐标: l l l
- 横向速度: l ˙ \dot{l} l˙
- 横向加速度: l ¨ \ddot{l} l¨
- 横向坐标变化率: l ′ l' l′
- 横向坐标的二阶变化率: l ′ ′ l'' l′′
已知参考线上任意点状态(下述状态在参考线生成后都可以通过计算得到):
- 参考线上的任意点: s r s_r sr和其对应的 r r ⃗ \vec{r_r} rr
- 参考线上任意点的单位切向量: τ r ⃗ \vec{\tau_r} τr
- 参考线上任意点的单位法向量: n r ⃗ \vec{n_r} nr
- 参考线上任意点的曲率: κ r \kappa_r κr
- 参考线上任意点的曲率变化率: κ r ′ \kappa_r' κr′
求解车辆质点在Cardesian坐标系下的状态:
- 位置向量: r h ⃗ \vec{r_h} rh
- 速度向量: v h ⃗ \vec{v_h} vh
- 切线方向与 x x x轴夹角: θ h \theta_h θh
- 加速度向量: a h ⃗ \vec{a_h} ah
- 曲率: κ h \kappa_h κh
2 公式推导
2.1 基础公式汇总
为了方便查阅,现将前文《01》推导的Frenet基础公式汇总如下:
- 核心关系
r h ⃗ = r r ⃗ + l n r ⃗ (2-1) \vec{r_h} = \vec{r_r} + l\vec{n_r}\tag{2-1} rh=rr+lnr(2-1)
- Frenet最小状态集
l ˙ = l ′ s ˙ (2-2) \dot{l} = l'\dot{s}\tag{2-2} l˙=l′s˙(2-2)
l ¨ = l ′ ′ s ˙ 2 + l ′ s ¨ (2-3) \ddot{l} = l''\dot{s}^2+l'\ddot{s}\tag{2-3} l¨=l′′s˙2+l′s¨(2-3)
-
车辆在Cardesian下的向量导数
r h ⃗ ˙ = v h ⃗ = ∣ v h ⃗ ∣ τ h ⃗ = v h τ h ⃗ (2-4) \dot{\vec{r_h}} = \vec{v_h}= |\vec{v_h}|\vec{\tau_h}=v_h\vec{\tau_h}\tag{2-4} rh˙=vh=∣vh∣τh=vhτh(2-4)τ h ⃗ ˙ = κ h v h n h ⃗ (2-5) \dot{\vec{\tau_h}} = \kappa_hv_h\vec{n_h}\tag{2-5} τh˙=κhvhnh(2-5)
n h ⃗ ˙ = − κ h v h τ h ⃗ (2-6) \dot{\vec{n_h}} =-\kappa_hv_h\vec{\tau_h}\tag{2-6} nh˙=−κhvhτh(2-6)
v h ⃗ ˙ = a h ⃗ = a τ τ h ⃗ + κ h v h 2 n h ⃗ (2-7) \dot{\vec{v_h}} = \vec{a_h} = a_{\tau}\vec{\tau_h} +\kappa_h v_h^2 \vec{n_h}\tag{2-7} vh˙=ah=aττh+κhvh2nh(2-7)
-
匹配点在Cardesian下的向量导数
r r ⃗ ˙ = v r ⃗ = ∣ v r ⃗ ∣ τ r ⃗ = s ˙ τ r ⃗ (2-8) \dot{\vec{r_r}} = \vec{v_r}= |\vec{v_r}|\vec{\tau_r}=\dot{s}\vec{\tau_r}\tag{2-8} rr˙=vr=∣vr∣τr=s˙τr(2-8)τ r ⃗ ˙ = κ r s ˙ n r ⃗ (2-9) \dot{\vec{\tau_r}} = \kappa_r \dot{s} \vec{n_r}\tag{2-9} τr˙=κrs˙nr(2-9)
n r ⃗ ˙ = − κ r s ˙ τ r ⃗ (2-10) \dot{\vec{n_r}} =-\kappa_r \dot{s}\vec{\tau_r}\tag{2-10} nr˙=−κrs˙τr(2-10)
2.2 求解 r h ⃗ \vec{r_h} rh
根据(2-1)有:
r h ⃗ = r r ⃗ + l n r ⃗ (2-11) \vec{r_h} = \vec{r_r} + l\vec{n_r}\tag{2-11} rh=rr+lnr(2-11)
2.3 求解 v h ⃗ \vec{v_h} vh
v h ⃗ = r h ⃗ ˙ = r r ⃗ ˙ + l ˙ n r ⃗ + l n r ⃗ ˙ = s τ r ⃗ + l ˙ n r ⃗ − κ r s ˙ τ r ⃗ (2-12) \begin{align} \vec{v_h} &= \dot{\vec{r_h}}\\ &= \dot{\vec{r_r}} + \dot{l}\vec{n_r} + l\dot{\vec{n_r}}\\ &= s\vec{\tau_r} + \dot{l}\vec{n_r} -\kappa_r\dot{s}\vec{\tau_r} \end{align}\tag{2-12} vh=rh˙=rr˙+l˙nr+lnr˙=sτr+l˙nr−κrs˙τr(2-12)
可以进一步求得
v h = ∣ v h ⃗ ∣ θ h = a r g ( v h ⃗ ) (2-13) \begin{align} v_h &= |\vec{v_h}|\\ \theta_h&=arg(\vec{v_h}) \end{align}\tag{2-13} vhθh=∣vh∣=arg(vh)(2-13)
其中,arg代表求向量的相位角。
求出了 v h ⃗ \vec{v_h} vh,可以进一步求得
τ h ⃗ = v h ⃗ v h (2-14) \vec{\tau_h} = \frac{\vec{v_h}}{v_h} \tag{2-14} τh=vhvh(2-14)
对于二维平面,
n h ⃗ = A τ h ⃗ = [ 0 − 1 1 0 ] τ h ⃗ (2-15) \begin{align} \vec{n_h} &= A\vec{\tau_h} \\ &= \left[ \begin{array}{cc} 0 & -1 \\ 1 & 0 \\ \end{array} \right]\vec{\tau_h} \end{align}\tag{2-15} nh=Aτh=[01−10]τh(2-15)
其中, A A A 是一个二维变换矩阵
Tips:如果是编码的话,(2-15)的乘法也可以直接通过调换坐标进行等价替换,可以进一步提升计算效率。例如, τ h ⃗ = ( x x 2 + y 2 , y x 2 + y 2 ) \vec{\tau_h}=(\frac{x}{\sqrt{x^2+y^2}},\frac{y}{\sqrt{x^2+y^2}}) τh=(x2+y2x,x2+y2y),则 n h ⃗ = ( − y x 2 + y 2 , x x 2 + y 2 ) \vec{n_h}=(\frac{-y}{\sqrt{x^2+y^2}},\frac{x}{\sqrt{x^2+y^2}}) nh=(x2+y2−y,x2+y2x)。
2.4 求解 a h ⃗ \vec{a_h} ah
a h ⃗ = v h ⃗ ˙ = s ˙ τ r ⃗ + s τ r ⃗ ˙ + l ¨ n r ⃗ + l ˙ n r ⃗ ˙ − κ r ( s ¨ τ r ⃗ + s ˙ τ r ⃗ ˙ ) = s ˙ τ r ⃗ + s κ r s ˙ n r ⃗ + l ¨ n r ⃗ + ( − κ r s ˙ τ r ⃗ l ˙ ) + ( − κ r s ¨ τ r ⃗ ) + ( − κ r s ˙ κ r s ˙ n r ⃗ ) = [ ( 1 − κ r l ˙ ) s ˙ − κ r s ¨ ] τ r ⃗ + ( κ r s s ˙ + l ¨ − κ r 2 s ˙ 2 ) n r ⃗ (2-16) \begin{align} \vec{a_h} &= \dot{\vec{v_h}}\\ &= \dot{s}\vec{\tau_r}+s\dot{\vec{\tau_r}} + \ddot{l}\vec{n_r} + \dot{l}\dot{\vec{n_r}} - \kappa_r(\ddot{s}\vec{\tau_r} + \dot{s}\dot{\vec{\tau_r}})\\ &= \dot{s}\vec{\tau_r} + s\kappa_r \dot{s} \vec{n_r} + \ddot{l}\vec{n_r} +(-\kappa_r \dot{s}\vec{\tau_r}\dot{l})+(-\kappa_r\ddot{s}\vec{\tau_r}) + (-\kappa_r\dot{s}\kappa_r \dot{s} \vec{n_r})\\ &=[(1-\kappa_r\dot{l})\dot{s}-\kappa_r\ddot{s}]\vec{\tau_r} + (\kappa_rs\dot{s}+\ddot{l}-\kappa_r^2\dot{s}^2)\vec{n_r} \end{align}\tag{2-16} ah=vh˙=s˙τr+sτr˙+l¨nr+l˙nr˙−κr(s¨τr+s˙τr˙)=s˙τr+sκrs˙nr+l¨nr+(−κrs˙τrl˙)+(−κrs¨τr)+(−κrs˙κrs˙nr)=[(1−κrl˙)s˙−κrs¨]τr+(κrss˙+l¨−κr2s˙2)nr(2-16)
可以进一步求得
a τ = a h ⃗ τ h ⃗ a n = a h ⃗ n h ⃗ (2-17) \begin{align} a_\tau &= \vec{a_h}\vec{\tau_h} \\ a_n &=\vec{a_h}\vec{n_h} \end{align}\tag{2-17} aτan=ahτh=ahnh(2-17)
2.5 求解 κ h \kappa_h κh
由(2-7)可得
κ h = a n v h 2 (2-18) \kappa_h = \frac{a_n}{v_h^2} \tag{2-18} κh=vh2an(2-18)
3 总结
- 还是坚持使用向量推导的一贯作风,不引入三角函数,会使得表达式更简洁;
- 编码时使用向量实现是否比三角函数更快还需要进一步实验(理论上会更快)。
相关文章:
03Frenet与Cardesian坐标系(Frenet转Cardesian公式推导)
Frenet转Cardesian 1 明确目标 已知车辆质点在Frenet坐标系下的状态: Frenet 坐标系下的纵向坐标: s s s纵向速度: s ˙ \dot{s} s˙纵向加速度: s \ddot{s} s横向坐标: l l l横向速度: l ˙ \dot{l} l…...
knowLedge-Vue I18n 是 Vue.js 的国际化插件
1.简介 Vue I18n 是 Vue.js 的国际化插件,它允许开发者根据不同的语言环境显示不同的文本,支持多语言。 Vue I18n主要有两个版本:v8和v9。v8版本适用于Vue2框架。v9版本适用于Vue3框架。 2. 翻译实现原理 Vue I18n 插件通过在 Vue 实例中注…...
【开源免费】基于SpringBoot+Vue.JS微服务在线教育系统(JAVA毕业设计)
本文项目编号 T 060 ,文末自助获取源码 \color{red}{T060,文末自助获取源码} T060,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…...
expressjs 中的mysql.createConnection,execute 怎么使用
在 Express.js 应用中使用 MySQL 数据库,你通常会使用 mysql 或 mysql2 这样的库来创建和管理数据库连接,并执行查询。然而,mysql.createConnection 并不直接提供 execute 方法。相反,你可以使用 query 方法来执行 SQL 语句。 以…...
每日一题|983. 最低票价|动态规划、记忆化递归
本题求解最小值,思路是动态规划,但是遇到的问题是:动态规划更新的顺序和步长,以及可能存在的递归溢出问题。 1、确定dp数组含义 dp[i]表示第i天到最后一天(可能不在需要出行的天数里),需要花费…...
oracle 正则 匹配 身份正 手机号
1.正则匹配身份证号: regexp_like(card_id,^[1-9]\d{5}(18|19|20)?\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$) ^[1-9]\d{5}(18|19|20)?\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$ ^[1-9]:第一位数字不能为0。 \d{5}:接下来…...
在树莓派上部署开源监控系统 ZoneMinder
原文:https://blog.iyatt.com/?p17425 前言 自己搭建,可以用手里已有的设备,不需要额外买。这套系统的源码是公开的,录像数据也掌握在自己手里,不经过不可控的三方。 支持设置访问账号 可以保存录像,启…...
2022年6月 Frontier 获得性能第一的论文翻译
为百万兆级加速架构做高性能 Linpack 优化 摘要 我们详细叙述了在 rocHPL 中做的性能优化,rocHPL 是 AMD 对 HPL 基准的开源实现,主要是针对节点进行优化的架构,是为百万兆级系统而设计的,比如:Frontier suppercomput…...
B2B商城交易解决方案:赋能企业有效重塑采购与销售新生态
在电商零售领域,商城系统始终是企业搭建商城的关键利器。 伴随着电商行业的蓬勃发展,各类新模式层出不穷,各种商城系统也应运而生,其中B2B商城更是最为常见的一种。 近年来,得益于电子商务的迅猛发展,B2B商…...
初始C语言(五)
前言 本文章就代表C语言介绍以及了解正式完成,后续进行具体分析和详细解析学习。知识根深蒂固才可以应付后来的学习,地基要打好,后续才会轻松。 十四、结构体 结构体是C语言中最最重要的知识点,使得C语言有能力描述复杂的类型。 …...
mysql学习教程,从入门到精通,SQL 修改表(ALTER TABLE 语句)(29)
1、SQL 修改表(ALTER TABLE 语句) 在编写一个SQL的ALTER TABLE语句时,你需要明确你的目标是什么。ALTER TABLE语句用于在已存在的表上添加、删除或修改列和约束等。以下是一些常见的ALTER TABLE语句示例,这些示例展示了如何修改表…...
【网络基础】网络常识快速入门知识清单,看这篇文章就够了
💐个人主页:初晴~ 在现在这个高度智能化的时代,网络几乎已经成为了空气一般无处不在。移动支付、网上购物、网络游戏、视频网站都离不开网络。你能想象如果没有网络的生活将会变成什么样吗🤔 然而如此对于如此重要的网络…...
OceanBase 关于一号表笔记与ERROR 1060(42S21)问题
OceanBase 关于客户端访问OceanBase 的表数据的过程说明 1.OBserver中的location cache 会保存observer 曾经访问过的实体表的位置信息(meta table 主要包括 __all_core_table、__all_root_table、__all_tenant_meta_table 三张内部表。OB 集群中所有实体表的 location&#x…...
【四】Spring Cloud OpenFeign原理分析
Spring Cloud OpenFeign原理分析 概述 Spring Cloud 微服务实践也有挺多年了,一直想着总结一下这系列的知识点,最近终于下定决心来出一个Spring Cloud 系列文章了。本文主要围绕fegin组件来进行讲解,文中将会给出基础使用的示例,还…...
EDM平台大比拼 用户体验与营销效果双重测评
本文评测了ZohoCampaigns、Mailchimp、Sendinblue、AWeber四款EDM平台,分别适合中小企业、多平台集成、多功能集成、初学者等需求。建议企业根据自身规模、技术水平和功能需求选择最适合的平台。 一、Zoho Campaigns 功能概述 Zoho Campaigns是Zoho旗下的一款专注…...
开卷可扩展自动驾驶(OpenDriveLab)
一种通用的视觉点云预测预训练方法 开卷可扩展自动驾驶(OpenDriveLab) 自动驾驶新方向?ViDAR:开卷可扩展自动驾驶(OpenDriveLab)-CSDN博客 创新点 在这项工作中,本文探索了专为端到端视觉自动…...
基于大数据的二手电子产品需求分析及可视化系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...
SpringBoot——基础配置
但是还需要删除pom.xml中的标签——模板的文件也同样操作 banner的选项——关闭 控制台 日志 banner图片的位置——还会分辨颜色 在 Java 的日志框架(如 Logback、Log4j2 等)中,logging.level.root主要用于设置根日志记录器的日志级别…...
Android OpenGLES2.0开发(三):绘制一个三角形
我们总是对陌生人太客气,而对亲密的人太苛刻 上一篇文章中,我们已经将OpenGL ES环境搭建完成。接下来我们就可以开始我们的绘图之旅了。该篇我们讲解最基本图形三角形的绘制,这是一切绘制的基础。在OpenGL ES的世界里一切图形都可以由三角形拼…...
数据清洗的重要性与方法
在数据分析和机器学习的世界中,数据清洗是一个不可或缺的步骤。 它涉及到对原始数据进行处理,以便使其适合进一步的分析和建模。 数据清洗的重要性 提高数据质量 数据质量直接影响分析结果的准确性。 脏数据(包含错误、重复、不完整的数据&a…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...
论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving
地址:LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂,正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...
SQL Server 触发器调用存储过程实现发送 HTTP 请求
文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...
VisualXML全新升级 | 新增数据库编辑功能
VisualXML是一个功能强大的网络总线设计工具,专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑(如DBC、LDF、ARXML、HEX等),并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...
