【论文笔记】Baidu Apollo EM Motion Planner

news2024/10/7 16:20:28

在这里插入图片描述

文章目录

  • Abstract
  • I. INTRODUCTION
    • A. Multilane Strategy
    • B. Path-Speed Iterative Algorithm
    • C. Decisions and Traffic Regulations
  • II. EM PLANNER FRAMEWORK WITH MULTILANE STRATEGY
  • III. EM PLANNER AT LANE LEVEL
    • A. SL and ST Mapping (E-step)
    • B. M-Step DP Path
    • C. M-Step Spline QP Path
    • D. M-Step DP Speed Optimizer
    • E. M-Step QP Speed Optimizer
    • F. Notes on Solving Quadratic Programming Problems
    • G. Notes on Non-convex Optimization With DP and QP
  • CASE STUDY
  • Else

Abstract

EMplanner通过一个层级结构的方式去考虑多车道和单车道的情况:
(1)顶层策略通过比较不同车道级轨迹来处理变道场景;
(2)在Frenet坐标下不断迭代求解路径优化和速度优化问题来生成轨迹;
(3)为了使框架易于扩展和调整,可以同时处理交通规则、障碍物决策和平滑曲线,他们提出了一种融合DP和QP采样的优化算法。

I. INTRODUCTION

Motion Planning安全性考虑因素:

  1. 交通规则。
  2. 范围。目标轨迹需要至少8秒的视野和200米的轨迹长度。
  3. 工作周期。小于100ms。
  4. 紧急情况。

乘员体验也是是十分重要的,考虑以下几点:

  1. 场景。不仅仅是简单的超车、让行的场景,更要能适应多车道、复杂、动态的场景。
  2. 交通规则。
  3. 舒适度。轨迹平滑。
    在这里插入图片描述
    Apollo的Pipeline

EM思想的最早起源:《Maximum likelihood from incomplete data via the EM algorithm》

EM算法,全称期望最大化算法(Expectation-Maximization Algorithm),是一种迭代算法,用于含有缺失数据的概率模型参数估计。

EM算法分为两步,即“期望步骤”(E步)和“最大化步骤”(M步)。在E步中,求出在当前参数下缺失数据的概率分布,即求出缺失数据的期望。在M步中,利用E步中求出的缺失数据的期望,最大化似然函数(或极大化后验概率)来估计模型参数。这样,利用EM算法可以通过迭代更新参数估计值,逐渐逼近真实数据分布的参数值。

EM算法广泛应用于数据挖掘、图像处理、自然语言处理等领域中的模型参数学习,比如高斯混合模型、隐马尔可夫模型等

A. Multilane Strategy

采用对不同车道进行cost计算的方式可能存在的难点:

  1. 多车道带来的计算复杂度。
  2. 不容易结合交通规则。
  3. 需要考虑不同Planning Cycle之间的变化对轨迹产生的影响。

多车道的策略需要考虑主动换道(routing规划时产生)和被动换道的场景(受障碍物、环境变化影响)。

对于每一条候选车道,将障碍物以及环境信息投影到Frenet坐标系中;每一条车道加以相应的交规约束,并对每一条车道生成一条轨迹;利用cost function和规则决定选择哪一条车道。

B. Path-Speed Iterative Algorithm

在Frenet框架中寻找最优轨迹本质是一个三维约束的优化问题。主要有两种解决方式:

  1. 综合ST问题,直接求解:通常是采用采样+搜索的算法进行,得到一条符合kinodynamic的轨迹。计算复杂度高。若为了减小计算量,可能会采用减小resolutions的方式,但这样一来会导致生成的轨迹非最优。
  2. ST解耦。路径优化考虑静态障碍物,速度优化考虑动态障碍物。求解效率高,但有可能存在求解失败的问题。

【论文笔记】Perception, Planning, Control, and Coordination for Autonomous Vehicles这篇论文也涉及相关问题的讨论。

路径优化利用上一帧的speed profile来估计低速障碍物。对于高速障碍物,EM planner更倾向于采取变道而不是nudge操作。

C. Decisions and Traffic Regulations

不同于以往的一些方法直接利用数值优化的方法同时求解决策和轨迹规划,EM planner采取了先决策后轨迹规划的方式,去减少求解最优轨迹时的计算量。

决策方法可分为基于规则(手动操作)和基于模型的方法:

  1. 基于规则:容易手动调整,但是泛用性差。
  2. 基于模型:通常将车辆状态离散化为有限驾驶状态,再使用数据驱动的方式去调整。

