自动驾驶基础一车辆模型
- 模型概述:
- 自行车动力学模型通常用于研究自行车在骑行过程中的行为,如稳定性、操控性和速度等。
- 模型可以基于不同的简化假设和复杂度,从简单的二维模型到复杂的三维模型,甚至包括骑行者的动态。
- 力学方程:
- 基础物理学方程F=ma(力 = 质量×加速度)被应用于自行车运动。在恒定速度下,这简化为FP=FR,其中FP是推进力,FR是所有阻力的总和。
- 阻力包括重力阻力(在斜坡上骑行时)、向前运动的空气阻力、滚动阻力、车轮轴承阻力和车轮转动的空气阻力等。
- 动力学建模方法:
- 自行车动力学模型可以使用不同的数学工具和方法来建立,如牛顿-欧拉方法、拉格朗日方程等。
- 拉格朗日方程以能量和功作为力学基本量,特别适用于受约束系统的动力学问题。对于自行车一人体系统,由于刚体数目较少,经典的拉格朗日方程是一个合适的选择。
- 空气动力学应用:
- 空气动力学在自行车设计中非常重要,特别是在降低风阻和提高稳定性方面。
- 通过优化车架结构、改变车手体位和车轮形状等措施,可以减少空气阻力的影响,提高自行车的速度和效率。
- 模型参数:
- 模型参数可以包括自行车的质量、车轮半径、转动惯量、阻力系数等。
- 骑行者的体重、身高、骑行技能等也会影响模型的结果。
- 动力学模型中,有几个重要的参数需要考虑
3. 算法流程
- 质量参数:
- 自行车和骑手的总质量(m):这个参数影响重力阻力和其他阻力的计算。例如,在重力阻力的公式 Fg = mgsin(arctan(G)) 中,m 代表了自行车和骑手的总质量。
- 阻力系数:
- 空气阻力系数(Cd):在向前运动的空气阻力 FA = 0.5 * Cd * A * ρ * vA^2 中,Cd 是阻力系数,代表了自行车和骑手形状的空气动力学特性。
- 滚动阻力系数:这通常与轮胎材料和路面条件有关,影响滚动阻力 FR 的大小。
- 几何尺寸:
- 自行车和骑手的正面面积(A):用于计算空气阻力。
- 自行车长度(lf 和 lr):质心到前后轮中心的距离,这些参数在车辆动态方程中用于计算轮胎的侧向力。
- 物理常数:
- 重力加速度(g):通常取 9.81 m/s^2,用于计算重力阻力。
- 空气密度(ρ):影响空气阻力的计算,通常根据环境条件(如海拔、温度等)进行调整。
- 运动学参数:
- 期望速度(v_desired):个体自由行驶时的速度,这反映了骑行者的意图和期望。
- 反应系数:包括横向和纵向两类,描述了个体对于横向和纵向个人空间的需求程度。
- 动作持续时间和避让力强度:这些参数描述了骑行者在面对障碍物或需要改变行驶方向时的反应。
- 环境参数:
- 坡度(G):影响重力阻力的计算,陡峭的坡度会对骑行者的努力产生更大的需求。
- 路面条件:这会影响滚动阻力和轮胎的侧向力。
- 传输系统效率(η):
- 在将骑手的输入功率(P_in)转换为推进功率时,需要考虑传输系统的效率。这反映了自行车机械部件(如链条、齿轮等)的摩擦损失。
- 车辆动态参数:
- 车辆的动态方程可能会包含其他参数,如车辆的转动惯量、车轮的半径和宽度等,这些参数在更复杂的模型中可能会考虑。
- 自行车尺寸参数:
- 轴距(Wheelbase):前后轮轴之间的距离,影响车辆的稳定性和操控性。
- 车轮半径(Wheel radius):用于计算车辆的滚动速度和角速度。
- 自行车高度(Bicycle height):从地面到自行车顶部的距离,可能影响空气动力学特性。
- 自行车惯性参数:
- 自行车质量分布(Mass distribution):质心位置,影响车辆的操控稳定性和侧翻阈值。
- 转动惯量(Moments of inertia):车辆绕不同轴的转动惯量,影响车辆的旋转动态。
- 轮胎参数:
- 轮胎侧偏刚度(Cornering stiffness):描述轮胎在侧向力作用下的抵抗变形能力,影响车辆的操控性和稳定性。
- 轮胎滚动摩擦系数(Rolling friction coefficient):影响滚动阻力和车辆的滑行特性。
- 骑行者参数:
- 骑行者体重(Rider weight):影响车辆的总质量和重力阻力。
- 骑行者身高(Rider height):可能用于计算骑行者的舒适骑行姿势和空气动力学特性。
- 骑行者骑行技能(Riding skill):尽管这不是一个物理参数,但骑行者的技能水平会显著影响车辆的实际动态行为。
- 操控参数:
- 方向盘/手柄转角(Steering angle):用于控制车辆的转向。
- 踏板力/功率(Pedal force/power):用于控制车辆的速度和加速度。
- 外部干扰参数:
- 风速和风向(Wind speed and direction):影响车辆的空气动力学特性和稳定性。
- 路面不平度(Road roughness):影响车辆的振动和操控稳定性。
- 控制策略参数(如果模型包含控制策略):
- 控制增益(Control gains):用于调整控制器对车辆动态行为的影响程度。
- 控制延迟(Control delay):反映实际控制系统中的响应时间延迟。
- 车辆状态参数:
- 纵向速度(Longitudinal velocity):车辆前进的速度。
- 横向速度(Lateral velocity):车辆侧向移动的速度,通常较小但在曲线行驶时很重要。
- 偏航角(Yaw angle):车辆前进方向与绝对坐标系的夹角。
- 偏航率(Yaw rate):车辆偏航角的变化率,即车辆的转向速度。
-
1. 车辆动力学模型
车辆动力学模型是描述汽车运动规律的微分方程,它通常基于牛顿第二定律(F=ma)来推导。在这个模型中,车辆的运动受到多种力的影响,包括驱动力、制动力、阻力和转弯力等。
2. 关键参数和公式
- 质量(m):车辆的质量,影响加速度和动能的计算。
- 速度(v):车辆的速度,可以分解为纵向速度(v_x)和横向速度(v_y)。
- 加速度(a):车辆的加速度,描述了速度的变化率。
- 扭矩(T):发动机或电动机产生的扭矩,与转速(n)和马力(P)的关系为 T = P × 5252 / n。
- 马力(P):发动机或电动机的功率,与扭矩和转速的关系为 P = T × n / 5252。
- 动能(KE):KE = 0.5 × m × v^2,描述了车辆由于运动而具有的能量。
- 动量(p):p = m × v,描述了车辆的质量和速度的乘积。
- 刹车距离(d):d = (初速度 - 终速度)^2 / (2 × 刹车减速度),用于估算车辆的制动距离。
- 车辆建模:根据车辆的结构和参数,建立车辆动力学模型。
- 数据采集:通过车辆传感器和控制单元实时采集车速、油门位置、制动状态等数据。
- 目标优化:根据驾驶情况和用户需求,确定优化目标,如最小化燃油消耗、最大化加速性能或最小化排放。
- 控制策略:基于动力系统模型和优化目标,采用先进的控制策略来调整引擎功率、电机输出、换挡时机等。
- 实时优化:在车辆运行过程中,根据实时采集的数据和控制策略,不断优化车辆的动力性能。
-
RK4(Runge-Kutta 4阶方法)是一种用于解决常微分方程的数值方法,以下是对其的详细解释:
- 定义与原理:
- RK4是一种高精度的算法,用于求解微分方程的数值解。
- 它是一种迭代方法,通过逐步逼近精确解来得到数值解。
- RK4方法基于泰勒级数展开的思想,通过在差商区间内取多点斜率加权平均代替导数方法来提高精度。
- 算法步骤:
- 假设要求解初值问题:(y' = f(t, y), y(t_0) = y_0)。
- RK4的迭代公式为:
(y_{n+1} = y_n + \frac{h}{6}(k_1 + 2k_2 + 2k_3 + k_4))
其中,(h) 是仿真步长,满足 (h < \text{某个给定值}),而 (k_1, k_2, k_3, k_4) 是基于当前函数值和导数值的加权斜率。 - (k_1, k_2, k_3, k_4) 的计算方式如下:
- (k_1 = f(t_n, y_n))
- (k_2 = f(t_n + \frac{h}{2}, y_n + \frac{h}{2}k_1))
- (k_3 = f(t_n + \frac{h}{2}, y_n + \frac{h}{2}k_2))
- (k_4 = f(t_n + h, y_n + hk_3))
-
def rk4(func: Callable, state: np.ndarray, dt: float = 0.01, t: float = 0, **kwargs):"""single-step fourth-order numerical integration (RK4) methodfunc: system of first order ODEsstate: current state vector [y1, y2, y3, ...]dt: discrete time step sizet: current time**kwargs: additional parameters for ODE systemreturns: y evaluated at time k+1"""# evaluate derivative at several stages within time intervalf1 = func(t, state, **kwargs)f2 = func(t + dt / 2, state + (f1 * (dt / 2)), **kwargs)f3 = func(t + dt / 2, state + (f2 * (dt / 2)), **kwargs)f4 = func(t + dt, state + (f3 * dt), **kwargs)return state + (dt / 6) * (f1 + (2 * f2) + (2 * f3) + f4)class BicycleVehicle(Vehicle):"""A dynamical bicycle model, with tire friction and slipping.See Chapter 2 of Lateral Vehicle Dynamics. Vehicle Dynamics and Control. Rajamani, R. (2011)"""MASS: float = 1 # [kg]LENGTH_A: float = Vehicle.LENGTH / 2 # [m]LENGTH_B: float = Vehicle.LENGTH / 2 # [m]INERTIA_Z: float = (1 / 12 * MASS * (Vehicle.LENGTH**2 + Vehicle.WIDTH**2)) # [kg.m2]FRICTION_FRONT: float = 15.0 * MASS # [N]FRICTION_REAR: float = 15.0 * MASS # [N]MAX_ANGULAR_SPEED: float = 2 * np.pi # [rad/s]MAX_SPEED: float = 15 # [m/s]def __init__(self, road: Road, position: Vector, heading: float = 0, speed: float = 0) -> None:super().__init__(road, position, heading, speed)self.lateral_speed = 0self.yaw_rate = 0self.theta = Noneself.A_lat, self.B_lat = self.lateral_lpv_dynamics()
相关文章:
自动驾驶基础一车辆模型
模型概述: 自行车动力学模型通常用于研究自行车在骑行过程中的行为,如稳定性、操控性和速度等。模型可以基于不同的简化假设和复杂度,从简单的二维模型到复杂的三维模型,甚至包括骑行者的动态。力学方程: 基础物理学方…...

机器学习:数据分布的漂移问题及应对方案
首先,让我们从一位高管告诉我的一个故事开始,很多读者可能对此感同身受。 大约两年前,他的公司聘请了一家咨询公司开发一个机器学习模型,帮助他们预测下周每种食品杂货需要多少,以便他们可以相应地补货。这家咨询公司…...
公链常用的共识算法
1. 工作量证明(Proof of Work, PoW) 工作原理:要求节点(矿工)解决一个数学难题,这个过程称为挖矿。第一个解决难题的矿工将有权添加一个新的区块到区块链上,并获得一定数量的加密货币作为奖励。…...
详解 Flink Table API 和 Flink SQL 之函数
一、系统内置函数 1. 比较函数 API函数表达式示例Table API,>,<,!,>,<id1001,age>18SQL,>,<,!,>,<id‘1001’&…...

rsa加签验签C#和js以及java互通
js实现rsa加签验签 https://github.com/kjur/jsrsasign 11.1.0版本 解压选择需要的版本,这里选择all版本了 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>JS RSA加签验签</title&g…...
C语言中数组和指针的关系
在C语言中,数组和指针之间存在着密切的关系,尽管它们在概念上是不同的。以下是关于C语言中数组和指针关系的一些要点: 数组名作为指针: 在大多数情况下,数组名在表达式中会被当作指向其第一个元素的指针。例如&#x…...
idea 新建一个 JSP(JavaServer Pages)项目
环境设置: 确保你的开发环境中已经安装了 Java 开发工具包(JDK)和一个 Java Web 开发的集成开发环境(IDE),比如 Eclipse、IntelliJ IDEA 或者 NetBeans。你还需要一个 Web 服务器,比如 Apache T…...
【名词解释】Unity中的表格布局组件及其使用示例
Unity中的表格布局组件通常指的是GridLayoutGroup,这是一个在Unity的UI系统中用来布局子对象的组件。它可以帮助开发者将UI元素按照网格的形式进行排列,非常适合创建表格、网格视图等布局。 名词解释: GridLayoutGroup:Unity UI…...
判断当前设备为移动端自适应 平板和pc端为375移动端样式
在libs的setRem.js中: let html document.querySelector("html"); function setRem() {let ui_w 375;let cl_w document.documentElement.clientWidth || document.body.clientWidth;cl_w > 750 ? cl_w 375 : "";html.style.fontSize …...

Science Advances|用于胃部pH监测和早期胃漏检测的生物可吸收无线无源柔性传感器(健康监测/柔性传感/柔性电子)
2024年4月19日,美国西北大学 John A. Rogers和中国科学技术大学吕頔(Di Lu)团队,在《Science Advances》上发布了一篇题为“Bioresorbable, wireless, passive sensors for continuous pH measurements and early detection of gastric leakage”的论文。论文内容如下: 一、…...

C# 使用 webview2 嵌入网页
需求:C#客户端程序, 窗口里嵌入一个web网页,可通过URL跳转的那种。并且,需要将登录的身份验证信息(token)设置到请求头里。 核心代码如下: // 打开按钮的点击事件 private void openBtn_Click(object sen…...

公司面试题总结(五)
25.谈一谈箭头函数与普通函数的区别,箭头函数主要解决什么问题? 箭头函数与普通函数的区别: ⚫ 语法简洁性: ◼ 箭头函数使用>符号定义,省略了 function 关键字,使得语法更为紧凑。 ◼ 对于单行函…...

Flutter笔记:关于WebView插件的用法(上)
Flutter笔记 关于WebView插件的用法(上) - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:htt…...

计算机毕业设计Python+Django农产品推荐系统 农产品爬虫 农产品商城 农产品大数据 农产品数据分析可视化 PySpark Hadoop Hive
课题研究的意义,国内外研究现状、水平和发展趋势 研究意义21世纪是一个信息爆炸的时代,人们在日常生活中可接触到的信息量非常之巨大。推荐系统逐步发展,其中又以个性化推荐系统最为瞩目。个性化推荐系统的核心在于个性化推荐算法,…...

phpcms仿蚁乐购淘宝客网站模板
phpcms仿蚁乐购网站模板,淘宝客行业模板免费下载,该模板网站很容易吸引访客点击,提升ip流量和pv是非常有利的。本套模板采用现在非常流行的全屏自适应布局设计,且栏目列表以简洁,非常时尚大气。页面根据分辨率大小而自…...

leetcode695 岛屿的最大面积
题目 给你一个大小为 m x n 的二进制矩阵 grid 。 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。 岛屿的面积是岛上值…...

小程序无法调用服务端问题排查
1、问题描述 突然有一天线上的小程序不能登录,经查小程序无法调用。经查无法小程序页面无法调用后台服务。 2、排查过程 由于无法登录小程序发布服务器,无法测试小程序前端服务器到服务端网络,并且小程序无法看到日志。所以就得从服务端和网…...

Linux:多线程的操作
多线程操作 进程与线程线程的创建 create_pthread创建线程池给线程传入对象的指针 线程等待 pthread_join退出线程 pthread_exit线程等待参数 retval 与 线程退出参数 retval 线程中断 pthread_cancel获取线程编号 pthread_self线程分离 pthread_detach 进程与线程 进程是资源…...
kunpeng的aarch64架构cpu、openeuler系统、昇腾服务器适配文档转换功能(doc转docx、ppt转pptx)
一、安装flatpak sudo yum install flatpak flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo二、安装libreoffice flatpak install flathub org.libreoffice.LibreOffice三、使用 对于使用 flatpak 安装的 LibreOffice,不需要手…...

unity 打包PC安装包中常见文件的功能
目录 前言 一、打包好的文件 二、常用文件 1.文件夹XXX_Data 2.文件夹MonoBleedingEdge 3.文件夹XXX_Data内部 三、文件的应用 1.如果你替换了一个图片 2.如果你新增了或减少了图片和资源 3.场景中有变动 4.resources代码加载的资源改了 5.如果你代码替换了 四、作…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...

跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...

C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...

零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...

Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...

基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...

给网站添加live2d看板娘
给网站添加live2d看板娘 参考文献: stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下,文章也主…...