หน่วย 4 / 9

การรวมเซ็นเซอร์และการรวมข้อมูล IoT

กำไร:

  • ความสามารถในการสร้างตรรกะฟิวชั่น (ตัวรวม/ตัวกรองคาลมาน) ที่รวม IMU ตัวเข้ารหัส และข้อมูลเซ็นเซอร์ระยะทางเข้ากับ AI
  • ความสามารถในการกำหนดค่าและตีความสตรีมข้อมูล IoT และระบบโทรมาตรที่ใช้ MQTT ด้วยความช่วยเหลือของ AI
  • ความสามารถในการตรวจจับและแก้ไขปัญหาเสียงเซ็นเซอร์ การสอบเทียบ และการซิงโครไนซ์เวลาในเอาต์พุต AI

ไม่มีเซ็นเซอร์ที่สมบูรณ์แบบ ไจโรสโคปมีความแม่นยำมากในระยะสั้น แต่จะเลื่อนลอยไปตามกาลเวลา มาตรความเร่งมีเสถียรภาพในระยะยาวแต่มีเสียงรบกวนจากการสั่นสะเทือน ตัวเข้ารหัสจะวัดตำแหน่งอย่างแม่นยำ แต่จะผิดพลาดเมื่อมีสลิป GPS ใช้งานได้ในพื้นที่กว้าง แต่มีความถี่ต่ำและมีเสียงดัง วิศวกรเมคคาทรอนิกส์ต้องสร้างความจริงอันเดียวที่เชื่อถือได้จากเซ็นเซอร์ที่ไม่สมบูรณ์เหล่านี้ นี่คือเซ็นเซอร์ฟิวชั่น ยิ่งไปกว่านั้น ในระบบสมัยใหม่ ข้อมูลนี้ไม่เพียงแต่คงอยู่ในเครื่องเท่านั้น แต่ยังไหลไปยังระบบคลาวด์และศูนย์ควบคุมผ่านเครือข่าย IoT ปัญญาประดิษฐ์เป็นตัวช่วยที่ทรงพลังทั้งในการตั้งค่าอัลกอริธึมฟิวชั่น และการกำหนดค่าและการตีความการวัดและส่งข้อมูลทางไกลของ IoT ในหน่วยนี้ เราครอบคลุมถึงตัวกรองเสริม ตรรกะตัวกรองคาลมาน และวิธีการตั้งค่าโฟลว์ IoT ที่ใช้ MQTT ด้วย AI และกับดักสัญญาณรบกวนและการซิงโครไนซ์

ทำไมต้องใช้เซ็นเซอร์ฟิวชั่น?

เซ็นเซอร์ทุกตัวมี "โซนความถี่ที่ดี" วัตถุประสงค์ของฟิวชันคือการใช้เซ็นเซอร์แต่ละตัวในบริเวณที่มีความแข็งแรงและรองรับเซ็นเซอร์ตัวอื่นในบริเวณที่อ่อนแอ

เซ็นเซอร์

จุดแข็ง

ความอ่อนแอ

ไจโรสโคป

ความเร็วเชิงมุมระยะสั้น การตอบสนองที่รวดเร็ว

ล่องลอยไปตามกาลเวลา

มาตรความเร่ง

การอ้างอิงความชันระยะยาว (แรงโน้มถ่วง)

แรงสั่นสะเทือน/เสียงดังขณะเคลื่อนไหว

ตัวเข้ารหัส

ตำแหน่งที่มีความละเอียดสูง

ข้อผิดพลาดสลิป/ฟันเฟือง

จีพีเอส

ตำแหน่งที่แน่นอน

ความถี่ต่ำ เสียงรบกวน ไม่มีในอาคาร

การใช้เซ็นเซอร์ตัวเดียวจะทำให้เกิดจุดอ่อนของเซ็นเซอร์นั้นเข้าสู่ระบบ ตัวอย่างเช่น ฟิวชั่นผสมผสานมุมที่เร็วแต่เบี่ยงเบนของไจโรสโคปเข้ากับการอ้างอิงที่ช้าแต่มั่นคงของมาตรความเร่ง ทำให้เกิดมุมที่ทั้งเร็วและไม่มีการเบี่ยงเบน

ตัวกรองเสริม

ฟิวชันที่ง่ายที่สุดและพบบ่อยที่สุดคือตัวกรองเสริม แนวคิดนี้เข้าใจง่าย: วางใจไจโรสโคปที่ความถี่สูง (เปลี่ยนแปลงเร็ว) มาตรความเร่งที่ความถี่ต่ำ (ช้า เสถียร) สรุปหนึ่งบรรทัด:

# ตัวกรองเสริม: การประมาณความเจ็บปวด (pitch) # alpha ~ 0.98 : มากกว่าสำหรับไจโรสโคป, น้อยกว่าถึงมาตรความเร่ง (องศา/วินาที) Acceleration_ange : มุมคำนวณจากมาตรความเร่ง (องศา) dt : ระยะเวลาในการสุ่มตัวอย่าง (วินาที) """ gyro_pac = ก่อนหน้า + gyro_speed * dt # รวมไจโรสโคปส่งคืน alpha * gyro_pace + (1 - alpha) * การเร่งความเร็ว_มุม# ตรรกะการตรวจสอบ: ไจโรสโคปล้วนๆ (ดริฟท์) ถ้าอัลฟ่า=1, # ถ้าอัลฟา=0 มาตรความเร่งล้วนๆ (มีเสียงดัง)

ค่าสัมประสิทธิ์อัลฟ่าในที่นี้จะกำหนดความสมดุล หากใกล้กับ 1 จะขึ้นอยู่กับไจโรสโคป (ความเสี่ยงของการดริฟท์จะเพิ่มขึ้น) หากเข้าใกล้ 0 จะขึ้นอยู่กับมาตรความเร่ง (เสียงรบกวนเพิ่มขึ้น) ค่าทั่วไปคือ 0.95–0.98 AI อาจแนะนำค่านี้ แต่อัลฟ่าที่ถูกต้องจะขึ้นอยู่กับอัตราตัวอย่างและลักษณะสัญญาณรบกวนของระบบของคุณ ถูกตั้งค่าเป็นการทดลอง

เคล็ดลับ: เมื่อพิมพ์ตัวกรองรวมไปยัง AI อย่าลืมถามว่าวัด dt อย่างไร ข้อผิดพลาดส่วนใหญ่มาจากการสมมติว่า dt คงที่ แต่ในความเป็นจริง รอบเวลาจะแตกต่างกันไป วัด dt จริงด้วยมิลลิวินาที()/การประทับเวลา ไม่ต้องเขียนค่าคงที่

ลอจิกตัวกรองคาลมาน

ตัวกรองเสริมนั้นเรียบง่ายแต่ไม่ได้จำลองสถิติเสียง ตัวกรองคาลมานสร้างค่าประมาณที่เหมาะสมที่สุด (ภายใต้สมมติฐานบางประการ) โดยการสร้างแบบจำลองสัญญาณรบกวนของเซ็นเซอร์และความไม่แน่นอนของกระบวนการอย่างน่าจะเป็นไปได้ มันทำงานในสองขั้นตอน:

  1. ทำนาย: ทำนายสถานการณ์ถัดไปและความไม่แน่นอนด้วยแบบจำลองระบบ
  2. อัปเดต: ชั่งน้ำหนักการวัดใหม่เทียบกับความน่าเชื่อถือในการวัด (อัตราขยายของคาลมาน) และแก้ไขการประมาณการ

คาลมานเกนเคตอบคำถามโดยอัตโนมัติว่า "ฉันควรเชื่อถือการวัดหรือแบบจำลองมากกว่านี้" ในทุกขั้นตอนโดยอัตโนมัติ หากสัญญาณรบกวนจากการวัดมีขนาดใหญ่ K จะมีขนาดเล็กลง (ความมั่นใจในแบบจำลอง) หากความไม่แน่นอนของกระบวนการมีมาก K จะมีขนาดใหญ่ขึ้น (ความมั่นใจในการวัด) AI เขียนตัวกรองคาลมานหนึ่งมิติได้อย่างง่ายดาย แต่เป็นหน้าที่ของคุณที่จะเลือกความแปรปรวนร่วมของเสียง (`Q`, `R`) อย่างถูกต้อง และพวกมันมาจากสัญญาณรบกวนที่แท้จริงของระบบ

ข้อควรสนใจ: ค่า Q (สัญญาณรบกวนจากกระบวนการ) และ R (สัญญาณรบกวนในการวัด) ที่กำหนดโดย AI เป็นตัวอย่าง/ตัวยึดตำแหน่ง หากคุณไม่ได้ระบุสิ่งเหล่านี้จากสัญญาณรบกวนการวัดจริงของระบบ (เช่น ความแปรปรวนที่วัดได้เมื่อเซ็นเซอร์อยู่กับที่) ตัวกรองจะช้าเกินไปหรือมีเสียงดังเกินไป อย่าเชื่อว่าความแปรปรวนร่วมที่ AI มอบให้นั้นเป็น "มูลค่าที่แท้จริง"