多智能体的交互在预测和决策等方面很重要,这就需要POMDP、RL等方法了。

EM的决策流程

  • 首先,通过一条粗糙可通行的轨迹来表示自车的意图。同时也利用这个轨迹来测量障碍物之间的交互。
  • 接着,基于这个轨迹,生成凸空间。基于凸优化的问题,生成遵循决策的平滑路径和速度曲线。

II. EM PLANNER FRAMEWORK WITH MULTILANE STRATEGY

在这里插入图片描述

Data Center:用于收集和同步所有的信息。
Reference Line Generator:提供车道级的参考线,参考线包括交规、障碍物等信息。

基于Frenet坐标系估计自车和周围环境的相对关系,并将信息传递到车道级的优化器之中。

Optimizer

  • path optimization
    • (E-step):将周围环境信息投影到Frenet坐标系(SL)。
    • (M-step):生成光滑的轨迹。
  • speed optimization:
    • (E-step): 将障碍物投影到ST图。
    • (M-step):生成光滑的速度曲线。

最后合并路径和速度部分,并送入reference line trajectory decider基于车辆状态、规则、cost选出最优路径。

III. EM PLANNER AT LANE LEVEL

在这里插入图片描述
两步E-step和两步M-step;轨迹随着规划周期进行迭代。

在第一个E-step中,障碍物被投射到车道Frenet坐标系,包括静态障碍物和动态障碍物。在Apollo框架中,动态障碍物的意图是用障碍物的移动轨迹来描述的.处于安全的考虑,路径优化部分只考虑低速或相向的障碍物,高速情况利用变道进行解决。

在第二个E-step中,所有障碍物,包括高速、低速和迎面而来的障碍物都会投影到ST图中进行评估。

在M-step中,通过DP+QP的方式生成path profiles和speed profiles。利用DP给出一个粗糙的决策,将非凸的空间转化为凸空间。QP进行优化。

A. SL and ST Mapping (E-step)

SL部分

SL投影基于参考线二阶导连续。
状态向量:

  • 在笛卡尔坐标系中: ( x , y , θ , κ , κ ˙ ) (x,y,\theta,\kappa,\dot\kappa) (x,y,θ,κ,κ˙)
  • 在Frenet坐标系中: ( s , l , d l , d d l , d d d l ) (s,l,dl,ddl,dddl) (s,l,dl,ddl,dddl)

对于动态障碍物,利用上一帧自车的轨迹。给定一个时间,可以估计出相应的位置,再利用这个位置与障碍物的轨迹进行交互决策。

下面是一个例子。
在这里插入图片描述

蓝色:自车;
红色:迎面而来的障碍车以及其轨迹;
紫色:交互区域。


ST部分
路径优化之后,可能产生交互作用的静态障碍物和动态障碍物都被投影到路径上。ps:注意apollo在之后方案与此处的不同。

在这里插入图片描述

一个障碍物在 t = 2 s t=2s t=2s, s = 40 m s=40m s=40m处切入当前车道,其在ST图中的投影为红色。后方车辆在ST图中的投影为绿色。剩余的区域为可行区域。

B. M-Step DP Path

在这里插入图片描述

DP的结构:包括lattice采样、代价函数以及DP search。

动态规划用于先给出一个粗略的路径。下面是一个示例。

在这里插入图片描述

  • 在自车的前方撒点。不同行之间的点通过五次多项式进行连接。采样间隔依赖于速度、道路结构以及场景(比如说换道场景会增大采样间隔)。
  • 采样结束后,利用SL投影、交规以及车辆动力学去构造代价函数。
  • 最后DP找到最低cost的路径,同时给出相应的决策。

DP-path总的代价函数:
C t o t a l ( f ( s ) ) = C s m o o t h ( f ) + C o b s ( f ) + C g u i d a n c e ( f ) C_{total}(f(s))=C_{smooth}(f)+C_{obs}(f)+C_{guidance}(f) Ctotal(f(s))=Csmooth(f)+Cobs(f)+Cguidance(f)

