ইউনিট 4 / 9

সেন্সর ফিউশন এবং আইওটি ডেটা ইন্টিগ্রেশন

লাভ:

  • ফিউশন লজিক (ইন্টিগ্রেটর/কালম্যান ফিল্টার) তৈরি করার ক্ষমতা যা AI এর সাথে IMU, এনকোডার এবং দূরত্ব সেন্সর ডেটাকে একত্রিত করে
  • AI এর সাহায্যে MQTT-ভিত্তিক IoT ডেটা স্ট্রীম এবং টেলিমেট্রি কনফিগার এবং ব্যাখ্যা করার ক্ষমতা
  • এআই আউটপুটে সেন্সর শব্দ, ক্রমাঙ্কন এবং সময় সিঙ্ক্রোনাইজেশন সমস্যা সনাক্ত এবং সংশোধন করার ক্ষমতা

কোনো সেন্সর নিখুঁত নয়। জাইরোস্কোপ স্বল্পমেয়াদে খুব নির্ভুল, কিন্তু সময়ের সাথে সাথে প্রবাহিত হয়। অ্যাক্সিলোমিটার দীর্ঘমেয়াদে স্থিতিশীল কিন্তু কম্পন থেকে শব্দ পায়। এনকোডার সঠিকভাবে অবস্থান পরিমাপ করে, কিন্তু যখন একটি স্লিপ থাকে তখন এটি ভুল। GPS একটি বিস্তৃত এলাকায় কাজ করে কিন্তু কম ফ্রিকোয়েন্সি এবং কোলাহলপূর্ণ। মেকাট্রনিক্স ইঞ্জিনিয়ারকে এই অপূর্ণ সেন্সরগুলি থেকে একটি একক, নির্ভরযোগ্য সত্য তৈরি করতে হবে; এটি সেন্সর ফিউশন। অধিকন্তু, আধুনিক সিস্টেমে, এই ডেটা শুধুমাত্র স্থানীয় থাকে না, তবে IoT নেটওয়ার্কের মাধ্যমে ক্লাউড এবং নিয়ন্ত্রণ কেন্দ্রগুলিতে প্রবাহিত হয়। কৃত্রিম বুদ্ধিমত্তা ফিউশন অ্যালগরিদম স্থাপন এবং IoT টেলিমেট্রি কনফিগার এবং ব্যাখ্যা উভয় ক্ষেত্রেই একটি শক্তিশালী সহায়তা। এই ইউনিটে, আমরা পরিপূরক ফিল্টার, কালম্যান ফিল্টার লজিক এবং কিভাবে AI এর সাথে MQTT-ভিত্তিক IoT ফ্লো সেট আপ করতে হয় এবং শব্দ এবং সিঙ্ক্রোনাইজেশন ফাঁদ ধরতে হয় তা কভার করি।

কেন সেন্সর ফিউশন?

প্রতিটি সেন্সরের একটি "ভাল ফ্রিকোয়েন্সি জোন" রয়েছে। ফিউশনের উদ্দেশ্য হল প্রতিটি সেন্সর যেখানে এটি শক্তিশালী সেখানে ব্যবহার করা এবং যেখানে এটি দুর্বল সেখানে অন্যটির সাথে সমর্থন করা।

সেন্সর

শক্তিশালী পয়েন্ট

দুর্বলতা

জাইরোস্কোপ

স্বল্পমেয়াদী কৌণিক বেগ, দ্রুত প্রতিক্রিয়া

সময়ের সাথে প্রবাহ

অ্যাক্সিলোমিটার

দীর্ঘমেয়াদী ঢাল রেফারেন্স (মাধ্যাকর্ষণ)

চলাচলে কম্পন/শব্দ

এনকোডার

উচ্চ রেজোলিউশন অবস্থান

স্লিপ/ব্যাকল্যাশ ত্রুটি

জিপিএস

পরম অবস্থান

কম ফ্রিকোয়েন্সি, কোলাহল, কোন ইনডোর

একটি একক সেন্সরের উপর নির্ভর করা সিস্টেমে সেই সেন্সরের দুর্বলতার পরিচয় দেয়। ফিউশন, উদাহরণস্বরূপ, অ্যাক্সিলোমিটারের ধীর কিন্তু স্থির রেফারেন্সের সাথে জাইরোস্কোপের দ্রুত কিন্তু প্রবাহিত কোণকে একত্রিত করে, একটি কোণ দেয় যা দ্রুত এবং ড্রিফট-মুক্ত উভয়ই।

পরিপূরক ফিল্টার

সবচেয়ে সহজ এবং সবচেয়ে সাধারণ ফিউশন হল পরিপূরক ফিল্টার। ধারণাটি স্বজ্ঞাত: উচ্চ ফ্রিকোয়েন্সি (দ্রুত পরিবর্তন), কম ফ্রিকোয়েন্সিতে অ্যাক্সিলোমিটার (ধীর, স্থিতিশীল) এ জাইরোস্কোপকে বিশ্বাস করুন। এক লাইন সারসংক্ষেপ:

