【蓝牙系列】蓝牙5.4到底更新了什么?(1)--- PAwR

2023-05-16

【蓝牙系列】蓝牙5.4到底更新了什么(1)— PAwR

一、 背景

  蓝牙技术联盟最近发布了蓝牙5.4的核心规范,蓝牙5.4规范的主要改进之一就是实现了单个接入点与数千个终端节点进行双向无连接通信, 这一特性主要是针对电子货架标签(Electronic Shelf Label,ESL)市场。

image-20230307115020465

  电子货架标签是一种带有信息收发功能的电子版的价签显示装置,它由显示屏(墨水屏)、通信模块和应用配件组成,除了显示基本的物品信息和价格之外,还可以显示条形码或二维码,甚至还有图片。它最大也是最关键的一个特点就是“功耗低和耐用”,通常情况下可实现几个月甚至数年以上的续航 。

  蓝牙5.4规范中引入了一种新的逻辑传输“Periodic Advertising with Responses(PAwR)”,它能够支持无连接的双向应用程序数据通信。在这种技术支持下,ESL设备不需要经常性的切换接收模式,因此可以大大延长电池寿命,同时,基于PAwR的数据传输模式,保证数据传输与监听设备的相关性,从而减少能量的浪费,实现ESL设备接收数据并响应至发送器的能力。

  另外,电子货架标签配置文件规范包括一个寻址方案和一系列命令和参数,AP可以在PAwR子事件期间发送的单个数据包中传输到一个或多个ESL设备。ESL设备网络中可能有128个组,每个组都有一个数字ID,同样每个小组最大可有255台ESL设备,每台设备也都有一个数字ID。整个网络中,单个ESL的唯一地址是组ID和ESL ID的组合,因此,这就意味着基于新标准的ESL网络最多可以包含32640个电子货架标签,且每个标签都可以从单个接入点进行控制。

1. 蓝牙5.4新特性

蓝牙5.4的新特性主要有以下四个方面:

  • 支持带响应的周期性广播(PAwR)

    PAwR是一个新的BLE逻辑传输层,是一种支持无连接的、双向的、一对多的、一种低功耗拓扑技术。

  • 支持加密的广播数据(EAD)

    该特性提供了一种标准化的方法来加密广播包中的数据,加密后的广播数据只能被拥有相同密钥的设备解密。 当然广播包的加密是需要两个设备建立gatt连接之后,才会生成加密广播包的密钥。

  • LE GATT 安全级别特征

    设备现在可以使用GATT 安全级别特性来表示设备的安全模式和安全等级

  • 广播编码选择

    当发送BLE扩展广播的时候,现在可以选择使用哪种Codec编码方式来发送。

本篇文章我们主要来介绍PAwR特性,这也是蓝牙5.4最重要的一个特性。

二、 PAwR的产生背景

  蓝牙核心规范中定义了几个组成蓝牙架构的概念。这些概念有物理传输,物理通道,物理连接,逻辑连接,逻辑传输等。 蓝牙BLE支持一些无连接的通讯方式,由一个广播者和一个或多个观察者构成。 广播者发送的广播数据可以是固定的间隔也可以是不固定的间隔。

2.1 扫描介绍

  BLE有两种扫描方式:主动扫描和被动扫描。 被动扫描是接收方只到扫描广播数据包,不发送任何回复数据包。 而主动扫描,接收方接收到可扫描的广播包后,会回复一包Scan request PDU,来请求广播者发送更多的广播信息, 广播者收到后会继续广播scan response数据。

2.2 广播介绍

ble的广播模式根据支持的特性分为以下几种:

  1. 可连接的 vs 不可连接的

    ​ 可连接的广播表示扫描方收到该广播后,可能会发起连接请求,这也是我们最常见的广播包。 而不可连接的广播最常见的就是蓝牙beacon包。

  2. 可扫描的 vs 不可扫描的

    ​ 可扫描广播包表示扫描方设备扫描到该广播包后可以发送scan request,然后广播者会回复更多信息。

  3. 定向的 vs 不定向的

    ​ 定向广播指的是该广播包只会被特定设备扫描到,其他的设备会忽略该广播包。 而不定向的广播包并不指定任何一个扫描设备,也就是可以被任何设备接收和处理。

  4. 不规则的 vs 固定间隔的周期广播

    ​ 传统的ble广播使用的就是不规则的广播者式,虽然广播有固定的广播间隔参数,但是每次广播后,都会有一个10ms以内的延时,用来防止多个广播都在同样的间隔而引起的冲突。

    ​ 而固定间隔的周期广播指的是蓝牙5.0之后,引入的一个周期广播概念,该广播使用的是固定时序的广播,并且也不仅仅使用传统BLE的三个广播信道,而是使用40个BLE信道来传输广播包。

