paint-brush
Aprendizado profundo: dispositivos de borda com radares FMCW mmWave Parte 1 - Processamento de sinalpor@owlgrey
1,456 leituras
1,456 leituras

Aprendizado profundo: dispositivos de borda com radares FMCW mmWave Parte 1 - Processamento de sinal

por Dmitrii Matveichev 10m2024/04/10
Read on Terminal Reader

Muito longo; Para ler

O radar FMCW de ondas milimétricas oferece detecção versátil independente das condições ambientais, ideal para dispositivos e aplicações como detecção humana sem câmeras. Eficiente e econômico, ele analisa mudanças na frequência do chirp para medir distância, velocidade e direção, prometendo avanços significativos em eletrônicos de consumo e tecnologia Wi-Fi.
featured image - Aprendizado profundo: dispositivos de borda com radares FMCW mmWave Parte 1 - Processamento de sinal
Dmitrii Matveichev  HackerNoon profile picture

O radar de onda contínua modulada em frequência de ondas milimétricas (FMCW) funciona emitindo e detectando ondas eletromagnéticas de radiofrequência (RF). Devido às suas propriedades únicas, esta tecnologia oferece diversas vantagens para sistemas e aplicações interativas. Ele opera independentemente das condições de iluminação, ruído ambiental ou clima, oferecendo capacidades de detecção rápidas e precisas.


Além disso, pode penetrar em vários materiais, tornando-o ideal para integração em vários dispositivos e ambientes. O sensor pode ser construído como uma pequena unidade semicondutora de estado sólido em frequências de RF de ondas milimétricas - essencialmente, um chip de radar. Este chip é compacto, consome pouca energia, não possui peças móveis e pode ser produzido com boa relação custo-benefício em grandes quantidades.


O radar mmWave FMCW pode ser usado em muitos dispositivos, como:

  • dispositivos de realidade virtual (VR)
  • tecnologia vestível, roupas inteligentes
  • Dispositivos de Internet das Coisas (IoT)
  • controladores de jogo
  • eletrônicos convencionais, como smartphones, tablets e laptops.


Além disso, os radares mmWave FMCW podem ser usados em conjunto com modelos de aprendizagem profunda para resolver várias tarefas:

  • detecção de presença humana
  • contagem, localização e rastreamento de pessoas
  • classificação das atividades humanas (a pessoa dorme/senta/caminha/pratica esportes, etc.)
  • reconhecimento de gestos
  • reconhecimento de lugar
  • odometria e SLAM


Observe que todas essas aplicações podem ser resolvidas sem câmeras, com um dispositivo de baixíssimo consumo de energia e NNs relativamente pequenos.


Nos próximos anos, muitos produtos eletrônicos de consumo provavelmente começarão a usar ativamente esse tipo de sensor com algoritmos de aprendizado profundo para resolver os problemas mencionados acima. Além disso, em 2021, o padrão Wi-Fi IEEE 802.11ау foi aprovado. Este padrão usa as mesmas frequências de rádio e princípios operacionais, permitindo que roteadores Wi-Fi acessem a mesma funcionalidade dos radares FMCW mmWave.


Este e os próximos dois artigos abordarão:

  • Processamento de sinal de radar mmWave FMCW - como obter alcance, doppler e ângulo do sinal de RF
  • benefícios do uso do radar FMCW em comparação com uma câmera
  • Aplicações de aprendizagem profunda do sinal de radar mmWave FMCW


Este artigo explica como um sinal de radar mmWave FMCW é processado. O código utilizado para gerar a maioria dos números pode ser acessado no Google Colab ou no final do artigo.

Radar FMCW mmWave

O sinal do radar mmWave FMCW permite medir a distância a todos os objetos em seu campo de visão, sua velocidade e posição angular (azimute e elevação). O sinal do radar pode ser processado na forma de imagens de resolução muito pequena (geralmente ~32x32 - 256x64 pixels) com alcance/velocidade/ângulo ao longo dos eixos da imagem como na imagem abaixo - alcance-doppler (alcance-velocidade) alcance- imagens angulares.



