단위 4 / 9

센서 융합 및 IoT 데이터 통합

이득:

  • IMU, 인코더, 거리 센서 데이터를 AI와 결합한 융합 로직(적분기/칼만 필터) 구성 능력
  • AI의 도움으로 MQTT 기반 IoT 데이터 스트림 및 원격 측정을 구성하고 해석하는 기능
  • AI 출력에서 센서 노이즈, 보정 및 시간 동기화 문제를 감지하고 수정하는 기능

어떤 센서도 완벽하지 않습니다. 자이로스코프는 단기적으로는 매우 정확하지만 시간이 지남에 따라 표류합니다. 가속도계는 장기적으로 안정적이지만 진동으로 인해 소음이 발생합니다. 엔코더는 위치를 정밀하게 측정하지만, 슬립이 있을 경우 오차가 발생합니다. GPS는 넓은 지역에서 작동하지만 주파수가 낮고 잡음이 많습니다. 메카트로닉스 엔지니어는 이러한 불완전한 센서로부터 신뢰할 수 있는 단일 진실을 생성해야 합니다. 이것이 바로 센서 융합이다. 더욱이 최신 시스템에서는 이 데이터가 로컬에 남아 있을 뿐만 아니라 IoT 네트워크를 통해 클라우드 및 제어 센터로 전달됩니다. 인공 지능은 융합 알고리즘을 설정하고 IoT 원격 측정을 구성 및 해석하는 데 강력한 도움이 됩니다. 본 단원에서는 보완 필터, 칼만 필터 논리, AI를 사용하여 MQTT 기반 IoT 흐름을 설정하고 노이즈 및 동기화 트랩을 포착하는 방법을 다룹니다.

왜 센서 융합인가?

모든 센서에는 "좋은 주파수 영역"이 있습니다. 융합의 목적은 각 센서가 강한 부분에 사용하고 약한 부분에 다른 센서를 지원하는 것입니다.

센서

장점

약점

자이로스코프

단기 각속도, 빠른 응답

시간이 지남에 따라 드리프트

가속도계

장기 경사 기준(중력)

움직임에 따른 진동/소음

인코더

고해상도 위치

슬립/백래시 오류

GPS

절대 위치

저주파, 소음, 실내 없음

단일 센서에 의존하면 해당 센서의 약점이 시스템에 유입됩니다. 예를 들어, Fusion은 자이로스코프의 빠르지만 표류하는 각도와 가속도계의 느리지만 꾸준한 기준을 결합하여 빠르고 표류가 없는 각도를 생성합니다.

보완 필터

가장 간단하고 가장 일반적인 융합은 상보 필터입니다. 아이디어는 직관적입니다. 높은 주파수(빠른 변화)에서는 자이로스코프를 신뢰하고 낮은 주파수(느리고 안정적)에서는 가속도계를 신뢰합니다. 한 줄 요약:

# 보완 필터: 통증 추정(피치) # alpha ~ 0.98 : 자이로스코프에 많음, 가속도계에 적음(도/초) Acceleration_ange : 가속도계에서 계산된 각도(도) dt : 샘플링 기간(초) """ gyro_pac = 이전 + gyro_speed * dt # 자이로스코프 반환 alpha * gyro_pace + (1 - alpha) * Acceleration_angle# 검증 논리: 알파=1인 경우 순수 자이로스코프(드리프트), # 알파=0인 경우 순수 가속도계(노이즈)는 둘 사이의 균형을 유지합니다.

여기서 알파 계수는 균형을 결정합니다. 1에 가까우면 자이로스코프에 의존하고(드리프트 위험 증가), 0에 가까우면 가속도계에 의존합니다(소음 증가). 일반적인 값은 0.95~0.98입니다. AI가 이 값을 제안할 수 있지만 올바른 알파는 시스템의 샘플링 속도와 노이즈 특성에 따라 달라집니다. 실험적으로 설정되었습니다.

팁: AI에 적분 필터를 인쇄할 때 dt가 어떻게 측정되는지 꼭 물어보세요. 대부분의 오류는 dt가 일정하다고 가정할 때 발생하지만 실제로는 주기 시간이 다릅니다. millis()/timestamp를 사용하여 dt 실수를 측정하고 상수를 쓰지 마세요.