# পরিপূরক ফিল্টার: ব্যথা অনুমান (পিচ) # আলফা ~ 0.98 : জাইরোস্কোপে বেশি, অ্যাক্সিলেরোমিটারে কম (ডিগ্রি/সেকেন্ড) ত্বরণ_এঞ্জ : অ্যাঙ্গেল অ্যাক্সিলেরোমিটার (ডিগ্রি) থেকে গণনা করা হয়েছে dt : স্যাম্পলিং পিরিয়ড (সেকেন্ড) """ পূর্ববর্তী gyrotegypes = +ed_pac রেট জাইরোস্কোপ রিটার্ন আলফা * gyro_pace + (1 - আলফা) * acceleration_angle# যাচাইকরণ যুক্তি: বিশুদ্ধ জাইরোস্কোপ (ড্রিফটস) যদি আলফা=1, # যদি আলফা=0 বিশুদ্ধ অ্যাক্সিলোমিটার (কোলাহলপূর্ণ)।

এখানে সহগ আলফা ভারসাম্য নির্ধারণ করে: এটি 1 এর কাছাকাছি হলে, এটি জাইরোস্কোপের উপর নির্ভর করে (ড্রিফট বৃদ্ধির ঝুঁকি), যদি এটি 0-এর কাছাকাছি হয় তবে এটি অ্যাক্সিলোমিটারের উপর নির্ভর করে (শব্দ বৃদ্ধি)। সাধারণ মান হল 0.95-0.98। AI এই মানটি সুপারিশ করতে পারে, কিন্তু সঠিক আলফা আপনার সিস্টেমের নমুনা হার এবং শব্দ চরিত্রের উপর নির্ভর করে; পরীক্ষামূলকভাবে সেট করা হয়।

টিপ: AI-তে একটি অবিচ্ছেদ্য ফিল্টার প্রিন্ট করার সময়, dt কীভাবে পরিমাপ করা হয় তা জিজ্ঞাসা করতে ভুলবেন না। বেশিরভাগ ত্রুটি dt ধ্রুবক ধরে নেওয়া থেকে আসে কিন্তু বাস্তবে চক্রের সময় পরিবর্তিত হয়। millis()/টাইমস্ট্যাম্প দিয়ে dt real পরিমাপ করুন, ধ্রুবক লিখবেন না।

কালমান ফিল্টার লজিক

