એકમ 4 / 9

સેન્સર ફ્યુઝન અને IoT ડેટા એકીકરણ

નફો:

  • AI સાથે IMU, એન્કોડર અને ડિસ્ટન્સ સેન્સર ડેટાને જોડતા ફ્યુઝન લોજિક (ઇન્ટિગ્રેટર/કલમેન ફિલ્ટર) બનાવવાની ક્ષમતા
  • AI ની મદદથી MQTT-આધારિત IoT ડેટા સ્ટ્રીમ્સ અને ટેલિમેટ્રીને રૂપરેખાંકિત અને અર્થઘટન કરવાની ક્ષમતા
  • AI આઉટપુટમાં સેન્સરનો અવાજ, માપાંકન અને સમય સિંક્રનાઇઝેશન સમસ્યાઓ શોધવા અને સુધારવાની ક્ષમતા

કોઈ સેન્સર સંપૂર્ણ નથી. ગાયરોસ્કોપ ટૂંકા ગાળામાં ખૂબ જ સચોટ છે, પરંતુ સમય જતાં તે વહી જાય છે. એક્સીલેરોમીટર લાંબા ગાળે સ્થિર છે પરંતુ કંપનથી અવાજ મેળવે છે. એન્કોડર સ્થિતિને ચોક્કસ રીતે માપે છે, પરંતુ જ્યારે સ્લિપ હોય ત્યારે તે ખોટું છે. GPS વિશાળ વિસ્તારમાં કામ કરે છે પરંતુ તે ઓછી આવર્તન અને ઘોંઘાટવાળું છે. મેકાટ્રોનિક્સ એન્જિનિયરે આ અપૂર્ણ સેન્સર્સમાંથી એક જ, વિશ્વસનીય સત્ય ઉત્પન્ન કરવું પડશે; આ સેન્સર ફ્યુઝન છે. તદુપરાંત, આધુનિક સિસ્ટમોમાં, આ ડેટા માત્ર સ્થાનિક રહેતો નથી, પરંતુ IoT નેટવર્ક દ્વારા ક્લાઉડ અને નિયંત્રણ કેન્દ્રો પર વહે છે. કૃત્રિમ બુદ્ધિ એ ફ્યુઝન એલ્ગોરિધમ્સ સેટ કરવા અને IoT ટેલિમેટ્રીનું રૂપરેખાંકન અને અર્થઘટન બંનેમાં શક્તિશાળી સહાયક છે. આ એકમમાં, અમે પૂરક ફિલ્ટર, કાલમેન ફિલ્ટર લોજિક અને AI સાથે MQTT-આધારિત IoT ફ્લો કેવી રીતે સેટ કરવો અને અવાજ અને સિંક્રોનાઇઝેશન ટ્રેપ્સને કેવી રીતે પકડવું તે આવરી લઈએ છીએ.

શા માટે સેન્સર ફ્યુઝન?

દરેક સેન્સરમાં "ગુડ ફ્રીક્વન્સી ઝોન" હોય છે. ફ્યુઝનનો હેતુ એ છે કે દરેક સેન્સરનો ઉપયોગ તે વિસ્તારમાં જ્યાં તે મજબૂત હોય અને જ્યાં તે નબળા હોય ત્યાં બીજા સાથે તેને ટેકો આપે.

સેન્સર

મજબૂત બિંદુ

નબળાઈ

ગાયરોસ્કોપ

ટૂંકા ગાળાના કોણીય વેગ, ઝડપી પ્રતિભાવ

સમય જતાં ડ્રિફ્ટ

એક્સેલરોમીટર

લાંબા ગાળાના ઢાળ સંદર્ભ (ગુરુત્વાકર્ષણ)

હલનચલન પર કંપન/ઘોંઘાટ

એન્કોડર

ઉચ્ચ રીઝોલ્યુશન સ્થાન

સ્લિપ/બેકલેશ ભૂલ

જીપીએસ

સંપૂર્ણ સ્થિતિ

ઓછી આવર્તન, ઘોંઘાટ, કોઈ ઇન્ડોર નથી

એક જ સેન્સર પર આધાર રાખવાથી સિસ્ટમમાં તે સેન્સરની નબળાઈનો પરિચય થાય છે. ફ્યુઝન, ઉદાહરણ તરીકે, ગીરોસ્કોપના ઝડપી પરંતુ ડ્રિફ્ટિંગ એંગલને એક્સીલેરોમીટરના ધીમા પરંતુ સ્થિર સંદર્ભ સાથે જોડે છે, જે ઝડપી અને ડ્રિફ્ટ-ફ્રી બંને હોય તેવો ખૂણો આપે છે.

પૂરક ફિલ્ટર

