当前位置: 首页 > news >正文

ASAM OpenDRIVE V1.7协议超详解(一)

文章目录

  • 前言
  • 一、仿真场景的构成
  • 二、openDRIVE框架
  • 三、g_additionalData
  • 四、openDRIVE-header
  • 五、openDRIVE-road
    • 1、Road总拓扑结构
    • 2、Road-link介绍
      • 1)link的拓扑结构
      • 2)link链接示例
      • 3)link前继后继
      • 4)道路link规则
    • 3、road-type介绍
      • 1)type的拓扑结构
    • 4、road-elevation介绍
      • 1) elevation类型
      • 2)Elevation拓扑图
      • 3)标高/超高计算
      • 4)横向轮廓计算
    • 5、road-surface介绍
      • 1)surface的拓扑结构
    • 6、road-lane介绍
      • 1)lane的拓扑结构
      • 2)车道分组
      • 3)车道部分
      • 4)车道偏移
      • 5)车道链接
      • 6)车道属性
        • A、车道属性-拓扑结构
        • B、车道属性-车道宽度
        • C、车道属性-车道高度
      • 7)车道类型
      • 8)车道限速
      • 8)车道标记


前言

本文内容引用ASAM官方OpenDrive V1.7介绍

ASAM是“Automotive Software and Systems Modeling”的缩写,是一个汽车行业标准化组织,旨在制定和维护与汽车软件和系统相关的标准。OpenDRIVE是一种用于虚拟仿真场景的开放标准,旨在描述道路网络和场景的详细信息,是仿真场景中的静态组成部分,以支持自动驾驶和驾驶辅助系统的开发和测试。

点击下载OpenDRIVE官方文档及案例


一、仿真场景的构成

ASAM OpenDRIVE定义了静态路网格式(.xodr),ASAM OpenCRG,可以为路网添加路面描述(.crg)。 ASAM OpenDRIVE和ASAM OpenCRG仅包含静态内容。要添加动态内容,需要ASAM OpenSCENARIO(.xosc)。 结合所有三个标准文件,就可以组成标准的仿真场景。

在这里插入图片描述


二、openDRIVE框架

1、ASAM OpenDRIVE框架组成主要为header、road、controller、junction、junctionGroup、station,主要由6个element组成,6个Element及其子Element可选择性关联g_additionalData(附加数据)。

在这里插入图片描述

2、openDRIVE中的坐标系

在这里插入图片描述


三、g_additionalData

1、g_additionalData附加数据做为可选的选项,Element可以自定义是否关联g_additionalData节点;g_additionalData节点用于向OpenDRIVE道路网络描述中添加自定义信息或额外的数据,其拓扑结构如下图所示;

在这里插入图片描述

2、g_additionalData中的include,允许将外部文件包含在ASAM OpenDRIVE文件中, 比如对外部的文件的引用可以放在include元素中。

3、g_additionalData中的userdata可以用于在OpenDRIVE道路网络描述中添加任意自定义信息,以满足特定需求或添加额外的详细信息。通常,userdata的内容是用户根据其特定应用场景定义的。

4、g_additionalData中的dataQuality,原始数据或集成在ASAM OpenDRIVE中的外部来源的数据可能具有不同的质量。 可以在ASAM OpenDRIVE中描述外部数据的质量和准确性。dataQuality的error可以描述外部数据(如GPS数据)的绝对误差和相对误差范围(以 [m] 为单位)。dataQuality的rawData描述一些基本元数据包含有关ASAM OpenDRIVE中包含的原始数据的信息,内容比较多,详细格式请看我上传的资源文档。

XML片段

<OpenDRIVE><road><lanes><laneSection><left><lane><g_additionalData><!-- 附加数据 --><key>myKey</key><value>myValue</value></g_additionalData></lane></left></laneSection></lanes></road>
</OpenDRIVE>

四、openDRIVE-header

1、OpenDRIVE中的header一般定义:版本信息、描述信息、创建者信息、日期时间戳、坐标信息等等,其拓扑结构如下图所示;

在这里插入图片描述

XML片段

