नफा:
- फ्यूजन लॉजिक (इंटिग्रेटर/कलमन फिल्टर) तयार करण्याची क्षमता जे AI सह IMU, एन्कोडर आणि अंतर सेन्सर डेटा एकत्र करते
- AI च्या मदतीने MQTT-आधारित IoT डेटा प्रवाह आणि टेलीमेट्री कॉन्फिगर आणि व्याख्या करण्याची क्षमता
- एआय आउटपुटमध्ये सेन्सरचा आवाज, कॅलिब्रेशन आणि वेळ सिंक्रोनाइझेशन समस्या शोधण्याची आणि दुरुस्त करण्याची क्षमता
कोणताही सेन्सर परिपूर्ण नसतो. जायरोस्कोप अल्पावधीत अतिशय अचूक आहे, परंतु कालांतराने ते वाहून जाते. प्रवेगमापक दीर्घकाळ स्थिर असतो परंतु कंपनातून आवाज येतो. एन्कोडर तंतोतंत स्थितीचे मोजमाप करतो, परंतु जेव्हा स्लिप असते तेव्हा ते चुकीचे असते. GPS विस्तृत क्षेत्रात कार्य करते परंतु कमी वारंवारता आणि गोंगाटयुक्त आहे. मेकॅट्रॉनिक्स इंजिनिअरला या अपूर्ण सेन्सर्समधून एकच, विश्वासार्ह सत्य निर्माण करावे लागते; हे सेन्सर फ्यूजन आहे. शिवाय, आधुनिक प्रणालींमध्ये, हा डेटा केवळ स्थानिकच राहत नाही, तर IoT नेटवर्कद्वारे क्लाउड आणि नियंत्रण केंद्रांवर प्रवाहित होतो. फ्यूजन अल्गोरिदम सेट करणे आणि IoT टेलिमेट्री कॉन्फिगर करणे आणि त्याचा अर्थ लावणे या दोन्हीमध्ये कृत्रिम बुद्धिमत्ता ही एक शक्तिशाली मदत आहे. या युनिटमध्ये, आम्ही पूरक फिल्टर, कालमन फिल्टर लॉजिक आणि AI सह MQTT-आधारित IoT प्रवाह कसे सेट करावे आणि आवाज आणि सिंक्रोनायझेशन सापळे कसे पकडायचे ते समाविष्ट करतो.
सेन्सर फ्यूजन का?
प्रत्येक सेन्सरमध्ये "चांगली वारंवारता झोन" असतो. फ्यूजनचा उद्देश हा आहे की प्रत्येक सेन्सरचा वापर ते मजबूत असलेल्या भागात करणे आणि ते कमकुवत असलेल्या भागात दुसऱ्यासह त्याचे समर्थन करणे.
सेन्सर
मजबूत बिंदू
अशक्तपणा
जायरोस्कोप
अल्पकालीन टोकदार वेग, जलद प्रतिसाद
कालांतराने वाहून जाणे
प्रवेगमापक
दीर्घकालीन उतार संदर्भ (गुरुत्वाकर्षण)
हालचालीवर कंपन/गोंगाट
एन्कोडर
उच्च रिझोल्यूशन स्थान
स्लिप/बॅकलॅश त्रुटी
जीपीएस
निरपेक्ष स्थिती
कमी वारंवारता, आवाज, घरामध्ये नाही
एकाच सेन्सरवर विसंबून राहिल्याने त्या सेन्सरच्या कमकुवतपणाचा सिस्टीममध्ये परिचय होतो. फ्यूजन, उदाहरणार्थ, जाइरोस्कोपचा वेगवान पण वाहणारा कोन एक्सीलरोमीटरच्या संथ पण स्थिर संदर्भासह एकत्र करतो, जो जलद आणि ड्रिफ्ट-फ्री दोन्ही कोन देतो.
पूरक फिल्टर
सर्वात सोपा आणि सर्वात सामान्य संलयन म्हणजे पूरक फिल्टर. कल्पना अंतर्ज्ञानी आहे: उच्च वारंवारता (जलद बदल) वर जाइरोस्कोपवर विश्वास ठेवा, कमी वारंवारतेवर प्रवेगक (मंद, स्थिर). एका ओळीचा सारांश:
# पूरक फिल्टर: वेदना अंदाज (पिच) # अल्फा ~ 0.98 : जायरोस्कोपसाठी अधिक, एक्सीलरोमीटरला कमी (डिग्री/सेकंद) प्रवेग_कोण : एक्सलेरोमीटर (डिग्री) वरून मोजलेले कोन dt : सॅम्पलिंग कालावधी (सेकंद) """ मागील gyrotegypes = +ed_pac *दर gyroscope रिटर्न अल्फा * gyro_pace + (1 - alpha) * acceleration_angle# सत्यापन तर्क: शुद्ध gyroscope (drifts) if alpha=1, # if alpha=0 pure accelerometer (noisy).
येथे गुणांक अल्फा शिल्लक निश्चित करतो: जर ते 1 च्या जवळ असेल, तर ते जाइरोस्कोपवर अवलंबून असते (ड्रिफ्ट वाढण्याचा धोका), जर तो 0 च्या जवळ असेल, तर तो एक्सीलरोमीटरवर अवलंबून असतो (आवाज वाढतो). ठराविक मूल्य 0.95–0.98 आहे. AI हे मूल्य सुचवू शकते, परंतु योग्य अल्फा तुमच्या सिस्टमच्या नमुना दर आणि आवाज वर्णावर अवलंबून आहे; प्रायोगिकरित्या सेट केले आहे.
टीप: AI वर अविभाज्य फिल्टर प्रिंट करताना, dt कसे मोजले जाते ते विचारण्याची खात्री करा. बहुतेक त्रुटी dt स्थिर आहे असे गृहीत धरून येतात परंतु प्रत्यक्षात सायकल वेळ बदलतो. millis()/timestamp सह dt real मोजा, स्थिरांक लिहू नका.
कालमन फिल्टर लॉजिक
पूरक फिल्टर सोपे आहे परंतु आवाज आकडेवारीचे मॉडेल करत नाही. Kalman फिल्टर संभाव्यतेने सेन्सर आवाज आणि प्रक्रिया अनिश्चिततेचे मॉडेलिंग करून एक इष्टतम (विशिष्ट गृहितके अंतर्गत) अंदाज तयार करते. हे दोन चरणांमध्ये कार्य करते:
- अंदाज: पुढील परिस्थितीचा अंदाज लावा आणि सिस्टम मॉडेलसह तिची अनिश्चितता.
- अपडेट: मापन विश्वासार्हतेच्या (कलमन गेन) विरुद्ध नवीन मापाचे वजन करा आणि अंदाज दुरुस्त करा.
कालमन गेन के प्रत्येक पायरीवर "माझ्या मापनावर किंवा मॉडेलवर अधिक विश्वास ठेवावा" या प्रश्नाचे आपोआप उत्तर देते. जर मापन आवाज मोठा असेल, तर K लहान होतो (मॉडेलमधील आत्मविश्वास), जर प्रक्रियेची अनिश्चितता मोठी असेल, तर K मोठा होतो (मापनातील आत्मविश्वास). AI सहजपणे एक-आयामी Kalman फिल्टर लिहिते; परंतु नॉइज कोव्हेरियन्स (`Q`, `R`) योग्यरित्या निवडणे हे तुमचे काम आहे आणि ते सिस्टीमच्या वास्तविक आवाजातून येतात.
लक्ष द्या: AI द्वारे दिलेली Q (प्रक्रिया आवाज) आणि R (मापन आवाज) मूल्ये नमुना/प्लेसहोल्डर आहेत. जर तुम्ही हे सिस्टीमच्या वास्तविक मापन आवाजावरून निर्धारित केले नाही (उदा. सेन्सर स्थिर असताना मोजलेले भिन्नता), फिल्टर एकतर खूप मंद किंवा खूप गोंगाट करणारा असेल. 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(तापमान, तापमान, vibration_rms): संदेश = {"ts": time.time () "समक्रमणासाठी वेळ. टाइम्टाईझेशन:" गोल(वेदना, 2), "तापमान_सी": गोल(तापमान, 1), "कंपन_आरएमएस": गोल(तापमान_आरएमएस, 3), "युनिट": {"वेदना": "डिग्री", "तापमान": "सी", "कंपन": "मिमी/एस"} } क्लायंट.publish("machine/jmesdu) , , qos=1)# qos=1: किमान एकदा वितरित. गंभीर डेटावर qos=0 वापरणे (हरवले जाऊ शकते).
येथे दोन अभियांत्रिकी निर्णय महत्त्वाचे आहेत: (१) टाइमस्टँपिंग (टीएस) प्रत्येक संदेश—वेगवेगळ्या सेन्सर्सचे वेगवेगळ्या वेळी नमुने घेतले जातात, सिंक्रोनाइझेशन केवळ टाइमस्टँपिंगसह शक्य आहे; (2) QoS स्तर—महत्वपूर्ण डेटा किमान qos=1 वापरतो (किमान एकदा वितरित केला जातो), qos=0 संदेश गमावण्याची परवानगी देतो.
आवाज, कॅलिब्रेशन आणि सिंक्रोनाइझेशन
फ्यूजन कितीही चांगले असले तरीही, इनपुटमधील तीन समस्या निकाल विकृत करतात:
- गोंगाट: जर कच्चा सेन्सर डेटा फिल्टर न करता फ्यूजनमध्ये गेला तर फ्यूजन आउटपुट देखील गोंगाटयुक्त असेल. प्री-फिल्टरिंग (मध्यम, कमी पास) आवश्यक असू शकते.
- कॅलिब्रेशन: ऑफसेट आणि स्केल एरर (उदा. प्रवेगमापकाचा शून्य बिंदू हलविला आहे) फ्यूजनची पद्धतशीर दिशाभूल करतात. सेन्सर वापरण्यापूर्वी कॅलिब्रेट करणे आवश्यक आहे.
- टाइम सिंक्रोनाइझेशन: टाइमस्टॅम्पिंग आणि इंटरपोलेशन वेगवेगळ्या दरांवर सॅम्पल केलेले सेन्सर संरेखित करण्यासाठी आवश्यक आहे (उदा. 1 kHz IMU सह 10 Hz GPS).
AI कोडमध्ये या पायऱ्या जोडू शकते, परंतु प्रत्येक आवश्यक आहे की नाही आणि त्याचे पॅरामीटर्स तुमच्या सिस्टमसाठी विशिष्ट आहेत. एआय आउटपुटमध्ये "कॅलिब्रेशन कुठे आहे?" आणि "टाइमस्टॅम्प संरेखित आहेत?" प्रश्न जरूर विचारा.
कमकुवत प्रॉम्प्ट / मजबूत प्रॉम्प्ट
WEAK:"IMU डेटावरून कोनाची गणना करा."(कोणता फिल्टर? ड्रिफ्ट हाताळला जातो? कसा dt? अस्पष्ट.)STRONG:"अविभाज्य फिल्टर आणि अंदाज पिच अँगलसह MPU6050 मधील एक्सेलेरोमीटर आणि जायरोस्कोप डेटा एकत्र करा. रिअल टाइमस्टॅम्पवरून dt मोजा, (अल्पफाल्ट 908 असे गृहीत धरू नका). टॅन 2 सह एक्सीलरोमीटर कोनाची गणना करा वर्ग म्हणून लिहा, मागील कोन ठेवा, आवाजासाठी पर्यायी मध्य प्रीफिल्टर जोडा."
मिनी केस
रोबोटिक्स अभियंता सेलीनला दुचाकी संतुलन राखणाऱ्या रोबोटवर कोन अंदाजासाठी AI कडून पूरक फिल्टर हवा आहे. एआय स्वच्छ कोड देते, परंतु रोबोट हळूहळू एका बाजूला झुकतो. सेलिन dt तपासतो: कोड dt स्थिर 0.01 s आहे असे गृहीत धरतो, तर सायकल वेळ ब्लूटूथ टेलीमेट्रीमुळे बदलते. जेव्हा वास्तविक टाइमस्टॅम्पवरून dt ची गणना केली जाते, तेव्हा प्रवाह कमी होतो परंतु पूर्णपणे अदृश्य होत नाही. मग तो एक्सीलरोमीटरच्या कॅलिब्रेशनकडे पाहतो; सेन्सर स्थिर असतानाही 2° ऑफसेट असतो. जेव्हा मी कॅलिब्रेशन ऑफसेट काढतो, तेव्हा रोबोट सरळ उभा राहतो. शेवटी, हे लक्षात येते की ते MQTT द्वारे टेलिमेट्री प्रसारित करताना qos=0 वापरते आणि गंभीर कोन डेटासाठी ते qos=1 पर्यंत वाढवते. एआयने काही मिनिटांत फ्यूजन स्केलेटन वितरित केले; परंतु अभियंत्याच्या पडताळणीत तीन सिस्टम-विशिष्ट समस्या आढळल्या: व्हेरिएबल dt, कॅलिब्रेशन ऑफसेट आणि QoS.
सामान्य चुका
- गृहीत धरून की dt स्थिर आहे, तर सायकल वेळ बदलतो (फ्यूजन drifts).
- फ्यूजिंग सेन्सर कॅलिब्रेट न करता (सिस्टमॅटिक ऑफसेट).
- टाइमस्टँपिंगशिवाय वेगवेगळ्या गतींचे सेन्सर संरेखित करण्याचा प्रयत्न करत आहे.
- खऱ्या गोंगाटातून काल्मन क्यू/आर सहप्रवाह मोजल्याशिवाय AI च्या नमुना मूल्यासह सोडणे.
- गंभीर IoT डेटावर qos=0 वापरून संदेश गमावण्यास अनुमती देणे.
- प्री-फिल्टरिंगशिवाय फ्यूजनला कच्चा गोंगाट करणारा डेटा देणे.
सारांशात
- फ्यूजन प्रत्येक सेन्सरचा वापर फ्रिक्वेंसी प्रदेशात करते जेथे ते मजबूत असते आणि त्याच्या कमकुवततेची भरपाई करते.
- पूरक फिल्टर सोपे आहे; अल्फासह जायरोस्कोप-एक्सेलेरोमीटर शिल्लक स्थापित करते.
- Kalman फिल्टर मॉडेल आवाज संभाव्यतः; Q/R वास्तविक प्रणालीतून येतो.
- MQTT टेलीमेट्रीमध्ये, टाइमस्टँपिंग आणि योग्य QoS हे अभियांत्रिकीचे महत्त्वपूर्ण निर्णय आहेत.
- आवाज, कॅलिब्रेशन आणि वेळ सिंक्रोनाइझेशन फ्यूजनची गुणवत्ता निर्धारित करतात.
- dt हे रिअल टाइमवरून मोजले जाते; कॅलिब्रेशन आणि QoS AI वर न सोडता सत्यापित केले जातात.
अर्ज कार्य
IMU साठी (वास्तविक किंवा सिम्युलेटेड gyro + एक्सीलरोमीटर डेटा) AI ने इंटिग्रल फिल्टर जनरेट केले आहे आणि dt ची रिअल टाइमस्टॅम्पवरून गणना केली आहे याची खात्री करा. नंतर: (1) 0.90, 0.98 आणि 1.0 साठी अल्फा वापरून पहा आणि ड्रिफ्ट आणि नॉइज बॅलन्स पहा, (2) सेन्सरमध्ये हेतुपुरस्सर फिक्स्ड ऑफसेट (कॅलिब्रेशन एरर) जोडा आणि फ्यूजन आउटपुट कसे ड्रिफ्ट होते ते पहा, (3) डेटा MQTT JSON स्कीमामध्ये रूपांतरित करा आणि टाइमस्टॅम्प आणि युनिट फील्ड जोडा. लक्षात घ्या की कोणते अल्फा मूल्य तुमच्या डेटासाठी सर्वात संतुलित परिणाम देते आणि कॅलिब्रेशन ऑफसेट आउटपुटला किती विकृत करते.