paint-brush
Học sâu: Thiết bị biên có radar mmWave FMCW Phần 1 - Xử lý tín hiệutừ tác giả@owlgrey
2,025 lượt đọc
2,025 lượt đọc

Học sâu: Thiết bị biên có radar mmWave FMCW Phần 1 - Xử lý tín hiệu

từ tác giả Dmitrii Matveichev 10m2024/04/10
Read on Terminal Reader

dài quá đọc không nổi

Radar FMCW sóng milimet cung cấp khả năng cảm biến linh hoạt, không phụ thuộc vào điều kiện môi trường, lý tưởng cho các thiết bị và ứng dụng như phát hiện con người mà không cần camera. Hiệu quả và tiết kiệm chi phí, nó phân tích các thay đổi tần số chirp để đo khoảng cách, tốc độ và hướng, hứa hẹn những tiến bộ đáng kể về điện tử tiêu dùng và công nghệ Wi-Fi.
featured image - Học sâu: Thiết bị biên có radar mmWave FMCW Phần 1 - Xử lý tín hiệu
Dmitrii Matveichev  HackerNoon profile picture

Radar sóng liên tục điều chế tần số sóng milimet (FMCW) hoạt động bằng cách phát ra và phát hiện sóng điện từ tần số vô tuyến (RF). Do đặc tính độc đáo của nó, công nghệ này mang lại một số lợi thế cho các hệ thống và ứng dụng tương tác. Nó hoạt động độc lập với điều kiện ánh sáng, tiếng ồn môi trường hoặc thời tiết, mang lại khả năng cảm biến nhanh chóng và chính xác.


Hơn nữa, nó có thể xuyên qua nhiều vật liệu khác nhau, khiến nó trở nên lý tưởng để tích hợp vào nhiều thiết bị và cài đặt khác nhau. Cảm biến có thể được chế tạo như một đơn vị bán dẫn trạng thái rắn nhỏ ở tần số RF sóng milimet - về cơ bản là một chip radar. Con chip này nhỏ gọn, tiêu thụ ít năng lượng, không có bộ phận chuyển động và có thể được sản xuất với số lượng lớn với chi phí hợp lý.


Radar mmWave FMCW có thể được sử dụng trong nhiều thiết bị, chẳng hạn như:

  • tiện ích thực tế ảo (VR)
  • công nghệ mặc, quần áo thông minh
  • Thiết bị Internet of Things (IoT)
  • bộ điều khiển trò chơi
  • thiết bị điện tử thông thường như điện thoại thông minh, máy tính bảng và máy tính xách tay.


Hơn nữa, radar mmWave FMCW có thể được sử dụng cùng với các mô hình học sâu để giải quyết các nhiệm vụ khác nhau:

  • phát hiện sự hiện diện của con người
  • đếm người, bản địa hóa và theo dõi
  • phân loại các hoạt động của con người (ngủ/ngồi/đi bộ/chơi thể thao, v.v.)
  • công nhận cử chỉ
  • sự công nhận địa điểm
  • đo đường và SLAM


Lưu ý rằng tất cả các ứng dụng này có thể được giải quyết mà không cần camera, với thiết bị tiêu thụ điện năng rất thấp và NN tương đối nhỏ.


Trong vài năm tới, nhiều thiết bị điện tử tiêu dùng có thể sẽ bắt đầu tích cực sử dụng loại cảm biến này với các thuật toán học sâu để giải quyết các vấn đề nêu trên. Ngoài ra, vào năm 2021, tiêu chuẩn Wi-Fi IEEE 802.11ау đã được phê duyệt. Tiêu chuẩn này sử dụng cùng tần số vô tuyến và nguyên tắc hoạt động, cho phép bộ định tuyến Wi-Fi truy cập chức năng tương tự như radar mmWave FMCW.


Bài viết này và hai bài viết tiếp theo sẽ đề cập đến:

  • Xử lý tín hiệu radar mmWave FMCW - cách lấy phạm vi, doppler và góc từ tín hiệu RF
  • lợi ích của việc sử dụng radar FMCW so với máy ảnh
  • Ứng dụng học sâu của tín hiệu radar mmWave FMCW


Bài viết này giải thích cách xử lý tín hiệu radar mmWave FMCW. Bạn có thể truy cập mã được sử dụng để tạo hầu hết các số liệu trong Google Colab hoặc ở cuối bài viết.