<?xml version="1.0" encoding="UTF-8"?>
<OpenDRIVE><header><revMajor>1</revMajor><revMinor>4</revMinor><name>Example Road</name><version>1.0</version><date>2023-11-12</date><north>0.0</north><south>0.0</south><east>0.0</east><west>0.0</west><!-- 其他头部信息 --></header><!-- 其他道路信息 -->
</OpenDRIVE>

五、openDRIVE-road

1、Road总拓扑结构

在这里插入图片描述

2、Road-link介绍

road节点中的link主要是用于描述两个不同的道路部分之间的过渡和连接关系;

1)link的拓扑结构

在这里插入图片描述

XML片段

<OpenDRIVE><!-- 头部信息 --><road name="Road 1" id="1" length="100.0"><!-- 道路属性 --><link><predecessor elementType="road" elementId="2" elementDir="-1" elementS="0.0" contactPoint="end"/><successor elementType="road" elementId="3" elementDir="1" elementS="0.0" contactPoint="start"/></link><!-- 其他道路元素 --></road><!-- 其他道路信息 --></OpenDRIVE>

2)link链接示例

显示了禁止、允许和推荐的道路连接场景。 重要的是,要连接的道路的车道和参考线与其前继或后继道路有直接的联系。 应避免重叠或跳跃,但如果参考线连接正确,则不禁止重叠或跳跃。
在这里插入图片描述

3)link前继后继

link的元素predecessor(前继)和successor(后继)表示的时道路之间的相对关闭,如road1之前没有道路,因此没有前继;road1之后有road2说明road1有后继road2;

在这里插入图片描述

4)道路link规则

下述这种链接方式也是被允许的
在这里插入图片描述

在这里插入图片描述

3、road-type介绍

1)type的拓扑结构

在这里插入图片描述

<OpenDRIVE><!-- 头部信息 --><road name="Road 1" id="1" length="100.0"><planView><!-- 道路几何形状信息 --></planView><lanes><!-- 道路车道信息 --></lanes><objects><!-- 道路对象信息 --></objects><roadType s="0.0"><type type="urban"><name>Urban Road</name><priority>2</priority><speed max="50.0" unit="km/h"/><country>China</country></type></roadType><!-- 其他道路元素 --></road><!-- 其他道路信息 --></OpenDRIVE>

4、road-elevation介绍

1) elevation类型

A、Road Elevation(标高)指的是沿道路参考线的海拔,即s方向的海拔;
B、Su[er Elevation(超高)指的是道路侧向剖面,垂直于道路参考线,且与地面存在夹角(类似于车辆的roll侧倾角),即t方向的海拔。
C、Road Shape(形状)一些横向道路形状过于复杂,无法仅用超高来描述。 形状以更详细的方式描述参考线上给定点处道路横截面的海拔。 这意味着,在一个 s 坐标处可能存在多个具有不同 t 值的形状定义,从而描述道路的弯曲形状。
在这里插入图片描述

2)Elevation拓扑图

在这里插入图片描述

XML片段

<road name="Road 1" id="1" length="100.0"><road-elevationprofile><elevation s="0.0" a="0.0" b="0.0" c="0.0" d="0.0"/><elevation s="50.0" a="0.0" b="0.0" c="0.0" d="0.0"/></road-elevationprofile><road-lateralprofile><superelevation s="0.0" a="0.0" b="0.0" c="0.0" d="0.0"/><crossfall s="0.0" a="0.0" b="0.0" c="0.0" d="0.0"/></road-lateralprofile><road-shape><shape s="0.0" x="0.0" y="0.0"/><shape s="50.0" x="10.0" y="5.0"/></road-shape>
</road>

3)标高/超高计算

道路标高、超高使用以下三阶多项式函数计算:elev(ds) = a + b*ds + c*ds² + d*ds³

参数名描述
elev指定位置的标高/超高
a, b, c, d多项式系数
ds是新标高/超高元素的起点与给定位置之间沿参考线的距离

道路标高/超高的绝对位置计算:s = sstart + ds

参数名描述
s是参考线坐标系中的绝对位置
sstart是元素在参考线坐标系中的起始位置

4)横向轮廓计算