2.2.1 传统BLE广播

  传统BLE广播数据是在三个广播信道上进行轮流发送的。BLE广播有一个广播间隔的参数advInterval ,但是为了避免和其他相同广播间隔的广播设备冲突,广播中引入了一个advDelay的参数,该参数是一个0-10ms的随机值,每次广播完一次数据后,都会在广播间隔advInterval的基础上再延时advDelay, 如下图:

image-20230306151612054

  这样做确实可以避免的一些广播的冲突,但是每次广播后的随机延时,也导致观察者无法准确的知道下次广播的时间,所以观察者不得不一直扫描,导致功耗较大。 而且虽然传统BLE广播包里面可以包含一些应用数据,但是扫描端发送的scan request数据包,却不包含任何应用数据信息,也就是说广播者和扫描方的应用数据通讯是单向的。

2.2.2 扩展广播

  扩展广播也分为两种模式,一种是不规则的,也就是广播的间隔不固定的。另一种是规则广播模式。

  周期广播Periodic Advertising Broadcast (PADVB) 就是一种规则的扩展广播模式,使用了固定的广播时间调度表。

  不规则的扩展广播和周期广播PADVB都使用了3个广播信道和37和通讯信道进行发送数据。

不规则的扩展广播

  不规则的扩展广播和传统广播在某些方面是相似 的,因为不规则的扩展广播的某些类型是只在主广播信道上进行传输的。他们的不规则性也主要是由于每次广播后0 - 10ms的advDelay值导致的。不规则的扩展广播和传统广播差异在于特定的PDU类型的使用。一些PDU类型虽然在主广播信道上传输,但是PDU可能会被AuxPtr 指向次广播信道。长的数据包可以进行分包传输,然后连接起来,或者通过AuxPtr来链接。如下图所示:

image-20230306154416638

周期广播 (PADVB)

  周期广播periodic advertising (PADVB) 发送广播数据是通过一个固定的间隔和确定的时间表传输数据包,扫描设备可以发现广播者的传输时间表,然后同步自己的扫描时间, 这个操作可以通过查询AUX_ADV_IND PDU 中的SyncInfo field 字段的信息来完成, 也可以使用一个称为 Periodic Advertising Sync Transfer (PAST)的操作完成。

  PAST 指的是设备通过建立GATT连接,将周期广播同步参数值传递给观察者。传递这些信息的可能是广播者自己,也可能是一个第三方的设备,第三方设备通过扫描广播者的AUX_ADV_IND PDUs 来获取广播同步参数值,然后同步给扫描方。这种方式可以避免扫描方的持续扫描,对于功耗要求比较高的扫描设备来说比较友好。

  通过精确的同步广播者的广播时间表,扫描方可以使用最节省功耗的方式来扫描广播。

  周期广播是使用BLE 40个信道进行发送的。首先 ADV_EXT_IND PDU 是再主广播信道上传输的,里面包含了AuxPtr 字段,该字段指向AUX_ADV_IND PDU , AUX_ADV_IND PDU 是再次广播信道上传输的,这个PDU里面包含了一个SyncInfo field 字段,通过该字段的信息,观察者可以将它的扫描和周期广播的AUX_SYNC_IND PDU 进行同步。 需要说明的是,观察者只需要接收上面SyncInfo field字段包含的需要同步的 ADV_EXT_IND PDU。 一旦观察者接收到该数据,后面就可以只再固定的时间段扫描 AUX_SYNC_IND PDU 了。

  AUX_SYNC_IND PDU 是通过固定的间隔来发送的,由于观察者是不能回复PADVB 周期广播的,所以应用层的该数据通讯方向是单向的,也只支持单向的应用数据传输。

image-20230306160131002

2.2.3 传统BLE广播和扩展广播的区别

下面是BLE传统广播和扩展广播的区别

image-20230306183147754

介绍了这么多传统BLE广播和扩展广播(不规则广播和 PADVB),那它们跟本文要介绍的PAwR有什么区别和联系呢?

三、 PAwR 功能介绍

3.1 PAwR 与 PADVB的比较

相似点:

  • PAwR 和 PADVB都是一种一对多的拓扑结构,一个广播者发送数据,一个或多个观察者接收数据。
  • PAwR 和 PADVB都是一种无连接的通讯方式
  • PAwR 和 PADVB都是通过周期广播来发送数据,广播包中间没有随机延时,所以广播时间表是确定的。
  • 观察者都可以通过AUX_ADV_IND PDU 或者PAST方式来建议广播者的周期广播时间表。

