paint-brush
डीप लर्निंग: एमएमवेव एफएमसीडब्लू रडार के साथ एज डिवाइस भाग 1 - सिग्नल प्रोसेसिंगद्वारा@owlgrey
2,499 रीडिंग
2,499 रीडिंग

डीप लर्निंग: एमएमवेव एफएमसीडब्लू रडार के साथ एज डिवाइस भाग 1 - सिग्नल प्रोसेसिंग

द्वारा Dmitrii Matveichev 10m2024/04/10
Read on Terminal Reader

बहुत लंबा; पढ़ने के लिए

मिलीमीटर-वेव FMCW रडार पर्यावरण की स्थितियों से स्वतंत्र बहुमुखी संवेदन प्रदान करता है, जो कैमरों के बिना मानव पहचान जैसे उपकरणों और अनुप्रयोगों के लिए आदर्श है। कुशल और लागत प्रभावी, यह दूरी, गति और दिशा को मापने के लिए चिरप आवृत्ति परिवर्तनों का विश्लेषण करता है, जो महत्वपूर्ण उपभोक्ता इलेक्ट्रॉनिक्स और वाई-फाई प्रौद्योगिकी उन्नति का वादा करता है।
featured image - डीप लर्निंग: एमएमवेव एफएमसीडब्लू रडार के साथ एज डिवाइस भाग 1 - सिग्नल प्रोसेसिंग
Dmitrii Matveichev  HackerNoon profile picture

मिलीमीटर-वेव फ़्रीक्वेंसी-मॉड्यूलेटेड कंटीन्यूअस-वेव (FMCW) रडार रेडियो फ़्रीक्वेंसी (RF) इलेक्ट्रोमैग्नेटिक तरंगों का उत्सर्जन और पता लगाकर काम करता है। अपने अनूठे गुणों के कारण, यह तकनीक इंटरैक्टिव सिस्टम और अनुप्रयोगों के लिए कई लाभ प्रदान करती है। यह प्रकाश की स्थिति, पर्यावरणीय शोर या मौसम से स्वतंत्र रूप से संचालित होता है, जो तेज़ और सटीक संवेदन क्षमता प्रदान करता है।


इसके अलावा, यह विभिन्न सामग्रियों में प्रवेश कर सकता है, जिससे यह विभिन्न उपकरणों और सेटिंग्स में एकीकृत करने के लिए आदर्श बन जाता है। सेंसर को मिलीमीटर-वेव आरएफ आवृत्तियों पर एक छोटी, ठोस-अवस्था अर्धचालक इकाई के रूप में बनाया जा सकता है - अनिवार्य रूप से, एक रडार चिप। यह चिप कॉम्पैक्ट है, कम बिजली की खपत करती है, इसमें कोई हिलने वाला हिस्सा नहीं है, और इसे बड़ी मात्रा में लागत-प्रभावी तरीके से उत्पादित किया जा सकता है।


एमएमवेव एफएमसीडब्ल्यू रडार का उपयोग कई उपकरणों में किया जा सकता है, जैसे:

  • आभासी वास्तविकता (वीआर) गैजेट
  • पहनने योग्य प्रौद्योगिकी, स्मार्ट कपड़े
  • इंटरनेट ऑफ थिंग्स (IoT) डिवाइस
  • खेल नियंत्रक
  • पारंपरिक इलेक्ट्रॉनिक्स जैसे स्मार्टफोन, टैबलेट और लैपटॉप।


इसके अलावा, mmWave FMCW रडार का उपयोग विभिन्न कार्यों को हल करने के लिए डीप लर्निंग मॉडल के साथ किया जा सकता है:

  • मानव उपस्थिति का पता लगाना
  • लोगों की गिनती, स्थानीयकरण और ट्रैकिंग
  • मानवीय गतिविधियों का वर्गीकरण (व्यक्ति सोता है/बैठता है/चलता है/खेलता है, आदि)
  • संकेत पहचान
  • स्थान पहचान
  • ओडोमेट्री और SLAM