在下图中显示了如何计算两个横向剖面之间的高度信息。sR1的侧剖面有5个多项式定义,而sR2的侧剖面有3个多项式定义。要计算两个侧面轮廓之间的点,下图所示的公式在这两个轮廓之间进行线性插值。
在这里插入图片描述
横向轮廓的形状使用以下多项式函数计算:hShape (ds)= a + b*dt + c*dt² + d*dt³

参数名描述
hShape是给定位置上参考平面上方的高度
a, b, c, d是系数
dt是形状元素的起点与给定位置之间垂直于参考线的距离

形状值的绝对位置计算如下:t = tstart + dt

参数名描述
t是参考线坐标系中的绝对位置
a, b, c, d是元素在参考线坐标系中的起始位置
tstart是元素在参考线坐标系中的起始位置

5、road-surface介绍

1)surface的拓扑结构

在这里插入图片描述
XML片段

<road name="Road 1" id="1" length="100.0"><road-surface><friction s="0.0" coefficient="0.8"/><color s="0.0" r="255" g="255" b="255"/></road-surface>
</road>

因为suface涉及CRG相关内容,后续再另开分支讲述清楚吧。

6、road-lane介绍

1)lane的拓扑结构

在这里插入图片描述
XML片段

<road name="Road 1" id="1" length="100.0"><road-lane><laneSection s="0.0"><lane id="1" type="driving"><width sOffset="0.0" a="3.5"/><road-mark sOffset="0.0" type="solid" color="standard"/><speed sOffset="0.0" max="60.0" unit="km/h"/><access restriction="no"/><height sOffset="0.0" inner="3.8" outer="4.0"/><rule priority="1" yield="true"/><material surface="asphalt" friction="0.8"/><visibility sOffset="0.0" forward="100.0" back="50.0"/><border left="true" right="true"/><predecessor id="2" contactPoint="end"/><successor id="4" contactPoint="start"/><link elementId="laneLink1"/><userData><property name="laneType" value="driving"/></userData></lane><lane id="2" type="driving"><!-- 其他元素和属性 --></lane></laneSection></road-lane>
</road>

2)车道分组

A、车道部分内的车道分为左侧、中间和右侧车道。左侧车道ID为正数,右侧车道ID为负数,中间车道线(道路参考线)为0。
在这里插入图片描述

3)车道部分

A、车道可以分为多个车道部分。 每个车道段包含固定数量的车道。 每当车道数量发生变化时,都需要一个新的车道段,另外车道段沿着车道参考线升序排列,即(st坐标中的s方向)
在这里插入图片描述

B、为了简化复杂道路的车道部分的使用,可以仅使用Lane section中的 @singleSide属性为道路的一侧定义车道部分。

在这里插入图片描述

C、Lane section属性,singleSide字段表示车道是否只存在于道路的一侧。它是一个布尔值,用于指示车道是否仅存在于道路的一个侧面。如果singleSide为true,则表示车道只存在于道路的一侧,通常用于描述单行道或特定交通情况下的车道布局。如果singleSide为false,则表示车道存在于道路的两侧,通常用于描述双行道或多车道道路的车道布局。

参数名描述
s起始位置的 S 坐标
singleSide车道截面元素仅对一侧(左侧、中心或右侧)有效,具体取决于子元素。

在这里插入图片描述

4)车道偏移

A、车道偏移可用于将中心车道移离道路参考线。 这样可以更轻松地对道路上车道的局部横向移动进行建模,例如左转车道。车道偏移(road offset)和形状定义(road shape)的组合可能会导致不一致,具体取决于用于车道偏移的插值。 由于线性插值用于沿参考线的道路形状,因此线性插值也应用于偏移定义;下图描述中心车道远离道路参考线的偏移量。

在这里插入图片描述

在这里插入图片描述

B、给定点的偏移量使用以下三阶多项式函数计算:offset (ds) = a + b*ds + c*ds² + d*ds³

参数名描述
offset是给定位置的横向偏移量
a, b, c, d多项式系数
ds是新车道偏移元素的起点与给定位置之间沿道路参考线的距离

偏移值的绝对位置:s = sstart + ds

参数名描述
s是参考线坐标系中的绝对位置
sstart是元素在参考线坐标系中的起始位置

C、每次多项式函数更改时,都需要一个新的通道偏移元素,下面是XML示例。