路径平滑程度的代价
C s m o o t h ( f ) = w 1 ∫ ( f ′ ( s ) ) 2 d s + w 2 ∫ ( f ′ ′ ( s ) ) 2 d s + w 3 ∫ ( f ′ ′ ′ ( s ) ) 2 d s . \begin{aligned} C_{smooth}(f)& \begin{aligned}&=w_1\int(f'(s))^2ds+w_2\int(f''(s))^2ds\end{aligned} \\ &+w_3\int(f^{\prime\prime\prime}(s))^2ds. \end{aligned} Csmooth(f)=w1(f(s))2ds+w2(f′′(s))2ds+w3(f′′′(s))2ds.
f ′ ( s ) f'(s) f(s)代表车道和自车航向角之差;
f ′ ′ ( s ) f''(s) f′′(s)代表路径的曲率, κ = d θ d s \kappa = \frac {d\theta}{ds} κ=dsdθ;
f ′ ′ ′ ( s ) f'''(s) f′′′(s)代表路径曲率的二阶导。

障碍物的代价
C o b s ( d ) = { 0 , d > d n C n u d g e ( d − d c ) , d c ≤ d ≤ d n C c o l l i s i o n d < d c C_{obs}(d)=\begin{cases}0,&d>d_n\\C_{nudge}(d-d_c),&d_c\leq d\leq d_n\\C_{collision}&d<d_c&\end{cases} Cobs(d)= 0,Cnudge(ddc),Ccollisiond>dndcddnd<dc
遍历路径上的 s s s序列 s 0 , s 1 , . . . , s n {s_0,s_1,...,s_n} s0,s1,...,sn,比较和障碍物的距离 d d d C n u d g e C_{nudge} Cnudge是一个单调递减函数。 d c d_c dc是一个基于安全考虑的buffer。 d n d_n dn是一个阈值,超过它,cost为0,阈值可随场景变更; C c o l l i s i o n C_{collision} Ccollision是碰撞的cost,通常会设一个很大的值。

车道的代价由两部分组成:
一部分是参考线的代价,使得轨迹靠近参考线;另一部分是道路的代价,保证轨迹在道路边界之内(若不在,设置一个很高的惩罚)。
C g u i d a n c e ( f ) = ∫ ( f ( s ) − g ( s ) ) 2 d s C_{guidance}(f)=\int(f(s)-g(s))^2ds Cguidance(f)=(f(s)g(s))2ds
注意:这里的参考线指的是道路中心线

C. M-Step Spline QP Path

在这里插入图片描述
QP在DP的基础上平滑轨迹。

在这里插入图片描述

QP的流程,包含目标函数和线性化的约束。

QP的目标函数:
C s ( f ) = w 1 ∫ ( f ′ ( s ) ) 2 d s + w 2 ∫ ( f ′ ′ ( s ) ) 2 d s + w 3 ∫ ( f ′ ′ ′ ( s ) ) 2 + w 4 ∫ ( f ( s ) − g ( s ) ) 2 d s . \begin{aligned} C_{s}(f)& \begin{aligned}&=w_1\int(f'(s))^2ds+w_2\int(f''(s))^2ds\end{aligned} \\ &\begin{aligned}&+w_3\int(f'''(s))^2+w_4\int(f(s)-g(s))^2ds.\end{aligned} \end{aligned} Cs(f)=w1(f(s))2ds+w2(f′′(s))2ds+w3(f′′′(s))2+w4(f(s)g(s))2ds.

注意这里的 g ( s ) g(s) g(s)是DP规划出来的路径。因为DP规划出来的路径包含了对nudge障碍物的考虑,因此QP的目标函数则是对nudge以及路径平滑程度两者之间的权衡。

QP路径的约束考虑了边界约束以及动态可行性。边界约束包括 f ( s ) , f ′ ( s ) , f ′ ′ ( s ) f(s),f'(s),f''(s) f(s),f(s),f′′(s)

在这里插入图片描述

为了保证约束的凸性和线性,在自车bounding box前面和后面分别添加了一个半圆。
l left front corner = f ( s ) + s i n ( θ ) l f + w / 2 l_\text{left front corner}=f(s)+sin(\theta)l_f+w/2 lleft front corner=f(s)+sin(θ)lf+w/2
l f l_f lf后轴到车前部的距离;
w w w半车宽;
θ \theta θ车辆航向角和道路方位角之差。
f ( s ) + s i n ( θ ) l f + w / 2 ≤ f ( s ) + f ′ ( s ) l r + w / 2 ≤ l left corner bound \begin{aligned} \begin{aligned}f(s)+sin(\theta)l_f+w/2\end{aligned}& \begin{aligned}&\leq f(s)+f'(s)l_{\textcolor{purple}{r}}+w/2\end{aligned} \\ &\leq l_{\text{left corner bound}} \end{aligned} f(s)+sin(θ)lf+w/2f(s)+f(s)lr+w/2lleft corner bound
线性化近似之后得到下式。其余三个点也一样。