સૌથી સરળ અને સૌથી સામાન્ય ફ્યુઝન એ પૂરક ફિલ્ટર છે. આ વિચાર સાહજિક છે: ઉચ્ચ આવર્તન (ઝડપી ફેરફાર) પર જાયરોસ્કોપ પર વિશ્વાસ કરો, ઓછી આવર્તન (ધીમી, સ્થિર) પર પ્રવેગક પર વિશ્વાસ કરો. એક લીટી સારાંશ:

# પૂરક ફિલ્ટર: પીડા અંદાજ (પીચ) # આલ્ફા ~ 0.98 : ગાયરોસ્કોપમાં વધુ, એક્સેલેરોમીટર (ડિગ્રી/સેકંડ) પ્રવેગકાંક માટે ઓછું: એક્સેલેરોમીટર (ડિગ્રી) થી ગણતરી કરાયેલ કોણ dt : નમૂના લેવાનો સમયગાળો (સેકંડ) """ અગાઉના gyrotegypes = +ed_pac_દરમાં gyroscope વળતર આલ્ફા * gyro_pace + (1 - આલ્ફા) * પ્રવેગક_કોણ# ચકાસણી તર્ક: શુદ્ધ ગાયરોસ્કોપ (ડ્રિફ્ટ્સ) જો આલ્ફા=1, # જો આલ્ફા=0 શુદ્ધ પ્રવેગક (ઘોંઘાટ) બેને સંતુલિત કરે છે.

ગુણાંક આલ્ફા અહીં સંતુલન નક્કી કરે છે: જો તે 1 ની નજીક હોય, તો તે જિરોસ્કોપ (ડ્રિફ્ટમાં વધારો થવાનું જોખમ) પર આધાર રાખે છે, જો તે 0 ની નજીક હોય, તો તે એક્સેલરોમીટર (અવાજ વધે છે) પર આધાર રાખે છે. લાક્ષણિક મૂલ્ય 0.95–0.98 છે. AI આ મૂલ્ય સૂચવી શકે છે, પરંતુ સાચો આલ્ફા તમારી સિસ્ટમના નમૂના દર અને અવાજના પાત્ર પર આધારિત છે; પ્રાયોગિક ધોરણે સેટ કરેલ છે.

ટીપ: જ્યારે AI માં અભિન્ન ફિલ્ટર પ્રિન્ટ કરો, ત્યારે ખાતરી કરો કે dt કેવી રીતે માપવામાં આવે છે. મોટાભાગની ભૂલો dt સતત છે એમ માનીને આવે છે પરંતુ વાસ્તવમાં ચક્ર સમય બદલાય છે. millis()/timestamp વડે dt real માપો, સ્થિરાંકો લખશો નહીં.

Kalman ફિલ્ટર લોજિક

પૂરક ફિલ્ટર સરળ છે પરંતુ ઘોંઘાટના આંકડાનું મોડેલ કરતું નથી. કાલમેન ફિલ્ટર સંભવિત રીતે સેન્સર અવાજ અને પ્રક્રિયાની અનિશ્ચિતતાનું મોડેલિંગ કરીને શ્રેષ્ઠ (ચોક્કસ ધારણાઓ હેઠળ) અંદાજ ઉત્પન્ન કરે છે. તે બે પગલામાં કાર્ય કરે છે:

  1. આગાહી કરો: સિસ્ટમ મોડેલ સાથે આગામી પરિસ્થિતિ અને તેની અનિશ્ચિતતાની આગાહી કરો.
  2. અપડેટ: માપનની વિશ્વસનીયતા (કાલમાન ગેઇન) સામે નવા માપનું વજન કરો અને અંદાજને ઠીક કરો.

