/Cognitive-Radio-Network

The project was developed under the GNU Radio platform and CRTS 'Cognitive Radio Test System under CORNET Testbed to demonstrate a simplified version of Cognitive Cycle.]

Primary LanguageC++GNU General Public License v3.0GPL-3.0

Cognitive-Radio-Network

This project was developed based on the GNU Radio and CRTS-Cognitive Radio Test System. Under CORNET Testbed.

Installation

Dependencies

FOR DEPENDENCIES REFERENCE SETUP

How to Build

1. git clone https://github.com/astro7x/Cognitive-Radio-Network.git
2. cd Cognitive-Radio-Network
3. make

How to Run

to run the predictive scenario on CORNET platform

  1. 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
  1. on port 7035 run
python spectrum_analyzer.py
  1. on port 7032 run
./crts_controller -m
  1. on port 7033 run
./crts_cognitive_radio -a <controller_ip_address>
  1. on port 7034 run
./crts_cognitive_radio -a <controller_ip_address>

[Watch the video] https://youtu.be/QdT6wcxbOYQ for demonstration:

------------------------------------------------Project Scenario--------------------------------------------------

Primary Users Engines:

1. CE_PU_MARKOV_Chain_Tx

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. alt tag 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

2. CE_Random_Behaviour_PU

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.

Cognitive/Secondary Users Engines:

CE_Predictive_Node

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.

Engine Template:

CE_Template

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.

spectrum_analyzer.py Band 800M script:

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

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

This project is Delievered as a Graduation Thesis to Canadian International College -CIC-

Code is merged to crts repository

Citation

Real-Time Spectrum Occupancy Prediction

https://link.springer.com/chapter/10.1007%2F978-3-030-11437-4_17