单车模型及其线性化

文章目录

  • 1 单车模型
  • 2 线性化
  • 3 实现效果
  • 4 参考资料

1 单车模型

  这里讨论的是以后轴为中心的单车运动学模型,由下式表达:

S ˙ = [ x ˙ y ˙ ψ ˙ ] = [ v c o s ( ψ ) v s i n ( ψ ) v t a n ( ψ ) L ] \dot S = \begin{bmatrix} \dot x\\ \dot y\\ \dot \psi \\ \end{bmatrix} = \begin{bmatrix} vcos(\psi)\\ vsin(\psi)\\ v\frac{tan(\psi)}{L} \\ \end{bmatrix} S˙= x˙y˙ψ˙ = vcos(ψ)vsin(ψ)vLtan(ψ)

其中 S S S代表系统状态, δ \delta δ为单车模型的前轮转角, x , y x,y x,y是车辆在世界坐标系下的位置, L L L为轴距, v v v为车辆速度, ψ \psi ψ代表航向角,单车模型中应该是假设了质心侧偏角为0,所以 ψ \psi ψ应该也等于横摆角,即车头朝向。

  如果把加速度和前轮转角的变化加上,则可以写成:
S ˙ = [ x ˙ y ˙ ψ ˙ v ˙ δ ˙ ] = [ v c o s ( ψ ) v s i n ( ψ ) v t a n ( ψ ) L a γ ] = [ f 1 f 2 f 3 f 4 f 5 ] = f ( S ) \dot S = \begin{bmatrix} \dot x\\ \dot y\\ \dot \psi \\ \dot v \\ \dot \delta \end{bmatrix} = \begin{bmatrix} vcos(\psi)\\ vsin(\psi)\\ v\frac{tan(\psi)}{L} \\ a \\ \gamma \end{bmatrix} = \begin{bmatrix} f_1\\ f_2\\ f_3 \\ f_4 \\ f_5 \end{bmatrix} =f(S) S˙= x˙y˙ψ˙v˙δ˙ = vcos(ψ)vsin(ψ)vLtan(ψ)aγ = f1f2f3f4f5 =f(S)
这里 γ \gamma γ是我自己取的名字,看别的博客把速度和前轮转角用额外的矩阵表示了,这里我放在一起推一推。

2 线性化

  将上述系统 S ˙ = f ( S ) \dot S = f(S) S˙=f(S) S = S r = [ x r y r ψ r v r δ r ] S = S_r = \begin{bmatrix}x_r\\y_r\\\psi_r\\v_r\\\delta_r\end{bmatrix} S=Sr= xryrψrvrδr 处泰勒展开,忽略高次项:

S ˙ ≈ f ( S r ) + d f d S ( S − S r ) \dot S \approx f(S_r) + \cfrac{df}{dS}(S - S_r) S˙f(Sr)+dSdf(SSr)

进而有:
S ˙ − S ˙ r = ( d f 1 d x d f 1 d y d f 1 d ψ d f 1 d v d f 1 d δ d f 2 d x d f 2 d y d f 2 d ψ d f 2 d v d f 2 d δ d f 3 d x d f 3 d y d f 3 d ψ d f 3 d v d f 3 d δ d f 4 d x d f 4 d y d f 4 d ψ d f 4 d v d f 4 d δ d f 5 d x d f 5 d y d f 5 d ψ d f 5 d v d f 5 d δ ) [ x − x r y − y r ψ − ψ r v − v r δ − δ r ] \dot S - \dot S_r = \begin{pmatrix} \frac{df_1}{dx} & \frac{df_1}{dy} & \frac{df_1}{d\psi} & \frac{df_1}{dv} & \frac{df_1}{d\delta} \\ \frac{df_2}{dx} & \frac{df_2}{dy} & \frac{df_2}{d\psi} & \frac{df_2}{dv} & \frac{df_2}{d\delta} \\ \frac{df_3}{dx} & \frac{df_3}{dy} & \frac{df_3}{d\psi} & \frac{df_3}{dv} & \frac{df_3}{d\delta} \\ \frac{df_4}{dx} & \frac{df_4}{dy} & \frac{df_4}{d\psi} & \frac{df_4}{dv} & \frac{df_4}{d\delta} \\ \frac{df_5}{dx} & \frac{df_5}{dy} & \frac{df_5}{d\psi} & \frac{df_5}{dv} & \frac{df_5}{d\delta} \\ \end{pmatrix} \begin{bmatrix}x - x_r\\y - y_r\\\psi - \psi_r\\v - v_r\\\delta - \delta_r\end{bmatrix} S˙S˙r= dxdf1dxdf2dxdf3dxdf4dxdf5dydf1dydf2dydf3dydf4dydf5dψdf1dψdf2dψdf3dψdf4dψdf5dvdf1dvdf2dvdf3dvdf4dvdf5dδdf1dδdf2dδdf3dδdf4dδdf5 xxryyrψψrvvrδδr