当然还有起点约束。

这部分还可参考二次规划(QP)样条路径优化

D. M-Step DP Speed Optimizer

在这里插入图片描述
还有剪枝的操作,可参考【Apollo学习笔记】——规划模块TASK之SPEED_HEURISTIC_OPTIMIZER

在这里插入图片描述
速度DP结果:分段线性化的speed profile(在QP中作为参考线)、可行区域(在QP中用以生成凸空间)以及对障碍物的决策。

代价函数:
C t o t a l ( S ) = w 1 ∫ t 0 t n g ( S ′ − V r e f ) d t + w 2 ∫ t 0 t n ( S ′ ′ ) 2 d t + w 3 ∫ t 0 t n ( S ′ ′ ′ ) 2 d t + w 4 C o b s ( S ) \begin{aligned} C_{total}(S)& \begin{aligned}=w_1\int_{t_0}^{t_n}g(S'-V_{ref})dt\end{aligned} \\ &\begin{aligned}&+w_2\int_{t_0}^{t_n}(S'')^2dt+w_3\int_{t_0}^{t_n}(S''')^2dt\end{aligned} \\ &+w_4C_{obs}(S) \end{aligned} Ctotal(S)=w1t0tng(SVref)dt+w2t0tn(S′′)2dt+w3t0tn(S′′′)2dt+w4Cobs(S)

考虑因素:

  • 速度接近于参考速度 V r e f V_{ref} Vref V r e f V_{ref} Vref取决于限速、交规、曲率。 g g g用以适应于不同场景调整相应的惩罚。
  • 平滑程度。 S ′ ′ , S ′ ′ ′ S'',S''' S′′,S′′′
  • 障碍物。

DP搜索空间考虑的约束有:加速度、加加速度以及单调递增(不考虑向后行车)。

E. M-Step QP Speed Optimizer

在这里插入图片描述QP的结构

C t o t a l ( S ) = w 1 ∫ t 0 t n ( S − S r e f ) 2 d t + w 2 ∫ t 0 t n ( S ′ ′ ) 2 d t + w 3 ∫ t 0 t n ( S ′ ′ ′ ) 2 d t . \begin{aligned} C_{total}(S)& \begin{aligned}&=w_1\int_{t_0}^{t_n}(S-S_{ref})^2dt+w_2\int_{t_0}^{t_n}(S'')^2dt\end{aligned} \\ &+w_3\int_{t_0}^{t_n}(S''')^2dt. \end{aligned} Ctotal(S)=w1t0tn(SSref)2dt+w2t0tn(S′′)2dt+w3t0tn(S′′′)2dt.
S r e f S_{ref} Sref为DP规划出的speed profile。

约束:
S ( t i ) ≤ S ( t i + 1 ) , i = 0 , 1 , 2 , . . . , n − 1 , S l , t i ≤ S ( t i ) ≤ S u , t i , S ′ ( t i ) ≤ V u p p e r , − D e c m a x ≤ S ′ ′ ( t i ) ≤ A c c m a x − J m a x ≤ S ′ ′ ′ ( t i ) ≤ J m a x \begin{gathered} \begin{aligned}S(t_i)\leq S(t_{i+1}),i=0,1,2,...,n-1,\end{aligned} \\ \begin{aligned}S_{l,t_{i}}\leq S(t_{i})\leq S_{u,t_{i}},\end{aligned} \\ S^{\prime}(t_{i})\leq V_{upper}, \\ \begin{aligned}-Dec_{max}\leq S''(t_{i})\leq Acc_{max}\end{aligned} \\ \begin{aligned}-J_{max}\leq S^{\prime\prime\prime}(t_i)\leq J_{max}\end{aligned} \end{gathered} S(ti)S(ti+1),i=0,1,2,...,n1,Sl,tiS(ti)Su,ti,S(ti)Vupper,DecmaxS′′(ti)AccmaxJmaxS′′′(ti)Jmax

在这里插入图片描述

F. Notes on Solving Quadratic Programming Problems

  • 采用五次多项式进行QP求解。参考:二次规划ST速度优化、二次规划(QP)样条路径优化
  • 利用上一次规划的结果作为热启动以提高求解效率。

