యూనిట్ 4 / 9

సెన్సార్ ఫ్యూజన్ మరియు IoT డేటా ఇంటిగ్రేషన్

లాభాలు:

  • IMU, ఎన్‌కోడర్ మరియు దూర సెన్సార్ డేటాను AIతో కలిపే ఫ్యూజన్ లాజిక్ (ఇంటిగ్రేటర్/కల్మాన్ ఫిల్టర్)ను నిర్మించగల సామర్థ్యం
  • AI సహాయంతో MQTT-ఆధారిత IoT డేటా స్ట్రీమ్‌లు మరియు టెలిమెట్రీని కాన్ఫిగర్ చేయగల మరియు అర్థం చేసుకునే సామర్థ్యం
  • AI అవుట్‌పుట్‌లో సెన్సార్ నాయిస్, కాలిబ్రేషన్ మరియు టైమ్ సింక్రొనైజేషన్ సమస్యలను గుర్తించి సరిదిద్దగల సామర్థ్యం

ఏ సెన్సార్ పర్ఫెక్ట్ కాదు. గైరోస్కోప్ స్వల్పకాలంలో చాలా ఖచ్చితమైనది, కానీ కాలక్రమేణా డ్రిఫ్ట్ అవుతుంది. యాక్సిలరోమీటర్ దీర్ఘకాలంలో స్థిరంగా ఉంటుంది కానీ వైబ్రేషన్ నుండి శబ్దాన్ని పొందుతుంది. ఎన్‌కోడర్ స్థానాన్ని ఖచ్చితంగా కొలుస్తుంది, కానీ స్లిప్ ఉన్నప్పుడు అది తప్పు. GPS విస్తృత ప్రాంతంలో పని చేస్తుంది కానీ తక్కువ పౌనఃపున్యం మరియు శబ్దంతో ఉంటుంది. మెకాట్రానిక్స్ ఇంజనీర్ ఈ అసంపూర్ణ సెన్సార్‌ల నుండి ఒకే, నమ్మదగిన సత్యాన్ని ఉత్పత్తి చేయాలి; ఇది సెన్సార్ ఫ్యూజన్. అంతేకాకుండా, ఆధునిక వ్యవస్థలలో, ఈ డేటా స్థానికంగా ఉండటమే కాకుండా IoT నెట్‌వర్క్‌ల ద్వారా క్లౌడ్ మరియు నియంత్రణ కేంద్రాలకు ప్రవహిస్తుంది. కృత్రిమ మేధస్సు అనేది ఫ్యూజన్ అల్గారిథమ్‌లను సెటప్ చేయడం మరియు IoT టెలిమెట్రీని కాన్ఫిగర్ చేయడం మరియు వివరించడం రెండింటిలోనూ శక్తివంతమైన సహాయం. ఈ యూనిట్‌లో, మేము కాంప్లిమెంటరీ ఫిల్టర్, కల్మాన్ ఫిల్టర్ లాజిక్ మరియు AIతో MQTT-ఆధారిత IoT ఫ్లోను ఎలా సెటప్ చేయాలి మరియు నాయిస్ మరియు సింక్రొనైజేషన్ ట్రాప్‌లను ఎలా సెటప్ చేయాలి.

సెన్సార్ ఫ్యూజన్ ఎందుకు?

ప్రతి సెన్సార్‌కి "మంచి ఫ్రీక్వెన్సీ జోన్" ఉంటుంది. ఫ్యూజన్ యొక్క ఉద్దేశ్యం ఏమిటంటే ప్రతి సెన్సార్ బలంగా ఉన్న ప్రాంతంలో ఉపయోగించడం మరియు బలహీనంగా ఉన్న ప్రాంతంలో మరొకదానితో మద్దతు ఇవ్వడం.

సెన్సార్

బలమైన పాయింట్

బలహీనత

గైరోస్కోప్

స్వల్పకాలిక కోణీయ వేగం, వేగవంతమైన ప్రతిస్పందన

కాలక్రమేణా డ్రిఫ్ట్

యాక్సిలరోమీటర్

దీర్ఘ-కాల వాలు సూచన (గురుత్వాకర్షణ)

కదలికపై కంపనం/ధ్వని

ఎన్కోడర్

అధిక రిజల్యూషన్ స్థానం

స్లిప్/బ్యాక్‌లాష్ లోపం

GPS

సంపూర్ణ స్థానం

తక్కువ ఫ్రీక్వెన్సీ, శబ్దం, ఇండోర్ లేదు