不同点:

  • PADVB 只能从广播者到观察者单向传递应用数据,而PAwR可以从观察者传递应用数据到广播者,PAwR是一种双向交互的无连接通讯机制。
  • PADVB 的同步信息是包含在AUX_ADV_IND PDU 中的SyncInfo field 中,而PAwR 的同步信息是包含在AUX_ADV_IND PDU 的SyncInfo field 和 ACAD field两个字段中。
  • PADVB 是在广播event中发送广播时间表的,而 PAwR是在一系列的event和subevent中来传输的。观察者可以通过这样的同步方式,只监听特定的子时间,已节省功耗。
  • PAwR 可以在广播的过程中发送 AUX_CONNECT_REQ 到特定的设备来建立GATT连接, 而PADVB是没有这个能力的。
  • PADVB 适用与应用数据是缓慢变化的应用场景, 而PAwR是用在应用数据频繁变化的场景。
  • 在PADVB 中同一个的应用数据是发送给所有的观察者的。而PAwR 中,不同的数据可以发送给一个观察者或者多个观察者。
  • PADVB可以支持PAST 也可以不支持, 但是对于PAwR,则必须支持PAST。

3.2 PAwR 的优势

  1. **双向无连接:**PAwR 支持双向无连接的应用交互,这在之前的BLE中是做不到的。

  2. **扩展性:**与BLE GATT连接方式相比,PAwR 创建了一个更具扩展性的、一对多的、双向传输的网络拓扑结构。在BLE GATT中,一个中央设备连接的从设备的数量是很有限的,而PAwR可以实现与数千个节点进行双向通讯。

  3. 低功耗: PAwR中一个广播者和一个观察者只占用一个subevent 事件, 所以观察者可以在广播者广播的时候,只需要只扫描很小一段时间。 subevent 子事件同步过程涉及到应用逻辑,所以接收到的数据包通常会包含与观察者相关的数据。这种低功耗的特性使观察者可以仅仅使用一节纽扣电池就可以让设备工作几年时间。

  4. 灵活的拓扑结构和并发接收: PAwR使用了一个灵活的拓扑结构,当一个广播者广播数据数据包时,数据包可以被一个观察者接收处理,也可以被某几个观察者处理,也可以被所有的观察者处理,这是由观察者应用层需要同步的数据逻辑决定的。

  5. 应用: PAwR 非常适合那些由一个中央设备和大规模的其他设备,根据应用场景的不同,通讯的数据可能是控制命令、传感数据、或者其他的消息。其中一个很重要的应用场景就是电子货架标签(ESL) , 还专门有一个ESL 的Profile, 规定了如何是用PAwR来进行数据的传输。 PAwR并不适合对实时性要求比较高的场景,PAwR是通过一个一个的时间槽,然后周期性的来发送应用数据包,观察者的数量是可以配置的,随着配置的观察者数量增多,广播数据需要的时间也会响应增加。因此,在向多个设备发送消息时,有时会出现明显的时间延时。根据配置的不同,延时时间从几毫秒到几十秒的时间不等。

    跟PAwR 跟蓝牙Mesh相比,蓝牙Mesh也是使用特定的命令在网络内来发送和接收数据。不同的是,蓝牙Mesh提供的是一个实时响应的系统,发送的消息需要立即得到响应,这就导致设备需要一直不间断的进行扫描,这对功耗消耗是非常大的。而PAwR 只需要在特定的时间段进行扫描,大大降低了设备的功耗。

3.3 PAwR技术实现

理解 PAwR 如何划分和使用时间是理解这种逻辑传输的关键。

3.3.1 事件、 子事件、响应槽(Slot)概念介绍

与其他广播模式一样,PAwR广播活动发生在事件中,在 PAwR 模式下,这些事件被称为PAwR事件。这些事件以固定的时间间隔发生,在调度中没有随机延时的扰动,每个周期广播中产生一个事件。每个 PAwR 事件都包含几个子事件,并且在子事件期间传输广播数据包。主机配置每个事件的子事件数最多为 128。子事件在每个周期性广播子事件间隔开始的。Host使用HCI 命令 HCI_LE_Set_Periodic_Advertising_Parameters 来 配置每个事件的子事件数和定期广播子事件的间隔 。如下图所示:

