

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# AWS IoT FleetWise 디코더 매니페스트 생성
<a name="create-decoder-manifest"></a>

**중요**  
특정 AWS IoT FleetWise 기능에 대한 액세스는 현재 게이트됩니다. 자세한 내용은 [AWS AWS IoT FleetWise의 리전 및 기능 가용성](fleetwise-regions.md) 단원을 참조하십시오.

 AWS IoT FleetWise 콘솔 또는 API를 사용하여 차량 모델에 대한 디코더 매니페스트를 생성할 수 있습니다.

**Topics**
+ [디코더 매니페스트 생성(콘솔)](#create-decoder-manifest-console)
+ [디코더 매니페스트 만들기(AWS CLI)](#create-decoder-manifest-cli)

## 디코더 매니페스트 생성(콘솔)
<a name="create-decoder-manifest-console"></a>

 AWS IoT FleetWise 콘솔을 사용하여 차량 모델과 연결된 디코더 매니페스트를 생성할 수 있습니다.

**중요**  
 AWS IoT FleetWise 콘솔을 사용하여 디코더 매니페스트에서 비전 시스템 데이터 신호를 구성할 수 없습니다. 그 대신 AWS CLI을 사용합니다. 비전 시스템 데이터는 평가판 릴리스이며 변경될 수 있습니다.

**디코더 매니페스트를 생성하려는 경우**

1. <a name="fleetwise-open-console"></a>[AWS IoT FleetWise 콘솔](https://console.aws.amazon.com/iotfleetwise)을 엽니다.

1. <a name="choose-vehicle-models"></a>기본 탐색 창에서 **차량 모델**을 선택합니다.

1. 대상 차량 모델을 선택합니다.

1. 차량 모델 요약 페이지에서 **디코더 매니페스트 생성**을 선택하고 다음을 수행합니다.

**Topics**
+ [1단계: 디코더 매니페스트 구성](#configure-decoder-manifest-console)
+ [2단계: CAN 인터페이스 매핑](#map-can-interface)
+ [3단계: 검토 및 생성](#review-and-create-decoder-manifest-console)

### 1단계: 디코더 매니페스트 구성
<a name="configure-decoder-manifest-console"></a>

**일반 정보**에서 다음을 수행합니다.

1. 디코더 매니페스트에 고유한 이름을 입력합니다.

1. (선택 사항) 설명을 입력합니다.

1. **다음**을 선택합니다.

#### 네트워크 인터페이스 추가
<a name="add-network-interfaces"></a>

각 디코더 매니페스트에는 네트워크 인터페이스가 하나 이상 있어야 합니다. 여러 개의 네트워크 인터페이스를 디코더 매니페스트에 추가할 수 있습니다.

**네트워크 인터페이스 생성**

1. 네트워크 인터페이스 파일을 업로드합니다. CAN 프로토콜용 .dbc 파일 또는 ROS 2용 .json 파일 또는 사용자 지정 인터페이스를 업로드할 수 있습니다.

1. 네트워크 인터페이스의 이름을 입력합니다. 사용자 지정 인터페이스를 업로드한 경우 이름이 이미 제공된 것입니다.

#### 누락된 신호 매핑
<a name="map-missing-decoders"></a>

차량 모델에 업로드된 네트워크 인터페이스에서 페어링된 신호 디코더가 누락된 신호가 있는 경우 누락된 신호를 매핑하는 기본 사용자 지정 디코더를 생성할 수 있습니다. 이는 다음 단계에서 신호를 수동으로 매핑할 수 있으므로 선택 사항입니다.

**기본 사용자 지정 디코더를 생성하려면**

1. **누락된 신호에 대한 기본 사용자 지정 디코더 생성을** 선택합니다.

1. **다음**을 선택합니다.

### 2단계: CAN 인터페이스 매핑
<a name="map-can-interface"></a>

CAN 신호 디코더를 사용하여 CAN 신호를 매핑할 수 있습니다. **누락된 신호에 대한 기본 사용자 지정 디코더 생성** 확인란을 선택한 경우 디코더 신호가 누락된 모든 신호는 기본 사용자 지정 신호 디코더에 자동으로 매핑됩니다.

**CAN 신호를 매핑하려면**

1. **CAN 신호 매핑**에서 신호 디코더를 선택합니다.

1. **다음**을 선택합니다.

**참고**  
ROS 2 또는 사용자 지정 인터페이스를 추가한 경우 디코더 매니페스트를 생성하기 전에 매핑을 확인할 수 있습니다.

### 3단계: 검토 및 생성
<a name="review-and-create-decoder-manifest-console"></a>

디코더 매니페스트의 구성을 확인한 다음 **생성**을 선택합니다.

## 디코더 매니페스트 만들기(AWS CLI)
<a name="create-decoder-manifest-cli"></a>

[CreateDecoderManifest](https://docs.aws.amazon.com/iot-fleetwise/latest/APIReference/API_CreateDecoderManifest.html) API 작업을 사용하여 디코더 매니페스트를 만들 수 있습니다. 다음 예제에서는 AWS CLI를 사용합니다.

**중요**  
디코더 매니페스트를 생성하려면 우선 차량 모델을 보유해야 합니다. 모든 디코더 매니페스트는 차량 모델과 연결되어야 합니다. 자세한 내용은 [AWS IoT FleetWise 차량 모델 생성](create-vehicle-model.md) 단원을 참조하십시오.

디코더 매니페스트를 만들려면 다음 명령을 실행합니다.

*decoder-manifest-configuration*을 구성이 포함된 .json 파일의 이름으로 바꿉니다.

```
aws iotfleetwise create-decoder-manifest --cli-input-json file://decoder-manifest-configuration.json
```

### CAN 인터페이스 구성이 포함된 디코더 매니페스트
<a name="decoder-manifest-configuration"></a>
+ *decoder-manifest-name*을 만들고 있는 디코더 매니페스트의 이름으로 교체합니다.
+ *vehicle-model-ARN*을 차량 모델의 Amazon 리소스 이름(ARN)으로 교체합니다.
+ (선택 사항) *설명*을 디코더 매니페스트를 식별하는 데 도움이 되는 설명으로 교체합니다.

분기, 속성, 센서 및 액추에이터를 구성하는 방법에 대한 자세한 내용은 [AWS IoT FleetWise 네트워크 인터페이스 및 디코더 신호 구성](configure-network-interfaces-decoder-signals.md) 섹션을 참조하세요.

```
{
    "name": "decoder-manifest-name",
    "modelManifestArn": "vehicle-model-arn",
    "description": "description",
    "networkInterfaces": [
        {
            "canInterface": {
                "name": "myNetworkInterface",
                "protocolName": "CAN",
                "protocolVersion": "2.0b"
            },
            "interfaceId": "Qq1acaenByOB3sSM39SYm",
            "type": "CAN_INTERFACE"
        }
    ],
    "signalDecoders": [
        {
            "canSignal": {
                "name": "Engine_Idle_Time",
                "factor": 1,
                "isBigEndian": true,
                "isSigned": false,
                "length": 24,
                "messageId": 271343712,
                "offset": 0,
                "startBit": 16
            },
            "fullyQualifiedName": "Vehicle.EngineIdleTime",
            "interfaceId": "Qq1acaenByOB3sSM39SYm",
            "type": "CAN_SIGNAL"
        },
        {
            "canSignal": {
                "name": "Engine_Run_Time",
                "factor": 1,
                "isBigEndian": true,
                "isSigned": false,
                "length": 24,
                "messageId": 271343712,
                "offset": 0,
                "startBit": 40
            },
            "fullyQualifiedName": "Vehicle.EngineRunTime",
            "interfaceId": "Qq1acaenByOB3sSM39SYm",
            "type": "CAN_SIGNAL"
        }
    ]
}
```

### 차량 미들웨어 인터페이스 구성이 포함된 디코더 매니페스트
<a name="decoder-manifest-vehicle-middleware-configuration"></a>
+ *decoder-manifest-name*을 만들고 있는 디코더 매니페스트의 이름으로 교체합니다.
+ *vehicle-model-ARN*을 차량 모델의 Amazon 리소스 이름(ARN)으로 교체합니다.
+ (선택 사항) *설명*을 디코더 매니페스트를 식별하는 데 도움이 되는 설명으로 교체합니다.

구조(구조체) 내 속성 노드의 순서는 신호 카탈로그 및 차량 모델(모델 매니페스트)에 정의된 것과 동일하게 유지되어야 합니다. 분기, 속성, 센서 및 액추에이터를 구성하는 방법에 대한 자세한 내용은 [AWS IoT FleetWise 네트워크 인터페이스 및 디코더 신호 구성](configure-network-interfaces-decoder-signals.md) 섹션을 참조하세요.

```
{
	"name": "decoder-manifest-name",
	"modelManifestArn": "vehicle-model-arn",
	"description": "description",
	"networkInterfaces": [{
		"canInterface": {
			"name": "myNetworkInterface",
			"protocolName": "CAN",
			"protocolVersion": "2.0b"
		},
		"interfaceId": "Qq1acaenByOB3sSM39SYm",
		"type": "CAN_INTERFACE"
	}, {
		"type": "VEHICLE_MIDDLEWARE",
		"interfaceId": "G1KzxkdnmV5Hn7wkV3ZL9",
		"vehicleMiddleware": {
			"name": "ROS2_test",
			"protocolName": "ROS_2"
		}
	}],
	"signalDecoders": [{
			"canSignal": {
				"name": "Engine_Idle_Time",
				"factor": 1,
				"isBigEndian": true,
				"isSigned": false,
				"length": 24,
				"messageId": 271343712,
				"offset": 0,
				"startBit": 16
			},
			"fullyQualifiedName": "Vehicle.EngineIdleTime",
			"interfaceId": "Qq1acaenByOB3sSM39SYm",
			"type": "CAN_SIGNAL"
		},
		{
			"canSignal": {
				"name": "Engine_Run_Time",
				"factor": 1,
				"isBigEndian": true,
				"isSigned": false,
				"length": 24,
				"messageId": 271343712,
				"offset": 0,
				"startBit": 40
			},
			"fullyQualifiedName": "Vehicle.EngineRunTime",
			"interfaceId": "Qq1acaenByOB3sSM39SYm",
			"type": "CAN_SIGNAL"
		},
		{
			"fullyQualifiedName": "Vehicle.CompressedImageTopic",
			"type": "MESSAGE_SIGNAL",
			"interfaceId": "G1KzxkdnmV5Hn7wkV3ZL9",
			"messageSignal": {
				"topicName": "CompressedImageTopic:sensor_msgs/msg/CompressedImage",
				"structuredMessage": {
					"structuredMessageDefinition": [{
							"fieldName": "header",
							"dataType": {
								"structuredMessageDefinition": [{
										"fieldName": "stamp",
										"dataType": {
											"structuredMessageDefinition": [{
													"fieldName": "sec",
													"dataType": {
														"primitiveMessageDefinition": {
															"ros2PrimitiveMessageDefinition": {
																"primitiveType": "INT32"
															}
														}
													}
												},
												{
													"fieldName": "nanosec",
													"dataType": {
														"primitiveMessageDefinition": {
															"ros2PrimitiveMessageDefinition": {
																"primitiveType": "UINT32"
															}
														}
													}
												}
											]
										}
									},
									{
										"fieldName": "frame_id",
										"dataType": {
											"primitiveMessageDefinition": {
												"ros2PrimitiveMessageDefinition": {
													"primitiveType": "STRING"
												}
											}
										}
									}
								]
							}
						},
						{
							"fieldName": "format",
							"dataType": {
								"primitiveMessageDefinition": {
									"ros2PrimitiveMessageDefinition": {
										"primitiveType": "STRING"
									}
								}
							}
						},
						{
							"fieldName": "data",
							"dataType": {
								"structuredMessageListDefinition": {
									"name": "listType",
									"memberType": {
										"primitiveMessageDefinition": {
											"ros2PrimitiveMessageDefinition": {
												"primitiveType": "UINT8"
											}
										}
									},
									"capacity": 0,
									"listType": "DYNAMIC_UNBOUNDED_CAPACITY"
								}
							}
						}
					]
				}
			}
		}
	]
}
```

### 사용자 지정 디코더 구성을 사용한 디코더 매니페스트
<a name="decoder-manifest-custom-decoder-config"></a>
+ *decoder-manifest-name*을 만들고 있는 디코더 매니페스트의 이름으로 교체합니다.
+ *vehicle-model-ARN*을 차량 모델의 Amazon 리소스 이름(ARN)으로 교체합니다.
+ (선택 사항) *설명*을 디코더 매니페스트를 식별하는 데 도움이 되는 설명으로 교체합니다.

분기, 속성, 센서 및 액추에이터를 구성하는 방법에 대한 자세한 내용은 [AWS IoT FleetWise 네트워크 인터페이스 및 디코더 신호 구성](configure-network-interfaces-decoder-signals.md) 섹션을 참조하세요.

```
{
	"name": "decoder-manifest-name",
	"modelManifestArn": "vehicle-model-arn",
	"description": "description",
	"networkInterfaces": [
        {
		    "interfaceId": "myCustomInterfaceId",
		    "type": "CUSTOM_DECODING_INTERFACE",
            "customDecodingInterface": {
                "name": "myCustomInterface"
            }
        }
    ],
    "signalDecoders": [
        {
            "customDecodingSignal": {
                "fullyQualifiedName": "Vehicle.actuator1",
                "interfaceId": "myCustomInterfaceId",
                "type": "CUSTOM_DECODING_SIGNAL",
                "customDecodingSignal": {
                    "id": "Vehicle.actuator1"
                }
            }
        },
        {
            "customDecodingSignal": {
                "fullyQualifiedName": "Vehicle.actuator2",
                "interfaceId": "myCustomInterfaceId",
                "type": "CUSTOM_DECODING_SIGNAL",
                "customDecodingSignal": {
                    "id": "Vehicle.actuator2"
                }
            }
        }
    ]
}
```

**참고**  
[데모 스크립트](https://raw.githubusercontent.com/aws/aws-iot-fleetwise-edge/main/tools/cloud/ros2-to-decoders.py)를 다운로드하여 비전 시스템 신호가 포함된 디코더 매니페스트를 생성할 수 있습니다. 자세한 내용은 [https://github.com/aws/aws-iot-fleetwise-edge/blob/main/docs/dev-guide/vision-system-data/vision-system-data-demo.ipynb](https://github.com/aws/aws-iot-fleetwise-edge/blob/main/docs/dev-guide/vision-system-data/vision-system-data-demo.ipynb)를 참조하세요.  
비전 시스템 데이터는 평가판 릴리스이며 변경될 수 있습니다.

고객 관리형 AWS KMS 키를 사용하여 [암호화를 활성화](key-management.md)한 경우 역할이 `CreateDecoderManifest` 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"
            ]
        }
    ]
}
```

------