ఒకే సెన్సార్‌పై ఆధారపడటం ఆ సెన్సార్ యొక్క బలహీనతను సిస్టమ్‌లోకి ప్రవేశపెడుతుంది. ఫ్యూజన్, ఉదాహరణకు, గైరోస్కోప్ యొక్క వేగవంతమైన కానీ డ్రిఫ్టింగ్ కోణాన్ని యాక్సిలెరోమీటర్ యొక్క నెమ్మదిగా కానీ స్థిరమైన సూచనతో మిళితం చేస్తుంది, ఇది వేగవంతమైన మరియు డ్రిఫ్ట్-రహిత కోణాన్ని అందిస్తుంది.

కాంప్లిమెంటరీ ఫిల్టర్

సరళమైన మరియు అత్యంత సాధారణ కలయిక పరిపూరకరమైన వడపోత. ఆలోచన సహజమైనది: గైరోస్కోప్‌ను అధిక పౌనఃపున్యం (వేగవంతమైన మార్పు), తక్కువ పౌనఃపున్యం (నెమ్మదిగా, స్థిరంగా) వద్ద యాక్సిలెరోమీటర్‌ను విశ్వసించండి. ఒక లైన్ సారాంశం:

# కాంప్లిమెంటరీ ఫిల్టర్: నొప్పి అంచనా (పిచ్) # ఆల్ఫా ~ 0.98 : గైరోస్కోప్‌కి ఎక్కువ, యాక్సిలరోమీటర్‌కు తక్కువ (డిగ్రీలు/సెకను) యాక్సిలరేషన్_ఆంజ్ : యాక్సిలరోమీటర్ (డిగ్రీలు) నుండి గణించబడిన కోణం : మాదిరి వ్యవధి (సెకన్) గైరోస్కోప్ రిటర్న్ ఆల్ఫా * గైరో_పేస్ + (1 - ఆల్ఫా) * త్వరణం_కోణం# ధృవీకరణ తర్కం: ఆల్ఫా=1 అయితే స్వచ్ఛమైన గైరోస్కోప్ (డ్రిఫ్ట్‌లు), # ఆల్ఫా = 0 స్వచ్ఛమైన యాక్సిలెరోమీటర్ (ధ్వనించేది) రెండింటినీ బ్యాలెన్స్ చేస్తుంది.

ఇక్కడ గుణకం ఆల్ఫా బ్యాలెన్స్‌ను నిర్ణయిస్తుంది: ఇది 1కి దగ్గరగా ఉంటే, అది గైరోస్కోప్‌పై ఆధారపడుతుంది (డ్రిఫ్ట్ ప్రమాదం పెరుగుతుంది), అది 0కి దగ్గరగా ఉంటే, అది యాక్సిలెరోమీటర్‌పై ఆధారపడుతుంది (శబ్దం పెరుగుతుంది). సాధారణ విలువ 0.95–0.98. AI ఈ విలువను సూచించవచ్చు, కానీ సరైన ఆల్ఫా మీ సిస్టమ్ యొక్క నమూనా రేటు మరియు నాయిస్ క్యారెక్టర్‌పై ఆధారపడి ఉంటుంది; ప్రయోగాత్మకంగా సెట్ చేయబడింది.

చిట్కా: AIకి సమగ్ర ఫిల్టర్‌ను ప్రింట్ చేస్తున్నప్పుడు, dtని ఎలా కొలుస్తారు అని తప్పకుండా అడగండి. dt స్థిరంగా ఉంటుందని భావించడం వల్ల చాలా లోపాలు వస్తాయి కానీ వాస్తవానికి చక్రం సమయం మారుతూ ఉంటుంది. మిల్లీస్()/టైమ్‌స్టాంప్‌తో dt రియల్‌ని కొలవండి, స్థిరాంకాలు వ్రాయవద్దు.

కల్మాన్ ఫిల్టర్ లాజిక్

కాంప్లిమెంటరీ ఫిల్టర్ సరళమైనది కానీ నాయిస్ గణాంకాలను మోడల్ చేయదు. కల్మాన్ ఫిల్టర్ సెన్సార్ శబ్దం మరియు ప్రక్రియ అనిశ్చితిని సంభావ్యంగా మోడలింగ్ చేయడం ద్వారా సరైన (నిర్దిష్ట అంచనాల ప్రకారం) అంచనాను ఉత్పత్తి చేస్తుంది. ఇది రెండు దశల్లో పనిచేస్తుంది:

  1. అంచనా: సిస్టమ్ మోడల్‌తో తదుపరి పరిస్థితిని మరియు దాని అనిశ్చితిని అంచనా వేయండి.
  2. అప్‌డేట్: కొలత విశ్వసనీయత (కల్మాన్ లాభం)కి వ్యతిరేకంగా కొత్త కొలతను తూకం వేయండి మరియు అంచనాను సరి చేయండి.

