| 1 | | |
| 2 | | [[Include(WikiToC)]] |
| 3 | | |
| 4 | | === mmWave OFDM based ISAC |
| 5 | | |
| 6 | | ==== Description |
| 7 | | This tutorial demonstrates how to perform an mmWave OFDM based ISAC (Integrated Sensing and Communications) experiment using the COSMOS testbed. |
| 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:Tutorials#SDRandWireless SDR and Wireless] |
| 18 | | * [wiki:Hardware/SubSystems/IBM#IBM28-GHzPhasedArrayBoardForCOSMOS IBM 28-GHz Phased Array Board For COSMOS] |
| 19 | | * [wiki:UserGuide/RemoteAccess/ChromeRemoteDesktop#ChromeRemoteDesktopSetupPage Chrome Remote Desktop Setup Page] |
| 20 | | |
| 21 | | ==== Resource Requirements |
| 22 | | * SDRs: `sdr1-radar`, `sdr2-radar` |
| 23 | | * PAAMs: `rfdev-sdr1-radar`, `rfdev-sdr2-radar` |
| 24 | | * Mobile PAAM: `mob4-1` |
| 25 | | * Server: `srv1-lg1` |
| 26 | | * Image: `ubuntu2004-uhd4.3-gr3.8-radar.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-radar.ndz -t srv1-lg1 |
| 34 | | omf load -i ubuntu2004-uhd4.3-gr3.8-radar.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 |
| 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 the first **GNOME on Xorg**. |
| 57 | | |
| 58 | | [[Image(radar setup.png, 1000px)]] |
| 59 | | |
| 60 | | ==== Execution |
| 61 | | |
| 62 | | ===== Radar Side (srv1-lg1) |
| 63 | | |
| 64 | | **Terminal 1**: Network and packet generator configuration: |
| 65 | | |
| 66 | | {{{#!shell |
| 67 | | sudo ip link set dev eno1 mtu 9000 |
| 68 | | sudo sysctl -w net.core.wmem_max=25000000 |
| 69 | | O-JRC/examples/build-mimo-ofdm-packet-generator-Desktop-Debug/mimo-ofdm-packet-generator |
| 70 | | }}} |
| 71 | | |
| 72 | | Configure signal parameters: |
| 73 | | |
| 74 | | * Sample Rate: 100 MHz |
| 75 | | * Packet size: 50 bytes |
| 76 | | * TX Antennas: 2 |
| 77 | | |
| 78 | | Press Start once configured. |
| 79 | | |
| 80 | | [[Image(packet generator.png, 600px)]] |
| 81 | | |
| 82 | | **Terminal 2**: GNU Radio Execution |
| 83 | | |
| 84 | | Execute the following command to launch GNU Radio Companion |
| 85 | | {{{#!shell |
| 86 | | gnuradio-companion |
| 87 | | }}} |
| 88 | | |
| 89 | | ====== Calibration |
| 90 | | |
| 91 | | Open the calibration flowgraph: |
| 92 | | |
| 93 | | * `O-JRC/examples/usrp/V0_JRC_calibration.grc` |
| 94 | | |
| 95 | | Verify calibration parameters: |
| 96 | | |
| 97 | | * Variables |
| 98 | | * `usrp_freq: 3e9` |
| 99 | | * `samp_rate: 100e6` |
| 100 | | * usrp_mimo_trx |
| 101 | | * Number of MBoards: 2 |
| 102 | | * Number of TX: 2 |
| 103 | | * Number of RX: 2 |
| 104 | | * USRP Arguments: `"addr0=10.38.24.1, addr1=10.38.24.2, master_clock_rate=200e6"` |
| 105 | | * Clock Sources: `"internal,external"` |
| 106 | | * Time Sources: `"internal,external"` |
| 107 | | |
| 108 | | Execute the flowgraph, set the TX Gain to 20dB and adjust the following parameters until waveforms are aligned: |
| 109 | | |
| 110 | | * RX2 Gain |
| 111 | | * RX2 Phase |
| 112 | | |
| 113 | | Record these calibration values and terminate flowgraph. |
| 114 | | |
| 115 | | |
| 116 | | [[Image(calibration.png, 1200px)]] |
| 117 | | |
| 118 | | |
| 119 | | ====== Radar Transmission |
| 120 | | |
| 121 | | Open TRX flowgraph: |
| 122 | | |
| 123 | | * `O-JRC/examples/usrp/V1_JRC_TRX.grc` |
| 124 | | |
| 125 | | Verify calibration parameters: |
| 126 | | |
| 127 | | * Variables |
| 128 | | * `usrp_freq: 3e9` |
| 129 | | * `samp_rate: 100e6` |
| 130 | | * `rf_freq: 28e9` |
| 131 | | |
| 132 | | Update defaults for: |
| 133 | | |
| 134 | | * `amp_rx2` = calibrated gain |
| 135 | | * `phase_rx2` = calibrated phase |
| 136 | | |
| 137 | | Run radar transmission. |
| 138 | | |
| 139 | | [[Image(radar.png, 1000px)]] |
| 140 | | |
| 141 | | ===== Mobile PAAM Receiver Side (mob4-1) |
| 142 | | |
| 143 | | Open a terminal and execute the following to configure the network and the mobile PAAM: |
| 144 | | |
| 145 | | {{{#!shell |
| 146 | | curl "http://am1.orbit-lab.org:5054/array_mgmt/configure?dev_name=rfdev-mob4-1.sb1.cosmos-lab.org&ics=all&num_elements=16&txrx=rx&pol=h&theta=0&phi=0" |
| 147 | | }}} |
| 148 | | |
| 149 | | Launch GNU Radio Companion: |
| 150 | | |
| 151 | | {{{#!shell |
| 152 | | gnuradio-companion |
| 153 | | }}} |
| 154 | | |
| 155 | | Open RX Flowgraph: |
| 156 | | |
| 157 | | * `O-JRC/examples/usrp/V1_JRC_RX.grc` |
| 158 | | |
| 159 | | Check parameters: |
| 160 | | |
| 161 | | * Variables |
| 162 | | * `usrp_freq: 3e9` |
| 163 | | * `samp_rate: 100e6` |
| 164 | | * `rf_frequency: 28e9` |
| 165 | | * UHD Source |
| 166 | | * Device Address: `"serial=31557B9,master_clock_rate=200e6"` |
| 167 | | * Device Arguments: `"resource:RIO0"` |
| 168 | | * Mb0: Subdev Spec: `"A:0"` |
| 169 | | |
| 170 | | Execute the flowgraph and set the RX Gain to 0dB to receive the OFDM data. |
| 171 | | |
| 172 | | [[Image(receiver.png, 1000px)]] |