This project was developed based on the GNU Radio and CRTS-Cognitive Radio Test System. Under CORNET Testbed.
FOR DEPENDENCIES REFERENCE SETUP
1. git clone https://github.com/astro7x/Cognitive-Radio-Network.git
2. cd Cognitive-Radio-Network
3. make
- open a remote connection to port 7032, 7033, 7034 and 7035
ssh -v -p 7032 <usr_name>@128.173.221.40
ssh -v -p 7033 <usr_name>@128.173.221.40
ssh -v -p 7034 <usr_name>@128.173.221.40
ssh -v -p 7035 <usr_name>@128.173.221.40 -XC //for Forwarding Display in a compressed mode
- on port 7035 run
python spectrum_analyzer.py
- on port 7032 run
./crts_controller -m
- on port 7033 run
./crts_cognitive_radio -a <controller_ip_address>
- on port 7034 run
./crts_cognitive_radio -a <controller_ip_address>
[Watch the video] https://youtu.be/QdT6wcxbOYQ for demonstration:
------------------------------------------------Project Scenario--------------------------------------------------
This engine is dedicated to switch its operational channel by changing its center frequency/hoppoing between 3 channels in a random maner based on MARKOV chain. where the PU change the Center Frequency according to the the given probability[1]. [1]
| | CHANNEL 1 | CHANNEL 2 | CHANNEL 3 |
|---------------|:-------------------:|:------------------:|:----------------:|
|CHANNEL 1 | P(CH_1/CH_1)= 0.1 | P(CH_1/CH_2)=0.3 | P(CH_1/CH_3)=0.6 |
|CHANNEL 1 | P(CH_2/CH_1)= 0.1 | P(CH_2/CH_2)=0.5 | P(CH_2/CH_3)=0.4 |
|CHANNEL 1 | P(CH_3/CH_1)= 0.1 | P(CH_3/CH_2)=0.2 | P(CH_3/CH_3)=0.7 |
The implementation uses 2 member function:
1. RANDOM_OUTOCME(ECR); //for generating the random variable from a uniform distribution
2. PU_TX_Behaviour(ECR); //for selecting the channel according the given probabilities
CE-Document and sample output: Primary user Engine.pdf
This engine generates a random channel to operate on it [CHANNEL1, CHANNEL2, CHANNEL3] without any predetermined probabilities using the standard rand() method for generating random integers and then divides by the maximum number that can be generated which is 3.
This engine is based on Neural Network, it senses 3 channels simultenously at the spectrum Band 800MHz at fc=833e6 and B.W=13e6, then pass the measured features to the Neural Network to make a prediction indicates channels status.
This Template compine a brief description of how to construct and build engines based on Exensible Cognitive Radio(ECR) which is provided by CRTSand LiquidDSP library for Digital Signal Processing and specifically OFDM framing.
This is designed to be executed on the USRP node which is responsible for Monitoring the proper RF spectrum. hint: the compiled version of uhd_fft is generally better as it comes with command line arguments option to configure the center freq, bandwidth and gain but we it always hanging and not responding as it launched on WX-GUI so we will develop our own vesion based on QT-GUI.
Data Set is based on extracting the features from the RF channel, where about 400 examples are produced under prescence of channel usage based on PU activity in the channels.
Hardware | Software And Tools | LAB |
---|---|---|
USRP2 | GNURadio based on python | Remotly Access to CORNET Testbed |
USRP B100 | CRTS based on C++ and Liquid-DSP | Cairo University Lab |
C programming | ||
Shell scripting |
Code is merged to crts repository
Real-Time Spectrum Occupancy Prediction
https://link.springer.com/chapter/10.1007%2F978-3-030-11437-4_17