paint-brush
ডিপ লার্নিং: mmWave FMCW রাডার সহ এজ ডিভাইস পার্ট 1 - সিগন্যাল প্রসেসিংদ্বারা@owlgrey
2,716 পড়া
2,716 পড়া

ডিপ লার্নিং: mmWave FMCW রাডার সহ এজ ডিভাইস পার্ট 1 - সিগন্যাল প্রসেসিং

দ্বারা Dmitrii Matveichev 10m2024/04/10
Read on Terminal Reader

অতিদীর্ঘ; পড়তে

মিলিমিটার-ওয়েভ এফএমসিডব্লিউ রাডার পরিবেশগত অবস্থার থেকে স্বাধীন বহুমুখী সেন্সিং অফার করে, ক্যামেরা ছাড়াই মানুষের সনাক্তকরণের মতো ডিভাইস এবং অ্যাপ্লিকেশনের জন্য আদর্শ। দক্ষ এবং সাশ্রয়ী, এটি দূরত্ব, গতি এবং দিক পরিমাপ করতে চিপ ফ্রিকোয়েন্সি পরিবর্তনগুলি বিশ্লেষণ করে, উল্লেখযোগ্য ভোক্তা ইলেকট্রনিক্স এবং ওয়াই-ফাই প্রযুক্তি অগ্রগতির প্রতিশ্রুতি দেয়।
featured image - ডিপ লার্নিং: mmWave FMCW রাডার সহ এজ ডিভাইস পার্ট 1 - সিগন্যাল প্রসেসিং
Dmitrii Matveichev  HackerNoon profile picture

মিলিমিটার-তরঙ্গ ফ্রিকোয়েন্সি-মডুলেটেড কন্টিনিউয়াস-ওয়েভ (FMCW) রাডার রেডিও ফ্রিকোয়েন্সি (RF) ইলেক্ট্রোম্যাগনেটিক তরঙ্গ নির্গত এবং সনাক্ত করে কাজ করে। এর অনন্য বৈশিষ্ট্যগুলির কারণে, এই প্রযুক্তিটি ইন্টারেক্টিভ সিস্টেম এবং অ্যাপ্লিকেশনগুলির জন্য বিভিন্ন সুবিধা প্রদান করে। এটি আলোর অবস্থা, পরিবেশগত শব্দ বা আবহাওয়া থেকে স্বাধীনভাবে কাজ করে, দ্রুত এবং সঠিক সেন্সিং ক্ষমতা প্রদান করে।


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


mmWave FMCW রাডার অনেক ডিভাইসে ব্যবহার করা যেতে পারে, যেমন:

  • ভার্চুয়াল রিয়েলিটি (ভিআর) গ্যাজেট
  • পরিধানযোগ্য প্রযুক্তি, স্মার্ট পোশাক
  • ইন্টারনেট অফ থিংস (IoT) ডিভাইস
  • গেম কন্ট্রোলার
  • স্মার্টফোন, ট্যাবলেট এবং ল্যাপটপের মতো প্রচলিত ইলেকট্রনিক্স।


তাছাড়া, mmWave FMCW রাডারগুলিকে ডিপ লার্নিং মডেলের সাথে একসাথে বিভিন্ন কাজ সমাধান করতে ব্যবহার করা যেতে পারে:

  • মানুষের উপস্থিতি সনাক্তকরণ
  • মানুষ গণনা, স্থানীয়করণ, এবং ট্র্যাকিং
  • মানুষের ক্রিয়াকলাপের শ্রেণীবিভাগ (ব্যক্তি ঘুমায়/বসে/হাঁটা/খেলাধুলা করে ইত্যাদি)
  • অঙ্গভঙ্গি স্বীকৃতি
  • স্থান স্বীকৃতি
  • ওডোমেট্রি এবং SLAM


মনে রাখবেন যে এই সমস্ত অ্যাপ্লিকেশনগুলি ক্যামেরা ছাড়াই সমাধান করা যেতে পারে, একটি খুব কম শক্তি খরচ ডিভাইস এবং তুলনামূলকভাবে ছোট NN.


