[[Include(WikiToC)]] === mmWave OFDM based ISAC Tutorial ==== Description This tutorial demonstrates how to perform an mmWave OFDM based ISAC (Integrated Sensing and Communications) experiment using the COSMOS testbed. [[PageOutline(3-6,,inline,unnumbered)]] ==== Prerequisites * COSMOS account and reservation established * Access to the radar SDR nodes and PAAM mobile node * Chrome Remote Desktop for graphical access ==== Related COSMOS Documentation * [wiki:Tutorials#SDRandWireless SDR and Wireless] * [wiki:Hardware/SubSystems/IBM#IBM28-GHzPhasedArrayBoardForCOSMOS IBM 28-GHz Phased Array Board For COSMOS] * [wiki:UserGuide/RemoteAccess/ChromeRemoteDesktop#ChromeRemoteDesktopSetupPage Chrome Remote Desktop Setup Page] ==== Resource Requirements * SDRs: `sdr1-radar`, `sdr2-radar` * PAAMs: `rfdev-sdr1-radar`, `rfdev-sdr2-radar` * Mobile PAAM: `mob4-1` * Server: `srv1-lg1` * OMF Image: `ubuntu2004-uhd4.3-gr3.8-paam-radar-new.ndz` ==== Setup Load the required images onto the server and mobile PAAM: {{{#!shell omf load -i ubuntu2004-uhd4.3-gr3.8-paam-radar-new.ndz -t srv1-lg1 omf load -i ubuntu2004-uhd4.3-gr3.8-paam-radar-new.ndz -t mob4-1 }}} Power on the experiment hardware: {{{#!shell omf tell -a on -t sdr1-radar,rfdev-sdr1-radar,sdr2-radar,rfdev-sdr2-radar,mob4-1,srv1-lg1 }}} Connect to the server: {{{#!shell ssh root@srv1-lg1 }}} Run the PAAM setup script: {{{#!shell cd IBM_PAAM_Software_vFINAL/examples/ python3 paam_radar_setup.py }}} Connect via Chrome Remote Desktop and choose the first **GNOME on Xorg**. ===== PAAM Antennas Configuration [[Image(radar setup.png, 600px)]] ==== Execution ===== Radar Side (srv1-lg1) Terminal 1: Network and packet generator configuration: {{{#!shell sudo ip link set dev eno1 mtu 9000 sudo sysctl -w net.core.wmem_max=25000000 O-JRC/examples/build-mimo-ofdm-packet-generator-Desktop-Debug/mimo-ofdm-packet-generator }}} Configure signal parameters: * Sample Rate: 100 MHz * Packet size: 50 bytes * TX Antennas: 2 Press Start once configured. ===== Packet Generator Configuration [[Image(packet generator.png, 600px)]] Terminal 2: GNU Radio Execution Execute the following command to open GNU Radio {{{#!shell gnuradio-companion }}} ==== Calibration Open the calibration flowgraph: * `O-JRC/examples/usrp/V0_JRC_calibration.grc` Verify calibration parameters: * Variables * `usrp_freq: 3e9` * `samp_rate: 100e6` * usrp_mimo_trx * Number of MBoards: 2 * Number of TX: 2 * Number of RX: 2 * USRP Arguments: `"addr0=10.38.24.1, addr1=10.38.24.2, master_clock_rate=200e6"` * Clock Sources: `"internal,external"` * Time Sources: `"internal,external"` Execute the flowgraph and adjust the following parameters until waveforms are aligned: * RX2 Gain * RX2 Phase Record these calibration values and terminate flowgraph. [[Image(calibration.png, 1200px)]] ==== Radar Transmission Open TRX flowgraph: * `O-JRC/examples/usrp/V1_JRC_TRX.grc` Verify calibration parameters: * Variables * `usrp_freq: 3e9` * `samp_rate: 100e6` * `rf_freq: 28e9` Update defaults for: * `amp_rx2` = calibrated gain * `phase_rx2` = calibrated phase Run radar transmission. ==== Mobile PAAM Receiver (mob4-1) Terminal setup: {{{#!shell sudo ip link set dev eno1 mtu 9000 sudo sysctl -w net.core.wmem_max=25000000 curl "http://am1.orbit-lab.org:5054/array_mgmt/configure?dev_name=rfev-mob4-1.sb1.cosmos-lab.org&ics=all&num_elements=16&txrx=rx&pol=h&theta=0&phi=0" }}} Launch GRC: {{{#!shell gnuradio-companion }}} Open RX Flowgraph: * `O-JRC/examples/usrp/V1_JRC_RX.grc` Check parameters: * Variables * `usrp_freq: 3e9` * `samp_rate: 100e6` * `rf_frequency: 28e9` * UHD Source * Device Address: `"serial=31557B9,master_clock_rate=200e6"` * Device Arguments: `"resource:RIO0"` * Mb0: Subdev Spec: `"A:0"` Execute to receive the OFDM data.