creating_datasets_for_fingerprinting
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
creating_datasets_for_fingerprinting [2022/10/24 17:04] – christiandc | creating_datasets_for_fingerprinting [2022/11/09 12:15] (current) – christiandc | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | #Creating a dataset for fingerprinting | ||
+ | |||
+ | The objective of this tutorial is to create a non biased dataset for transmitter identification. By fixing the reciever on a robot, the distance and the canal is constantly and randomly changing, forcing the deep learning process to learn on the RF fingerprints. This tutorial explains how to use FIT/ | ||
+ | |||
+ | Requirement : An access to the CortexLab to start the robot. | ||
+ | |||
## Create your docker image | ## Create your docker image | ||
- | Using docker, we will enable the nodes to use Gnuradio 3.7. The codes used are written in this version (waiting for an updtae). In order to do that, we will create an image containing theGnuradio 3.7 version and the python/C++ files used for the dataset creation. | + | With docker, we will enable the nodes to use Gnuradio 3.7. The codes used are written in this version (waiting for an update). In order to do that, we will create an image containing theGnuradio 3.7 version and the python/C++ files used for the dataset creation. |
First you have to get the python codes used. Download the following folder : | First you have to get the python codes used. Download the following folder : | ||
- | |||
https:// | https:// | ||
- | |||
Then, let us create a dockerfile in your home, giving the files instructions we want to use : | Then, let us create a dockerfile in your home, giving the files instructions we want to use : | ||
- | |||
< | < | ||
Line 18: | Line 21: | ||
WORKDIR /root | WORKDIR /root | ||
- | COPY ./docker | + | COPY ./< |
- | RUN chmod -R 777 ./gr-txid-master | + | RUN chmod -R 777 ./< |
</ | </ | ||
- | In this dockerfile, the first line download the 3.7 Gnuradio version. Then it adds the python files used for the dataset and gives the rights to the folder. | + | In this dockerfile, the first line download the 3.7 Gnuradio version. Then it adds the python files used for the dataset |
+ | |||
+ | Before building the image, take the node list used by the code which is in the scheduler.py file. This node list will be used in the scenario. | ||
- | We can now build our image and then access | + | We can now build our image and then access |
Line 38: | Line 43: | ||
</ | </ | ||
- | Then let us compile the C++ code. Go inside the first folder having the first Cmake. file and launch the compilation : | + | Then let us compile the C++ code in the container. Go inside the first folder having the Cmake. file and launch the compilation : |
< | < | ||
- | you@yourpc:~$ cmake . | + | root@containerID:~$ cmake . |
- | you@yourpc:~$ make | + | root@containerID:~$ make |
- | you@yourpc:~$ make install | + | root@containerID:~$ make install |
</ | </ | ||
- | The following | + | The following |
< | < | ||
- | + | root@containerID:~$ mv /< | |
- | you@yourpc:~$ mv /< | + | root@containerID:~$ rm -rf /< |
- | you@yourpc:~$ rm -rf /< | + | |
</ | </ | ||
- | |||
- | It moves the folders to an other location. | ||
To finish the config, execute : | To finish the config, execute : | ||
- | |||
- | |||
< | < | ||
- | you@yourpc:~$ ldconfig | + | root@containerID:~$ ldconfig |
</ | </ | ||
- | For you to be sure the config has been done properly, you can launch the emitter or recevier command (used then to create the dataset). | + | To be sure the config has been done properly, you can launch the emitter or recevier command (used then to create the dataset). |
< | < | ||
- | + | root@containerID:~$ ./ | |
- | you@yourpc:~$ ./ | + | |
</ | </ | ||
At this point the only message error should be this one : empty devices services. Meaning that there is no USRP available on your laptop. | At this point the only message error should be this one : empty devices services. Meaning that there is no USRP available on your laptop. | ||
- | The image is ready to be used, we have noax to push it on Dockerhub. The nodes will have access to it through internet. | + | |
+ | The image is ready to be used, we have now to push it on Dockerhub. The nodes will have access to it through internet. | ||
< | < | ||
Line 88: | Line 86: | ||
you@yourpc: | you@yourpc: | ||
you@yourpc: | you@yourpc: | ||
- | |||
</ | </ | ||
- | You can check your pushed on internet, on dockerhub website. | + | You can check your pushed |
## Create your airlock scenario | ## Create your airlock scenario | ||
- | We have now to create the scenario read by minus on the airlock. Create a .sh file and a .yaml file. | + | We have now to create the scenario read by minus on the airlock. Create a .sh file and a .yaml file inside a folder (cortexbot). |
- | The .sh file wille execute the commands submitting the task with minus. The .yaml file is the scenario | + | The .sh file will execute the commands submitting the task with minus. The .yaml file is the scenario |
The file tree should look like that: | The file tree should look like that: | ||
Line 110: | Line 107: | ||
</ | </ | ||
- | Concerning the bash file : | + | The bash file for the execution |
< | < | ||
- | |||
#!/bin/bash | #!/bin/bash | ||
Line 119: | Line 115: | ||
echo "Tasks creation and submission" | echo "Tasks creation and submission" | ||
- | |||
echo " | echo " | ||
echo " | echo " | ||
Line 147: | Line 142: | ||
echo "Tasks finished" | echo "Tasks finished" | ||
- | |||
</ | </ | ||
And the scenario file : | And the scenario file : | ||
- | |||
< | < | ||
- | |||
- | # Example scenario description file | ||
- | # | ||
- | # All lines starting with "#" | ||
- | |||
- | |||
- | # Scenario textual description | ||
- | # | ||
description: | description: | ||
- | |||
- | # Experiment maximum duration | ||
- | # Time after which the experiment is forced to stop | ||
- | # | ||
duration: 3600 | duration: 3600 | ||
- | |||
- | # Node list | ||
- | # | ||
- | # | ||
- | # | ||
- | # | ||
- | # entry (entry point script relative to the task root) | ||
- | # exit (exit point script relative to the task root. Use " | ||
- | |||
#list of scheduler nodes= = [3, 4, 6, 7, 8, 9, 13, 14, 16, 17, 18, 23, 24, 25, 27, 28, 32, 33, 34, 35, 37] | #list of scheduler nodes= = [3, 4, 6, 7, 8, 9, 13, 14, 16, 17, 18, 23, 24, 25, 27, 28, 32, 33, 34, 35, 37] | ||
- | |||
nodes: | nodes: | ||
Line 190: | Line 161: | ||
- image: <[DOCKER USERNAME]/ | - image: <[DOCKER USERNAME]/ | ||
command: bash -lc " | command: bash -lc " | ||
- | |||
#emitter nodes corresponding to the scheduler list | #emitter nodes corresponding to the scheduler list | ||
Line 215: | Line 185: | ||
- | node8: | + | #add as many nodes you want to use |
- | container: | + | |
- | - image: thomasbeligne/ | + | |
- | command: bash -lc "/ | + | |
</ | </ | ||
- | You can add as many nodes as you want, but be sure they are in the scheduler list on your docker | + | You can add as many nodes as you want, but be sure they are in the scheduler list on your image docker. In your scenario |
- | Once you have created this folder, send it to airlock and connect to airlock | + | Once you have created this folder, send it to airlock and connect to it using ssh : : |
< | < | ||
- | you@yourpc: | + | you@yourpc: |
you@yourpc: | you@yourpc: | ||
Line 248: | Line 213: | ||
## Config the Turtlebot | ## Config the Turtlebot | ||
+ | |||
###Setup | ###Setup | ||
- | Before the experiement, | + | Before the experiement, |
+ | (//To avoid overcharging and damaging the battery it is not recommended to charge overnight//). | ||
Our TurtleBot is wired up in the following way : | Our TurtleBot is wired up in the following way : | ||
- | {{ : | + | {{ : |
We use a NVDIA Jetson to run the movement program and reception code : | We use a NVDIA Jetson to run the movement program and reception code : | ||
Line 261: | Line 227: | ||
- | ###Switting | + | ###Switching |
- | Switch on the base of the robot by pressing this switch | + | Switch on the base of the robot. |
+ | (the green "// | ||
- | {{ : | ||
- | (the green "//Status//" | + | To turn the computor on press the furthest button to the left, on the side of the computor : |
+ | //(if turned on correctly a flat white LED should be on) | ||
+ | // | ||
+ | {{ : | ||
- | ### | + | |
+ | ###Launching the programs | ||
+ | Plug in the computor to a monitor through an HDMI capble and plug in a keyboard and mouse. | ||
+ | Login to the computor with the user : '' | ||
+ | |||
+ | Transfer the first part python codes folder in the robot computer. | ||
+ | To run the reciever code (from gr-txid) enter into the terminal : | ||
+ | |||
+ | < | ||
+ | |||
+ | .< | ||
+ | |||
+ | </ | ||
+ | |||
+ | The USRP should boot and the LED of the Tx/Rx port used should light up : | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | The results ('' | ||
+ | |||
+ | Open two other terminals and in one launch minimal.launch : | ||
+ | |||
+ | < | ||
+ | |||
+ | source ~/ | ||
+ | cd ~/ | ||
+ | roslaunch minimal.launch | ||
+ | |||
+ | </ | ||
+ | |||
+ | The Turtle bot should beep. (Ignore the error messages if the robot beeps). | ||
+ | |||
+ | In the other terminal run the random walk program : | ||
+ | //(Be sure to disconnect the HDMI cable and keyboard/ | ||
+ | // | ||
+ | |||
+ | < | ||
+ | |||
+ | rosservice call / | ||
+ | |||
+ | </ | ||
+ | |||
+ | # | ||
Line 278: | Line 289: | ||
< | < | ||
- | thomas@srvairlock: | + | username@srvairlock: |
</ | </ | ||
- | All the radios present in the scenario are succesivly sending packets to the robot. You can check thath everything is fine by doing : | + | All the radios present in the scenario are succesivly sending packets to the robot. You can check that everything is fine by doing : |
< | < | ||
Line 295: | Line 306: | ||
## Gathering the results | ## Gathering the results | ||
+ | To gather the results, at the end of the emissions we used a USB stick to collect the results directly from the computer of the robot. Copy and paste all the files under the format : | ||
+ | < | ||
+ | re_00_[number du node] and im_00_[number of node]</ | ||
+ | |||
+ | |||
+ | Congratulations, |
creating_datasets_for_fingerprinting.1666623878.txt.gz · Last modified: 2022/10/24 17:04 by christiandc