পরবর্তী কয়েক বছরে, অনেক ভোক্তা ইলেকট্রনিক্স সম্ভবত উপরে উল্লিখিত সমস্যাগুলি সমাধান করতে গভীর শিক্ষার অ্যালগরিদম সহ এই ধরণের সেন্সর সক্রিয়ভাবে ব্যবহার করা শুরু করবে। উপরন্তু, 2021 সালে, IEEE 802.11ау Wi-Fi মান অনুমোদিত হয়েছিল। এই স্ট্যান্ডার্ডটি একই রেডিও ফ্রিকোয়েন্সি এবং অপারেটিং নীতিগুলি ব্যবহার করে, Wi-Fi রাউটারগুলিকে mmWave FMCW রাডারগুলির মতো একই কার্যকারিতা অ্যাক্সেস করতে সক্ষম করে।


এটি এবং পরবর্তী দুটি নিবন্ধ কভার করবে:

  • mmWave FMCW রাডার সিগন্যাল প্রসেসিং - কিভাবে RF সিগন্যাল থেকে রেঞ্জ, ডপলার এবং কোণ পেতে হয়
  • ক্যামেরার তুলনায় FMCW রাডার ব্যবহারের সুবিধা
  • mmWave FMCW রাডার সিগন্যালের গভীর শিক্ষার অ্যাপ্লিকেশন


এই নিবন্ধটি ব্যাখ্যা করে কিভাবে একটি mmWave FMCW রাডার সংকেত প্রক্রিয়া করা হয়। বেশিরভাগ পরিসংখ্যান তৈরি করতে ব্যবহৃত কোডটি Google Colab- এ বা নিবন্ধের শেষে অ্যাক্সেস করা যেতে পারে।

FMCW mmWave রাডার

mmWave FMCW রাডার থেকে সংকেত তার দৃশ্যের ক্ষেত্রের সমস্ত বস্তুর দূরত্ব, তাদের গতি এবং কৌণিক অবস্থান (অজিমুথ এবং উচ্চতা) পরিমাপ করতে সক্ষম করে। রাডার থেকে সংকেতটি খুব ছোট রেজোলিউশনের চিত্রের আকারে প্রক্রিয়া করা যেতে পারে (সাধারণত ~32x32 - 256x64 পিক্সেল) চিত্রের অক্ষ বরাবর রেঞ্জ/স্পীড/কোণ সহ নীচের ছবির মতো - রেঞ্জ-ডপলার (রেঞ্জ-স্পীড) রেঞ্জ- কোণ ছবি।