image-20230307104532802

  在每个子事件中,Broadcaster 传输一个数据包,该数据包通常包含一个 AUX_SYNC_SUBEVENT_IND PDU 或者包含一个 AUX_CONNECT_REQ PDU。经过一段固定延时后,会在同一时间段内保留一系列时隙 用于接收来自观察者设备的响应的子事件。对 AUX_SYNC_SUBEVENT_IND PDU 的响应在 AUX_SYNC_SUBEVENT_RSP PDU 中发送。 Host 通过 HCI 命令 HCI_LE_Set_Periodic_Advertising_Parameters 来配置需要的回复间隙 数量。

image-20230307104723844

3.3.2 通道选择

  通道选择是使用频道选择算法#2 完成的,并且发生在每个周期性广播子事件中。对子事件中传输的 PDU 的响应使用相同的通道 这包括响应 AUX_SYNC_SUBEVENT_IND PDU 发送的 AUX_SYNC_SUBEVENT_RSP PDU 和响应AUX_CONNECT_REQ PDU 发送的 AUX_CONNECT_RSP PDU 。

3.3.3 同步

  同步过程为观察者设备提供了有效扫描和接收广播设备传输的相关数据包所需的信息。就 PAwR 而言,这涉及三个方⾯:

  1. 观察者需要知道PAwR广播事件的发生频率 以及下一次事件何时发生。这些信息在定期广播间隔参数和syncPacketWindowOffset 的计算值中提供 。
  2. 观察者需要知道子事件的一些信息,包括子事件发生的频率和每个PAwR可容纳多少个子事件,以及与每个子事件内为响应传输时隙有关的某些细节。该信息包含在称为Subevent_Interval、Num_Subevents、 Response_Slot_Delay、 Response_Slot_Spacing和 Num_Response_Slots 的参数中 。
  3. 最后,观察者需要知道它应该扫描哪个子事件号,它应该使用哪个特定的响应时隙,以及在传输的响应数
    据包中使用的访问地址。

在获得了(1)中描述的事件时序信息和(2)中的子事件信息后,Observer 对 PAwR 广播列车的事件和子事件的时序参数和结构有了完整的描述。但只有当它具有 (3) 中的信息时才可以进行扫描,以便它只接收那些预期包含相关数据的数据包,并可以传输响应数据包。

3.3.3.1 周期广播同步信息扫描

PAwR和PADVB都使用类似的过程通过扫描获取周期性广播同步信息 。

  对于 PAwR 和 PADVB,观察者扫描在次广播通道上传输的 AUX_ADV_IND 数据包。这些 PDU 由在主要信道上传输的 ADV_EXT_IND PDU 中的 AuxPtr 字段中的信道索引、偏移和 PHY 信息指向。

  AUX_ADV_IND 包括 SyncInfo 字段,该字段包含周期性广播间隔值和一些数据项,从中计算
syncPacketWindowOffset 变量。获得这两个值后,观察者可以计算何时会发生带有响应事件的周期性广播。

  PAwR 还需要有关子事件和响应时隙的信息,然后才能完成同步过程。该信息可在同一AUX_ADV_IND PDU 中找到,从中获得周期性广播间隔,但在周期性广播响应定时信息的新 AD 类型中。新的 AD 类型在 AUX_ADV_IND PDU 的附加控制器广播信息 (ACAD) 字段中传输 。

image-20230307105418538

3.3.3.2 周期广播同步传输(PAST)

  使用 PAST 过程时,有时通过GATT连接传递同步参数的设备将首先通过其他设备进行扫描来获取它。而在 PAwR 的情况下,对PAST 的支持是强制性的,因此 PAwR 广播者可以通过 LE ACL 连接将所需的同步数据传递给观察者。如果采用这种方法,则两边设备都不需要扫描 AUX_ADV_IND PDU 。

上表显示的相同数据项在 LL_PERIODIC_SYNC_WR_IND 的新 PDU 类型中通过 BLE GATT连接来传递。

3.3.3.3 子事件同步和响应槽分配

  子事件同步涉及向观察者设备指示它应该执行扫描的子事件。一个或多个观察者设备可以同步到同一个子事件。一个单独的观察者可以同步接收一个或多个子事件。 此外,对于能够发送响应 PDU 的观察者,它必须有一些基础来确定使用哪个子事件响应槽。 当然,这些事情都是由应用层来决定的。

image-20230307110002472

  如上图所示,PAwR 的主要优势包括应用程序数据通信是双向的,在拓扑选择和可用的接收器并发方⾯提供了很大的灵活性,每个广播者可以与之通信的设备数量可以达到数千个。

四、 电子货架标签和 PAwR