Sinal de radar mmWave FMCW processado em imagens de alcance-doppler e ângulo de alcance e a visão de uma câmera (Fonte: https://github.com/ZhangAoCanada/RADDet?tab=readme-ov-file)

O sensor consiste em várias (1 ou mais) antenas de transmissão omnidirecionais e várias (1 ou mais) antenas de recepção. As antenas de transmissão e recepção operam simultaneamente. O campo de visão do radar é geralmente de aproximadamente 120° e a distância máxima pode variar de alguns centímetros a dezenas de metros.

Como a distância é medida

Normalmente precisamos emitir um sinal no instante t1 e receber sua reflexão no instante t2 para medir a distância. A distância pode então ser calculada como d=(t2-t1)*c , onde c é a velocidade da luz porque a onda de rádio viaja na velocidade da luz.


A antena de radar de onda mm FMCW é omnidirecional e precisa de uma maneira de medir os tempos t1 e t2 para todos os objetos no campo de visão do radar. Um sinal FMCW (onda contínua modulada em frequência) é usado para isso. O principal componente do radar é um sinal sonoro. Chirp é um sinal de rádio senoidal cuja frequência aumenta linearmente com o tempo, conforme mostrado na figura abaixo.

Do início ao fim do chirp, a frequência das ondas de rádio é modulada (alterada) de acordo com uma lei linear pré-determinada, como na primeira figura. A segunda figura mostra um exemplo de um sinal sonoro de 1 ms de duração.

Um chirp é caracterizado pelas frequências inicial (f_start) e final (f_end), largura de banda ( B=f_end-f_start ) e tempo de chirp (Tc). O tempo de chirp varia de alguns microssegundos a alguns milissegundos. A frequência inicial é geralmente de aproximadamente 30, 60 ou 77 GHz, dependendo da aplicação do radar. A largura de banda do Chirp varia de ~0,5 GHz a vários GHz.

O sinal IF é a diferença entre o sinal atualmente transmitido pelo sinal Tx e o recebido pelos sinais Rx. (Fonte: https://www.ti.com/content/dam/videos/external-videos/2/3816841626001/5415203482001.mp4/subassets/mmwaveSensing-FMCW-offlineviewing_0.pdf)

As antenas receptoras (Rx) e transmissoras (Tx) operam simultaneamente. O sintetizador gera continuamente um sinal sonoro que é enviado à antena transmissora Tx e ao mixer. Ao mesmo tempo, o sinal recebido pela antena Rx também é enviado ao mixer. O mixer produz a diferença entre o sinal enviado para Tx e o sinal recebido por Rx.

Um mixer é um dispositivo simples que recebe um sinal senoidal em duas entradas e produz um novo sinal senoidal cuja frequência e fase são a diferença entre as frequências e fases dos sinais de entrada.

A frequência do sinal chirp muda com o tempo de acordo com uma lei linear conhecida (Slope), o que significa que se houver um único objeto na frente do radar, este objeto irá gerar um sinal x_out com um constante frequência F_obj=S2d/c , onde S é a taxa de mudança da frequência do sinal chirp (inclinação), d é a distância até o objeto, c é a velocidade da luz.

Se houver um único objeto na frente do radar, este objeto irá gerar um sinal x_out com frequência constante F_obj=S2d/c

Podemos medir a distância de todos os objetos no campo de visão do radar simplesmente analisando o sinal do mixer sem medir o tempo: d=(F_obj*c)/(2*S). Na literatura, o sinal x_out é denominado 'sinal IF' (sinal de frequência intermediária).


Um bônus adicional do design do sensor: a frequência portadora do sinal geralmente fica em torno de 30 GHz ou 60 GHz. Se precisássemos digitalizar um sinal com tais frequências, teríamos requisitos muito elevados para o ADC. Toda a análise de sinal é feita em sinal IF cuja frequência geralmente fica em torno de alguns MHz, o que relaxa significativamente os requisitos do ADC.

Use a transformada de Fourier para encontrar o alcance de cada objeto no Radar FoV

Como foi mostrado acima, para encontrar a distância de todos os objetos no radar FoV, precisamos decompor o sinal x_out em seus componentes de frequência. A Transformada de Fourier é um algoritmo que converte um sinal no domínio do tempo no domínio da frequência.


A transformada de Fourier do sinal IF revelará vários tons, e a frequência de cada tom é proporcional ao alcance de cada objeto do radar - na literatura, essa transformada de Fourier também é chamada de transformada de Fourier de tempo rápido ou transformada de Fourier de alcance.

Sinal IF de um chirp no domínio do tempo

Sinal IF de um chirp no domínio da frequência após a transformada rápida de Fourier

Problema: se houver vários objetos à mesma distância, teremos problemas porque o intervalo FFT não nos permitirá diferenciar dois objetos. Mas se os objetos se moverem em velocidades diferentes, eles poderão ser separados por velocidade.

Como medir a velocidade com vários chilreios

Os chilreios geralmente são repetidos imediatamente um após o outro ou com um ligeiro atraso. Na literatura, o tempo entre o início de dois chilreios é denominado Tempo de Repetição do Chirp. Vários sinais sonoros (geralmente 16 a 256) são empilhados para formar uma estrutura de radar. Um tempo de quadro = Tempo de repetição de chilreios * Número de chilreios. Normalmente, o tempo de 1 quadro varia de dezenas de microssegundos a dezenas de milissegundos.

Quadro de radar - vários sinais sonoros empilhados. Cada chirp é uma senóide modulada em frequência, mas por conveniência, cada chirp é descrito como a lei linear da modulação de frequência. O sinal IF recebido de cada chirp permite estimar a distância de todos os objetos no FoV

Um quadro de radar (vários sinais sonoros empilhados) visualizado no domínio da frequência. A Transformada de Fourier é aplicada a cada chirp separadamente. Linhas/curvas horizontais amarelas representam objetos em um intervalo específico - nesta figura, há dois objetos no intervalo ~40 e ~50.

Por que empilhar vários chilreios juntos? A fase do sinal IF é muito sensível a pequenas e grandes vibrações de objetos no campo de visão do radar - pode até ser usada para medir a frequência de vibração de um motor ou o batimento cardíaco de uma pessoa ou animal.


É possível medir a velocidade de um objeto em uma faixa específica analisando as mudanças de fase ao longo do tempo (mudança de fase de chirp para chirp):


  • Transmitir pelo menos dois sinais sonoros separados pelo tempo Tc.


  • Após a transformada de Fourier de alcance, cada chirp terá picos nos mesmos locais, mas com fases diferentes.


  • A mudança de fase ω entre os chirps corresponde à velocidade do objeto.

O algoritmo para medir a velocidade com o radar mmWave FMCW é muito simples:

  1. Aplique a Transformada de Fourier a cada chirp em um quadro. Cada frequência corresponde a uma distância específica do objeto. Às vezes, essas frequências são chamadas de intervalos de faixa, pois cada frequência corresponde a um intervalo específico.


  2. se o sinal IF original for representado com valores não complexos, a segunda metade das frequências (faixas de faixa) deve ser descartada de acordo com o teorema de Nyquist-Shannon


  3. Aplique outra transformada de Fourier em cada intervalo de faixa - decomponha as mudanças de fase ao longo do tempo em frequências onde a frequência corresponderá a valores Doppler (velocidade) específicos

Da esquerda para a direita: sinal IF de um único chirp após a transformada de Fourier (transformada de Fourier de alcance), quadro de radar após a transformada de Fourier de alcance, imagem Doppler de alcance. Os valores dos "pixels" em uma imagem Doppler de alcance são a resposta de amplitude e a fase a uma velocidade e distância específicas.

Problema: se houver dois objetos à mesma distância movendo-se na mesma velocidade, eles produzirão um único pico na imagem Doppler. Mas se tivermos várias antenas receptoras Rx, pode ser possível separar os objetos pela sua posição angular

Como medir a posição angular

Conforme explicado anteriormente, uma pequena mudança na distância resultará em uma mudança de fase. A mudança de fase entre sinais separados no tempo é usada para calcular a velocidade dos objetos. A mudança de fase entre chirps separados no espaço (chirps recebidos por diferentes antenas Rx) pode ser usada para estimativa de ângulo.


O algoritmo de estimativa de ângulo com múltiplas antenas receptoras Rx é muito simples:

  1. Transmita um quadro de chilreios com uma antena Tx.


  2. Calcule a transformada de Fourier 2D (imagem alcance-doppler) de quadros recebidos por todas as antenas Rx. As imagens range-doppler de cada antena Rx terão picos no mesmo local e doppler, mas com fase diferente (a diferença de fase corresponde à distância entre as antenas Rx).


  3. Use a diferença de fase (ω) para estimar o ângulo de chegada dos objetos - aplique a terceira transformada de Fourier em todas as antenas Rx.

A aplicação da terceira transformada de Fourier em todas as antenas Rx resultará em um cubo alcance-ângulo-doppler. O cubo pode ser visualizado como imagens de alcance-doppler, alcance-ângulo e ângulo-velocidade.

Processamento de dados de radar mmWave FMCW com Python

 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


Baixe um exemplo de dados de radar mmWave FMCW do projeto RAMP-CNN .

 !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


Carregue dados do arquivo.

 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


Funções de visualização.

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


Mostre um dado ADC de um chirp.

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

Mostre um chilrear após o intervalo 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') 

Mostre o quadro do radar nos domínios do tempo e da frequência.

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

Obtenha alcance, doppler e ângulo a partir de dados de radar.

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

Leitura adicional

O que vem a seguir?

Os próximos dois artigos abordarão:

  • prós e contras do uso do radar mmWaveFMCW em comparação com uma câmera
  • aplicações de aprendizagem profunda do sinal de radar mmWave FMCW