칼만 필터 논리

보완 필터는 간단하지만 잡음 통계를 모델링하지 않습니다. 칼만 필터는 센서 잡음과 프로세스 불확실성을 확률적으로 모델링하여 특정 가정 하에서 최적의 추정치를 생성합니다. 이는 두 단계로 작동합니다.

  1. 예측: 시스템 모델을 사용하여 다음 상황과 불확실성을 예측합니다.
  2. 업데이트: 측정 신뢰성(칼만 게인)과 비교하여 새 측정의 가중치를 측정하고 추정치를 수정합니다.

칼만 게인 K는 모든 단계에서 "측정을 더 신뢰해야 할까요, 아니면 모델을 더 신뢰해야 할까요?"라는 질문에 자동으로 답합니다. 측정 잡음이 크면 K는 작아지고(모델에 대한 신뢰도), 프로세스 불확실성이 크면 K는 커집니다(측정에 대한 신뢰도). AI는 1차원 칼만 필터를 쉽게 작성합니다. 하지만 노이즈 공분산(`Q`, `R`)을 올바르게 선택하는 것이 귀하의 임무이며 이는 시스템의 실제 노이즈에서 나옵니다.

주의: AI가 제공하는 Q(프로세스 노이즈) 및 R(측정 노이즈) 값은 샘플/자리 표시자입니다. 시스템의 실제 측정 노이즈(예: 센서가 고정되어 있을 때 측정된 분산)에서 이를 결정하지 않으면 필터가 너무 느리거나 노이즈가 너무 심해집니다. AI가 제공하는 공분산을 "참값"으로 신뢰하지 마십시오.

IoT 데이터 스트림: MQTT 및 원격 측정

융합으로 생산되는 깨끗한 데이터는 대개 IoT 네트워크를 통해 센터로 전송됩니다. 업계에서 가장 일반적인 프로토콜은 MQTT입니다. 즉, 낮은 대역폭에 적합한 경량 게시-구독 모델입니다. AI는 MQTT 게시자/구독자 코드와 JSON 원격 측정 스키마를 신속하게 설정합니다.

