网站设计的含义/进入百度app

网站设计的含义,进入百度app,个人网站网站建设,如何给网站做404页面在自动驾驶系统的车辆动力学建模中,自行车模型(Bicycle Model)和更复杂的汽车模型(如双轨模型或多体动力学模型)各有其适用场景和优缺点。以下是两者的详细对比及选择原因解析: 1. 模型定义与核心差异 特性…

在自动驾驶系统的车辆动力学建模中,自行车模型(Bicycle Model)和更复杂的汽车模型(如双轨模型或多体动力学模型)各有其适用场景和优缺点。以下是两者的详细对比及选择原因解析:


1. 模型定义与核心差异

特性自行车模型复杂汽车模型(如双轨模型)
简化假设将四轮车辆简化为两轮(前轮转向,后轮驱动)考虑四轮独立运动、悬架系统、轮胎侧偏特性
自由度2-3自由度(位置x,y,航向角θ)6+自由度(含横向、俯仰、侧倾等运动)
计算复杂度低(适合实时控制)高(需解算微分代数方程)
参数需求仅需轴距、转向比等基础参数需轮胎刚度、悬架参数、质心位置等细节
典型应用场景低速路径跟踪、实时控制高速稳定性分析、极限工况仿真

2. 为什么自动驾驶常用自行车模型?

2.1 计算效率优势

自行车模型的核心运动学方程为:
δ = arctan ⁡ ( L R ) \delta = \arctan\left(\frac{L}{R}\right) δ=arctan(RL)
其中,( L )为轴距,( R )为转弯半径。其计算仅涉及简单的三角函数,可在1ms内完成,满足控制系统的实时性要求(通常需10-100Hz更新频率)。