<lanes><laneOffset s="25.0" a="0.0" b="0.0" c="3.9e-03" d="-5.2e-05"/><laneOffset s="75.0" a="3.25" b="0.0" c="0.0" d="0.0"/></lanes>

在这里插入图片描述

5)车道链接

A、车道链接有两个元素,predecessor(前继)和successor(后继), 车道可以与同一条或另一条道路上的车道相连;

在这里插入图片描述

在这里插入图片描述

它们之间的前后继链接关系如下图所示:

在这里插入图片描述
在这里插入图片描述

6)车道属性

A、车道属性-拓扑结构

车道属性描述车道的用途和形状。 车道属性是按车道路段定义的,但可能会在该路段内更改。 如果未为车道部分专门定义属性,则应用程序可以应用默认属性;车道属性拓扑结构如下图所示。
在这里插入图片描述

B、车道属性-车道宽度

a、给定点的宽度使用以下三阶多项式函数计算:Width (ds) = a + b*ds + c*ds² + d*ds³

参数名描述
width是给定位置的宽度
a, b, c, d多项式系数
ds是新车道宽度元素的起点与给定位置之间沿道路参考线的距离

ds每个元素从零开始。 宽度值的绝对位置计算如下::s = ssection + offsetstart + ds

参数名描述
s是参考线坐标系中的绝对位置
sSection是前一个车道段元素在航迹坐标系中的起始位置
offsetStart是元素相对于前一个车道部分的偏移量

b、从不同偏移位置开始的正 s 方向上车道宽度的变化
在这里插入图片描述
在这里插入图片描述

C、车道属性-车道高度

a、车道高度应沿 h 坐标定义。 车道高度可用于抬高独立于道路标高的车道。 车道高度用于实现小比例尺的标高,例如抬高人行道,如图下图所示。 车道高度指定为 z 方向上与道路的偏移量(包括标高、超高、形状)。
在这里插入图片描述
b、XML片段

<lane id="-2" type="sidewalk" level="false"><link><successor id="-3"/></link><width sOffset="0.0" a="2.0" b="0.0" c="0.0" d="0.0"/><height sOffset="0.0" inner="0.12" outer="0.12"/>
</lane>

在这里插入图片描述

7)车道类型

A、车道类型分类

类型描述
shoulder描述道路边缘的软边框。
border描述道路边缘的硬边框。与可行驶车道具有相同的高度。
driving描述一条“正常”的可行驶道路,不属于其他类型之一。
stop用于紧急停车的高速公路硬路肩。
none描述道路最外侧的空间,没有实际内容,其唯一目的是在驾驶员离开道路时注册ASAM OpenDRIVE的存在。
restricted描述不应该有车辆行驶的车道。该车道与可行驶车道具有相同的高度。通常使用线条分隔车道,经常包含虚线。
parking描述带有停车位的车道。
median描述位于相反行驶方向的行驶车道之间的车道。通常用于在大型道路上分隔交通。
biking描述为自行车保留的车道。
sidewalk描述供行人行走的车道。
curb描述路缘石。路缘石的高度与相邻的可行驶车道不同。
exit描述用于与主干道平行的部分的车道。主要用于减速车道。
entry描述用于与主干道平行的部分的车道。主要用于加速车道。
onramp从乡村或城市道路通向高速公路的匝道。
offRamp从高速公路通向乡村或城市道路的匝道。
connectingRamp连接两条高速公路的匝道,例如高速公路交汇处。

—高速公路的车道类型
在这里插入图片描述

—乡村道路的车道类型
在这里插入图片描述

—城市道路的车道类型在这里插入图片描述

—高速公路出口和入口的车道类型
在这里插入图片描述

8)车道限速

可以定义车道上允许的最大速度。车道限速优先于道路限速。
在这里插入图片描述
在这里插入图片描述

8)车道标记

A、拓扑结构图
在这里插入图片描述
XML片段

<road><!-- 路段信息 --><lanes><!-- 车道信息 --><laneSection><!-- 车道段信息 --><left><!-- 左侧车道信息 --><lane><!-- 车道信息 --><roadMark><!-- 车道标线 --><sOffset>0.0</sOffset><width>0.1</width><type>solid</type><color>white</color><!-- 其他属性 --></roadMark></lane><!-- 其他左侧车道 --></left><center><!-- 中心车道信息 --><!-- 中心车道的车道标线 --></center><right><!-- 右侧车道信息 --><!-- 右侧车道的车道标线 --></right></laneSection><!-- 其他车道段 --></lanes><!-- 其他道路元素 --></road>