G. Notes on Non-convex Optimization With DP and QP

  • DP采样的节点数受到采样间隔的影响,同时DP在复杂场景的计算量会很大,占据大量计算时间。一般的,DP只是提供一个粗解,并不会给出最优解。
  • QP需要依赖于DP获得凸空间,否则可能会陷入局部最小值或规划失败。(QP并非一定需要DP作为前置步骤,若能转换到凸问题进行求解也是可以的)

CASE STUDY

EM planner是一个基于轻决策的规划器,相比传统的重决策或者完全rule-based的方案,更具有泛化能力。

一个两轮迭代的例子。
在这里插入图片描述
(a) 驻车沿着历史轨迹行驶。
(b) 两车相遇点在s=40处,因此在s=40处采用nudge操作通过可以有效避开障碍物。
© 主车会在s=40处降低速度通过。
(d) 更新nudge距离到s=30。
(e) 在s=30处nudge通过,之后在s=40处加速。

Else

附录里提到了reproducing kernel Hilbert space (RKHS)的概念,有些不大理解,后续再看。

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

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

相关文章

什么是GPT?初学者如何使用GPT?GPT入门学习

灵魂发问&#xff1f; GPT科研中没有那么神&#xff1f; GPT账号不能轻松使用&#xff1f; GPT怎样才融合到我的科研中&#xff1f; 别人用的非常酷&#xff0c;为什么我用的不行&#xff1f; 让GPT成为您的科研加速器&#xff01; GPT对于每个科研人员已经成为不可或缺的辅助…

ruoYi图片上传

一 简述 使用ruoyi的代码生成功能&#xff0c;设置字段显示类型为 “图片上传” &#xff0c;生成各层代码即可 二 步骤示例 1. 打开代码生成模块 2. 修改展示类型为“图片上传” 3. 生成代码

【autodl/linux配环境心得:conda/本地配cuda,cudnn及pytorch心得】

linux配环境心得&#xff1a;conda/本地配cuda&#xff0c;cudnn及pytorch心得 我们服务器遇到的大多数找不到包的问题一&#xff0c;服务器安装cuda和cudnn使用conda在线安装cuda和cudnn使用conda进行本地安装检查conda安装的cuda和cudnn本地直接安装cuda和cudnn方法一&#x…

jeesite实现excel导入功能(保姆级图文教程)

文章目录 前言一、准备工作1.准备一个excel模板,放入static目录2.application.yml文件中设置文件存储路径3.使用easyexcel插件解析excel数据,pom文件导入easyexcel二、使用步骤1.列表页添加下载模板按钮2.表单页添加文件上传3. 创建excel解析对应实体4.后台完成文件上传代码,…

请体验一下falcon 180b 大语言模型的感觉

