| | 1 | |
| | 2 | [[Include(WikiToC)]] |
| | 3 | |
| | 4 | === mmWave OFDM based ISAC Tutorial |
| | 5 | |
| | 6 | ==== Description |
| | 7 | This tutorial demonstrates how to perform an mmWave OFDM based ISAC (Integrated Sensing and Communications) experiment using COSMOS radar SDR nodes and a mobile PAAM receiver. |
| | 8 | |
| | 9 | [[PageOutline(3-6,,inline,unnumbered)]] |
| | 10 | |
| | 11 | ==== Prerequisites |
| | 12 | * COSMOS account and reservation established |
| | 13 | * Access to the radar SDR nodes and PAAM mobile node |
| | 14 | * Chrome Remote Desktop for graphical access |
| | 15 | |
| | 16 | ==== Related COSMOS Documentation |
| | 17 | * [[wiki:SDRandWireless SDR and Wireless Overview]] |
| | 18 | * [[wiki:Hardware/SubSystems RF Subsystems]] |
| | 19 | * [[wiki:UserGuide/RemoteAccess/ChromeRemoteDesktopSetupPage Chrome Remote Desktop Setup Page]] |
| | 20 | |
| | 21 | ==== Resource Requirements |
| | 22 | * Server: `srv1-lg1` |
| | 23 | * Mobile PAAM: `mob4-1` |
| | 24 | * SDRs: `sdr1-radar`, `sdr2-radar` |
| | 25 | * PAAMs: `rfdev-sdr1-radar`, `rfdev-sdr2-radar` |
| | 26 | * OMF Image: `ubuntu2004-uhd4.3-gr3.8-paam-radar-new.ndz` |
| | 27 | |
| | 28 | ==== Setup |
| | 29 | |
| | 30 | Load the required images onto the server and mobile PAAM: |
| | 31 | |
| | 32 | {{{#!shell |
| | 33 | omf load -i ubuntu2004-uhd4.3-gr3.8-paam-radar-new.ndz -t srv1-lg1 |
| | 34 | omf load -i ubuntu2004-uhd4.3-gr3.8-paam-radar-new.ndz -t mob4-1 |
| | 35 | }}} |
| | 36 | |
| | 37 | Power on the experiment hardware: |
| | 38 | |
| | 39 | {{{#!shell |
| | 40 | omf tell -a on -t sdr1-radar,rfdev-sdr1-radar,sdr2-radar,rfdev-sdr2-radar,mob4-1,srv1-lg1 |
| | 41 | }}} |
| | 42 | |
| | 43 | Connect to the server: |
| | 44 | |
| | 45 | {{{#!shell-session |
| | 46 | ssh root@srv1-lg1 |
| | 47 | }}} |
| | 48 | |
| | 49 | Run the PAAM setup script: |
| | 50 | |
| | 51 | {{{#!shell |
| | 52 | cd IBM_PAAM_Software_vFINAL/examples/ |
| | 53 | python3 paam_radar_setup.py |
| | 54 | }}} |
| | 55 | |
| | 56 | Connect via Chrome Remote Desktop and choose **GNOME on Xorg**. |
| | 57 | |
| | 58 | ===== Screenshot Placeholder |
| | 59 | [[Image(mmwave_setup_placeholder.png, 600px)]] |
| | 60 | |
| | 61 | ==== Execution |
| | 62 | |
| | 63 | ===== Radar Side (srv1-lg1) |
| | 64 | |
| | 65 | Terminal 1 network configuration and radar application: |
| | 66 | |
| | 67 | {{{#!shell |
| | 68 | sudo ip link set dev eno1 mtu 9000 |
| | 69 | sudo sysctl -w net.core.wmem_max=25000000 |
| | 70 | O-JRC/examples/build-mimo-ofdm-packet-generator-Desktop-Debug/mimo-ofdm-packet-generator |
| | 71 | }}} |
| | 72 | |
| | 73 | Configure signal parameters: |
| | 74 | |
| | 75 | * Carrier Frequency: 28 GHz |
| | 76 | * Sample Rate: 100 MHz |
| | 77 | * Packet size: 50 bytes |
| | 78 | * TX Antennas: 2 |
| | 79 | |
| | 80 | Press Start once configured. |
| | 81 | |
| | 82 | ===== Screenshot Placeholder |
| | 83 | [[Image(signal_parameters_placeholder.png, 600px)]] |
| | 84 | |
| | 85 | Terminal 2: |
| | 86 | |
| | 87 | {{{#!shell |
| | 88 | gnuradio-companion |
| | 89 | }}} |
| | 90 | |
| | 91 | ==== Calibration |
| | 92 | |
| | 93 | Open the calibration flowgraph: |
| | 94 | |
| | 95 | * `O-JRC/examples/usrp/V0_JRC_calibration.grc` |
| | 96 | |
| | 97 | Verify calibration parameters: |
| | 98 | |
| | 99 | * Variables |
| | 100 | * `usrp_freq: 3e9` |
| | 101 | * `samp_rate: 100e6` |
| | 102 | * `rf_freq: 28e9` |
| | 103 | * usrp_mimo_trx |
| | 104 | * Number of TX: 2 |
| | 105 | * Number of RX: 2 |
| | 106 | * Number of MBoards: 2 |
| | 107 | * USRP Arguments: `"addr0=10.38.24.1, addr1=10.38.24.2, master_clock_rate=200e6"` |
| | 108 | * Clock Sources: `"internal,external"` |
| | 109 | * Time Sources: `"internal,external"` |
| | 110 | |
| | 111 | Execute the flowgraph and adjust the following parameters until waveforms are aligned: |
| | 112 | |
| | 113 | * RX2 Gain |
| | 114 | * RX2 Phase |
| | 115 | |
| | 116 | Record these calibration values. |
| | 117 | |
| | 118 | Terminate flowgraph. |
| | 119 | |
| | 120 | ==== Radar Transmission |
| | 121 | |
| | 122 | Open TRX flowgraph: |
| | 123 | |
| | 124 | * `O-JRC/examples/usrp/V1_JRC_TRX.grc` |
| | 125 | |
| | 126 | Update defaults for: |
| | 127 | |
| | 128 | * `amp_rx2` = calibrated gain |
| | 129 | * `phase_rx2` = calibrated phase |
| | 130 | |
| | 131 | Run radar transmission. |
| | 132 | |
| | 133 | ==== Mobile PAAM Receiver (mob4-1) |
| | 134 | |
| | 135 | Terminal setup: |
| | 136 | |
| | 137 | {{{#!shell |
| | 138 | sudo ip link set dev eno1 mtu 9000 |
| | 139 | sudo sysctl -w net.core.wmem_max=25000000 |
| | 140 | 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" |
| | 141 | }}} |
| | 142 | |
| | 143 | Launch GRC: |
| | 144 | |
| | 145 | {{{#!shell |
| | 146 | gnuradio-companion |
| | 147 | }}} |
| | 148 | |
| | 149 | Open RX Flowgraph: |
| | 150 | |
| | 151 | * `O-JRC/examples/usrp/V1_JRC_RX.grc` |
| | 152 | |
| | 153 | Check parameters: |
| | 154 | |
| | 155 | * Variables |
| | 156 | * `usrp_freq: 3e9` |
| | 157 | * `samp_rate: 100e6` |
| | 158 | * `rf_frequency: 28e9` |
| | 159 | * UHD Source |
| | 160 | * Device Address: `"serial=31557B9,master_clock_rate=200e6"` |
| | 161 | * Device Arguments: `"resource:RIO0"` |
| | 162 | * Mb0: Subdev Spec: `"A:0"` |
| | 163 | |
| | 164 | Execute to receive the OFDM data. |