以上,就是从ASAM中整理下来的一些关于openDrive的一些内容,因为内容比较多。可能会分几篇来写,也有一些内容描述的不是很详细,请大家见谅哈,后续有空再补充。

相关文章:

ASAM OpenDRIVE V1.7协议超详解(一)

文章目录 前言一、仿真场景的构成二、openDRIVE框架三、g_additionalData四、openDRIVE-header五、openDRIVE-road1、Road总拓扑结构2、Road-link介绍1&#xff09;link的拓扑结构2&#xff09;link链接示例3&#xff09;link前继后继4&#xff09;道路link规则 3、road-type介…...

springboot的配置信息的设置和读取(application.properties/application.yml)

springboot提供了两种配置信息的文件格式&#xff0c;application.properties和application.yml&#xff0c;基于直接明了&#xff0c;使用方便和高效的前提下下面的配置均采用yml格式配置&#xff0c; 注意 yml采用缩减方式来排列键后面紧跟冒号&#xff0c;然后空格&#x…...

Deepsort项目详解

一、目标追踪整体代码 代码目录如下图所示&#xff1a; 、 追踪相关代码&#xff1a; 检测相关代码和权重 调用 检测 和 追踪的代码&#xff1a; 首先代码分为三个部分&#xff1a; 目标追踪的相关代码和权重目标检测相关代码和权重&#xff0c;这里用的是yolov5.5目标检…...

C语言证明一个偶数总能表示为两个素数之和。输入一个偶数并将其分解为两个素数

完整代码&#xff1a; // 一个偶数总能表示为两个素数之和。输入一个偶数并将其分解为两个素数#include<stdio.h>//判断一个数n是否为素数 int isPrimeNumber(int n){//1不是素数if (n1){return 0;}for (int i 2; i <(n/2); i){//当有n能被整除时&#xff0c;不是素…...

Python 的 datetime 模块

目录 简介 一、date类 &#xff08;一&#xff09;date 类属性 &#xff08;二&#xff09;date 类方法 &#xff08;三&#xff09;实例属性 &#xff08;四&#xff09;实例的方法 二、time类 &#xff08;一&#xff09;time 类属性 &#xff08;二&#xff09;tim…...

Termius for Mac:掌控您的云端世界,安全高效的SSH客户端

你是否曾经在Mac上苦苦寻找一个好用的SSH客户端&#xff0c;让你能够远程连接到Linux服务器&#xff0c;轻松管理你的云端世界&#xff1f;现在&#xff0c;我们向你介绍一款强大而高效的SSH客户端——Termius。 Termius是一款专为Mac用户设计的SSH客户端&#xff0c;它提供了…...

Ubuntu 下监控并自动重启网卡

很多时候网站服务器挂掉也可能是因为网卡挂掉了&#xff0c;如果你网站不能访问时 SSH 也无效了一般都是这个问题。这时可以通过一个定时脚本监控网络并进行自动重启。 1 创建脚本 auto_restart_network.sh 4 5 6 7 8 9 #!/bin/bash ping www.baidu.com -c 1 >/dev/null i…...

377. 组合总和 Ⅳ

给你一个由 不同 整数组成的数组 nums &#xff0c;和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。 题目数据保证答案符合 32 位整数范围。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3], target 4 输出&#xff1a;7 解释&#…...

【OpenCV】计算视频的光流并跟踪物体calcOpticalFlowPyrLK

一、介绍 计算光流可以使用OpenCV的calcOpticalFlowPyrLK方法&#xff0c;cv2.calcOpticalFlowPyrLK是OpenCV库中的一个函数&#xff0c;用于计算稀疏光流。它实现的是Lucas-Kanade方法&#xff0c;这是一种常用的光流计算方法。 光流是图像中物体运动的近似表示&#…...

C语言进阶

