กำไร:
- ความสามารถในการสร้างตรรกะฟิวชั่น (ตัวรวม/ตัวกรองคาลมาน) ที่รวม 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 จริงด้วยมิลลิวินาที()/การประทับเวลา ไม่ต้องเขียนค่าคงที่
ลอจิกตัวกรองคาลมาน
ตัวกรองเสริมนั้นเรียบง่ายแต่ไม่ได้จำลองสถิติเสียง ตัวกรองคาลมานสร้างค่าประมาณที่เหมาะสมที่สุด (ภายใต้สมมติฐานบางประการ) โดยการสร้างแบบจำลองสัญญาณรบกวนของเซ็นเซอร์และความไม่แน่นอนของกระบวนการอย่างน่าจะเป็นไปได้ มันทำงานในสองขั้นตอน:
- ทำนาย: ทำนายสถานการณ์ถัดไปและความไม่แน่นอนด้วยแบบจำลองระบบ
- อัปเดต: ชั่งน้ำหนักการวัดใหม่เทียบกับความน่าเชื่อถือในการวัด (อัตราขยายของคาลมาน) และแก้ไขการประมาณการ
คาลมานเกนเคตอบคำถามโดยอัตโนมัติว่า "ฉันควรเชื่อถือการวัดหรือแบบจำลองมากกว่านี้" ในทุกขั้นตอนโดยอัตโนมัติ หากสัญญาณรบกวนจากการวัดมีขนาดใหญ่ 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 และเพิ่มการประทับเวลาและฟิลด์หน่วย โปรดทราบว่าค่าอัลฟ่าใดที่ให้ผลลัพธ์ที่สมดุลที่สุดสำหรับข้อมูลของคุณ และค่าชดเชยการปรับเทียบจะบิดเบือนเอาต์พุตมากน้อยเพียงใด