引言 由Technology Innovation Institute(T四训练的开源大模型Falcon 180B登陆Hugging Face!Falcon180B为开源大模型树立了全新的标杆。作为当前最大的开源大模型&#xff0c;有l80B参数并且是在在3.5万亿token的TII RefinedWeb数据集上进行训练&#xff0c;这也是目前…

冠达管理:减肥药概念再度爆发,常山药业两连板,翰宇药业等大涨

减肥药概念12日盘中再度拉升&#xff0c;到发稿&#xff0c;常山药业“20cm”涨停&#xff0c;翰宇药业涨超14%&#xff0c;德展健康涨停&#xff0c;金凯生科涨近9%&#xff0c;争气股份、普利制药、昊帆生物涨约5%&#xff0c;诺泰生物、圣诺生物、华森制药等涨超4%。 常山药…

AI数字人软件系统开发框架

AI数字人&#xff08;AI Digital Human&#xff09;开发涉及到多个领域&#xff0c;包括自然语言处理、计算机视觉、声音合成、人机交互等。以下是一些用于开发AI数字人的开发框架和工具&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开…

2023贵州MES与ERP协同配合信息化解决方案,结合应用优势研究-亿发

在当今竞争激烈的商业环境中&#xff0c;企业转型升级已经成为生存和发展的重要选择。而在这一过程中&#xff0c;ERP生产管理和智能制造MES系统的融合应用成为推动智能制造的关键引擎&#xff0c;为企业带来了优势。 ERP系统的作用&#xff1a; ERP系统是企业管理的重要部分&…

openpnp - 二手西门子电动飞达 - 物料编带安装的正确姿势

文章目录 openpnp - 二手西门子电动飞达 - 物料编带安装的正确姿势概述将料头用接料引带加长接料引带的规格将编带送入飞达的编带导引槽物料正常载入完成的子飞达没有错误指示灯END openpnp - 二手西门子电动飞达 - 物料编带安装的正确姿势 概述 手头一堆2手的西门子电动飞达…

手工测试项目实战

功能测试实战 项目介绍及说明 项目部署 开发语言 web服务器 asp IIS php apache java comcat 将其放在网站上&#xff0c;映射地址 查看文件中是否有相对路径…/文件表示方式&#xff0c;有的话需要启用父路径&#xff0c;并点击应用 项目为32位&#xff0c;但win7虚拟机…

.Net JIT二进制骚操DHVM破解篇

前言 经研究&#xff0c;号称最强.Net加密软件DNGuard HVM(以下简称DHVM)&#xff0c;五行代码基本上可以优雅的破解它&#xff0c;本篇看下。友情提示&#xff0c;以下全是二进制汇编骚操&#xff0c;慎入。原文:.Net JIT二进制骚操DHVM破解篇 概括 示例&#xff1a; 非常…

Qt打包工具windeployqt自动打包exe程序

Qt打包工具windeployqt自动打包exe程序 一、Qt打包工具windeployqt自动打包exe程序1.问题所在2. 如何使用3. 注意点3.1 第一点3.2 第二点3.3 更直接的解决方法&#xff08;不是最优的办法&#xff0c;但是方便好用&#xff09; 二、应用程序的发布 一、Qt打包工具windeployqt自…

Android 之 Compose 开发基础

1、中文官网地址&#xff1a; https://developer.android.google.cn/courses/android-basics-compose/course?hlzh-cn 2、首个Android应用 2、构建应用界面

2023年9月软考中级系统集成项目管理工程师报名来这里

系统集成项目管理工程师是全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff08;简称软考&#xff09;项目之一&#xff0c;是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试&#xff0c;既属于国家职业资格考试&#xff0c;又是职…

正点原子逻辑分析仪DL16

最近购买了正点原子的逻辑分析仪&#xff0c;现在记录下此逻辑分析仪的用法。 逻辑分析仪不到半个巴掌大小。 安装下上位机软件&#xff0c;一路点击是即可。 用zadig安装下ATK-Logic的驱动。 安装完驱动后&#xff0c;此时将逻辑分析仪插上电脑后&#xff0c;指示灯变为绿色…

SpringBoot2.0(过滤器,监听器,拦截器)

目录 一&#xff0c;过滤器1.1&#xff0c;自定义Filter1.2&#xff0c;启动类代码1.2&#xff0c;创建filter类和LoginFilter包1.2.1&#xff0c;编写loginFilter类 过滤器代码1.2.2&#xff0c;创建二个Controller类 二&#xff0c;监听器2.1&#xff0c;自定义监听器2.2&…

基于虚拟仿真技术的汽车燃油泵控制

在当前激烈的竞争环境下&#xff0c;汽车行业正在加速产业和技术更迭&#xff0c;整车厂对大型ECU嵌入式控制系统和软件的需求迫在眉睫。 然而&#xff0c;复杂而庞大的汽车系统往往由多个物理系统组成&#xff0c;系统所对应的模型都需要在不同的领域实现&#xff1a;发动机、…

Leetcode算法入门与数组丨1. 数据结构与算法简介

文章目录 前言1 数据结构与算法1.1 数据结构1.2 算法 2 算法复杂度2.1 算法复杂度简介2.2 时间复杂度2.3 空间复杂度 3 总结 前言 Datawhale组队学习丨9月Leetcode算法入门与数组丨打卡笔记 这篇博客以及接下来几篇将会是一个 入门型 的文章&#xff0c;主要是自己学习的一个…

Leaflet入门,原生html网页如何使用Leaflet地图

前言 本章讲解如何不使用vue或react的情况下,在原生html网页中使用Leaflet地图加载地图的功能。 以高德地图xyz瓦片地图为例。 示例演示效果 vue如何使用Leaflet vue2如何使用:《Leaflet入门,如何使用vue2-leaflet实现vue2双向绑定式的使用Leaflet地图,以及初始化后拿到…

【直接运行TS文件的三种方法】

直接运行TS文件的三种方法 文章目录 直接运行TS文件的三种方法法一&#xff1a;将 ts 编译成 js&#xff0c;然后运行 js 文件法二&#xff1a;用 ts-node 直接运行 ts法三&#xff1a;webstorm中直接运行ts(TypeScript) 法一&#xff1a;将 ts 编译成 js&#xff0c;然后运行 …