కాల్మాన్ గెయిన్ K అడుగడుగునా "నేను కొలత లేదా మోడల్‌ను ఎక్కువగా విశ్వసిస్తానా" అనే ప్రశ్నకు స్వయంచాలకంగా సమాధానమిస్తుంది. కొలత శబ్దం పెద్దగా ఉంటే, K చిన్నదిగా మారుతుంది (మోడల్‌పై విశ్వాసం), ప్రక్రియ అనిశ్చితి పెద్దది అయితే, K పెద్దదిగా మారుతుంది (కొలతపై విశ్వాసం). AI సులభంగా ఒక డైమెన్షనల్ కల్మాన్ ఫిల్టర్‌ను వ్రాస్తుంది; కానీ నాయిస్ కోవియారెన్స్‌లను (`Q`, `R`) సరిగ్గా ఎంచుకోవడం మీ పని మరియు అవి సిస్టమ్ యొక్క వాస్తవ శబ్దం నుండి వస్తాయి.

శ్రద్ధ: AI ద్వారా అందించబడిన Q (ప్రాసెస్ నాయిస్) మరియు R (కొలత శబ్దం) విలువలు నమూనా/ప్లేస్‌హోల్డర్. మీరు సిస్టమ్ యొక్క వాస్తవ కొలత శబ్దం నుండి వీటిని గుర్తించకపోతే (ఉదా. సెన్సార్ స్థిరంగా ఉన్నప్పుడు కొలవబడిన వ్యత్యాసం), ఫిల్టర్ చాలా నెమ్మదిగా లేదా చాలా శబ్దం చేస్తుంది. AI అందించిన కోవియారెన్స్‌లను "నిజమైన విలువ"గా విశ్వసించవద్దు.

IoT డేటా స్ట్రీమ్: MQTT మరియు టెలిమెట్రీ

మీరు ఫ్యూజన్‌తో ఉత్పత్తి చేసే క్లీన్ డేటా సాధారణంగా IoT నెట్‌వర్క్ ద్వారా కేంద్రానికి రవాణా చేయబడుతుంది. పరిశ్రమలో అత్యంత సాధారణ ప్రోటోకాల్ MQTT: తేలికైన, ప్రచురణ-చందా మోడల్, తక్కువ బ్యాండ్‌విడ్త్‌కు అనుకూలం. AI త్వరగా MQTT పబ్లిషర్/సబ్‌స్క్రైబర్ కోడ్ మరియు JSON టెలిమెట్రీ స్కీమాను ఏర్పాటు చేస్తుంది.

jsonని దిగుమతి చేయండి, paho.mqtt.client ను mqttclient గా దిగుమతి చేయండి = mqtt.Client()client.connect("broker.local", 1883, keepalive=60)def telemetry_broadcast(ఉష్ణోగ్రత, ఉష్ణోగ్రత, వైబ్రేషన్_rms): సందేశం = {"ts": time.timestamp_-gronization రౌండ్(నొప్పి, 2), "ఉష్ణోగ్రత_సి": రౌండ్(ఉష్ణోగ్రత, 1), "వైబ్రేషన్_ర్మ్స్": రౌండ్(ఉష్ణోగ్రత_rms, 3), "యూనిట్": {"నొప్పి": "డిగ్రీ", "ఉష్ణోగ్రత": "సి", "వైబ్రేషన్": "మిమీ/సె"} } క్లైంట్.పబ్లిష్/10 ప్రచురణ json.dumps(message), qos=1)# qos=1: కనీసం ఒక్కసారైనా డెలివరీ చేయబడింది. క్లిష్టమైన డేటాపై qos=0 (పోవచ్చు) ఉపయోగించడం.

రెండు ఇంజినీరింగ్ నిర్ణయాలు ఇక్కడ ముఖ్యమైనవి: (1) టైమ్‌స్టాంపింగ్ (ts) ప్రతి సందేశం-వివిధ సెన్సార్‌లు వేర్వేరు సమయాల్లో నమూనా చేయబడతాయి, సమకాలీకరణ టైమ్‌స్టాంపింగ్‌తో మాత్రమే సాధ్యమవుతుంది; (2) QoS స్థాయి—క్లిష్టమైన డేటా కనీసం qos=1ని ఉపయోగిస్తుంది (కనీసం ఒకసారి డెలివరీ చేయబడింది), qos=0 సందేశాన్ని కోల్పోవడాన్ని అనుమతిస్తుంది.