পরিপূরক ফিল্টার সহজ কিন্তু শব্দ পরিসংখ্যান মডেল না. কালম্যান ফিল্টার সম্ভাব্যতামূলকভাবে সেন্সর শব্দ এবং প্রক্রিয়া অনিশ্চয়তার মডেলিং দ্বারা একটি সর্বোত্তম (নির্দিষ্ট অনুমানের অধীনে) অনুমান তৈরি করে। এটি দুটি ধাপে কাজ করে:

  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(temperature,temperature, vibration_rms): message = {"ts":time.time(),#inpacation-এর জন্য সময়। round(pain, 2), "temperature_c": বৃত্তাকার(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 কোডে এই ধাপগুলি যোগ করতে পারে, কিন্তু প্রতিটি প্রয়োজনীয় কিনা এবং এর পরামিতিগুলি আপনার সিস্টেমের জন্য নির্দিষ্ট। এআই আউটপুটে "ক্যালিব্রেশন কোথায়?" এবং "টাইমস্ট্যাম্পগুলি সারিবদ্ধ আছে?" প্রশ্ন জিজ্ঞাসা করতে ভুলবেন না.

দুর্বল প্রম্পট / শক্তিশালী প্রম্পট

WEAK:"IMU ডেটা থেকে কোণ গণনা করুন।"(কোন ফিল্টার? ড্রিফ্ট পরিচালনা করা হয়? কিভাবে dt? অস্পষ্ট।)STRONG:"অখণ্ড ফিল্টার এবং অনুমান পিচ অ্যাঙ্গেলের সাথে MPU6050 থেকে অ্যাক্সিলোমিটার এবং জাইরোস্কোপ ডেটা একত্রিত করুন। রিয়েল টাইমস্ট্যাম্প থেকে dt গণনা করুন, অনুমান করবেন না প্যারাফ্যামিটার 9000। tane2 দিয়ে অ্যাক্সিলোমিটার কোণ গণনা করুন ক্লাস হিসাবে লিখুন, আগের কোণ রাখুন, শব্দের জন্য ঐচ্ছিক মধ্যক প্রিফিল্টার যোগ করুন।"

মিনি কেস

রোবোটিক্স ইঞ্জিনিয়ার সেলিন একটি দ্বি-চাকার ব্যালেন্সিং রোবটে কোণ অনুমানের জন্য AI থেকে একটি পরিপূরক ফিল্টার চান৷ এআই একটি পরিষ্কার কোড দেয়, কিন্তু রোবটটি ধীরে ধীরে একদিকে ঝুঁকে পড়ে। সেলিন dt চেক করে: কোড ধরে নেয় dt ধ্রুবক 0.01 s, যেখানে চক্রের সময় ব্লুটুথ টেলিমেট্রির কারণে পরিবর্তিত হয়। যখন বাস্তব টাইমস্ট্যাম্প থেকে dt গণনা করা হয়, তখন ড্রিফট কমে যায় কিন্তু পুরোপুরি অদৃশ্য হয় না। তারপরে তিনি অ্যাক্সিলোমিটারের ক্রমাঙ্কনটি দেখেন; এমনকি যখন সেন্সর স্থির থাকে তখন একটি 2° অফসেট থাকে। যখন আমি ক্রমাঙ্কন অফসেটটি সরিয়ে ফেলি, তখন রোবটটি সোজা হয়ে দাঁড়ায়। অবশেষে, এটি লক্ষ্য করে যে MQTT এর মাধ্যমে টেলিমেট্রি সম্প্রচার করার সময় এটি qos=0 ব্যবহার করে এবং সমালোচনামূলক কোণ ডেটার জন্য এটিকে qos=1 এ বাড়িয়ে দেয়। এআই কয়েক মিনিটের মধ্যে ফিউশন কঙ্কাল সরবরাহ করে; কিন্তু ইঞ্জিনিয়ারের যাচাইকরণে তিনটি সিস্টেম-নির্দিষ্ট সমস্যা ধরা পড়ে: পরিবর্তনশীল dt, ক্রমাঙ্কন অফসেট এবং QoS।

সাধারণ ভুল

  • ধরে নেওয়া হচ্ছে dt ধ্রুবক, যেখানে চক্রের সময় পরিবর্তিত হয় (ফিউশন ড্রিফটস)।
  • সেন্সরগুলিকে ক্যালিব্রেট না করেই ফিউজ করা (সিস্টেমেটিক অফসেট)।
  • টাইমস্ট্যাম্পিং ছাড়াই বিভিন্ন গতির সেন্সর সারিবদ্ধ করার চেষ্টা করা হচ্ছে।
  • বাস্তব গোলমাল থেকে Kalman Q/R কোভেরিয়েন্স পরিমাপ না করে AI এর নমুনা মান দিয়ে চলে যাওয়া।
  • গুরুত্বপূর্ণ IoT ডেটাতে qos=0 ব্যবহার করে বার্তা হারানোর অনুমতি দেওয়া।
  • প্রি-ফিল্টারিং ছাড়াই ফিউশনে কাঁচা গোলমাল ডেটা দেওয়া।

সংক্ষেপে

  • ফিউশন ফ্রিকোয়েন্সি অঞ্চলে প্রতিটি সেন্সর ব্যবহার করে যেখানে এটি শক্তিশালী এবং এর দুর্বলতার জন্য ক্ষতিপূরণ দেয়।
  • পরিপূরক ফিল্টার সহজ; আলফার সাথে জাইরোস্কোপ-অ্যাক্সিলোমিটার ব্যালেন্স স্থাপন করে।
  • Kalman ফিল্টার মডেল সম্ভাব্য গোলমাল; Q/R আসল সিস্টেম থেকে আসে।
  • MQTT টেলিমেট্রিতে, টাইমস্ট্যাম্পিং এবং উপযুক্ত QoS হল জটিল ইঞ্জিনিয়ারিং সিদ্ধান্ত।
  • গোলমাল, ক্রমাঙ্কন এবং সময় সিঙ্ক্রোনাইজেশন ফিউশনের গুণমান নির্ধারণ করে।
  • dt বাস্তব সময় থেকে পরিমাপ করা হয়; ক্রমাঙ্কন এবং QoS AI-তে না রেখেই যাচাই করা হয়।

আবেদন টাস্ক

একটি IMU (বাস্তব বা সিমুলেটেড গাইরো + অ্যাক্সিলোমিটার ডেটা) এর জন্য AI-তে ইন্টিগ্রাল ফিল্টার তৈরি করা আছে এবং নিশ্চিত করুন যে dt আসল টাইমস্ট্যাম্প থেকে গণনা করা হয়েছে। তারপর: (1) 0.90, 0.98 এবং 1.0 এর জন্য আলফা চেষ্টা করুন এবং ড্রিফট এবং নয়েজ ব্যালেন্স পর্যবেক্ষণ করুন, (2) সেন্সরে একটি ইচ্ছাকৃত ফিক্সড অফসেট (ক্র্যালিব্রেশন ত্রুটি) যোগ করুন এবং দেখুন কিভাবে ফিউশন আউটপুট ড্রিফট হয়, (3) ডেটাকে MQTT JSON স্কিমাতে রূপান্তর করুন এবং টাইমস্ট্যাম্প এবং ইউনিট ফিল্ড যোগ করুন। কোন আলফা মান আপনার ডেটার জন্য সবচেয়ে সুষম ফলাফল দেয় এবং কতটা ক্রমাঙ্কন অফসেট আউটপুটকে বিকৃত করে তা নোট করুন।