数组 在基础篇说过&#xff0c;数组实际上是构造类型之一&#xff0c;是连续存放的。 一维数组 定义 定义格式&#xff1a;[存储类型] 数据类型 数组名标识符[下标]; 下面分模块来介绍一下数组的定义部分的内容。 1、初始化和元素引用&#xff1a; 可以看到数组是连续存储…...

Linux之gdb

gdb就是一个Linux的调试工具&#xff0c;类似与vs里面的调试 可执行程序也有格式&#xff0c;不是简单的二进制堆砌...

100天精通风控建模(原理+Python实现)——第3天:风控建模中如何处理缺失值?

风控模型已在各大银行和公司都实际运用于业务,用于营销和风险控制等。    之前已经阐述了100天精通风控建模(原理+Python实现)——第1天:什么是风控建模?    100天精通风控建模(原理+Python实现)——第2天:风控建模有什么目的?    接下来看下100天精通风控建模(原理…...

Leetcode—680.验证回文串II【简单】

2023每日刷题&#xff08;二十七&#xff09; Leetcode—680.验证回文串II 实现代码 class Solution { public:bool judgeFunc(string s, int left, int right) {while(left < right) {if(s[left] ! s[right]) {return false;}left;right--;}return true;}bool validPalin…...

Redis五种数据类型及命令操作(二)

&#x1f388;个人公众号:&#x1f388; :✨✨✨ 可为编程✨ &#x1f35f;&#x1f35f; &#x1f511;个人信条:&#x1f511; 知足知不足 有为有不为 为与不为皆为可为&#x1f335; &#x1f349;本篇简介:&#x1f349; 本篇记录Redis五种数据类型及命令操作&#xff0c;如…...

低代码信创开发核心技术(三):MDA模型驱动架构及元数据系统设计

前言 写最后一篇文章的时候&#xff0c;我本人其实犹豫了半年&#xff0c;在想是否发布出这篇文章&#xff0c;因为可能会动了很多人的利益。所以这篇文章既是整个低代码信创开发的高度总结&#xff0c;也是最为精华的一部分&#xff0c;它点明了低代码中最为核心的技术。虽然…...

HslCommunication模拟西门子读写数据

导入HslCommunication C#端代码&#xff08;上位机&#xff09; 这里要注意的是上位机IP用的当前电脑的IP。 using HslCommunication; using HslCommunication.Profinet.Siemens; using System; using System.Collections.Generic; using System.ComponentModel; using Syste…...

多测师肖sir_高级金牌讲师_ui自动化po框架版本02

ui自动化po框架版本02 一、 pages下的BasePage.py模块 此模块是封装所有用例的基类 比如说&#xff1a;所有用例要用到的元素定位&#xff0c;以及输入框输入&#xff0c;点击&#xff0c;下拉等等公共方法import unittest #导入unittest 框架 from time import *# 调试代码…...

线性判别分析(Linear Discriminant Analysis,LDA)

Linear Discriminant Analysis&#xff08;LDA&#xff09; 输入&#xff1a; 原始数据$D((x_1,y_1),(x_2,y_2),...,(x_m,y_m)$ 、​ 类别标签$Y[y_1,y_2,...,y_n]$、​ 降维到的维度d输出&#xff1a; 投影矩阵W、投影后的样本$Z$、算法步骤&#xff1a; 1.计算类内散度…...

git的分支及标签使用及情景演示

目录 一. 环境讲述 二.分支 1.1 命令 1.2情景演练 三、标签 3.1 命令 3.2 情景演示 ​编辑 一. 环境讲述 当软件从开发到正式环境部署的过程中&#xff0c;不同环境的作用如下&#xff1a; 开发环境&#xff1a;用于开发人员进行软件开发、测试和调试。在这个环境中…...

深度解析找不到msvcp120.dll相关问题以及解决方法

​在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“msvcp120.dll丢失”。这个错误通常会导致某些应用程序无法正常运行&#xff0c;给用户带来很大的困扰。那么&#xff0c;如何解决msvcp120.dll丢失的问题呢&#xff1f;本文将为大家介绍…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文&#xff5c;魏琳华 编&#xff5c;王一粟 一场大会&#xff0c;聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中&#xff0c;汇集了学界、创业公司和大厂等三方的热门选手&#xff0c;关于多模态的集中讨论达到了前所未有的热度。其中&#xff0c;…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...