

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 创建物 AWS 联网 FleetWise 活动
<a name="create-campaign"></a>

**重要**  
目前对某些 AWS 物联网 FleetWise 功能的访问受到限制。有关更多信息，请参阅 [AWS AWS 物联网中的区域和功能可用性 FleetWise](fleetwise-regions.md)。

您可以使用 AWS 物联网 FleetWise 控制台或 API 创建活动来收集车辆数据。

**重要**  
要使活动发挥作用，必须满足以下条件：  
您的车辆中正在运行边缘代理软件。有关如何开发、安装和使用边缘代理软件的更多信息，请执行以下操作：  
打开[AWS 物联网 FleetWise 控制台](https://console.aws.amazon.com/iotfleetwise)。
在服务主页的** AWS 物联网入门 FleetWise**部分，选择**探索 Edge Agent**。
您已设置 AWS IoT Core 好配置您的车辆。有关更多信息，请参阅 [配置 AWS 物联网 FleetWise 车辆](provision-vehicles.md)。

**Topics**
+ [创建活动（控制台）](#create-campaign-console)
+ [创建活动 (AWS CLI)](#create-campaign-cli)
+ [AWS 物联网 FleetWise 活动的逻辑表达式](logical-expression.md)

## 创建活动（控制台）
<a name="create-campaign-console"></a>

使用 AWS 物联网 FleetWise 控制台创建活动以选择、收集车辆数据并将其传输到云端。

**创建市场活动**

1. <a name="fleetwise-open-console"></a>打开[AWS 物联网 FleetWise 控制台](https://console.aws.amazon.com/iotfleetwise)。

1. <a name="choose-campaigns"></a>在导航窗格中，选择**活动**。

1. 在**活动**页面上，选择**创建活动**系列，然后完成以下主题中的步骤。

**Topics**
+ [步骤 1：配置活动](#configure-campaign-console)
+ [第 2 步：指定存储和上传条件](#specify-storage-upload-conditions)
+ [步骤 3：配置数据目标](#configure-data-collection-scheme-console)
+ [第 4 步：添加车辆](#add-attributes-console)
+ [第 5 步：审核并创建](#review-and-create-campaign-console)
+ [第 6 步：部署活动](#update-campaign-console)

**重要**  
在创建活动之前，您必须拥有信号目录和车辆。有关更多信息，请参阅[管理 AWS 物联网 FleetWise 信号目录](signal-catalogs.md)和[管理 AWS 物联网 FleetWise 车辆](vehicles.md)。
创建活动后，必须批准该活动。有关更多信息，请参阅 [更新物 AWS 联网 FleetWise 活动](update-campaign-cli.md)。

### 步骤 1：配置活动
<a name="configure-campaign-console"></a>

在**一般信息**部分，执行以下操作：

1. 输入活动的名称。

1. （可选）输入描述。

配置活动的数据收集方案。数据收集方案向边缘代理软件提供有关要收集哪些数据，以及何时收集数据的指令。在 AWS 物联网 FleetWise 控制台中，您可以通过以下方式配置数据收集方案：
+ 手动定义数据收集方案。
+ 上传文件以自动定义数据收集方案。

在**配置选项**中，选择以下选项之一：
+ 要手动指定数据收集方案的类型并定义用于自定义该方案的选项，请选择**定义数据收集方案**。

#### 手动定义数据收集方案
<a name="manually-define-scheme-console"></a>

  手动指定数据收集方案的类型，并定义用于自定义该方案的选项。

  1. 在**数据收集方案详细信息**部分，选择您希望此活动使用的数据收集方案的类型。要使用逻辑表达式识别要收集的车辆数据，请选择**基于条件**。要使用特定的时间段来决定收集车辆数据的频率，请选择**基于时间**。

  1. 定义活动收集数据的持续时间。
**注意**  
默认情况下，已批准的活动会立即激活，并且没有设定的结束时间。为避免额外费用，您必须指定时间范围。

  1. 如果您指定了基于条件的数据收集方案，则必须定义逻辑表达式来识别要收集的数据。 AWS 物联网 FleetWise 使用逻辑表达式来识别要为基于条件的方案收集哪些数据。该表达式必须将信号的完全限定名称指定为变量、比较运算符和比较值。

     例如，如果您指定`$variable.`myVehicle.InVehicleTemperature` > 50.0`表达式， AWS IoT FleetWise 会收集大于 50.0 的温度值。有关如何编写表达式的说明，请参阅[AWS 物联网 FleetWise 活动的逻辑表达式](logical-expression.md)。

     输入用于识别要收集哪些数据的逻辑表达式。

  1. （可选）指定条件表达式的语言版本。默认值是 1。

  1. （可选）指定最小触发间隔，即两个数据收集事件之间的最小持续时间。例如，如果信号经常变动，则您可能要以较低速率收集数据。

  1. 指定边缘代理软件收集数据的**触发模式**条件。默认情况下， AWS 物联网边缘代理 FleetWise 软件**始终**在满足条件时收集数据。或者，它只在第一次满足条件时收集数据，即**首次触发时**。

  1. 如果您指定了基于时间的数据收集方案，则必须指定一个介于 10000 - 60000 毫秒之间的**时间段**。边缘代理软件使用该时间段来决定收集数据的频率。

  1. （可选）编辑方案的**高级方案选项**。

     1. 为了节省无线带宽并减少网络流量，您可以指定 **SNAPPY** 来压缩数据。

     1. （可选）要定义数据收集事件发生后继续收集数据的时间（以毫秒为单位），您可以指定**触发后收集持续时间**。

     1. （可选）要指明活动的优先级，请指定活动**优先级**。优先级数字较小的活动将首先部署，并被认为具有更高的优先级。

     1. 在车辆未连接到云端时，边缘代理软件会临时将数据存储在本地。重新建立连接后，存储在本地的数据将自动传输到云端。指定是否希望边缘代理软件在连接中断期间在**本地存储数据**。

     1. （可选）要为信号提供更多信息，请将最多五个属性添加为**额外数据维度**。
+ 要上传文件以定义数据收集方案，请选择**从本地设备上传.json 文件**。 AWS IoT FleetWise 会自动定义您可以在文件中定义哪些选项。您可以查看和更新所选的选项。

#### 导入文件以定义数据收集方案
<a name="import-file-scheme-console"></a>

  上传包含数据收集方案详细信息的 .json 文件。

  1. 要导入有关数据收集方案的信息，请选择**选择文件**。有关所需文件格式的更多信息，请参阅 [CreateCampaign](https://docs.aws.amazon.com//iot-fleetwise/latest/APIReference/API_CreateCampaign.html#API_CreateCampaign)API 文档。
**注意**  
AWS 物联网 FleetWise 目前支持.json 文件格式扩展名。

  1.  AWS IoT FleetWise 会根据您的文件中的信息自动定义数据收集方案。查看 AWS IoT 为您 FleetWise 选择的选项。如果需要，您可以更新选项。

### 第 2 步：指定存储和上传条件
<a name="specify-storage-upload-conditions"></a>

要选择当车辆未连接到云端时，Edge Agent 软件是否将数据临时存储在本地，请指定后台处理模式。
+ 在**数据后台处理模式下**，选择以下选项之一：
  + **未存储** — 当车辆离线时，Edge Agent 软件会收集数据，但不会在本地临时存储数据。当车辆重新连接时，Edge Agent 软件会将数据传输到云端。
  + **存储到磁盘** — 当车辆离线时，Edge Agent 软件会在本地收集和临时存储数据。收集的数据临时存储在 Edge Agent 配置文件 “持久性” 部分定义的位置。当车辆重新连接时，Edge Agent 会将数据传输到云端。
  + **使用分区存储到磁盘** — 车辆始终将边缘上的数据临时存储在您指定的数据分区中。您可以选择何时将存储的数据转发到云端。

    1. （可选）输入分区 ID 以指定一组特定的数据。

    1. 输入文件夹名称作为存储数据的位置。存储位置的绝对路径是`{persistency_path} / {vehicle_name} / {campaign_name} / {storage_location}`。

    1. 输入存储在分区中的数据的最大存储大小。当分区达到最大大小时，较新的数据会覆盖较旧的数据。

    1. 输入此分区中的数据在磁盘上保存的最短时间。

    1. （可选）输入分区的上传条件。

#### 指定信号
<a name="specify-signals-console"></a>

在活动期间，您可以指定要从中收集数据的信号。

**指定要从中收集数据的信号**

1. 选择**信号名称**。

1. （可选）在 “**最大样本数**” 中，输入 Edge Agent 软件在活动期间收集并传输到云端的最大数据样本数。

1. （可选）在**最小采样间隔**中，输入两个数据样本收集事件之间的最小持续时间（以毫秒为单位）。如果信号经常变动，则您可能要使用此参数以较低速率收集数据。

1. 要添加其他信号，请选择**添加更多信号**。您最多可以添加 999 个信号。

1. 选择**下一步**。

### 步骤 3：配置数据目标
<a name="configure-data-collection-scheme-console"></a>

**注意**  
如果活动包含视觉系统数据信号，则只能将车辆数据存储在 Amazon S3 中。你不能将其存储在 Timestream 中，也不能将其发送到 MQTT 主题。  
视觉系统数据目前为预览版，可能会发生变化。  
Amazon Timestream 不在亚太地区（孟买）区域推出。

选择您要发送或存储活动收集的数据的目的地。您可以将车辆数据发送到 MQTT 主题，也可以将其存储在 Amazon S3 或 Amazon Timestream 中。

在**目标设置**中，执行以下操作：
+ 从下拉列表中选择 Amazon S3、Amazon Timestream 或 MQTT 主题。

#### Amazon S3
<a name="S3-destination"></a>

**重要**  
只有当 AWS IoT FleetWise 有权写入 S3 存储桶时，您才能将数据传输到 S3。有关授予访问权限的更多信息，请参阅[使用 AWS IoT 控制访问权限 FleetWise](https://docs.aws.amazon.com/iot-fleetwise/latest/developerguide/controlling-access.html)。

要在 S3 存储桶中存储车辆数据，请选择 **Amazon S3**。S3 是一种对象存储服务，可将数据以对象形式存储在存储桶中。有关更多信息，请参阅《[亚马逊*简单存储服务用户指南》中的创建、配置和使用 Amazon S3 存储*桶](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-buckets-s3.html)。

S3 优化了数据存储成本，并提供了其他车辆数据使用机制，例如数据湖、集中式数据存储、数据处理管道和分析。您可以使用 S3 存储数据以进行批处理和分析。例如，您可以为机器学习 (ML) 模型创建硬刹车事件报告。传入的车辆数据在交付前会缓冲 10 分钟。

在 **S3 目标设置**中，执行以下操作：

1. 对于 **S3 存储桶**，请选择 AWS IoT FleetWise 有权访问的存储桶。

1. （可选）输入可用于整理 S3 存储桶中存储的数据的自定义前缀。

1. 选择输出格式，即保存在 S3 存储桶中的格式文件。

1. 选择是否要将存储在 S3 存储桶中的数据压缩为 .gzip 文件。建议压缩数据，因为这样可以最大限度降低存储成本。

1. 您在 **S3 目标设置**中选择的选项会更改**示例 S3 对象 URI**。这是将哪些文件保存在 S3 中的示例。

#### Amazon Timestream
<a name="Timestream-destination"></a>

**重要**  
只有当 AWS 物联网 FleetWise 有权将数据写入 Timestream 时，您才能将数据传输到表。有关授予访问权限的更多信息，请参阅[使用 AWS IoT 控制访问权限 FleetWise](https://docs.aws.amazon.com/iot-fleetwise/latest/developerguide/controlling-access.html)。  
Amazon Timestream 不在亚太地区（孟买）区域推出。

要将车辆数据存储在 Timestream 表中，请选择 **Amazon Timestream**。您可以使用 Timestream 查询车辆数据，以便识别趋势和模式。例如，您可以使用 Timestream 来创建车辆燃油水平警报。传入的车辆数据将近乎实时地传输到 Timestream。有关更多信息，请参阅[什么是亚马逊 Time](https://docs.aws.amazon.com/timestream/latest/developerguide/what-is-timestream.html) stream？ 在《*亚马逊 Timestream 开发者指南*》中。

在 **Timestream 表设置**中，执行以下操作：

1. 对于 **Timestream 数据库名称**，请从下拉列表中选择您的 Timestream 数据库的名称。

1. 对于 **Timestream 表名称**，请从下拉列表中选择您的 Timestream 表的名称。

在 **Timestream 的服务访问权限**中，执行以下操作：
+ 从下拉列表选择 IAM 角色。

#### MQTT 主题
<a name="MQTT-destination"></a>

**重要**  
只有当 IoT FleetWise 拥有主题权限时，您才能将数据路由到 MQT AWS T AWS IoT 主题。有关授予访问权限的更多信息，请参阅[使用 AWS IoT 控制访问权限 FleetWise](https://docs.aws.amazon.com/iot-fleetwise/latest/developerguide/controlling-access.html)。

要向 MQTT 主题发送车辆数据，请选择 **MQTT** 主题。

由 MQTT 消息发送的车辆数据以近乎实时的方式传送，允许您使用规则采取行动，或将数据路由到其他目的地。有关使用 MQTT 的更多信息，请参阅《*AWS IoT Core 开发人员指南*》 AWS IoT中的[设备通信协议](https://docs.aws.amazon.com/iot/latest/developerguide/protocols.html)和[规则](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html)。

1. 在 **MQTT 主题**下，输入**主题名称**。

1. 在 **MQTT 的服务访问权限主题**下，选择是否要让 AWS IoT 为您 FleetWise **创建和使用新的服务角色**。如果要**使用现有的服务角色**，请在选择角色下的下拉列表**中选择该角色**。
+ 选择**下一步**。

### 第 4 步：添加车辆
<a name="add-attributes-console"></a>

要选择要将活动部署到哪些车辆，请在车辆列表中选择它们。通过搜索您在创建车辆时添加的属性及其值或按车辆名称筛选车辆。

在**筛选车辆**中，执行以下操作：

1. 在搜索框中，查找属性或车辆名称，然后从列表中进行选择。
**注意**  
每个属性只能使用一次。

1. 输入要部署活动的属性值或车辆名称。例如，如果属性的完全限定名称为 `fuelType`，则输入 `gasoline` 作为其值。

1. 要搜索其他车辆属性，请重复上述步骤。您最多可以搜索五个车辆属性和数量不限的车辆名称。

1. 符合您搜索条件的车辆列在**车辆名称**下。选择您想要将活动部署到的车辆。
**注意**  
搜索结果中最多显示 100 辆车。选择**全选**，将所有车辆添加到活动中。

1. 选择**下一步**。

### 第 5 步：审核并创建
<a name="review-and-create-campaign-console"></a>

验证活动的配置，然后选择**创建活动**。

**注意**  
创建活动后，您或您的团队必须将活动部署到车辆。

### 第 6 步：部署活动
<a name="update-campaign-console"></a>

创建活动后，您或您的团队必须将活动部署到车辆。

**部署活动**

1. 在**活动摘要**页面上，选择**部署**。

1. 查看并确认您要开始部署并从与活动关联的车辆收集数据。

1. 选择**部署**。

如果您想暂停从与活动关联的车辆收集数据，请在**活动摘要**页面上选择**暂停**。要继续从与活动关联的车辆收集数据，请选择**继续**。



## 创建活动 (AWS CLI)
<a name="create-campaign-cli"></a>

您可以使用 [CreateCampaign](https://docs.aws.amazon.com/iot-fleetwise/latest/APIReference/API_CreateCampaign.html)API 操作来创建广告活动。下面的示例使用了 AWS CLI。

创建活动时，从车辆收集的数据可以发送到 MQTT 主题或存储在亚马逊 S3 (S3) 或 Amazon Timestream 中。选择 Timestream 可获得快速、可扩展且无需服务器的时间序列数据库，例如存储需要近乎实时处理的数据。选择 S3 作为具有业界领先的可扩展性、数据可用性、安全性和性能的对象存储。选择 MQTT 以近乎实时的方式交付数据，并使用[规则](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html)执行您定义的操作或将数据路由到其他目的地。 AWS IoT

**重要**  
只有当 AWS 物 FleetWise 联网有权代表你发送 MQTT 消息或向 S3 或 Timestream 写入数据时，你才能将车辆数据传输到 MQTT 主题、Amazon S3 或 Amazon Timestream。有关授予访问权限的更多信息，请参阅[使用 AWS IoT 控制访问权限 FleetWise](https://docs.aws.amazon.com/iot-fleetwise/latest/developerguide/controlling-access.html)。  
Amazon Timestream 不在亚太地区（孟买）区域推出。

### 创建活动
<a name="create-campaign-command"></a>

**重要**  
在创建活动之前，您必须拥有信号目录和车辆或车队。有关更多信息，请参阅 [管理 AWS 物联网 FleetWise 信号目录](signal-catalogs.md)、[管理 AWS 物联网 FleetWise 车辆](vehicles.md) 和 [在物联网中 AWS 管理车队 FleetWise](fleets.md)。
创建活动后，您必须使用 `UpdateCampaign` API 操作来批准该活动。有关更多信息，请参阅 [更新物 AWS 联网 FleetWise 活动](update-campaign-cli.md)。

要创建活动，请运行以下命令。

*file-name*替换为包含活动配置的.json 文件的名称。

```
aws iotfleetwise create-campaign --cli-input-json file://file-name.json
```

#### S3 配置文件示例
<a name="example-configuration-file-s3"></a>
+ *campaign-name*替换为你正在创建的广告活动的名称。
+ *signal-catalog-arn*替换为信号目录的亚马逊资源名称 (ARN)。
+ *target-arn*替换为您创建的车队或车辆的 ARN。
+ *bucket-arn*替换为 S3 存储桶的 ARN。

```
{
    "name": "campaign-name",
    "targetArn": "target-arn", 
    "signalCatalogArn": "signal-catalog-arn", 
    "collectionScheme": {
        "conditionBasedCollectionScheme": {
            "conditionLanguageVersion": 1,
            "expression": "$variable.`Vehicle.DemoBrakePedalPressure` > 7000",
            "minimumTriggerIntervalMs": 1000,
            "triggerMode": "ALWAYS"
        }
    },
    "compression": "SNAPPY",
    "diagnosticsMode": "OFF",
    "postTriggerCollectionDuration": 1000,
    "priority": 0,
    "signalsToCollect": [
        {
         "maxSampleCount": 100,
         "minimumSamplingIntervalMs": 0,
         "name": "Vehicle.DemoEngineTorque"
        },
        {
         "maxSampleCount": 100,
         "minimumSamplingIntervalMs": 0,
         "name": "Vehicle.DemoBrakePedalPressure"
        }
    ],
    "spoolingMode": "TO_DISK",
    "dataDestinationConfigs": [
        {
         "s3Config": { 
             "bucketArn": "bucket-arn",
             "dataFormat": "PARQUET",
             "prefix": "campaign-name",
              "storageCompressionFormat": "GZIP"
      }
    }
  ],
     "dataPartitions": [ 
      { ...  }
  ]
}
```

#### Timestream 的配置文件示例
<a name="example-configuration-file-ts"></a>

**注意**  
Amazon Timestream 不在亚太地区（孟买）区域推出。
+ *campaign-name*替换为你正在创建的广告活动的名称。
+ *signal-catalog-arn*替换为信号目录的 ARN。
+ *target-arn*替换为您创建的车队或车辆的 ARN。
+ *role-arn*替换为授予 Io AWS T 向 Timestream 表传送数据的 FleetWise 权限的任务执行角色的 ARN。
+ *table-arn*替换为时间流表的 ARN。

```
{
  "name": "campaign-name",
  "targetArn": "target-arn",
  "signalCatalogArn": "signal-catalog-arn",
  "collectionScheme": {
    "conditionBasedCollectionScheme": {
      "conditionLanguageVersion": 1,
      "expression": "$variable.`Vehicle.DemoBrakePedalPressure` > 7000",
      "minimumTriggerIntervalMs": 1000,
      "triggerMode": "ALWAYS"
    }
  },
  "compression": "SNAPPY",
  "diagnosticsMode": "OFF",
  "postTriggerCollectionDuration": 1000,
  "priority": 0,
  "signalsToCollect": [
    {
      "maxSampleCount": 100,
      "minimumSamplingIntervalMs": 0,
      "name": "Vehicle.DemoEngineTorque"
    },
    {
      "maxSampleCount": 100,
      "minimumSamplingIntervalMs": 0,
      "name": "Vehicle.DemoBrakePedalPressure"
    }
  ],
  "spoolingMode": "TO_DISK",
  "dataDestinationConfigs": [
    {
      "timestreamConfig": {
        "executionRoleArn": "role-arn",
        "timestreamTableArn": "table-arn"
      }
    }
  ],
   "dataPartitions": [ 
      { ...  }
  ]
}
```

#### MQTT 主题的示例配置文件
<a name="example-configuration-file-mqtt"></a>
+ *campaign-name*替换为你正在创建的广告活动的名称。
+ *signal-catalog-arn*替换为信号目录的亚马逊资源名称 (ARN)。
+ *target-arn*替换为您创建的车队或车辆的 ARN。
+ *topic-arn*替换为您指定为包含车辆数据的消息目标的 [MQTT 主题](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html)的 ARN。
+ *role-arn*替换为任务执行角色的 ARN，该角色授予 Io AWS T 针对您指定的 MQTT 主题发送、接收消息和对消息采取操作的 FleetWise 权限。

```
{
  "name": "campaign-name",
  "targetArn": "target-arn",
  "signalCatalogArn": "signal-catalog-arn",
  "collectionScheme": {
    "conditionBasedCollectionScheme": {
      "conditionLanguageVersion": 1,
      "expression": "$variable.`Vehicle.DemoBrakePedalPressure` > 7000",
      "minimumTriggerIntervalMs": 1000,
      "triggerMode": "ALWAYS"
    }
  },
  "compression": "SNAPPY",
  "diagnosticsMode": "OFF",
  "postTriggerCollectionDuration": 1000,
  "priority": 0,
  "signalsToCollect": [
    {
      "maxSampleCount": 100,
      "minimumSamplingIntervalMs": 0,
      "name": "Vehicle.DemoEngineTorque"
    },
    {
      "maxSampleCount": 100,
      "minimumSamplingIntervalMs": 0,
      "name": "Vehicle.DemoBrakePedalPressure"
    }
  ],
  "spoolingMode": "TO_DISK",
  "dataDestinationConfigs": [
      {
          "mqttTopicConfig": {
              "mqttTopicArn": "topic-arn",
              "executionRoleArn": "role-arn"
          }
      }
  ]
}
```

如果您[启用了使用客户托管 AWS KMS 密钥的加密](key-management.md)，请包括以下政策声明，以便您的角色可以调用 `CreateCampaign` API 操作。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey*",
                "kms:Decrypt"
            ],
            "Resource": [
                "arn:aws:kms:us-east-1:111122223333:key/KMS_KEY_ID"
            ]
        }
    ]
}
```

------

# AWS 物联网 FleetWise 活动的逻辑表达式
<a name="logical-expression"></a>

AWS 物联网 FleetWise 使用逻辑表达式来识别在活动中要收集哪些数据。有关表达式的更多信息，请参阅《AWS IoT Events 开发人员指南》**中的[表达式](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html)。

表达式变量的结构应符合所收集数据类型的规则。对于遥测系统数据，表达式变量应为信号的完全限定名称。对于视觉系统数据，表达式会将信号的完全限定名称与从信号的数据类型到其某个属性的路径相结合。

例如，如果信号目录包含以下节点：

```
{
    myVehicle.ADAS.Camera:
    type: sensor
    datatype: Vehicle.ADAS.CameraStruct
    description: "A camera sensor"

    myVehicle.ADAS.CameraStruct:
    type: struct
    description: "An obstacle detection camera output struct"
}
```

如果节点符合 ROS 2 定义：

```
{
    Vehicle.ADAS.CameraStruct.msg:
    boolean obstaclesExists
    uint8[] image
    Obstacle[30] obstacles
}
{
    Vehicle.ADAS.Obstacle.msg:
    float32: probability
    uint8 o_type
    float32: distance
}
```

以下是所有可能的事件表达式变量：

```
{
...
    $variable.`myVehicle.ADAS.Camera.obstaclesExists`
    $variable.`myVehicle.ADAS.Camera.Obstacle[0].probability`
    $variable.`myVehicle.ADAS.Camera.Obstacle[1].probability`
...
    $variable.`myVehicle.ADAS.Camera.Obstacle[29].probability`
    $variable.`myVehicle.ADAS.Camera.Obstacle[0].o_type`
    $variable.`myVehicle.ADAS.Camera.Obstacle[1].o_type`
...
    $variable.`myVehicle.ADAS.Camera.Obstacle[29].o_type`
    $variable.`myVehicle.ADAS.Camera.Obstacle[0].distance`
    $variable.`myVehicle.ADAS.Camera.Obstacle[1].distance`
...
    $variable.`myVehicle.ADAS.Camera.Obstacle[29].distance`
}
```