求导可得:
S ˙ − S ˙ r = ( 0 0 − v s i n ( ψ ) c o s ( ψ ) 0 0 0 v c o s ( ψ ) s i n ( ψ ) 0 0 0 0 t a n ( δ ) L v L c o s 2 ( δ ) 0 0 0 0 0 0 0 0 0 0 ) [ x − x r y − y r ψ − ψ r v − v r δ − δ r ] = J Δ S \dot S - \dot S_r = \begin{pmatrix} 0 & 0 & -vsin(\psi) & cos(\psi) & 0 \\ 0 & 0 & vcos(\psi) & sin(\psi) & 0 \\ 0 & 0 & 0 & \frac{tan(\delta)}{L} & \frac{v}{Lcos^2(\delta)} \\ 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 \\ \end{pmatrix}\begin{bmatrix}x - x_r\\y - y_r\\\psi - \psi_r\\v - v_r\\\delta - \delta_r\end{bmatrix} = J\Delta S S˙S˙r= 0000000000vsin(ψ)vcos(ψ)000cos(ψ)sin(ψ)Ltan(δ)0000Lcos2(δ)v00 xxryyrψψrvvrδδr =JΔS

最后可得线性化表示

Δ S ˙ = S ˙ − S ˙ r = J Δ S \Delta \dot S = \dot S - \dot S_r = J\Delta S ΔS˙=S˙S˙r=JΔS

在实际应用中需要把它写成差分的形式,假设采样时间间隔为 Δ t \Delta t Δt,则有:

Δ S k + 1 − Δ S k Δ t = J Δ S k \cfrac{\Delta S_{k+1} - \Delta S_{k}}{\Delta t} = J \Delta S_k ΔtΔSk+1ΔSk=JΔSk
最后得到车辆状态变化的差分方程形式
Δ S k + 1 = ( J Δ t + I ) Δ S k \Delta S_{k+1} = (J\Delta t + I)\Delta S_k ΔSk+1=(JΔt+I)ΔSk

3 实现效果

  现在假设采样时间为0.1秒,车辆初始状态在原点,车头朝向是45度,运行1.5秒,分别用单车模型和线性化方法实现两个单车模型,看看跑出来的误差是怎样的。这里给的加速度是 4 m / s 2 4m/s^2 4m/s2,前轮转角不变。效果如下红色是单车模型,绿色是线性化后的单车模型,这里的动画运行时间间隔是0.2s,方便看效果。可以看到在前1秒内这个线性化算出来的车辆状态和单车模型本身的误差还是可以的。
在这里插入图片描述

4 参考资料

  • 无人车系统(一):运动学模型及其线性化
  • 汽车运动学模型的线性化推导过程
  • 上面的视频制作软件是manim,3B1B的视频制作软件哦,用来自己做做简单的动画还是ok的

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

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

相关文章

【C++】异常抛出变量的生命周期

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。搜…

代码随想录算法训练营第三十七天 _ 贪心算法_738.单调自增的数字、968.监督二叉树