4.1 ESL Profile介绍

  电子货架标签 (ESL) 配置文件定义了蓝牙 LE 在电子货架标签的控制和通信方⾯的标准化使用。

  ESL Profile 同时使用 PAwR 和GATT来满足其完整的功能要求。例如图像通过BLE GATT 连接写入设备。但是大多数命令和响应都是使用 PAwR PDU 传输的 ESL 消息。

  ESL 使用由 8 位 ESL ID 和 7 位组 ID 组成的设备寻址方案。 ESL ID 在由组 ID 标识的设备组中是唯一的。因此,ESL 设备网络最多可包含 128 个组,每个组最多包含 255 个属于该组成员的独特 ESL 设备。一个网络中总共可能有 32,640 个 ESL 设备。

  ESL 配置文件处理子事件同步和响应槽分配如下:

  • PAwR 广播器,在ESL 配置文件规范中称为接入点(AP),通过在LE GATT连接上写入各种GATT 特性来配置电子货架标签设备。写入的数据包括由 ESL ID 和 Group ID 组成的 ESL 地址的分配。 Group是一个 ESL profile 概念,但它的值也用来表示 ESL 设备应该扫描的子事件的编号。

  • 响应槽分配动态。 ESL 设备接收一个或多个阵列来自 PAwR AUX_SYNC_SUBEVENT_IND PDU 中 AP 的命令。请求数据包中的所有命令都指向相同的 ESL Group_ID。但是每个都使用其 ESL_ID5 寻址到组中的特定 ESL。命令在数组中的索引,从第一个命令的 1 开始计算,决定了要使用的响应槽。

4.2 ESL 和 1:1 设备通信

  下图显示了当 AP 发出针对单个电子货架标签的命令时发生的 PDU 传输。该图说明了 PAwR 如何充当配置文件定义的 ESL 命令和响应的传输。

image-20230307111249527

  ESL 命令所针对的货架标签是 ESL 组 1 的成员。这意味着它与 PAwR 子事件 #1 同步。因此,AP 制定了 ESL 有效载荷,它可以包括一个或多个命令的数组,每个命令都寻址到同一组内的特定 ESL ID,并在 PAwR 子事件 #1 期间将其作为 PAwR AUX_SYNC_SUBEVENT_IND PDU 的有效载荷传输。

  发送的数据包同时被组 1 成员的所有货架标签接收,因为它们都已同步并在子事件 #1 期间侦听。此 PDU 中的单个命令是针对 ESL ID #n 的,因此所有接收到该消息的货架标签都会丢弃它,但地址为 ESL ID #n 和组 ID #1 的设备除外。该设备根据 ESL 配置文件规范处理命令,然后在响应时隙 #0 期间在 AUX_SYNC_SUBEVENT_RSP PDU 中制定并传输响应。使用 #0 响应槽是因为响应的命令是请求中命令数组的第一个也是唯一一个成员 。

4.3 ESL 和 1:m 设备通信

  下图 显示了当 AP 向多个货架标签发出命令时发生的 PDU 传输,每个货架标签都是 ESL 组 #1 的成员。接下来是发送寻址到属于ESL 组 #2 的单个设备的单个命令。

image-20230307111457581

  第一个 ESL 请求包含三个命令。该请求针对属于 ESL 组 #0 的三个货架标签,因此它被格式化并设置为
AUX_SYNC_SUBEVENT_IND PDU 的有效载荷,并在 PAwR 子事件 #0 中传输。

  所有属于组 #0 成员的 ESL 货架标签同时接收 PDU,因为它们都在 PAwR 子事件 #0 上同步。 ESL 命令数组包含针对组中 ID #0、#1 和 #n 的货架标签的命令。这三个设备处理各自的命令。 ID #0 的设备在响应槽 0 中使用AUX_SYNC_SUBEVENT_RSP PDU 进行响应。ID #1 的设备在响应槽 1 中使用 AUX_SYNC_SUBEVENT_RSP PDU 进行响
应。

最后,具有 ID #n 的设备在响应槽 #2 中使用 AUX_SYNC_SUBEVENT_RSP PDU 进行响应,因为响应的命令是 ESL 命令数组中的第三个。其他具有不同 ID 的设备将忽略该请求。

  在 PAwR 子事件 #1 中,传输的 AUX_SYNC_SUBEVENT_IND PDU 包含寻址到具有 ESL_ID=n 的单个 ESL的命令。作为 ESL 组#1 成员的所有 ESL 在 PAwR 子事件#1 上同步,因此接收此 PDU。 ESL_ID=n 的 ESL 处理有效载荷中的唯一命令并在 PAwR 响应槽 #0 中响应。

  AP 没有命令发送到其他组中的其他 ESL,因此在剩余的子事件中,传输具有空负载的 AUX_SYNC_SUBEVENT_IND PDU 。