mmWave FMCW রাডার সিগন্যাল রেঞ্জ-ডপলার এবং রেঞ্জ-এঙ্গেল ইমেজ এবং একটি ক্যামেরা থেকে ভিউতে প্রক্রিয়া করা হয়েছে (সূত্র: https://github.com/ZhangAoCanada/RADDet?tab=readme-ov-file)

সেন্সরটিতে বেশ কয়েকটি (1 বা তার বেশি) সর্বমুখী ট্রান্সমিটিং অ্যান্টেনা এবং বেশ কয়েকটি (1 বা তার বেশি) গ্রহণকারী অ্যান্টেনা থাকে। ট্রান্সমিটিং এবং রিসিভিং অ্যান্টেনা একই সাথে কাজ করে। রাডার দেখার ক্ষেত্র সাধারণত ~120° হয় এবং সর্বোচ্চ দূরত্ব কয়েক সেন্টিমিটার থেকে দশ মিটার পর্যন্ত হতে পারে।

কিভাবে দূরত্ব পরিমাপ করা হয়

আমাদের সাধারণত t1 সময়ে একটি সংকেত নির্গত করতে হবে এবং দূরত্ব পরিমাপ করার জন্য t2 সময়ে এর প্রতিফলন পেতে হবে। তখন দূরত্বকে d=(t2-t1)*c হিসাবে গণনা করা যেতে পারে, যেখানে c হল আলোর গতি কারণ রেডিও তরঙ্গ আলোর গতিতে ভ্রমণ করে।


FMCW মিমি-ওয়েভ রাডার অ্যান্টেনা সর্বমুখী, এবং এটির রাডার ক্ষেত্রের সমস্ত বস্তুর জন্য t1 এবং t2 সময় পরিমাপ করার একটি উপায় প্রয়োজন। এর জন্য একটি FMCW (ফ্রিকোয়েন্সি মডুলেটেড কন্টিনিউয়াস ওয়েভ) সংকেত ব্যবহার করা হয়। রাডারের প্রধান উপাদান একটি কিচিরমিচির। চির্প হল একটি সাইনোসয়েড রেডিও সিগন্যাল যার ফ্রিকোয়েন্সি সময়ের সাথে সাথে রৈখিকভাবে বৃদ্ধি পায়, যেমনটি নীচের চিত্রে দেখানো হয়েছে।

কিচিরমিচির শুরু থেকে শেষ পর্যন্ত, রেডিও তরঙ্গের ফ্রিকোয়েন্সি একটি পূর্বনির্ধারিত রৈখিক আইন অনুসারে পরিবর্তিত (পরিবর্তিত) হয়, যেমন প্রথম চিত্রে। দ্বিতীয় চিত্রটি 1ms-দীর্ঘ কিচিরমিচির একটি উদাহরণ দেখায়।

একটি কিচিরমিচির সূচনা (f_start) এবং শেষ (f_end) ফ্রিকোয়েন্সি, ব্যান্ডউইথ ( B=f_end-f_start ), এবং কিচিরমিচির সময় (Tc) দ্বারা চিহ্নিত করা হয়। কিচিরমিচির সময় কয়েক মাইক্রোসেকেন্ড থেকে কয়েক মিলিসেকেন্ড পর্যন্ত। রাডার প্রয়োগের উপর নির্ভর করে স্টার্ট ফ্রিকোয়েন্সি সাধারণত ~30, 60, বা 77GHz হয়। Chirp ব্যান্ডউইথ ~0.5GHz থেকে বেশ কিছু GHz পর্যন্ত।

IF সংকেত হল বর্তমানে Tx সংকেত দ্বারা প্রেরণ করা এবং Rx সংকেত দ্বারা প্রাপ্তের মধ্যে একটি পার্থক্য। (সূত্র: https://www.ti.com/content/dam/videos/external-videos/2/3816841626001/5415203482001.mp4/subassets/mmwaveSensing-FMCW-offlineviewing_0.pdf)

রিসিভিং (Rx) এবং ট্রান্সমিটিং (Tx) অ্যান্টেনা একই সাথে কাজ করে। সিনথেসাইজার ক্রমাগত একটি চিপ তৈরি করে যা প্রেরণকারী অ্যান্টেনা Tx এবং মিক্সারে পাঠানো হয়। একই সময়ে, Rx অ্যান্টেনা দ্বারা প্রাপ্ত সংকেতটিও মিক্সারে খাওয়ানো হয়। মিক্সারটি Tx-এ প্রেরিত সংকেত এবং Rx দ্বারা প্রাপ্ত সংকেতের মধ্যে পার্থক্য নির্ণয় করে।

একটি মিক্সার হল একটি সাধারণ ডিভাইস যা দুটি ইনপুটে একটি সাইনোসয়েডাল সংকেত গ্রহণ করে এবং একটি নতুন সাইনোসয়েডাল সংকেত তৈরি করে যার ফ্রিকোয়েন্সি এবং ফেজ ইনপুট সিগন্যালের ফ্রিকোয়েন্সি এবং পর্যায়গুলির মধ্যে পার্থক্য

একটি পরিচিত রৈখিক আইন (ঢাল) অনুসারে কিচিরমিচির সংকেতের ফ্রিকোয়েন্সি সময়ের সাথে পরিবর্তিত হয় যার অর্থ রাডারের সামনে যদি একটি একক বস্তু থাকে তবে এই বস্তুটি একটি সংকেত x_out তৈরি করবে ধ্রুবক ফ্রিকোয়েন্সি F_obj=S2d/c , যেখানে S - কিচিরমিচির সংকেত কম্পাঙ্কের পরিবর্তনের হার (ঢাল), d - বস্তুর দূরত্ব, c - আলোর গতি।

যদি রাডারের সামনে একটি একক বস্তু থাকে তবে এই বস্তুটি একটি ধ্রুবক ফ্রিকোয়েন্সি F_obj=S2d/c সহ একটি সংকেত x_out উৎপন্ন করবে

আমরা সময় পরিমাপ না করেই মিক্সার থেকে সংকেত বিশ্লেষণ করে রাডারের দৃশ্যের ক্ষেত্রে সমস্ত বস্তুর দূরত্ব পরিমাপ করতে পারি: d=(F_obj*c)/(2*S)। সাহিত্যে, x_out সংকেতকে 'IF সংকেত' (মধ্যবর্তী ফ্রিকোয়েন্সি সংকেত) বলা হয়।


সেন্সর ডিজাইনের একটি অতিরিক্ত বোনাস: সিগন্যালের ক্যারিয়ার ফ্রিকোয়েন্সি সাধারণত 30GHz বা 60Ghz হয়। যদি আমাদের এই ধরনের ফ্রিকোয়েন্সিগুলির একটি সংকেত ডিজিটাইজ করার প্রয়োজন হয়, তাহলে আমাদের ADC-এর জন্য খুব উচ্চ প্রয়োজনীয়তা থাকবে। সমস্ত সিগন্যাল বিশ্লেষণ IF সিগন্যালে করা হয় যার ফ্রিকোয়েন্সি সাধারণত কয়েক মেগাহার্টজের কাছাকাছি হয়, যা উল্লেখযোগ্যভাবে ADC-এর প্রয়োজনীয়তাগুলিকে শিথিল করে।

রাডার FoV-এ প্রতিটি বস্তুর পরিসর খুঁজে পেতে ফুরিয়ার ট্রান্সফর্ম ব্যবহার করুন

উপরে দেখানো হয়েছে, রাডার FoV-এ সমস্ত বস্তুর দূরত্ব খুঁজে বের করার জন্য, আমাদের সংকেত x_out এর ফ্রিকোয়েন্সি উপাদানগুলিতে পচন করতে হবে। ফুরিয়ার ট্রান্সফর্ম একটি অ্যালগরিদম যা একটি সময় ডোমেন সংকেতকে ফ্রিকোয়েন্সি ডোমেনে রূপান্তর করে।


IF সংকেতের ফুরিয়ার ট্রান্সফর্ম একাধিক টোন প্রকাশ করবে, এবং প্রতিটি টোনের ফ্রিকোয়েন্সি রাডার থেকে প্রতিটি বস্তুর পরিসরের সমানুপাতিক - সাহিত্যে, এই ফুরিয়ার ট্রান্সফর্মকে ফাস্ট টাইম ফুরিয়ার ট্রান্সফর্ম বা রেঞ্জ ফুরিয়ার ট্রান্সফর্মও বলা হয়।

সময় ডোমেনে একটি কিচিরমিচির IF সংকেত

ফাস্ট ফুরিয়ার ট্রান্সফর্মের পরে ফ্রিকোয়েন্সি ডোমেনে একটি কিচিরমিচির IF সংকেত

সমস্যা: একই দূরত্বে একাধিক বস্তু থাকলে আমরা সমস্যায় পড়ি কারণ রেঞ্জ FFT আমাদের দুটি বস্তুর মধ্যে পার্থক্য করতে দেয় না। কিন্তু বস্তুগুলো যদি ভিন্ন গতিতে চলে তাহলে সেগুলোকে গতির দ্বারা আলাদা করা যায়।

একাধিক কিচিরমিচির দিয়ে কিভাবে বেগ পরিমাপ করা যায়

কিচিরমিচির সাধারণত একে অপরের পরে বা সামান্য বিলম্বের সাথে পুনরাবৃত্তি হয়। সাহিত্যে, দুটি কিচিরমিচির শুরুর মধ্যবর্তী সময়কে চির্প পুনরাবৃত্তির সময় বলা হয়। একটি রাডার ফ্রেম তৈরি করার জন্য বেশ কয়েকটি চিপস (সাধারণত 16 থেকে 256) একসাথে স্ট্যাক করা হয়। একটি ফ্রেম সময় = Chirps পুনরাবৃত্তি সময় * Chirps সংখ্যা। সাধারণত, 1 ফ্রেমের সময় দশ মাইক্রোসেকেন্ড থেকে দশ মিলিসেকেন্ড পর্যন্ত।

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

ফ্রিকোয়েন্সি ডোমেনে ভিজ্যুয়ালাইজ করা একটি রাডার ফ্রেম (একাধিক চিপস একসাথে স্ট্যাক করা)। ফুরিয়ার ট্রান্সফর্ম প্রতিটি কিচিরমিচির জন্য আলাদাভাবে প্রয়োগ করা হয়। হলুদ অনুভূমিক রেখা/বক্ররেখা একটি নির্দিষ্ট পরিসরে বস্তুর প্রতিনিধিত্ব করে—এই চিত্রে, রেঞ্জ বিন ~40 এবং ~50-এ দুটি বস্তু রয়েছে।

কেন একসাথে একাধিক চিপস স্ট্যাক? IF সংকেতের পর্যায়টি রাডারের দৃষ্টিকোণ ক্ষেত্রে বস্তুর ছোট এবং বড় কম্পনের জন্য অত্যন্ত সংবেদনশীল - এটি এমনকি একটি ইঞ্জিনের কম্পন ফ্রিকোয়েন্সি বা ব্যক্তি বা প্রাণীর হৃদস্পন্দন পরিমাপ করতেও ব্যবহার করা যেতে পারে।


সময়ের সাথে পর্যায় পরিবর্তনগুলি বিশ্লেষণ করে একটি নির্দিষ্ট পরিসরে একটি বস্তুর বেগ পরিমাপ করা সম্ভব (পর্যায় থেকে কিচিরমিচির পরিবর্তন):


  • Tc সময় দ্বারা পৃথক অন্তত দুটি চিপস প্রেরণ করুন।


  • রেঞ্জ ফুরিয়ার ট্রান্সফর্মের পরে, প্রতিটি কিচিরমিচির একই অবস্থানে শিখর থাকবে কিন্তু বিভিন্ন পর্যায় সহ।


  • পর্যায় ω কিচিরমিচির জুড়ে পরিবর্তন বস্তুর বেগের সাথে মিলে যায়।

mmWave FMCW রাডার দিয়ে গতি পরিমাপের অ্যালগরিদম খুবই সহজ:

  1. একটি ফ্রেমে প্রতিটি কিচিরমিচিরে ফুরিয়ার ট্রান্সফর্ম প্রয়োগ করুন। প্রতিটি ফ্রিকোয়েন্সি বস্তুর একটি নির্দিষ্ট দূরত্বের সাথে মিলে যায়। কখনও কখনও, এই ফ্রিকোয়েন্সিগুলিকে রেঞ্জ বিন বলা হয় কারণ প্রতিটি ফ্রিকোয়েন্সি একটি নির্দিষ্ট পরিসরের সাথে মিলে যায়


  2. যদি আসল IF সংকেতটি অ-জটিল মান দিয়ে উপস্থাপন করা হয়, তবে ফ্রিকোয়েন্সির দ্বিতীয় অর্ধেক (রেঞ্জ বিন) অবশ্যই Nyquist-Shannon উপপাদ্য অনুসারে বাতিল করতে হবে


  3. প্রতিটি রেঞ্জ বিনের উপর আরেকটি ফুরিয়ার ট্রান্সফর্ম প্রয়োগ করুন - সময়ের সাথে সাথে পচনশীল ফেজ পরিবর্তনগুলি ফ্রিকোয়েন্সিতে পরিণত হয় যেখানে ফ্রিকোয়েন্সি একটি নির্দিষ্ট ডপলার (বেগ) মানগুলির সাথে মিলে যায়

বাম থেকে ডানে: ফুরিয়ার ট্রান্সফর্ম (রেঞ্জ ফুরিয়ার ট্রান্সফর্ম), রেঞ্জ ফুরিয়ার ট্রান্সফর্মের পরে রাডার ফ্রেম, রেঞ্জ-ডপলার ইমেজের পরে একটি একক চিপ-এর IF সংকেত। একটি রেঞ্জ-ডপলার ইমেজে "পিক্সেল" এর মান হল একটি নির্দিষ্ট গতি এবং দূরত্বে প্রশস্ততা প্রতিক্রিয়া এবং ফেজ।

সমস্যা: যদি একই দূরত্বে দুটি বস্তু একই গতিতে চলতে থাকে তবে তারা রেঞ্জ-ডপলার ইমেজে একটি একক শিখর তৈরি করবে। কিন্তু যদি আমাদের কাছে বেশ কয়েকটি রিসিভিং Rx অ্যান্টেনা থাকে, তাহলে বস্তুকে তাদের কৌণিক অবস্থান দ্বারা আলাদা করা সম্ভব হতে পারে।

কৌণিক অবস্থান পরিমাপ কিভাবে

যেমন আগে ব্যাখ্যা করা হয়েছে, দূরত্বের একটি ছোট পরিবর্তনের ফলে একটি ফেজ পরিবর্তন হবে। সময়ের মধ্যে আলাদা করা চিপস জুড়ে ফেজ পরিবর্তন বস্তুর বেগ গণনা করতে ব্যবহৃত হয়। স্পেসে আলাদা করা চিপস জুড়ে ফেজ পরিবর্তন (বিভিন্ন Rx অ্যান্টেনা দ্বারা প্রাপ্ত চিপ) কোণ অনুমানের জন্য ব্যবহার করা যেতে পারে।


একাধিক গ্রহণকারী অ্যান্টেনা Rx সহ কোণ অনুমান অ্যালগরিদম খুবই সহজ:

  1. একটি Tx অ্যান্টেনা দিয়ে কিচিরমিচির একটি ফ্রেম প্রেরণ করুন।


  2. সমস্ত Rx অ্যান্টেনা দ্বারা প্রাপ্ত ফ্রেমের 2D ফুরিয়ার ট্রান্সফর্ম (রেঞ্জ-ডপলার ইমেজ) গণনা করুন। প্রতিটি Rx অ্যান্টেনার রেঞ্জ-ডপলার ইমেজ একই অবস্থানে এবং ডপলারের শিখর থাকবে কিন্তু ভিন্ন ফেজ সহ (ফেজ পার্থক্য Rx অ্যান্টেনার মধ্যে দূরত্বের সাথে মিলে যায়)।


  3. অবজেক্টের আগমনের কোণ অনুমান করতে ফেজ পার্থক্য (ω) ব্যবহার করুন - সমস্ত Rx অ্যান্টেনা জুড়ে তৃতীয় ফুরিয়ার ট্রান্সফর্ম প্রয়োগ করুন।

সমস্ত Rx অ্যান্টেনা জুড়ে তৃতীয় ফুরিয়ার ট্রান্সফর্ম প্রয়োগ করার ফলে একটি রেঞ্জ-ডপলার-এঙ্গেল কিউব হবে। কিউবকে রেঞ্জ-ডপলার, রেঞ্জ-কোণ এবং কোণ-বেগ চিত্র হিসাবে কল্পনা করা যেতে পারে।

mmWave FMCW রাডার ডাটা প্রসেসিং পাইথনের সাথে

 import os import numpy as np import scipy import scipy.io as spio import matplotlib.pyplot as plt import matplotlib.gridspec as gridspec import math


RAMP-CNN প্রকল্প থেকে mmWave FMCW রাডার ডেটার একটি উদাহরণ ডাউনলোড করুন।

 !pip uninstall gdown -y && pip install gdown !gdown -V !gdown --folder https://drive.google.com/drive/folders/1Eg-8R45RPvifNf2VYI_MG-LRjdkLOHTf -O /content/sample_slice_data


ফাইল থেকে ডেটা লোড করুন।

 file_name = '/content/sample_slice_data/2019_04_30/2019_04_30_pbms002/2019_04_30_pbms002_000000.mat' mat = spio.loadmat(file_name, squeeze_me=True) adc_data = np.asarray(mat["adc_data"]) print(adc_data.shape) # ADC samples, vRx, chirps - (128, 8, 255) print(adc_data.dtype) # complex128


ভিজ্যুয়ালাইজেশন ফাংশন।

 def show_one_chirp(one_chirp_data, y_label='amplitude', x_label='One chirp'): plt.figure(figsize=[5, 4]) plt.plot(one_chirp_data) plt.xlabel(x_label) plt.ylabel(y_label) plt.show() def show_image(image_data, image_name, x_label='', y_label=''): plt.imshow(image_data) plt.title(image_name) plt.xlabel(x_label) plt.ylabel(y_label) plt.show() def show_3_images(img_data1, img_data2, img_data3): plt.figure(figsize=(10, 8)) plt.subplot(2, 2, 1) plt.imshow(img_data1[0], aspect=1.44) plt.title(img_data1[1]) plt.xlabel(img_data1[2]) plt.ylabel(img_data1[3]) plt.subplot(2, 2, 2) plt.imshow(img_data2[0], aspect=1.0) plt.title(img_data2[1]) plt.xlabel(img_data2[2]) plt.ylabel(img_data2[3]) plt.subplot(2, 2, 3) plt.imshow(img_data3[0], aspect=1.0) plt.title(img_data3[1]) plt.xlabel(img_data3[2]) plt.ylabel(img_data3[3]) plt.show()


একটি কিচিরমিচির একটি ADC ডেটা দেখান।

 show_one_chirp(np.absolute(adc_data[:,0,0]), x_label='IF signal of a chirp') 

রেঞ্জ fft পরে একটি কিচিরমিচির দেখান.

 chirp_fft = np.fft.fft(adc_data[:,0,0]) show_one_chirp(np.absolute(chirp_fft), x_label='IF signal amplitude (range)', y_label='Amplitude') 

সময় এবং ফ্রিকোয়েন্সি ডোমেনে রাডার ফ্রেম দেখান।

 # show all chirps show_one_chirp(np.absolute(adc_data[:,0,:]), x_label='IF signal of frame chirps') show_image(np.absolute(np.fft.fft(adc_data[:,:,:], axis=0).mean(1)), 'range FFT', x_label='Chirps', y_label='Range') 

রাডার ডেটা থেকে পরিসীমা, ডপলার এবং কোণ পান।

 def get_range_doppler_angle(adc_data_in): # adc_data_in - ADC samples, vRx, chirps samples_in = adc_data_in.shape[0] range_window = np.hamming(samples_in).reshape(-1,1,1) range_data = np.fft.fft(adc_data_in*range_window, samples_in, axis=0) # chirps_in = range_data.shape[2] doppler_window = np.hamming(chirps_in).reshape(1,1,-1) range_doppler_data = np.fft.fftshift(np.fft.fft(range_data*doppler_window, chirps_in, axis=2), axes=2) # # samples, vRx, chirps angle_window = np.hamming(range_doppler_data.shape[1]).reshape(1,-1,1) angle_bins=180 rda_data = np.fft.fftshift(np.fft.fft(range_doppler_data*angle_window, angle_bins, axis=1), axes=1) return range_data, range_doppler_data, rda_data
 range_image, range_doppler_image, rda_cube = get_range_doppler_angle(adc_data)
 show_3_images([np.absolute(range_image.mean(axis=1)), 'range doppler', 'Doppler', 'Range'], [np.absolute(rda_cube.mean(axis=2)), 'range angle', 'Angle', 'Range'], [np.absolute(rda_cube.mean(axis=0)), 'angle doppler', 'Doppler', 'Angle'] ) 

আরও পড়া

এর পরে কি?

পরবর্তী দুটি নিবন্ধ কভার করবে:

  • ক্যামেরার তুলনায় mmWaveFMCW রাডার ব্যবহার করার সুবিধা এবং অসুবিধা
  • mmWave FMCW রাডার সিগন্যালের গভীর শিক্ষার অ্যাপ্লিকেশন