学习目标: 60天训练营打卡计划! 学习内容: 738.单调自增的数字 听不懂的时候就到该动手了。必须要从后向前操作,才能把压力逐级传给最前面的这一位。入如:322 class Solution {// java中的String不能修改&#xf…

Web3 开发者集结赢积分顺利闭幕!全程回顾一起来看

由 TinTinLand 联合 Dataverse 、Web3Go 、Subquery 、Cregis 、Litentry、Aspecta、SpaceID、ANOME、VARA&Gear、Moonbeam、Mantle、Obelisk 等 10 余家 Web3 项目共同举办的 Web3 开发者赢积分活动已于 11 月 26 日顺利落下帷幕,三周精彩纷呈的活动吸引了一众…

uniapp微信小程序地图实现绘制polygon(保姆级教程 全网最全!!!)

用户需求:需要在填写表单信息时,在地图上标绘自己房屋的位置信息。 这个问题处理了很久,在网上也没有找到全面的相关案例,所以我将我的思路分享给大家,希望可以解决大家遇到的问题。如果大家有更好的思路,…

中职组网络安全-PYsystem003.img(环境+解析)

​ web安全渗透 1.通过URL访问http://靶机IP/1,对该页面进行渗透测试,将完成后返回的结果内容作为flag值提交; 访问该网页后发现F12被禁用,使用ctrlshifti查看 ctrlshifti 等效于 F12 flag{fc35fdc70d5fc69d269883a822c7a53e} …

⭐ Unity + ARKIT ARFace脸部追踪

相比之前的图像物体检测,这脸部检测实现起来会更加的简单。 (1)首先我们先在场景中的物体上添加一个AR Face Mananger组件: (2)以上組件的 Face Prefab所代表的就是脸部的模型也就是覆盖在脸部上面的投影模…

通过PS导出样条线到3DMax挤出模型

1、PS制作样条线 PS用钢笔做出路径,导出 把.ai文件拖入3dmax中 2、挤出模型 调整模型在中心点位置,导出

代码随想录算法训练营第五十天 | 123.买卖股票的最佳时机III,188.买卖股票的最佳时机IV

目录 123.买卖股票的最佳时机III 188.买卖股票的最佳时机IV 123.买卖股票的最佳时机III 题目链接:123. 买卖股票的最佳时机 III 仿照买卖股票的最佳时机,多设置两个状态用于记录第2次是否持有股票: (1)dp[ i ][ 0 ] 表…

SCT2432QSTER,可替代LMR14030-Q1;3.8V-40V输入、3.5A、高效率同步降压型DCDC转换器、具有内部补偿功能

描述: SCT2432Q是3.5A的同步降压转换器,具有宽输入电压,范围从3.8V到40V,它集成了一个80mΩ的高压侧MOSFET和一个50mQ的低压侧MOSFET,SCT2432Q采用峰值电流模式控制,支持脉冲跳过调制(PSM),具有…

0基础学习VR全景平台篇第123篇:VR视频航拍补天 - PR软件教程

上课!全体起立~ 大家好,欢迎观看蛙色官方系列全景摄影课程! 嗨,大家好,今天我们来介绍【航拍VR视频补天】。之前已经教给了大家如何处理航拍图片的补天,肯定有很多小伙伴也在好奇,航拍的VR视频…

深度学习(一):Pytorch之YOLOv8目标检测

1.YOLOv8 2.模型详解 2.1模型结构设计 和YOLOv5对比: 主要的模块: ConvSPPFBottleneckConcatUpsampleC2f Backbone ----->Neck------>head Backdone 1.第一个卷积层的 kernel 从 6x6 变成了 3x3 2. 所有的 C3 模块换成 C2f,可以发现…

Java学习笔记46——模块化

模块化 模块化概述模块的基本使用 模块化概述 Java语言随着这些年的发展已经成为了一门影响深远的编程语言,无数平台,系统都采用Java语言编写。但是 伴随着发展,Java也越来越庞大,逐渐发展成为一门“臃肿”的语言。而且&#xff…

UniPro集成华为云WeLink 为企业客户构建互为联接的协作平台

华为云WeLink是华为开启数字化办公体验、帮助企业实现数字化转型的实践,类似钉钉。UniPro的客户企业中,有使用WeLink作为协作工具的,基于客户的实际业务需求,UniPro实现了与WeLink集成的能力,以帮助客户企业丰富和扩展…

软文营销助力品牌打开市场,提升内在竞争力

当今环境下,企业想要通过传统营销方式打开市场可以说是难度较大,用户如今更偏向于好的内容,而软文营销正是通过好内容吸引用户,助力品牌打开市场,提升内在竞争力,接下来媒介盒子就从以下几个方面和大家聊聊…

库位角点检测之Centernet/CornerNet算法

1.CornerNet CornerNet 那么我们从bounding box左上角(top-left corner)看物体。视线横着的话,物体就在视线的下面(那么视线所在位置为the topmost boundary of an object)。视线竖着的话,物体就在视线的右边,那么视线…

美团20k软件测试工程师的经验分享

前言 时间真是快,转眼间变成打工人也有三年的时间了,最近几天朋友圈被各个同学的答辩刷屏了。去年自己过年回到家里,再回母学校就是走走瞧瞧,经历了可能是唯一一年的云答辩。学生时代对未来的工作充满了想象,一直想知…

连接服务器的ssh终端自动断开解放方法

在Linux中,SSH连接在一段时间内没有活动时可能会自动断开,这是为了安全性考虑的一种默认行为,以防止未经授权的访问。这个时间限制通常由SSH服务器的配置决定。你可以通过以下几种方式来处理这个问题: 1.使用SSH配置文件&#xf…

SQL面试题,判断if的实战应用

有如下表,请对这张表显示那些学生的成绩为及格,那些为不及格 1、创建表,插入数据 CREATE TABLE chapter8 (id VARCHAR(255) NULL,name VARCHAR(255) NULL,class VARCHAR(255) NULL,score VARCHAR(255) NULL );INSERT INTO chapter8 (id, n…

测试面试:不明白什么是质量保障

这是我面试经常问的一个问题,很多人并不明白其中的区别。 如上图,整体的质量体系架构图相对简单,主要包含三个部分:愿景(高质量交付-快、好)、能力(中间三层不同的能力)和…

Ubuntu下进行串口卡驱动

Ubuntu下安装串口卡驱动 1.下载厂家提供的驱动上传至本地电脑 cd (驱动路径下) 2.Lspci -v 查看电脑串口卡信息 3.下载编译包 sudo apt-get update sudo apt-get install build-essential linux-headers-$(uname -r) 4.编译驱动 make sudo make i…