ध्यान दें कि इन सभी अनुप्रयोगों को कैमरे के बिना, बहुत कम बिजली खपत वाले उपकरण और अपेक्षाकृत छोटे एनएन के साथ हल किया जा सकता है।


अगले कुछ वर्षों में, कई उपभोक्ता इलेक्ट्रॉनिक्स संभवतः उपर्युक्त समस्याओं को हल करने के लिए डीप लर्निंग एल्गोरिदम के साथ इस प्रकार के सेंसर का सक्रिय रूप से उपयोग करना शुरू कर देंगे। इसके अतिरिक्त, 2021 में, IEEE 802.11ау वाई-फाई मानक को मंजूरी दी गई थी। यह मानक समान रेडियो आवृत्तियों और ऑपरेटिंग सिद्धांतों का उपयोग करता है, जिससे वाई-फाई राउटर को mmWave FMCW रडार के समान कार्यक्षमता तक पहुंचने में सक्षम बनाता है।


यह तथा अगले दो लेख निम्नलिखित विषयों पर चर्चा करेंगे:

  • mmWave FMCW रडार सिग्नल प्रोसेसिंग - RF सिग्नल से रेंज, डॉपलर और कोण कैसे प्राप्त करें
  • कैमरे की तुलना में एफएमसीडब्ल्यू रडार का उपयोग करने के लाभ
  • एमएमवेव एफएमसीडब्लू रडार सिग्नल के गहन शिक्षण अनुप्रयोग


यह लेख बताता है कि mmWave FMCW रडार सिग्नल को कैसे प्रोसेस किया जाता है। ज़्यादातर आंकड़े बनाने के लिए इस्तेमाल किए जाने वाले कोड को Google Colab या लेख के अंत में देखा जा सकता है।

एफएमसीडब्लू एमएमवेव रडार

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 mm-वेव रडार एंटीना सर्वदिशात्मक है, और इसे रडार के दृश्य क्षेत्र में सभी वस्तुओं के लिए समय t1 और t2 को मापने का एक तरीका चाहिए। इसके लिए एक FMCW (फ़्रीक्वेंसी मॉड्यूलेटेड कंटीन्यूअस वेव) सिग्नल का उपयोग किया जाता है। रडार का मुख्य घटक चिरप है। चिरप एक साइनसॉइड रेडियो सिग्नल है जिसकी आवृत्ति समय के साथ रैखिक रूप से बढ़ती है, जैसा कि नीचे दिए गए चित्र में दिखाया गया है।

चहचहाहट की शुरुआत से लेकर अंत तक, रेडियो तरंग आवृत्ति को एक पूर्व निर्धारित रैखिक नियम के अनुसार मॉड्यूलेट (बदला) किया जाता है, जैसा कि पहले चित्र में दिखाया गया है। दूसरा चित्र 1ms-लंबी चहचहाहट का एक उदाहरण दिखाता है।

चिरप की विशेषता शुरुआत (f_start) और अंत (f_end) आवृत्तियों, बैंडविड्थ ( B=f_end-f_start ) और चिरप समय (Tc) से होती है। चिरप समय कुछ माइक्रोसेकंड से लेकर कुछ मिलीसेकंड तक होता है। रडार एप्लिकेशन के आधार पर, शुरुआत की आवृत्ति आमतौर पर ~30, 60 या 77GHz होती है। चिरप बैंडविड्थ ~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 सिग्नल

समस्या: यदि एक ही दूरी पर कई वस्तुएँ हैं तो हम मुश्किल में पड़ सकते हैं क्योंकि रेंज FFT हमें दो वस्तुओं के बीच अंतर करने की अनुमति नहीं देगा। लेकिन अगर वस्तुएँ अलग-अलग गति से चलती हैं, तो उन्हें गति से अलग किया जा सकता है।