五 总结

  通过蓝牙5.4的 PAwR功能,可以实现设备之间的无连接双向通讯, PAwR功能应用在电子货架标签领域,不仅可以实现电子货架标签和蓝牙网关的双向通讯,并且可以极大降低标签的功耗。

  但是仅仅有PAwR功能还是不够的,如何保证电子货架标签和蓝牙网关的通讯链路安全性? 如何动态的调节双方的RF射频 Codec方式,这就需要用到蓝牙5.4的其他几个特性。下篇文章将会继续介绍蓝牙5.4剩下的特性,希望大家收藏、关注。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【蓝牙系列】蓝牙5.4到底更新了什么?(1)--- PAwR 的相关文章

  • Pix4飞控硬件平台框架(一)

    硬件平台简介 本文只是为了让大家简单入门为主 xff0c 所以我选择的硬件学习平台是Pixhawk系列的mRoPixhawk xff0c 兼容原始版本Pixhawk1 xff0c 基于Pixhawk project FMUv3开源硬件设计
  • Pix4飞控常见问题解决方法(二)

    一 无法解锁 xff08 黄灯闪烁 xff09 无法解锁的原因会有多种 xff0c 请按照如下步骤进行检查 xff1a 1 初始设置是否全部完成 a 机架类型选择是否正确 xff0c 或者你根本就没有选择 xff1f 注意 xff0c 新版
  • 基于libuvc的相机配置说明

    很多相机支持uvc 1 的传输格式 ros官网自带的libuvc xff0c 支持uvc格式的视频流 xff0c 本文主要对这个链接中的一些细节 xff0c 进行补充说明 step 1 插入usb step 2 获取基本信息 查找camer
  • Ehcache依赖版本问题:Another CacheManager with same name 'es' already exists in the same VM.

    最近在写一个shiro 的demo用到Ehcache缓存配置 结果在启动项目的时候出错 span style font size 14px Caused by net sf ehcache CacheException Another Ca
  • ubuntu 创建新用户并添加到docker组

    useradd myuser passwd myuser first create the directory mkdir p home myuser usermod s bin bash d home myuser myuser cp r
  • SM2 签名前要进行的预处理操作

    一般情况下 xff0c 计算数字签名时应执行以下操作 xff1a 1 计算原始数据的 Hash 值 xff1b 2 将 Hash 值作为输入 xff0c 计算签名函数的输出 并不是对原始数据直接签名 xff0c 而是对 Hash 值签名 验
  • VR行业的发展现状和前景

    5G技术的应用推广 xff0c 加速推动虚拟现实不断发展和完善 xff0c VR产业迅速在各个领域和行业都得到广泛应用 xff0c 最好直观的感受就是知觉体验得到了良好的增强作用 本文的主要内容是简单概括VR技术的发展现状和发展前景 一 V
  • Intel真情告白:我的眼里只有你 –UP Squared Board

    近期 xff0c 物联网领域最大的喜讯莫过于研扬科技携手Intel 共同推出一款 UP SQUARED GROVE 物联网开发套件 对于这次喜结良缘 xff0c Intel 官网也是不加修饰的大方昭告天下 xff1a 我的眼里只有你 xff
  • 【问题与方法】联想拯救者双系统重启卡死机解决方案

    码字不易 xff0c 如果各位看官感觉该文章对你有所帮助 xff0c 麻烦点个关注 xff0c 如果有任何问题 xff0c 请留言交流 如需转载 xff0c 请注明出处 xff0c 谢谢 文章链接 xff1a 问题与方法 联想拯救者双系统重
  • 【深度学习】训练集、测试集和验证集

    码字不易 xff0c 如果各位看官感觉该文章对你有所帮助 xff0c 麻烦点个关注 xff0c 如果有任何问题 xff0c 请留言交流 如需转载 xff0c 请注明出处 xff0c 谢谢 文章链接 xff1a https blog csdn
  • 【深度学习】ubuntu系统指定gcc版本并调整优先级

    sudo apt install build essential gcc version xff08 查看gcc版本 xff09 可以看到我的gcc版本是4 8 5 安装最新版gcc9 sudo apt install software p
  • 【深度学习】Ubuntu增加Swap交换空间大小

    前言 xff1a 做Ubuntu系统时 xff0c 选择了默认空间分配方案 xff0c Swap空间仅2G xff0c 而你的内存有16G xff0c 分给Swap空间至少为内存的1倍 xff0c 最好是内存值的2倍 xff0c 系统相当卡
  • 【论文阅读】Anchor3DLane: Learning to Regress 3D Anchors for Monocular 3D LaneDetection

    Anchor3DLane 针对单目的3D车道线检测去学习回归3D锚 摘要 xff1a 单目的3D车道线检测是一个非常具有挑战性的问题 xff0c 因为他缺少深度的信息 xff0c 3D车道线检测一个非常流行的方法是将前视图转换成鸟瞰图 xf
  • 【深度学习】训练模型结果同时显示,模型结果对比

    码字不易 xff0c 如果各位看官感觉该文章对你有所帮助 xff0c 麻烦点个关注 xff0c 如果有任何问题 xff0c 请留言交流 如需转载 xff0c 请注明出处 xff0c 谢谢 文章链接 xff1a 深度学习 训练模型结果同时显示
  • 【问题与方法】如何使用vscode配置远程git仓库

    码字不易 xff0c 如果各位看官感觉该文章对你有所帮助 xff0c 麻烦点个关注 xff0c 如果有任何问题 xff0c 请留言交流 如需转载 xff0c 请注明出处 xff0c 谢谢 配置git xff0c 看我这一篇其实就够了 问题与
  • 【车道线算法】GANet-车道线检测环境配置一文通关

    目录 GANet配置全纪录 下载代码 conda环境部署 安装torch和cudatoolkit 安装其他包 编译 总结 GANet配置全纪录 下载代码 GitHub Wolfwjs GANet A Keypoint based Globa
  • 【雷达】如何将三维点云映射到二维平面

    最近在做基于雷达点云的交通标识牌识别时 xff0c 需要按照HAD格式进行输出 xff0c 由于交通标识牌不一定会与坐标轴垂直 xff0c 那么如何找到矩形标识牌的四个顶点 xff0c 是待解决的问题 由于标识牌一定是平面的 xff0c 三
  • ceres 拟合曲线

    假设有一条满足以下方程的曲线 xff1a 其中a b c为曲线的参数 xff0c w为高斯噪声 这是一个非线性模型 假设我们有N个关于x y的观测数据点 xff0c 想根据这些数据点求出曲线的参数 那么 xff0c 可以求解下面的最小二乘问
  • 独家!了不起的UP系列产品,不一样的开发板—UP Board(一)

    AAEON自2016年推出第一代UP board问世以来 xff0c 其信用卡大小的苗条小身材 xff08 世界首创Intel平台信用卡大小开发板 xff09 xff0c 配备上Intel Atom x5 z8350 处理器 xff0c 兼
  • 追求技术之路 - 那些陪伴我的书籍

    如今已经在广州一家嵌入式公司实习 xff0c 分享大学里度过的一些书籍 xff0c 有些还没读完 xff0c 个人比较喜欢经典书籍 xff0c 研读起来就有种奇妙的感觉 xff0c 比起人与人之间的复杂的关系 xff0c 书籍带给我的感觉很