Radar sóng mmCW

Tín hiệu từ radar mmWave FMCW cho phép đo khoảng cách đến tất cả các vật thể trong trường quan sát, tốc độ và vị trí góc của chúng (góc phương vị và độ cao). Tín hiệu từ radar có thể được xử lý thành dạng hình ảnh có độ phân giải rất nhỏ (thường là ~ 32x32 - 256x64 pixel) với phạm vi/tốc độ/góc dọc theo trục hình ảnh như trong hình bên dưới - phạm vi doppler phạm vi (tốc độ phạm vi)- hình ảnh góc cạnh.



Tín hiệu radar mmWave FMCW được xử lý thành hình ảnh phạm vi doppler và góc phạm vi cũng như góc nhìn từ camera (Nguồn: https://github.com/ZhangAoCanada/RADDet?tab=readme-ov-file)

Cảm biến bao gồm một số (1 hoặc nhiều) ăng-ten phát đa hướng và một số (1 hoặc nhiều) ăng-ten thu. Anten phát và thu hoạt động đồng thời. Trường quan sát của radar thường là ~ 120° và khoảng cách tối đa có thể từ vài cm đến hàng chục mét.

Khoảng cách được đo như thế nào

Chúng ta thường cần phát ra tín hiệu tại thời điểm t1 và nhận tín hiệu phản xạ tại thời điểm t2 để đo khoảng cách. Khoảng cách khi đó có thể được tính như d=(t2-t1)*c , trong đó c là tốc độ ánh sáng vì sóng vô tuyến truyền đi với tốc độ ánh sáng.


Ăng-ten radar sóng mm FMCW có tính đa hướng và cần có cách đo thời gian t1t2 cho tất cả các vật thể trong trường quan sát của radar. Tín hiệu FMCW (Sóng liên tục được điều chế tần số) được sử dụng cho việc này. Thành phần chính của radar là tiếng kêu. Chirp là tín hiệu vô tuyến hình sin có tần số tăng tuyến tính theo thời gian, như thể hiện trong hình bên dưới.

Từ đầu đến cuối tiếng kêu, tần số sóng vô tuyến được điều chế (thay đổi) theo một quy luật tuyến tính xác định trước, như trong hình đầu tiên. Hình thứ hai cho thấy một ví dụ về tiếng kêu dài 1ms.

Tiếng kêu được đặc trưng bởi tần số bắt đầu (f_start) và kết thúc (f_end), Băng thông ( B=f_end-f_start ) và thời gian kêu (Tc). Thời gian chirp dao động từ vài micro giây đến vài mili giây. Tần số bắt đầu thường là ~30, 60 hoặc 77GHz, tùy thuộc vào ứng dụng radar. Băng thông Chirp dao động từ ~ 0,5GHz đến vài GHz.

Tín hiệu IF là sự khác biệt giữa tín hiệu Tx hiện được truyền và tín hiệu Rx nhận được. (Nguồn: https://www.ti.com/content/dam/videos/external-videos/2/3816841626001/5415203482001.mp4/subassets/mmwaveSensing-FMCW-offlineviewing_0.pdf)

Anten thu (Rx) và anten phát (Tx) hoạt động đồng thời. Bộ tổng hợp liên tục tạo ra một tiếng kêu được gửi đến ăng ten phát Tx và bộ trộn. Đồng thời, tín hiệu nhận được từ anten Rx cũng được đưa đến bộ trộn. Bộ trộn tạo ra sự khác biệt giữa tín hiệu được gửi tới Tx và tín hiệu mà Rx nhận được.

Bộ trộn là một thiết bị đơn giản nhận tín hiệu hình sin ở hai đầu vào và tạo ra tín hiệu hình sin mới có tần số và pha là sự chênh lệch giữa tần số và pha của tín hiệu đầu vào

Tần số của tín hiệu chirp thay đổi theo thời gian theo một quy luật tuyến tính đã biết (Độ dốc), nghĩa là nếu có một vật thể ở phía trước radar, vật thể này sẽ tạo ra tín hiệu x_out với không thay đổi tần số F_obj=S2d/c , trong đó S - tốc độ thay đổi tần số tín hiệu chirp (độ dốc), d - khoảng cách đến vật thể, c - tốc độ ánh sáng.

Nếu có một vật thể ở phía trước radar, vật thể này sẽ tạo ra tín hiệu x_out với tần số không đổi F_obj=S2d/c

Chúng ta có thể đo khoảng cách đến tất cả các vật thể trong trường quan sát của radar chỉ bằng cách phân tích tín hiệu từ bộ trộn mà không cần đo thời gian: d=(F_obj*c)/(2*S). Trong tài liệu, tín hiệu x_out được gọi là 'tín hiệu IF' (tín hiệu tần số trung gian).


Một điểm cộng nữa của thiết kế cảm biến: tần số sóng mang của tín hiệu thường vào khoảng 30GHz hoặc 60GHz. Nếu chúng ta cần số hóa tín hiệu có tần số như vậy, chúng ta sẽ có yêu cầu rất cao đối với ADC. Tất cả các phân tích tín hiệu được thực hiện trên tín hiệu IF có tần số thường ở khoảng vài MHz, điều này làm giảm đáng kể các yêu cầu đối với ADC.

Sử dụng Biến đổi Fourier để tìm phạm vi của từng đối tượng trong Radar FoV

Như đã trình bày ở trên, để tìm khoảng cách đến tất cả các vật thể trong radar foV, chúng ta cần phân tách tín hiệu x_out thành các thành phần tần số của nó. Biến đổi Fourier là một thuật toán chuyển đổi tín hiệu miền thời gian sang miền tần số.


Biến đổi Fourier của tín hiệu IF sẽ hiển thị nhiều âm và tần số của mỗi âm tỷ lệ thuận với phạm vi của từng đối tượng từ radar - trong tài liệu, biến đổi Fourier này còn được gọi là biến đổi Fourier thời gian nhanh hoặc biến đổi Fourier phạm vi.

Tín hiệu IF của tiếng kêu trong miền thời gian

Tín hiệu IF của tiếng kêu trong miền tần số sau phép biến đổi Fourier nhanh

Vấn đề: nếu có nhiều đối tượng ở cùng một khoảng cách thì chúng tôi đang gặp rắc rối vì phạm vi FFT sẽ không cho phép chúng tôi phân biệt giữa hai đối tượng. Nhưng nếu các vật chuyển động với tốc độ khác nhau thì chúng có thể bị phân tách bằng tốc độ.

Cách đo vận tốc bằng nhiều tiếng kêu

Các tiếng kêu thường được lặp lại ngay sau nhau hoặc hơi trễ. Trong văn học, khoảng thời gian giữa lúc bắt đầu hai tiếng kêu được gọi là Thời gian lặp lại tiếng kêu. Một số tiếng kêu (thường từ 16 đến 256) được xếp chồng lên nhau để tạo thành khung radar. Thời gian khung hình = Thời gian lặp lại tiếng kêu * Số tiếng kêu. Thông thường, thời gian của 1 khung hình là từ hàng chục micro giây đến hàng chục mili giây.

Khung radar - nhiều tiếng kêu xếp chồng lên nhau. Mỗi tiếng kêu đều là một hình sin được điều chế tần số, nhưng để thuận tiện, mỗi tiếng kêu được mô tả là định luật tuyến tính của điều chế tần số. Tín hiệu IF nhận được từ mỗi tiếng kêu cho phép ước tính khoảng cách đến tất cả các đối tượng trong foV

Một khung radar (nhiều tiếng kêu xếp chồng lên nhau) được hiển thị trong miền tần số. Biến đổi Fourier được áp dụng cho từng tiếng kêu riêng biệt. Các đường/đường cong ngang màu vàng biểu thị các đối tượng ở một phạm vi cụ thể—trong hình này, có hai đối tượng ở phạm vi khoảng ~40 và ~50.

Tại sao xếp nhiều tiếng kêu lại với nhau? Pha của tín hiệu IF rất nhạy cảm với các rung động nhỏ và lớn của các vật thể trong trường quan sát của radar - nó thậm chí có thể được sử dụng để đo tần số rung động của động cơ hoặc nhịp tim của người hoặc động vật.


Có thể đo vận tốc của một vật ở một phạm vi cụ thể bằng cách phân tích sự thay đổi pha theo thời gian (sự thay đổi pha từ chirp sang chirp):


  • Truyền ít nhất hai tiếng kêu cách nhau theo thời gian Tc.


  • Sau phép biến đổi Fourier phạm vi, mỗi tiếng kêu sẽ có các đỉnh ở cùng vị trí nhưng có các pha khác nhau.


  • Sự thay đổi pha ω trên các tiếng kêu tương ứng với vận tốc của vật thể.

Thuật toán đo tốc độ bằng radar mmWave FMCW rất đơn giản:

  1. Áp dụng Biến đổi Fourier cho từng tiếng kêu trong khung. Mỗi tần số tương ứng với một khoảng cách nhất định tới vật thể. Đôi khi, những tần số này được gọi là phạm vi vì mỗi tần số tương ứng với một phạm vi cụ thể


  2. nếu tín hiệu IF ban đầu được biểu diễn bằng các giá trị không phức tạp thì nửa sau của tần số (thùng phạm vi) phải bị loại bỏ theo định lý Nyquist-Shannon


  3. Áp dụng một Biến đổi Fourier khác trên mỗi ngăn phạm vi - phân tách các thay đổi pha theo thời gian thành các tần số trong đó tần số sẽ tương ứng với một giá trị Doppler (vận tốc) cụ thể

Từ trái sang phải: Tín hiệu IF của một tiếng kêu sau biến đổi Fourier (biến đổi Fourier phạm vi), khung radar sau biến đổi Fourier phạm vi, hình ảnh doppler phạm vi. Các giá trị của "pixel" trong hình ảnh doppler phạm vi là đáp ứng biên độ và pha ở tốc độ và khoảng cách cụ thể.

Vấn đề: nếu có hai vật thể ở cùng một khoảng cách di chuyển với cùng tốc độ thì chúng sẽ tạo ra một đỉnh duy nhất trong hình ảnh doppler phạm vi. Nhưng nếu chúng ta có một số ăng-ten thu Rx, có thể phân tách các vật thể theo vị trí góc của chúng

Cách đo vị trí góc

Như đã giải thích trước đó, một sự thay đổi nhỏ về khoảng cách sẽ dẫn đến sự thay đổi pha. Sự thay đổi pha giữa các tiếng kêu tách biệt theo thời gian được sử dụng để tính toán vận tốc của vật thể. Có thể sử dụng sự thay đổi pha giữa các tiếng kêu tách biệt trong không gian (các tiếng kêu được nhận bởi các ăng ten Rx khác nhau) để ước tính góc.


Thuật toán ước lượng góc với nhiều anten thu Rx rất đơn giản:

  1. Truyền một khung tiếng kêu bằng ăng-ten Tx.


  2. Tính toán Biến đổi Fourier 2D (hình ảnh phạm vi doppler) của các khung mà tất cả ăng-ten Rx nhận được. Ảnh range-doppler của mỗi anten Rx sẽ có các đỉnh ở cùng một vị trí và doppler nhưng có pha khác nhau (độ lệch pha tương ứng với khoảng cách giữa các anten Rx).


  3. Sử dụng độ lệch pha (ω) để ước tính góc tới của vật thể - áp dụng biến đổi Fourier thứ ba trên tất cả các ăng-ten Rx.

Áp dụng Biến đổi Fourier thứ ba trên tất cả các ăng-ten Rx sẽ tạo ra một khối góc doppler phạm vi. Khối lập phương có thể được hình dung dưới dạng hình ảnh phạm vi doppler, góc phạm vi và vận tốc góc.

Xử lý dữ liệu radar mmWave FMCW bằng 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


Tải xuống ví dụ về dữ liệu radar mmWave FMCW từ dự án 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


Tải dữ liệu từ tập tin.

 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


Chức năng trực quan hóa.

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


Hiển thị một dữ liệu ADC của tiếng kêu.

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

Hiển thị tiếng kêu sau phạm vi 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') 

Hiển thị khung radar trong miền thời gian và tần số.

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

Nhận phạm vi, doppler và góc từ dữ liệu 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'] ) 

Đọc thêm

Tiếp theo là gì?

Hai bài viết tiếp theo sẽ đề cập đến:

  • ưu và nhược điểm của việc sử dụng radar mmWaveFMCW so với máy ảnh
  • ứng dụng học sâu của tín hiệu radar mmWave FMCW