AWS Iot FleetWise 서비스 이론
Q. AWS IoT FleetWise란 무엇인가요? [서비스 정의]
- AWS가 제공하는 여러 Iot 서비스 중 FleetWise는 여러 대의 보유 차량(차량 플릿)에 대한 인사이트를 얻을 수 있도록 데이터의 수집, 변환 및 클라우드 전송을 쉽게 수행할 수 있는 관리형 서비스입니다.
Q. AWS IoT FleetWise는 어디에 활용될 수 있나요? [활용 분야]
- 차량 정비 App 구축 : 개별 차량의 문제를 원격으로 진단하고 차량 플릿 상태 분석을 통해 보증 클레임 및 리콜을 방지
- FMS(Fleet Management System, 차량 관제 시스템) App 구축
- UBI(Usage Based Insurance, 사용 기반 차량 보험 서비스) App 구축 : 사용자의 평소 운전 습관을 파악하여 보험료 책정
- 분석 및 기계 학습을 통해 자율 주행 및 고급 운전자 지원 시스템을 개선하는 App 구축
Q. AWS IoT FleetWise를 사용해야 하는 이유는 무엇인가요? [차별점]
- AWS IoT FleetWise에서는 대규모 차량 플릿에서의 데이터 수집에 따르는 데이터 복잡성 문제가 없습니다.
- AWS IoT FleetWise 데이터가 일단 수집되면 사용자가 정의한 표준 차량 모델에 따라 자동으로 변환되어 플릿 데이터의 일관성 및 안정성을 보장합니다.
-> 차량 제조사, 모델별로 각기 다른 차량별 raw data를 표준 차량 모델 기준으로 변환하여, 서로 다른 차량에서 일관된 데이터 형식으로 수집할 수 있도록 지원
Q. AWS IoT FleetWise Edge의 하드웨어 요구 사항은 무엇인가요?
- AWS IoT FleetWise Edge Agent는 현재 NXP S32G 차량 네트워크 프로세서를 지원하며, 계속해서 다른 일반 차량 하드웨어 지원을 추가할 예정입니다.
-> 평가판 상에서는 NXP S32G 차량 네트워크 프로세서가 장작된 HW 장비가 설치된 차량에만 Agent를 설치할 수 있고, 데이터 수집이 정상적으로 가능하다.
- 또한 이전에 수집된 차량 데이터를 사용하여 Amazon Elastic Compute Cloud(Amazon EC2) Graviton 인스턴스에서 동일한 AWS IoT FleetWise Edge Agent를 실행할 수 있습니다. 보다 자세한 내용은 콘솔 내에서 “엣지” 가이드를 참조하세요.
-> AWS EC2 서비스에 Edge Agent를 설치하고, 이전에 수집된 차량 데이터를 사용하면 실제 차량에서 데이터를 수집되는 것을 시뮬레이션해볼 수 있다?
Q. AWS IoT FleetWise에서 수집된 데이터는 어떻게 되나요?
- AWS IoT FleetWise를 통해 수집된 데이터는 곧바로 사용자의 Amazon Timestream 또는 Amazon Simple Storage Service(S3) 리포지토리로 이동합니다.
- AWS IoT FleetWise에서 수집된 모든 데이터를 소유하고 제어할 수 있습니다.
Q. AWS IoT FleetWise 차량 모델링은 어떻게 작동하나요?
- 차량 모델은 차량의 센서 및 신호(제조사별로 다른 기계 raw data 형식)를 디지털 방식으로 표현합니다. 사용자가 원하는 만큼 단순하게 또는 자세하게 만들 수 있습니다.
- 가상 차량 모델을 AWS IoT FleetWise의 블루프린트로 사용하면 차량의 일반 속성(예: 자동차 도어 수)을 캠페인으로 분류하고 다양한 차량 플릿에서 균일한 수집 파라미터를 설정할 수 있습니다.
- 차량 모델을 통해 다수의 제공 업체 간에 센서 및 신호 정의를 쉽게 생성하고 공유할 수 있습니다.
Q. 수집할 데이터는 어떻게 선택하나요?
- AWS IoT FleetWise 콘솔에서 간단한 규칙 기반 문(JSON 형식)을 작성하여 수집할 차량 데이터를 정의할 수 있습니다.
- AWS IoT FleetWise는 해당 문(JSON 형식)을 차량에 원격으로 전송하고, 해당 차량에서 AWS IoT FleetWise Edge Agent가 해당 문에 따라 데이터를 해석하고 수집합니다.
Q. 내 플릿으로부터 수집할 데이터 요소를 정의하고 내 플릿을 지정하도록 하려면 AWS IoT FleetWise를 어떻게 설정해야 하나요?
- 데이터 수집 요소 정의 및 플릿 지정에 대한 자세한 내용은 AWS IoT FleetWise 개발자 가이드를 참조하세요.
Q. AWS IoT FleetWise는 현재의 내 클라우드 환경과 어떻게 연동하나요?
- 추가 작업이 거의 필요없이, 기존에 구현된 AWS IoT Core & Amazon S3 & Amazon Timestream 등의 AWS 서비스를 AWS IoT FleetWise로 확장할 수 있습니다.
Q. AWS IoT FleetWise가 차량 카메라 데이터도 수집할 수 있나요?
- 평가판 기간 동안 AWS IoT FleetWise는 기존 CAN 기반 자동차 센서(예: 엔진 온도, 연료압)를 수집하고 전송합니다.
- 2022년 상반기에 카메라 또는 레이더 센서와 같은 고급 센서에 대한 지원도 제공할 예정입니다.
관련 도메인 용어 정리
Q. CAN[Controller Area Network, ISO-11898] 통신이란?
- 차량 내 탑재된 전자 장비 간의 표준화된 통신 규격
- CAN Frame(디지털 신호를 담은 규격화된 패킷)으로 데이터를 주고 받음
Q. CAN Database는 무엇이고, 왜 필요한가?
- CAN 통신 라이브러리이며, CAN통신에서 사용하는 네트워크 데이터 베이스이다. 즉, 통신에 사용되는 signal 부터 각 노드에 대한 정보까지 모두 기술 되어 있다.
- CAN Database 파일이 없으면, 축적된 CAN Data(01010001 형식)가 있더라도 의미를 해석할 수 없다.
- 표준화된 DBC 포멧(http://socialledge.com/sjsu/index.php/DBC_Format) 의해 작성되어 .dbc 확장자로 이루어져 있다.
- CAN 통신 항목별로 아래와 같은 내용을 정의한다.
채널 이름 |
메시지의 시작 Bit 위치 & Bit 길이 |
기본값 |
설명 |
바이트 순서(Big Endian, Little Endian 여부) |
데이터 타입(signed, unsigned, and IEEE float) |
스케일링 & 단위 정보 |
최대, 최소 범위 |
테스트 관련 오픈소스 서비스
Cabana
- CAN 통신 visualizer 기능 제공 : 실제 데모 차량을 기준으로, 실시간 일어나는 CAN 통신의 총 항목 갯수와 실제 data message (bytes) 값들을 확인 가능, Save Log 기능으로 특정 구간 CAN 통신 데이터 다운로드 가능
- DBC maker : DBC 파일을 수정하거나, 직접 생성 가능
- toyota_nodsu 차량 데모 사이트 : https://cabana.comma.ai/?demo=1
- 데모 공식 사이트 : my.comma.ai/cabana/
- 공식 Github 사이트 : https://github.com/commaai/cabana
Panda
- 본인 차량과 연결하여, CAN 데이터를 수집할 수 있는 USB 및 통신 관련된 Python 프로젝트 제공
- https://comma.ai/shop/products/panda
- https://github.com/commaai/panda
Opendbc
- 차량 브랜드별로 기본 .dbc 전처리 파일을 제공하고, 파이썬 스크립트를 통해 기본적인 .dbc 파일을 생성할 수 있도록 하는 기능을 제공한다.
- 해당 프로젝트는 CAN 데이터를 리버스엔지니어링 하여 .dbc 파일을 생성해내는 것을 목표로 만들어졌다고 볼 수 있다.
- 기본 .dbc 파일은 opendbc 상에서 생성하여 불러오고,
- Cabana에서 제공하는 CAN 데이터 또는 Panda dongle을 통해 수집된 CAN 데이터를 Cabana 사이트 상에서 Reverse Engineering을 진행한다.
- 리버스 엔지니어링한 결과를 .dbc 파일에 반영한다.
- https://github.com/commaai/opendbc
CanDevStudio
- Can Data Simulation Tool 이다.
- 참고 유튜브 : https://www.youtube.com/watch?v=1TfAyg6DG04&ab_channel=Mobica
- 공식 Github 사이트 : https://github.com/GENIVI/CANdevStudio
AWS Iot FleetWise 서비스 실습
Q: AWS IoT FleetWise를 시작하려면 어떻게 해야 하나요?
- 먼저 AWS 관리 콘솔로 로그인합니다.
- 다음으로 리소스 페이지에서 시작 관련 설명서를 확인합니다.
- 마지막으로, AWS IoT FleetWise로 차량을 모델링하고 데이터 수집 규칙을 정의하여 구축을 시작합니다.
1. 차량 모델링
- 차량을 모델링하려면 사용자가 신호 카탈로그에서 신호를 선택하고, 파일에서 신호 및 액추에이터를 가져오며, 속성을 수동으로 추가하는 세 단계를 완료해야 합니다.
- 사용자가 파일에서 신호 및 액추에이터를 가져오면 모델 생성 시 신호 및 액추에이터가 신호 카탈로그에 추가됩니다.
- 신호 카탈로그 사용 / 파일에서 가져오기 / 수동으로 속성 추가
2. 네트워크 인터페이스 매핑
- 중요한 신호에 집중할 수 있도록 AWS IoT FleetWise에 디코딩 정보를 제공합니다.
- 모델 매니페스트의 일부인 신호에 디코딩 정보를 수동으로 매핑합니다.
실습에 사용되는 기본 지식
Maven이란?
#1 빌드란?
- 소스코드 파일을 컴퓨터에서 실행할 수 있는 독립 소프트웨어 가공물로 변환하는 과정 또는 그에 대한 결과물 이다.
- 이를 좀더 쉽게 풀어 말하자면 우리가 작성한 소스코드(java), 프로젝트에서 쓰인 각각의 파일 및 자원 등(.xml, .jpg, .jar, .properties)을 JVM이나 톰캣같은 WAS가 인식할 수 있는 구조로 패키징 하는 과정 및 결과물이라고 할 수 있다.
#2 빌드 도구(Build tool)
- 빌드 도구란 프로젝트 생성, 테스트 빌드, 배포 등의 작업을 위한 전용 프로그램.
- 빠른기간동안 계속해서 늘어나는 라이브러리 추가, 프로젝트를 진행하며 라이브러리의 버전 동기화의 어려움을 해소하고자 등장.
- 초기의 java 빌드도구로 Ant를 많이 사용하였으나 최근 많은 빌드도구들이 생겨나 Maven이 많이 쓰였고, 현재는 Gradle이 많이 쓰인다.
(Ant는 스크립트 작성도 많고, 라이브러리 의존관리가 되지 않아 불편함)
- Spring Boot 같은 Java 프레임워크는 빌드툴로 Maven을 빌드툴로 주로 사용하고, Android 같은 Java 프레임워크는 Gradle을 빌드툴로 주로 사용 한다.
#3 Maven의 정의 및 특징
- Maven은 자바용 프로젝트 관리도구로 Apache Ant의 대안으로 만들어졌다.
- Maven은 Ant와 마찬가지로 프로젝트의 전체적인 라이프 사이클을 관리하는 도구 이며, 많은 편리함과 이점이 있어 널리 사용되고 있다.
(프로젝트의 작성부터 컴파일, 페트스 등 프로젝트 라이프사이클에 포함되는 각 테스트를 지원해준다.)
- Maven은 필요한 라이브러리를 특정 문서(pom.xml)에 정의해 놓으면 내가 사용할 라이브러리 뿐만 아니라 해당 라이브러리가 작동하는데에 필요한 다른 라이브러리들까지 관리하여 네트워크를 통해서 자동으로 다운받아 준다.
- Maven은 중앙 저장소를 통한 자동 의존성 관리를 중앙 저장소(아파치재단에서 운영 관리)는 라이브러리를 공유하는 파일 서버라고 볼 수 있고, 메이븐은 자기 회사만의 중앙 저장소를 구축할수도 있다.
- 간단한 설정을 통한 배포 관리가 가능 하다.
#4 Maven 설정파일
1) settings.xml
- 메이븐 빌드 툴과 관련한 설정파일
- MAVEN_HOME/conf 디렉토리에 위치 (메이븐 설치 시 기본 제공)
- settings.xml의 설정
** 메이븐을 빌드할 때 의존 관계에 있는 라이브러리, 플러그인을 중앙 저장소에서 개발자 PC로 다운로드 하는위치(로컬저장소)의 기본 설정 'USER_HOME/.m2/repository' 인데 settings.xml의 에 원하는 로컬 저장소의 경로를 지정, 변경할 수 있다.
2) POM(프로젝트 객체 모델(Project Object Model))
- POM은 pom.xml파일을 말하며 pom.xml은 메이븐을 이용하는 프로젝트의 root에 존재하는 xml 파일이다.
(하나의 자바 프로젝트에 빌드 툴을 maven으로 설정하면, 프로젝트 최상위 디렉토리에 "pom.xml"이라는 파일이 생성된다.)
- Maven의 기능을 이용하기 위해서 POM이 사용된다.
- 파일은 프로젝트마다 1개이며, pom.xml만 보면 프로젝트의 모든 설정, 의존성 등을 알 수 있다.
- 다른 파일이름으로 지정할 수도 있다. (mvn -f 파일명.xml test). 하지만 pom.xml으로 사용하기를 권장한다.
ex) POM.XML 예시 (기본 SpringBoot 프로젝트의 Pom.xml 파일)
출처: https://goddaehee.tistory.com/199 [갓대희의 작은공간]
AWS-CLI란?
- 아래의 링크를 통해 다운로드 받을 수 있고, AWS 관련된 명령어를 통해 작업을 진행할 수 있다.
https://aws.amazon.com/ko/cli/
AWS iotFleetWise 활성화 하기
aws configure add-model --service-name iotfleetwise --service-model file://iotfleetwise-preview.json
@ 디버깅
Error parsing parameter '--service-model': Unable to load paramfile (iotfleetwise-preview.json), text contents could not be decoded. If this is a binary file, please use the fileb:// prefix instead of the file:// prefix.
-> 인코딩 문제로써, .json 파일을 메모장으로 열어서 ANSI 형식으로 다시 저장해 준다.
AWS iotFleetWise 명령어를 통해, Vehicle 생성하기
aws iotfleetwise create-vehicle --cli-input-json file://file-name.json
Replace file-name with the name of the JSON file that contains the vehicle configuration.
{ "associationBehavior": "[선택값]AWS Iot Thing을 신규 추가할 것인지, 기존의 것을 사용할 것인지...미정의 시 신규 생성 CreateIotThing 또는 ValidateIotThingExists", "vehicleId": "차량 ID 아무거나", "modelManifestArn": "AWS FleetWise에서 생성한 model-manifest-ARN 값", "decoderManifestArn": "AWS FleetWise에서 생성한 decoder-manifest-ARN 값", "attributes": { [선택값]추가적으로 속성관리하고 싶을 경우 추가... "key": "value" } }
{
"associationBehavior": "CreateIotThing",
"vehicleId": "myVehicleSample-1",
"modelManifestArn": "arn:aws:iotfleetwise:us-east-1:417484543857:model-manifest/myVehicleModel",
"decoderManifestArn": "arn:aws:iotfleetwise:us-east-1:417484543857:decoder-manifest/DecoderManifestTest"
}
@ 디버깅
You must specify a region. You can also configure your region by running "aws configure".
-> AWS Region 미설정으로 인한 오류로써, 아래에 해당하는 명령어를 통해 Region을 지정해준다. us-east-1은 aws에서 어떻게 설정했느냐에 따라 다르다.(--profile admin은 제거해도 됨)
aws configure set region us-east-1 --profile admin
Unable to locate credentials. You can configure credentials by running "aws configure".
-> AWS IAM에서 사용자 없을 경우, 신규 추가하고, 관련 권한 할당 후, access key와 secret key를 복사할 수 있다.
-> aws configure 명령어 입력 후, 차례로 해당 값을 입력한다.
'[CDS] Cloud Service > AWS' 카테고리의 다른 글
[AWS] Aws devops professional 자격증 준비하기 (0) | 2023.02.06 |
---|---|
[AWS] 2주차 공부 - 컴퓨팅(EC2) (0) | 2022.11.29 |
[AWS] 1주차 공부 - AWS 시작하기, Identity and Access Management(IAM) (0) | 2022.10.27 |
[AWS] Serverless Lambda (0) | 2022.06.07 |
[AWS] 서버리스(Serverless)란? (0) | 2021.07.06 |
최근댓글