कई चिरप्स के साथ वेग को कैसे मापें

चहचहाट आमतौर पर एक दूसरे के तुरंत बाद या थोड़ी देरी से दोहराई जाती है। साहित्य में, दो चहचहाटों की शुरुआत के बीच के समय को चहचहाट दोहराव समय कहा जाता है। कई चहचहाट (आमतौर पर 16 से 256) को एक साथ जोड़कर एक रडार फ्रेम बनाया जाता है। एक फ्रेम समय = चहचहाट दोहराव समय * चहचहाट संख्या। आम तौर पर, 1 फ्रेम का समय दसियों माइक्रोसेकंड से लेकर दसियों मिलीसेकंड तक होता है।

रडार फ्रेम - एक साथ ढेर किए गए कई चिरप। हर चिरप एक आवृत्ति-मॉड्यूलेटेड साइनसॉइड है, लेकिन सुविधा के लिए, हर चिरप को आवृत्ति मॉड्यूलेशन के रैखिक नियम के रूप में दर्शाया गया है। प्रत्येक चिरप से प्राप्त IF सिग्नल FoV में सभी ऑब्जेक्ट्स की दूरी का अनुमान लगाने की अनुमति देता है

आवृत्ति डोमेन में विज़ुअलाइज़ किया गया एक रडार फ़्रेम (एक साथ ढेर किए गए कई चिरप्स)। फूरियर ट्रांसफ़ॉर्म को प्रत्येक चिरप पर अलग से लागू किया जाता है। पीली क्षैतिज रेखाएँ/वक्र एक विशेष श्रेणी में वस्तुओं को दर्शाते हैं - इस चित्र में, रेंज बिन ~40 और ~50 पर दो वस्तुएँ हैं।

एक साथ कई चहचहाटें क्यों? आईएफ सिग्नल का चरण रडार क्षेत्र में वस्तुओं के छोटे और बड़े कंपन के प्रति बहुत संवेदनशील है - इसका उपयोग इंजन की कंपन आवृत्ति या किसी व्यक्ति या जानवर के दिल की धड़कन को मापने के लिए भी किया जा सकता है।


समय के साथ चरण परिवर्तनों (चिरप से चिरप तक चरण परिवर्तन) का विश्लेषण करके किसी वस्तु के वेग को किसी विशेष सीमा पर मापना संभव है:


  • समय Tc से अलग कम से कम दो चिरप्स प्रेषित करें।


  • फ़ूरियर रूपांतरण के बाद, प्रत्येक चिरप का शिखर एक ही स्थान पर होगा, लेकिन चरण भिन्न होंगे।


  • चहचहाहट के दौरान चरण ω परिवर्तन वस्तु के वेग के अनुरूप होता है।

एमएमवेव एफएमसीडब्ल्यू रडार से गति मापने का एल्गोरिदम बहुत सरल है:

  1. फ्रेम में प्रत्येक चिरप पर फूरियर ट्रांसफॉर्म लागू करें। प्रत्येक आवृत्ति ऑब्जेक्ट से एक विशिष्ट दूरी से मेल खाती है। कभी-कभी, इन आवृत्तियों को रेंज बिन कहा जाता है क्योंकि प्रत्येक आवृत्ति एक विशिष्ट रेंज से मेल खाती है


  2. यदि मूल IF सिग्नल को गैर-जटिल मानों के साथ दर्शाया जाता है, तो आवृत्तियों (रेंज बिन) के दूसरे आधे हिस्से को नाइक्विस्ट-शैनन प्रमेय के अनुसार त्याग दिया जाना चाहिए


  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') 

रेंज एफएफटी के बाद एक चिरप दिखाएं।

 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 रडार के उपयोग के फायदे और नुकसान
  • एमएमवेव एफएमसीडब्लू रडार सिग्नल के गहन शिक्षण अनुप्रयोग