import json, timeimport paho.mqtt.client as mqttclient = mqtt.Client()client.connect("broker.local", 1883, keepalive=60)def telemetry_broadcast(온도, 온도, 진동_rms): message = { "ts": time.time(), # timestamp -- 동기화 조건 "pain_deg": round(pain, 2), "온도_c": round(온도, 1), "vibration_rms": round(온도_rms, 3), "unit": {"pain": "deg", "온도": "C", "vibration": "mm/s"} } client.publish("machine/line1/sensor", json.dumps(message), qos=1)# qos=1: 적어도 한 번 전달됩니다. 중요한 데이터에 qos=0(손실될 수 있음)을 사용합니다.

여기서는 두 가지 엔지니어링 결정이 중요합니다. (1) 각 메시지의 타임스탬프(ts) - 서로 다른 센서가 서로 다른 시간에 샘플링되며 동기화는 타임스탬프를 통해서만 가능합니다. (2) QoS 수준 - 중요한 데이터는 최소한 qos=1(최소 한 번 전달됨)을 사용하고, qos=0은 메시지 손실을 허용합니다.

소음, 교정 및 동기화

융합이 아무리 좋아도 입력과 관련된 세 가지 문제로 인해 결과가 왜곡됩니다.

  • 노이즈: 원시 센서 데이터가 필터링되지 않고 융합되면 융합 출력에도 노이즈가 발생합니다. 사전 필터링(중앙값, 저역통과)이 필요할 수 있습니다.
  • 보정: 오프셋 및 스케일 오류(예: 가속도계의 영점이 이동됨)는 시스템적으로 융합을 오도합니다. 센서는 사용하기 전에 교정해야 합니다.
  • 시간 동기화: 서로 다른 속도로 샘플링된 센서를 정렬하려면 타임스탬프 및 보간이 필요합니다(예: 1kHz IMU를 사용하는 10Hz GPS).

AI는 이러한 단계를 코드에 추가할 수 있지만 각 단계가 필요한지 여부와 해당 매개변수는 시스템에 따라 다릅니다. AI 출력에서 ​​"캘리브레이션은 어디에 있나요?" 그리고 "타임스탬프가 정렬되어 있나요?" 반드시 질문하십시오.

약한 프롬프트 / 강한 프롬프트

WEAK:"IMU 데이터에서 각도를 계산합니다."(어떤 필터? 드리프트가 처리됩니까? 어떻게 dt? 불분명합니다.)STRONG:"MPU6050의 가속도계와 자이로스코프 데이터를 적분 필터와 결합하고 피치 각도를 추정합니다. 실제 타임스탬프에서 dt를 계산하고 상수로 가정하지 않습니다. 알파를 매개변수로 설정합니다(기본값 0.98). tane2로 가속도계 각도를 계산합니다. 클래스로 쓰기로 필터링하고 이전 각도를 유지합니다. 노이즈에 대한 선택적 중앙값 사전 필터를 추가하세요."

미니 케이스

로봇 공학 엔지니어 Selin은 2륜 균형 로봇의 각도 추정을 위해 AI의 보완 필터를 원합니다. AI는 깔끔한 코드를 주지만 로봇은 천천히 한쪽으로 기울어진다. Selin은 dt를 확인합니다. 코드에서는 dt가 0.01초로 일정하다고 가정하지만, 사이클 시간은 Bluetooth 원격 측정으로 인해 달라집니다. 실제 타임스탬프에서 dt를 계산하면 드리프트가 감소하지만 완전히 사라지지는 않습니다. 그런 다음 그는 가속도계의 보정을 살펴봅니다. 센서가 정지해 있는 경우에도 2° 오프셋이 있습니다. 보정 오프셋을 제거하면 로봇이 똑바로 서 있습니다. 마지막으로 MQTT를 통해 원격 측정을 브로드캐스팅할 때 qos=0을 사용하고 중요한 각도 데이터에 대해 qos=1로 증가한다는 것을 알아냈습니다. AI는 몇 분 만에 융합 뼈대를 전달했습니다. 그러나 엔지니어의 검증에서는 변수 dt, 교정 오프셋 및 QoS라는 세 가지 시스템 관련 문제가 발견되었습니다.

일반적인 실수

  • dt는 일정하지만 사이클 시간은 다양하다고 가정합니다(융합 드리프트).
  • 센서를 교정하지 않고 융합합니다(체계적 오프셋).
  • 타임스탬프 없이 서로 다른 속도의 센서를 정렬하려고 합니다.
  • 실제 노이즈로부터 칼만 Q/R 공분산을 측정하지 않고 AI의 샘플 값을 그대로 둡니다.
  • 중요한 IoT 데이터에 qos=0을 사용하여 메시지 손실을 허용합니다.
  • 사전 필터링 없이 원본 시끄러운 데이터를 융합에 제공합니다.

요약하면

  • 퓨전은 자신이 강한 주파수 영역의 각 센서를 활용해 약점을 보완한다.
  • 보수 필터는 간단합니다. 알파를 사용하여 자이로스코프-가속도계 균형을 설정합니다.
  • 칼만 필터는 잡음을 확률적으로 모델링합니다. Q/R은 실제 시스템에서 나옵니다.
  • MQTT 원격 측정에서 타임스탬프 및 적절한 QoS는 중요한 엔지니어링 결정입니다.
  • 소음, 교정 및 시간 동기화가 융합 품질을 결정합니다.
  • dt는 실시간으로 측정됩니다. 교정 및 QoS는 AI에 맡기지 않고 검증됩니다.

응용과제

IMU(실제 또는 시뮬레이션된 자이로 + 가속도계 데이터)의 경우 AI가 적분 필터를 생성하고 dt가 실제 타임스탬프에서 계산되는지 확인하세요. 그런 다음 (1) 0.90, 0.98 및 1.0에 대해 알파를 시도하고 드리프트 및 노이즈 균형을 관찰하고, (2) 의도적인 고정 오프셋(보정 오류)을 센서에 추가하고 융합 출력이 어떻게 드리프트하는지 확인하고, (3) 데이터를 MQTT JSON 스키마로 변환하고 타임스탬프 및 단위 필드를 추가합니다. 데이터에 대해 가장 균형 잡힌 결과를 제공하는 알파 값과 교정 오프셋이 출력을 얼마나 왜곡하는지 확인하십시오.