随机推荐

  • 编程之美 -- 中国象棋将帅问题

    下过中国象棋的朋友都知道 xff0c 双方的 将 和 帅 相隔遥远 xff0c 并且它们不能照面 在象棋残局中 xff0c 许多高手能利用这一规则走出精妙的杀招 假设棋盘上只有 将 和 帅 二子 xff08 为了下面叙述方便 xff0c 我
  • C++单元测试工具 -- CppUnit

    CppUnit 作为C 43 43 语言的一款测试工具 xff0c 其实也是一个开源项目 xff0c 与JUnit一样 xff0c 用来方便开发人员进行单元测试的工具 项目地址 xff1a http sourceforge net apps
  • 拒绝游戏!发愤图强!

    立帖为证 xff01 xff01 xff01
  • C++ STL — 第6章 STL容器(二)deque

    C 43 43 STL容器deque和vector很类似 xff0c 也是采用动态数组来管理元素 使用deque之前需包含头文件 xff1a include lt deque gt 它是定义在命名空间std内的一个class templat
  • C++ STL — 第6章 STL容器(三)list

    一 list基础 List使用一个双向链表来管理元素 图一显示了list的结构 图一 list的结构 任何型别只要具备赋值和可拷贝两种性质 xff0c 就可以作为list的元素 二 list的功能 list的内部结构和vector和dequ
  • STL list remove和sort函数

    include lt iostream gt include lt list gt include lt iterator gt using namespace std bool cmp int a int b return a gt b
  • 排序 -- 简单选择排序

    选择排序 思想 xff1a 每一趟 n i 43 1 xff08 i 61 1 2 3 n 1 xff09 个记录中选择关键字最小的记录作为有序序列的第i个记录 简单选择排序 xff1a 通过n i次关键字间的比较 xff0c 从n i 4
  • HDOJ 1106 排序

    题目地址 xff1a http acm hdu edu cn showproblem php pid 61 1106 Problem xff1a 输入一行数字 xff0c 如果我们把这行数字中的 5 都看成空格 xff0c 那么就得到一行用
  • Jetson Xavier、Jetson TX2、 1080(Ti)、2080显卡运行深度学习模型性能对比(英伟达开发平台VS常用显卡)

    前言 xff1a 英伟达的Jetson TX2使得很多人认为深度学习模型终于可以像嵌入式开发平台那样做到小型化了 xff0c 不用再跑在高配计算机或者服务器上面了 xff0c 但是实际上Jetson TX2开发板的性能和深度学习常用到的10
  • 独家!了不起的UP系列产品,不一样的开发板 — UP Squared Board(二)

    UP 系列家族的成员 xff0c 经过团队经年累月的精心研发 xff0c 产品已不断丰富起来 先后开发出了第二代产品UP Squared 与第一代产品UP Board相比 xff0c 拥有 高性能低功耗的 UP Squared 似乎更令人兴
  • STM32连接--OneNET,阿里云(MQTT协议)详细教程

    x1f495 对于物联网工程 xff0c 不可或缺的必然是连接上云 xff0c 今天本人总结了上云经验 xff0c 希望对大家起到帮助哦 有用的话记得点赞收藏哦 关于如何连接OneNET OneNET https open iot 1008
  • HTTP Digest接入方式鉴权认证流程

    HTTP Digest接入方式鉴权认证流程 一 摘要认证原理 摘要认证与基础认证的工作原理很相似 xff0c 用户先发出一个没有认证证书的请求 xff0c Web服务器回复一个带有WWW Authenticate头的响应 xff0c 指明访
  • 6.2随笔

    今天打牛客 xff0c 用python写了一题 xff0c 结果发现用空格隔开的两个数不知道怎么输入 代码 xff1a n span class token punctuation span m span class token opera
  • 蓝牙Mesh简介

    蓝牙mesh简介 蓝牙Mesh的基本概念 蓝牙Mesh是2017年7月蓝牙技术联盟 xff08 Bluetooth SIG xff09 正式推出的蓝牙设备组网标准 我们知道蓝牙ble设备可以与其他设备建立GATT连接 xff0c 然后进行
  • 蓝牙Mesh的基本概念

    蓝牙mesh简介 蓝牙Mesh的基本概念 蓝牙Mesh是基于ble广播进行消息传递的一种蓝牙组网通讯网络 xff0c 是一种采用网络洪泛的方式无中心 无路由的对等网络 以实现蓝牙设备与蓝牙设备之间的多对多通讯 xff0c 使蓝牙在物联网智能
  • JLink Commander调试方法

    JLink Commander调试方法 1 背景 目前开发中常用的调试手段主要有串口 IO口输出作为调试方式 目前串口的限制较多 xff0c 有些硬件不太方便接串口或者一些实时的数据 xff0c 当时没有接串口则无法实时获取调试信息 IO调
  • 物联网安全系列 - 非对称加密算法 ECDH

    非对称加密算法 ECDH 背景 之前的章节讲到了对称加密算法AES xff0c 发送方和接收方需要使用相同的密钥进行通讯 xff0c 但是发送方怎么将密钥安全的发送给接收方 xff1f 这是一个问题 密钥分配问题 对称加密算法中 xff0c
  • 【开源】一款PyQT+Pyserial开发的串口调试工具

    开源 PyQT 43 Pyserial开发的串口调试工具 串口调试工具是我们做嵌入式开发常用的工具 xff0c 市面上已经有很多串口调试工具了 xff0c 博主写这款串口调试工具一方面是为了学习Python PyQT Pyserial 相关
  • 【Matter】解密Matter协议(一)--- 什么是Matter协议?

    1 什么是Matter协议 xff1f 目前的智能家居行业使用解决方案众多 xff0c 相互之间隔离严重 xff0c 有WiFi 蓝牙 ZigBee 蜂窝或者有线等等不同通讯协议的设备 不仅不同协议之间的设备不能互通 xff0c 而且连相同
  • 【蓝牙系列】蓝牙5.4到底更新了什么?(1)--- PAwR

    蓝牙系列 蓝牙5 4到底更新了什么 xff08 1 xff09 PAwR 一 背景 蓝牙技术联盟最近发布了蓝牙5 4的核心规范 xff0c 蓝牙5 4规范的主要改进之一就是实现了单个接入点与数千个终端节点进行双向无连接通信 xff0c 这一