నాయిస్, కాలిబ్రేషన్ మరియు సింక్రొనైజేషన్

ఫ్యూజన్ ఎంత మంచిదైనా, ఇన్‌పుట్‌తో మూడు సమస్యలు ఫలితాన్ని వక్రీకరిస్తాయి:

  • నాయిస్: ముడి సెన్సార్ డేటా ఫిల్టర్ చేయకుండానే ఫ్యూజన్‌లోకి వెళితే, ఫ్యూజన్ అవుట్‌పుట్ కూడా శబ్దంగా ఉంటుంది. ప్రీ-ఫిల్టరింగ్ (మధ్యస్థ, తక్కువ పాస్) అవసరం కావచ్చు.
  • క్రమాంకనం: ఆఫ్‌సెట్ మరియు స్కేల్ లోపాలు (ఉదా. యాక్సిలరోమీటర్ యొక్క జీరో పాయింట్ మార్చబడింది) క్రమపద్ధతిలో కలయికను తప్పుదారి పట్టించాయి. సెన్సార్లను ఉపయోగించే ముందు తప్పనిసరిగా క్రమాంకనం చేయాలి.
  • సమయ సమకాలీకరణ: వేర్వేరు రేట్లలో (ఉదా. 1 kHz IMUతో 10 Hz GPS) నమూనా చేయబడిన సెన్సార్‌లను సమలేఖనం చేయడానికి టైమ్‌స్టాంపింగ్ మరియు ఇంటర్‌పోలేషన్ అవసరం.

AI ఈ దశలను కోడ్‌కు జోడించగలదు, అయితే ప్రతి ఒక్కటి అవసరమా మరియు దాని పారామితులు మీ సిస్టమ్‌కు నిర్దిష్టంగా ఉన్నాయా. AI అవుట్‌పుట్‌లో "క్యాలిబ్రేషన్ ఎక్కడ ఉంది?" మరియు "టైమ్‌స్టాంప్‌లు సమలేఖనం చేయబడిందా?" తప్పకుండా ప్రశ్నలు అడగండి.

బలహీనమైన ప్రాంప్ట్ / బలమైన ప్రాంప్ట్

బలహీనం:"IMU డేటా నుండి కోణాన్ని లెక్కించండి."(ఏ ఫిల్టర్? డ్రిఫ్ట్ హ్యాండిల్ చేయబడింది? ఎలా dt? అస్పష్టంగా ఉంది.)STRONG:"సమగ్ర ఫిల్టర్ మరియు అంచనా పిచ్ కోణంతో MPU6050 నుండి యాక్సిలెరోమీటర్ మరియు గైరోస్కోప్ డేటాను కలపండి. రియల్ టైమ్‌స్టాంప్ నుండి dtని గణించండి, పారామీటర్ 8 డీల్ఫాల్ట్ స్థిరంగా భావించవద్దు. టేన్ 2తో యాక్సిలెరోమీటర్ యాంగిల్‌ను క్లాస్‌గా ఫిల్టర్ చేయండి, మునుపటి కోణాన్ని ఉంచండి, శబ్దం కోసం ఐచ్ఛిక మధ్యస్థ ప్రిఫిల్టర్‌ని జోడించండి."

మినీ కేసు

రోబోటిక్స్ ఇంజనీర్ సెలిన్ ద్విచక్ర బ్యాలెన్సింగ్ రోబోట్‌లో యాంగిల్ అంచనా కోసం AI నుండి కాంప్లిమెంటరీ ఫిల్టర్‌ను కోరుకుంటున్నారు. AI క్లీన్ కోడ్‌ను ఇస్తుంది, కానీ రోబోట్ నెమ్మదిగా ఒక వైపుకు వంగి ఉంటుంది. సెలిన్ dtని తనిఖీ చేస్తుంది: కోడ్ dt స్థిరంగా 0.01 సె అని ఊహిస్తుంది, అయితే బ్లూటూత్ టెలిమెట్రీ కారణంగా సైకిల్ సమయం మారుతూ ఉంటుంది. రియల్ టైమ్‌స్టాంప్ నుండి 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 స్కీమాకి మార్చండి మరియు టైమ్‌స్టాంప్ మరియు యూనిట్ ఫీల్డ్‌లను జోడించండి. ఏ ఆల్ఫా విలువ మీ డేటాకు అత్యంత సమతుల్య ఫలితాన్ని ఇస్తుందో మరియు క్రమాంకనం ఆఫ్‌సెట్ అవుట్‌పుట్‌ను ఎంత వక్రీకరించిందో గమనించండి.