相比之下,双轨模型需解算非线性方程组:
{ F y f = C α f α f F y r = C α r α r α f = δ − v y + a ψ ˙ v x α r = b ψ ˙ − v y v x \begin{cases} F_{yf} = C_{\alpha f} \alpha_f \\ F_{yr} = C_{\alpha r} \alpha_r \\ \alpha_f = \delta - \frac{v_y + a \dot{\psi}}{v_x} \\ \alpha_r = \frac{b \dot{\psi} - v_y}{v_x} \end{cases} Fyf=CαfαfFyr=Cαrαrαf=δvxvy+aψ˙αr=vxbψ˙vy
计算耗时可能达到10ms以上,难以满足实时控制需求。

2.2 参数易获取性

自行车模型仅需轴距(L)转向传动比等少量参数,而复杂模型需要详细的车辆参数(如轮胎侧偏刚度( C_{\alpha} )、悬架刚度等),这些数据可能因车型不同而难以获取。

2.3 适用场景匹配

低速城市道路(<50km/h)和中等曲率转弯场景下,自行车模型的预测误差通常小于5%,足以满足控制精度要求。而高速或极限工况(如漂移)则需要更精确的模型。


3. 复杂汽车模型的应用场景

尽管自行车模型广泛使用,但在以下场景中需切换至复杂模型:

  1. 高速稳定性控制(>80km/h):需考虑横向载荷转移对轮胎抓地力的影响。
  2. 极限工况仿真:如紧急避障时车辆进入非线性区域的动力学行为。
  3. 车辆动力学测试:评估ESP(电子稳定程序)等系统时需精确建模。

示例代码(双轨模型片段)

def double_track_model(state, delta, Fx):# 状态变量: [vx, vy, omega, X, Y, psi]# 输入: 前轮转角delta, 驱动力Fxm = 1500  # 质量 (kg)Iz = 2500  # 绕Z轴转动惯量 (kg·m²)lf, lr = 1.2, 1.5  # 前后轴到质心距离 (m)C_alpha_f, C_alpha_r = 80000, 80000  # 前后轮胎侧偏刚度 (N/rad)alpha_f = delta - (state[1] + lf * state[2]) / state[0]alpha_r = (state[1] - lr * state[2]) / state[0]Fyf = C_alpha_f * alpha_fFyr = C_alpha_r * alpha_rdvx = (Fx - Fyf * np.sin(delta)) / m + state[1] * state[2]dvy = (Fyf * np.cos(delta) + Fyr) / m - state[0] * state[2]domega = (lf * Fyf * np.cos(delta) - lr * Fyr) / Izreturn [dvx, dvy, domega, state[0]*np.cos(state[4]) - state[1]*np.sin(state[4]),state[0]*np.sin(state[4]) + state[1]*np.cos(state[4]), state[2]]

4. 自行车模型代码实现及应用举例

import numpy as np
import matplotlib.pyplot as pltclass BicycleModel:def __init__(self, L=2.0, max_steer=30.0):  # L:轴距,max_steer:最大转向角self.L = Lself.max_steer = np.deg2rad(max_steer)  # 转换为弧度def kinematic_model(self, x, y, theta, v, delta):  # x,y:位置,theta:航向角,v:速度,delta:前轮转角delta = np.clip(delta, -self.max_steer, self.max_steer)  # 限制转向角在最大值内beta = np.arctan(1 / (2 * self.L * np.tan(delta) / v))  # 滑移角计算x_dot = v * np.cos(theta + beta)  # x方向速度y_dot = v * np.sin(theta + beta)  # y方向速度theta_dot = v / self.L * np.tan(delta) * np.cos(beta)  # 航向角变化率return x_dot, y_dot, theta_dotdef simulate(self, initial_state, v, delta, dt, steps):  # 初始状态,速度,转向角,时间步长,步数x_traj = [initial_state[0]]  # x轨迹y_traj = [initial_state[1]]  # y轨迹theta_traj = [initial_state[2]]  # 航向角轨迹current_state = initial_statefor _ in range(steps):x_dot, y_dot, theta_dot = self.kinematic_model(*current_state, v, delta)current_state = (current_state[0] + x_dot * dt,current_state[1] + y_dot * dt,current_state[2] + theta_dot * dt)x_traj.append(current_state[0])y_traj.append(current_state[1])theta_traj.append(current_state[2])return x_traj, y_traj, theta_traj# 应用举例:低速园区物流车路径跟踪
if __name__ == "__main__":# 初始化自行车模型,轴距2米,最大转向角30度bike_model = BicycleModel(L=2.0, max_steer=30.0)# 初始状态:位置(0,0),航向角0弧度initial_state = (0.0, 0.0, 0.0)# 设置速度为5m/s,转向角为0.5弧度(约28.6度)v = 5.0delta = 0.5# 模拟时间步长0.1s,共100步dt = 0.1steps = 100# 进行模拟x_traj, y_traj, theta_traj = bike_model.simulate(initial_state, v, delta, dt, steps)# 绘制轨迹plt.figure(figsize=(10, 6))plt.plot(x_traj, y_traj, label="Vehicle Trajectory")plt.scatter([x_traj[0]], [y_traj[0]], c='r', label="Start Point")plt.scatter([x_traj[-1]], [y_traj[-1]], c='g', label="End Point")plt.xlabel("X (m)")plt.ylabel("Y (m)")plt.title("Bicycle Model Simulation for Low-speed Park Logistics Vehicle")plt.legend()plt.grid()plt.show()

应用举例说明
在低速园区物流车场景中,自行车模型能够快速生成车辆的行驶轨迹。通过设置车辆的初始位置、速度和转向角,模拟出车辆在园区道路上的行驶路径。从模拟结果可以看出,车辆按照设定的参数稳定地沿着一定曲率的路径行驶,验证了自行车模型在低速场景下的有效性和计算效率。

5. 双轨模型代码实现及应用举例

class DoubleTrackModel:def __init__(self, m=1500, Iz=2500, lf=1.2, lr=1.5, C_alpha_f=80000, C_alpha_r=80000):self.m = m  # 车辆质量self.Iz = Iz  # 绕Z轴转动惯量self.lf = lf  # 前轴到质心距离self.lr = lr  # 后轴到质心距离self.C_alpha_f = C_alpha_f  # 前轮胎侧偏刚度self.C_alpha_r = C_alpha_r  # 后轮胎侧偏刚度def dynamic_model(self, state, delta, Fx):vx, vy, omega, X, Y, psi = state# 计算前后轮胎的侧偏角alpha_f = delta - (vy + self.lf * omega) / vxalpha_r = (vy - self.lr * omega) / vx# 计算前后轮胎的侧向力Fyf = self.C_alpha_f * alpha_fFyr = self.C_alpha_r * alpha_r# 计算车辆的加速度和角加速度dvx = (Fx - Fyf * np.sin(delta)) / self.m + vy * omegadvy = (Fyf * np.cos(delta) + Fyr) / self.m - vx * omegadomega = (self.lf * Fyf * np.cos(delta) - self.lr * Fyr) / self.Iz# 计算位置和航向角的变化dX = vx * np.cos(psi) - vy * np.sin(psi)dY = vx * np.sin(psi) + vy * np.cos(psi)dpsi = omegareturn [dvx, dvy, domega, dX, dY, dpsi]def simulate(self, initial_state, delta, Fx, dt, steps):vx_traj = [initial_state[0]]vy_traj = [initial_state[1]]omega_traj = [initial_state[2]]X_traj = [initial_state[3]]Y_traj = [initial_state[4]]psi_traj = [initial_state[5]]current_state = initial_statefor _ in range(steps):state_dot = self.dynamic_model(current_state, delta, Fx)current_state = [current_state[0] + state_dot[0] * dt,current_state[1] + state_dot[1] * dt,current_state[2] + state_dot[2] * dt,current_state[3] + state_dot[3] * dt,current_state[4] + state_dot[4] * dt,current_state[5] + state_dot[5] * dt]vx_traj.append(current_state[0])vy_traj.append(current_state[1])omega_traj.append(current_state[2])X_traj.append(current_state[3])Y_traj.append(current_state[4])psi_traj.append(current_state[5])return vx_traj, vy_traj, omega_traj, X_traj, Y_traj, psi_traj# 应用举例:高速公路L3级自动驾驶车辆稳定性分析
if __name__ == "__main__":# 初始化双轨模型double_track = DoubleTrackModel()# 初始状态:纵向速度20m/s,侧向速度0,角速度0,位置(0,0),航向角0弧度initial_state = [20.0, 0.0, 0.0, 0.0, 0.0, 0.0]# 设置前轮转角0.1弧度,驱动力1000Ndelta = 0.1Fx = 1000.0# 模拟时间步长0.01s,共200步dt = 0.01steps = 200# 进行模拟vx_traj, vy_traj, omega_traj, X_traj, Y_traj, psi_traj = double_track.simulate(initial_state, delta, Fx, dt, steps)# 绘制纵向速度、侧向速度和角速度的变化time = np.arange(0, steps*dt, dt)plt.figure(figsize=(12, 8))plt.subplot(3, 1, 1)plt.plot(time, vx_traj)plt.xlabel("Time (s)")plt.ylabel("Longitudinal Speed (m/s)")plt.title("Longitudinal Speed Variation")plt.grid()plt.subplot(3, 1, 2)plt.plot(time, vy_traj)plt.xlabel("Time (s)")plt.ylabel("Lateral Speed (m/s)")plt.title("Lateral Speed Variation")plt.grid()plt.subplot(3, 1, 3)plt.plot(time, omega_traj)plt.xlabel("Time (s)")plt.ylabel("Yaw Rate (rad/s)")plt.title("Yaw Rate Variation")plt.grid()plt.tight_layout()plt.show()# 绘制车辆行驶轨迹plt.figure(figsize=(10, 6))plt.plot(X_traj, Y_traj, label="Vehicle Trajectory")plt.scatter([X_traj[0]], [Y_traj[0]], c='r', label="Start Point")plt.scatter([X_traj[-1]], [Y_traj[-1]], c='g', label="End Point")plt.xlabel("X (m)")plt.ylabel("Y (m)")plt.title("Double Track Model Simulation for Highway L3 Autonomous Vehicle")plt.legend()plt.grid()plt.show()

应用举例说明
在高速公路L3级自动驾驶场景中,双轨模型能够更精确地分析车辆在高速行驶时的稳定性。通过设置车辆的初始状态、前轮转角和驱动力,模拟出车辆在高速公路上的行驶动态。从模拟结果可以看出,车辆的纵向速度、侧向速度和角速度随时间的变化趋势,以及车辆的行驶轨迹。这有助于评估车辆在高速行驶时的稳定性和安全性,验证了双轨模型在高速场景下的必要性和精确性。

通过以上代码实现和应用举例,可以更深入地理解自行车模型和双轨模型在不同自动驾驶场景下的应用和特点。

6. 实际工程中的混合策略

在自动驾驶系统中,常采用分层建模策略:

  • 上层路径规划:使用自行车模型快速生成参考轨迹。
  • 底层控制:根据车速动态切换模型:
    def select_vehicle_model(speed):if speed < 15:  # m/s (约54km/h)return BicycleModel()else:return DoubleTrackModel()
    
  • 仿真验证:在PreScan/CarSim等工具中使用高精度模型验证算法。

7. 关键结论

场景推荐模型理由
低速园区物流车自行车模型计算快、参数少、精度足够
高速公路L3级自动驾驶双轨模型需考虑高速稳定性
控制算法开发自行车模型快速迭代、易调试
车辆动力学测试多体动力学模型高保真度、匹配实车数据

8. 总结

自行车模型因其简洁性实时性成为自动驾驶控制算法的首选,而复杂模型则用于特定场景验证车辆动力学深度分析。实际工程中需根据车速控制频率可用参数动态选择模型,以平衡精度与计算效率。

下一篇将讲解混合策略的应用示例以及可视化验证代码,欢迎关注!

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

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

相关文章

防火墙带宽管理

拓扑 配置 [fw]interface GigabitEthernet 0/0/0 [fw-GigabitEthernet0/0/0]service-manage all permit [fw]interface GigabitEthernet 1/0/0 [fw-GigabitEthernet1/0/0]ip address 12.0.0.1 24 [fw]interface GigabitEthernet 1/0/1 [fw-GigabitEthernet1/0/1]ip ad…

一人系统 之 为什么要做一人系统?

一人系统 之 赚钱认知篇&#xff08;下&#xff09; 本文 2119个字&#xff0c;大概阅读时间 16分钟。 在上一篇文章中&#xff0c;主要讲了以下三个内容&#xff1a; 什么是好的工作&#xff1f;时薪高&#xff0c;并且有能力提升&#xff0c;而且最终可以独立创业的工作&…

基于springboot的电影院管理系统(源码+lw+部署文档+讲解),源码可白嫖!

摘要 互联网技术的成熟和普及&#xff0c;势必会给人们的生活方式带来不同程度的改变。越来越多的经营模式中都少不了线上运营&#xff0c;互联网正强力推动着社会和经济发展。国人对民族文化的自信和不同文化的包容&#xff0c;再加上电影行业的发展&#xff0c;如此繁荣吸引…

Java安全-类的动态加载

类的加载过程 先在方法区找class信息&#xff0c;有的话直接调用&#xff0c;没有的话则使用类加载器加载到方法区(静态成员放在静态区&#xff0c;非静态成功放在非静态区)&#xff0c;静态代码块在类加载时自动执行代码&#xff0c;非静态的不执行;先父类后子类&#xff0c;…

ROS多机通信功能包——Multibotnet

引言 这是之前看到一位大佬做的集群通信中间件&#xff0c;突发奇想&#xff0c;自己也来做一个&#xff0c;实现更多的功能、更清楚的架构和性能更加高效的ROS多机通信的功能包 链接&#xff1a;https://blog.csdn.net/benchuspx/article/details/128576723 Multibotnet Mu…

C++:背包问题习题

1. 货币系统 1371. 货币系统 - AcWing题库 给定 V 种货币&#xff08;单位&#xff1a;元&#xff09;&#xff0c;每种货币使用的次数不限。 不同种类的货币&#xff0c;面值可能是相同的。 现在&#xff0c;要你用这 V 种货币凑出 N 元钱&#xff0c;请问共有多少种不同的…

IT工具 | node.js 进程管理工具 PM2 大升级!支持 Bun.js

P(rocess)M(anager)2 是一个 node.js 下的进程管理器&#xff0c;内置负载均衡&#xff0c;支持应用自动重启&#xff0c;常用于生产环境运行 node.js 应用&#xff0c;非常好用&#x1f44d; &#x1f33c;概述 2025-03-15日&#xff0c;PM2发布最新版本v6.0.5&#xff0c;这…

【数据分享】2014-2024年我国各城市逐年空气质量指数(AQI)数据

空气质量指数&#xff08;AQI&#xff09;是一个衡量空气污染程度的综合指标&#xff0c;它并不直接表示具体污染物的浓度值&#xff0c;而是基于多种污染物的浓度进行的综合评价&#xff0c;具体基于六种主要污染物的浓度&#xff1a;PM2.5、PM10、SO₂、NO₂、O₃和CO。AQI是…

【C++】深入理解list迭代器的设计与实现

深入理解list迭代器的设计与实现 引言1、链表基础结构2、链表迭代器的封装2.1 初步封装迭代器类2.2 引入const迭代器2.2.1 参考STL源代码2.2.2 完善迭代器 3、迭代器实现机制结语 引言 在STL容器中&#xff0c;list作为经典的双向链表容器&#xff0c;其迭代器设计体现了C模板编…

磁盘清理工具-TreeSize Free介绍

TreeSizeFree是一个磁盘空间管理工具&#xff0c;主要用于分析磁盘使用情况&#xff0c;帮助用户找到占用空间大的文件和文件夹: 特点&#xff1a;按大小排序&#xff1a;快速找到占用空间最大的文件或文件夹 一般可以删除: 扫描 C:\Users\XXX\AppData\Local\Temp 或 C:\Window…

OpenCV中距离公式

一、各类距离公式总结 常见距离公式 欧氏距离&#xff1a; 曼哈顿距离&#xff08;L1&#xff09;‌&#xff1a; 切比雪夫距离&#xff08;Chessboard&#xff09;‌&#xff1a; 1、点与点距离(欧氏距离) ‌二维空间‌ 设两点坐标为 P1(x1,y1)、P2(x2,y2)&#xff0c;其距离…

Vue.js 模板语法全解析:从基础到实战应用

引言 在 Vue.js 的开发体系中&#xff0c;模板语法是构建用户界面的核心要素&#xff0c;它让开发者能够高效地将数据与 DOM 进行绑定&#xff0c;实现动态交互效果。通过对《Vue.js 快速入门实战》中关于 Vue 项目部署章节&#xff08;实际围绕 Vue 模板语法展开&#xff09;…

论文笔记(七十三)Gemini Robotics: Bringing AI into the Physical World

Gemini Robotics: Bringing AI into the Physical World 文章概括1. 引言2. Gemini 2.0的具身推理2.1. 具身推理问答&#xff08;ERQA&#xff09;基准测试2.2. Gemini 2.0的具身推理能力2.3. Gemini 2.0支持零样本和少样本机器人控制 3. 使用 Gemini Robotics 执行机器人动作3…

centos7搭建postgresql12主从

主从搭建 192.168.159.101 node1 主库&#xff08;读写&#xff09; 192.168.159.102 node2 备库&#xff08;只读&#xff09; 两台机器首先安装postgrsql 主库 postgres用户操作&#xff1a; 修改postgresql.conf # 在文件中修改(此配置仅用于远程访问, 流复制后续还有额外…

996引擎-接口测试:背包

996引擎-接口测试:背包 背包测试NPC参考资料背包测试NPC CONSTANT = require("Envir/QuestDiary/constant/CONSTANT.lua"); MsgUtil = require("Envir/QuestDiary/utils/996/MsgUtil.lua");

vulnhub靶场之【hack-me-please靶机】

前言 靶机&#xff1a;billu_b0x2靶机&#xff0c;IP地址为192.168.10.8 攻击&#xff1a;kali&#xff0c;IP地址为192.168.10.6 靶机和攻击机都采用VMware虚拟机&#xff0c;都采用桥接网卡模式 文章涉及的靶机及工具&#xff0c;都可以自行访问官网或者项目地址进行获取&…

机器学习——KNN模型评价

一、主要函数 sklearn.metrics.accuracy_score() 是 scikit-learn 中用于计算分类模型准确率的函数&#xff0c;适用于评估分类任务的整体性能。 1、核心功能 作用&#xff1a;计算模型预测的准确率&#xff0c;即正确分类的样本数占总样本数的比例。公式&#xff1a;Accurac…

美国国家数据浮标中心(NDBC)

No.大剑师精品GIS教程推荐0地图渲染基础- 【WebGL 教程】 - 【Canvas 教程】 - 【SVG 教程】 1Openlayers 【入门教程】 - 【源代码示例 300】 2Leaflet 【入门教程】 - 【源代码图文示例 150】 3MapboxGL【入门教程】 - 【源代码图文示例150】 4Cesium 【入门教程】…

Qt调用Miniconda的python方法

1、 Win 64环境下载及安装 Miniconda 首先下载Windows 版Miniconda&#xff0c;https://docs.conda.io/en/latest/miniconda.html或 https://repo.anaconda.com/miniconda/ 安装界面及选择如下图所示&#xff1a; 安装完python3.12版报错如下。 说明&#xff1a;python3.11版…

汽车免拆诊断案例 | 2024 款路虎发现运动版车无法正常识别智能钥匙

故障现象  一辆2024款路虎发现运动版车&#xff0c;搭载2.0 L发动机&#xff0c;累计行驶里程约为5 000 km。车主反映&#xff0c;使用遥控器无法解锁车门&#xff0c;随后使用机械钥匙打开车门&#xff0c;踩下制动踏板&#xff0c;按压起动按钮&#xff0c;仪表盘提示“将智…