สตรีมข้อมูล IoT: MQTT และการวัดและส่งข้อมูลทางไกล

ข้อมูลที่สะอาดที่คุณสร้างขึ้นด้วยฟิวชันมักจะถูกส่งไปยังศูนย์ผ่านเครือข่าย IoT โปรโตคอลที่พบบ่อยที่สุดในอุตสาหกรรมคือ MQTT: รุ่นน้ำหนักเบา เผยแพร่และสมัครสมาชิก เหมาะสำหรับแบนด์วิธต่ำ AI สร้างรหัสผู้เผยแพร่/สมาชิก MQTT และสคีมาการวัดและส่งข้อมูลทางไกล JSON อย่างรวดเร็ว

นำเข้า json, timeimport paho.mqtt.client เป็น mqttclient = mqtt.Client()client.connect("broker.local", 1883, keepalive=60)def telemetry_broadcast(อุณหภูมิ, อุณหภูมิ, การสั่นสะเทือน_rms): message = { "ts": time.time(), # timestamp - เงื่อนไขสำหรับการซิงโครไนซ์ "pain_deg": รอบ (pain, 2), "temperature_c": รอบ (อุณหภูมิ 1), "vibration_rms": รอบ (temperature_rms, 3), "unit": {"pain": "deg", "temperature": "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 ทำให้ข้อความสูญหาย

เสียงรบกวน การสอบเทียบ และการซิงโครไนซ์

ไม่ว่าฟิวชั่นจะดีแค่ไหน ปัญหาสามประการเกี่ยวกับอินพุตจะบิดเบือนผลลัพธ์:

  • สัญญาณรบกวน: หากข้อมูลเซ็นเซอร์ดิบเข้าสู่ฟิวชันโดยไม่ได้กรอง เอาต์พุตฟิวชันก็จะมีเสียงรบกวนเช่นกัน อาจจำเป็นต้องมีการกรองล่วงหน้า (ค่ามัธยฐาน, ค่าผ่านต่ำ)
  • การสอบเทียบ: ข้อผิดพลาดออฟเซ็ตและสเกล (เช่น จุดศูนย์ของมาตรความเร่งถูกเลื่อน) ทำให้เกิดการหลอมละลายอย่างเป็นระบบ เซ็นเซอร์ต้องได้รับการปรับเทียบก่อนใช้งาน
  • การซิงโครไนซ์เวลา: จำเป็นต้องมีการประทับเวลาและการประมาณค่าเพื่อจัดตำแหน่งเซ็นเซอร์ที่สุ่มตัวอย่างในอัตราที่แตกต่างกัน (เช่น GPS 10 Hz พร้อม IMU 1 kHz)

AI สามารถเพิ่มขั้นตอนเหล่านี้ลงในโค้ดได้ แต่ไม่ว่าจะจำเป็นต้องใช้แต่ละขั้นตอนและพารามิเตอร์ของขั้นตอนนั้นเฉพาะเจาะจงกับระบบของคุณหรือไม่ ในเอาต์พุต AI “การสอบเทียบอยู่ที่ไหน” และ “การประทับเวลาสอดคล้องกันหรือไม่” อย่าลืมถามคำถาม

พรอมต์ที่อ่อนแอ / พรอมต์ที่แข็งแกร่ง

อ่อนแอ:"คำนวณมุมจากข้อมูล IMU"(ตัวกรองใด มีการจัดการดริฟท์หรือไม่ dt เป็นอย่างไร ไม่ชัดเจน) แข็งแกร่ง:"รวมข้อมูลมาตรความเร่งและไจโรสโคปจาก MPU6050 เข้ากับตัวกรองอินทิกรัลและประมาณมุมพิทช์ คำนวณ dt จากการประทับเวลาจริง อย่าถือว่าค่าคงที่ ตั้งค่าอัลฟ่าเป็นพารามิเตอร์ (ค่าเริ่มต้น 0.98) คำนวณมุมของมาตรความเร่งด้วย tane2 กรองเป็นการเขียนเป็นคลาส เก็บมุมก่อนหน้า เพิ่ม ตัวกรองล่วงหน้าค่ามัธยฐานเสริมสำหรับเสียงรบกวน"

มินิเคส

Selin วิศวกรด้านหุ่นยนต์ต้องการตัวกรองเสริมจาก AI สำหรับการประมาณมุมของหุ่นยนต์ทรงตัวสองล้อ AI ให้โค้ดที่ชัดเจน แต่หุ่นยนต์จะค่อยๆ โน้มตัวไปด้านใดด้านหนึ่ง Selin ตรวจสอบ dt: โค้ดถือว่า dt มีค่าคงที่ 0.01 วินาที ในขณะที่รอบเวลาจะแตกต่างกันไปเนื่องจากการวัดและส่งข้อมูลทางไกลของ Bluetooth เมื่อคำนวณ dt จากการประทับเวลาจริง ค่าเบี่ยงเบนจะลดลงแต่ไม่ได้หายไปทั้งหมด จากนั้นเขาก็ดูการสอบเทียบของมาตรความเร่ง แม้ว่าเซ็นเซอร์จะอยู่กับที่ แต่ยังมีออฟเซ็ต 2° เมื่อฉันลบออฟเซ็ตการสอบเทียบ หุ่นยนต์จะยืนตัวตรง สุดท้ายจะสังเกตเห็นว่าใช้ qos=0 เมื่อออกอากาศการวัดและส่งข้อมูลทางไกลผ่าน MQTT และเพิ่มเป็น qos=1 สำหรับข้อมูลมุมวิกฤต AI ส่งโครงกระดูกฟิวชันได้ภายในไม่กี่นาที แต่การตรวจสอบของวิศวกรพบปัญหาเฉพาะระบบสามประการ: ตัวแปร dt, ออฟเซ็ตการสอบเทียบ และ QoS

ข้อผิดพลาดทั่วไป

  • สมมติว่า dt คงที่ ในขณะที่รอบเวลาแตกต่างกันไป (ฟิวชันดริฟท์)
  • การหลอมรวมเซ็นเซอร์โดยไม่ต้องสอบเทียบ (ออฟเซ็ตที่เป็นระบบ)
  • กำลังพยายามจัดตำแหน่งเซ็นเซอร์ที่มีความเร็วต่างกันโดยไม่ประทับเวลา
  • ออกไปพร้อมกับค่าตัวอย่างของ AI โดยไม่ต้องวัดค่าความแปรปรวนร่วมของ Kalman Q/R จากสัญญาณรบกวนจริง
  • อนุญาตให้ข้อความสูญหายโดยใช้ qos=0 กับข้อมูล IoT ที่สำคัญ
  • ให้ข้อมูลดิบที่มีสัญญาณรบกวนเพื่อฟิวชั่นโดยไม่ต้องกรองล่วงหน้า

โดยสรุป

  • ฟิวชั่นใช้เซ็นเซอร์แต่ละตัวในบริเวณความถี่ที่มีความแรงและชดเชยจุดอ่อน
  • ตัวกรองเสริมนั้นเรียบง่าย สร้างความสมดุลของไจโรสโคป-มาตรความเร่งด้วยอัลฟ่า
  • ตัวกรองคาลมานจำลองเสียงรบกวนอย่างน่าจะเป็น Q/R มาจากระบบจริง
  • ในการวัดและส่งข้อมูลทางไกลของ MQTT การประทับเวลาและ QoS ที่เหมาะสมถือเป็นการตัดสินใจทางวิศวกรรมที่สำคัญ
  • สัญญาณรบกวน การสอบเทียบ และการซิงโครไนซ์เวลาจะกำหนดคุณภาพของฟิวชัน
  • dt วัดจากเรียลไทม์ การสอบเทียบและ QoS ได้รับการตรวจสอบโดยไม่ปล่อยให้เป็นหน้าที่ของ AI

งานสมัคร

สำหรับ IMU (ข้อมูลไจโร + มาตรความเร่งจริงหรือจำลอง) ให้ AI สร้างตัวกรองรวม และตรวจสอบให้แน่ใจว่า dt คำนวณจากการประทับเวลาจริง จากนั้น: (1) ลองใช้อัลฟ่าสำหรับ 0.90, 0.98 และ 1.0 และสังเกตความสมดุลของดริฟท์และสัญญาณรบกวน (2) เพิ่มออฟเซ็ตคงที่โดยเจตนา (ข้อผิดพลาดในการสอบเทียบ) ให้กับเซ็นเซอร์ และดูว่าเอาท์พุตฟิวชั่นเบี่ยงเบนไปอย่างไร (3) แปลงข้อมูลเป็นสคีมา MQTT JSON และเพิ่มการประทับเวลาและฟิลด์หน่วย โปรดทราบว่าค่าอัลฟ่าใดที่ให้ผลลัพธ์ที่สมดุลที่สุดสำหรับข้อมูลของคุณ และค่าชดเชยการปรับเทียบจะบิดเบือนเอาต์พุตมากน้อยเพียงใด