કાલમેન ગેઇન કે દરેક પગલા પર "શું મારે માપન અથવા મોડેલ પર વધુ વિશ્વાસ કરવો જોઈએ" પ્રશ્નનો આપમેળે જવાબ આપે છે. જો માપનો અવાજ મોટો હોય, તો K નાનો બને છે (મોડેલમાં વિશ્વાસ), જો પ્રક્રિયાની અનિશ્ચિતતા મોટી હોય, તો K મોટી બને છે (માપમાં વિશ્વાસ). AI સરળતાથી એક-પરિમાણીય કાલમેન ફિલ્ટર લખે છે; પરંતુ ઘોંઘાટની સહવર્તન (`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-() સમન્વયન માટે સમય. round(pain, 2), "temperature_c": round(temperature, 1), "vibration_rms": round(temperature_rms, 3), "unit": {"pain": "deg", "temperature": "C", "vibration": "mm/s"} } client.publish("machine/jmesdu), , qos=1)# qos=1: ઓછામાં ઓછું એકવાર વિતરિત. જટિલ ડેટા પર qos=0 (ખોવાઈ શકે છે) નો ઉપયોગ કરવો.

બે એન્જિનિયરિંગ નિર્ણયો અહીં મહત્વપૂર્ણ છે: (1) ટાઇમસ્ટેમ્પિંગ (ts) દરેક સંદેશ-વિવિધ સેન્સર અલગ-અલગ સમયે નમૂના લેવામાં આવે છે, સિંક્રોનાઇઝેશન ફક્ત ટાઇમસ્ટેમ્પિંગ સાથે જ શક્ય છે; (2) QoS સ્તર- જટિલ ડેટા ઓછામાં ઓછા qos=1 (ઓછામાં ઓછા એક વખત વિતરિત) નો ઉપયોગ કરે છે, qos=0 સંદેશ ગુમાવવાની મંજૂરી આપે છે.

ઘોંઘાટ, કેલિબ્રેશન અને સિંક્રનાઇઝેશન

ફ્યુઝન કેટલું સારું છે, ઇનપુટ સાથેની ત્રણ સમસ્યાઓ પરિણામને વિકૃત કરે છે:

  • ઘોંઘાટ: જો કાચો સેન્સર ડેટા ફિલ્ટર કર્યા વિના ફ્યુઝનમાં જાય છે, તો ફ્યુઝન આઉટપુટ પણ ઘોંઘાટીયા હશે. પ્રી-ફિલ્ટરિંગ (મધ્યમ, નીચા પાસ)ની જરૂર પડી શકે છે.
  • માપાંકન: ઓફસેટ અને સ્કેલની ભૂલો (દા.ત. એક્સીલેરોમીટરનો શૂન્ય બિંદુ શિફ્ટ થાય છે) વ્યવસ્થિત રીતે ફ્યુઝનને ગેરમાર્ગે દોરે છે. ઉપયોગ કરતા પહેલા સેન્સરને માપાંકિત કરવું આવશ્યક છે.
  • સમય સુમેળ: અલગ-અલગ દરે નમૂના લેવામાં આવેલા સેન્સરને સંરેખિત કરવા માટે ટાઇમસ્ટેમ્પિંગ અને ઇન્ટરપોલેશન જરૂરી છે (દા.ત. 1 kHz IMU સાથે 10 Hz GPS).

AI કોડમાં આ પગલાં ઉમેરી શકે છે, પરંતુ દરેક જરૂરી છે કે કેમ અને તેના પરિમાણો તમારી સિસ્ટમ માટે વિશિષ્ટ છે. AI આઉટપુટમાં "કેલિબ્રેશન ક્યાં છે?" અને "શું ટાઇમસ્ટેમ્પ સંરેખિત છે?" પ્રશ્નો પૂછવાની ખાતરી કરો.

નબળા પ્રોમ્પ્ટ / મજબૂત પ્રોમ્પ્ટ

WEAK:"IMU ડેટામાંથી કોણની ગણતરી કરો."(કયું ફિલ્ટર? ડ્રિફ્ટ હેન્ડલ થાય છે? કેવી રીતે dt? અસ્પષ્ટ.)STRONG:"MPU6050 માંથી એક્સીલેરોમીટર અને જાયરોસ્કોપ ડેટાને ઇન્ટિગ્રલ ફિલ્ટર અને અંદાજ પિચ એંગલ સાથે જોડો. વાસ્તવિક ટાઇમસ્ટેમ્પ પરથી dt ની ગણતરી કરો, 9008 માપદંડને અનુમાનિત ન કરો. ટેન2 સાથે એક્સેલરોમીટર એંગલની ગણતરી કરો, ક્લાસ તરીકે લખો, પહેલાનો કોણ રાખો, અવાજ માટે વૈકલ્પિક મધ્ય પ્રીફિલ્ટર ઉમેરો."

મીની કેસ

રોબોટિક્સ એન્જિનિયર સેલીનને બે પૈડાવાળા બેલેન્સિંગ રોબોટ પર કોણના અંદાજ માટે AI પાસેથી પૂરક ફિલ્ટર જોઈએ છે. AI સ્વચ્છ કોડ આપે છે, પરંતુ રોબોટ ધીમે ધીમે એક તરફ ઝૂકે છે. સેલીન તપાસે છે dt: કોડ ધારે છે કે dt સતત 0.01 s છે, જ્યારે ચક્ર સમય બ્લૂટૂથ ટેલિમેટ્રીને કારણે બદલાય છે. જ્યારે વાસ્તવિક ટાઈમસ્ટેમ્પ પરથી તા. પછી તે એક્સીલેરોમીટરનું માપાંકન જુએ છે; જ્યારે સેન્સર સ્થિર હોય ત્યારે પણ 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 સ્કીમમાં કન્વર્ટ કરો અને ટાઇમસ્ટેમ્પ અને યુનિટ ફીલ્ડ ઉમેરો. નોંધ કરો કે કયું આલ્ફા મૂલ્ય તમારા ડેટા માટે સૌથી વધુ સંતુલિત પરિણામ આપે છે અને કેટલી કેલિબ્રેશન ઓફસેટ આઉટપુટને વિકૃત કરે છે.