Multi-Tier 3D FANET simulation using ‘GaussMarkovMobilityModel’
By using the ‘GaussMarkovMobilityModel’ and ‘RandomBoxPositionAllocator’, which are readily available under ns-3, we can simulate a Multi-Tier FANET.
This 3-dimensional Gauss-Markov mobility model available under ns-3 can be used for modelling the mobility of aircraft flying at different altitudes. In general, this mobility model can be used to simulate any multi-tier UAV/AANET/FANET.
About this 3D FANET Simulation
In this article, we will see the way of simulating and visualizing a multi-tier 3D FANET or AANET under ns-3 using Gauss-Markov mobility model and NetSimulyzer visualization tool.
NetSimulyzer 3D visualization tool able to ‘play’ the 3D network scenario from different camera perspectives using a special trace output file (.json format) which was created during the ns-3 simulation (the simulation which uses ns-3 NetSimulyzer module).
So, the NetSimulyzer 3D visualization tool can be used to play/animate/visualize ns-3 network scenarios for better understanding, presenting and debugging them.
In this article, we will see the way of simulating a FANET of Quadcopters that are roving above the buildings at different altitudes and will form a multi-tier FANET.
To simplify the understanding of the 3D components of a FANET simulation, we purposely didn’t include the traffic-related components and routing related components of FANET in this simulation.
The Components of the Simple 3D UAV/AANET/FANET ns-3 Simulation Script
The following code segment presents the important components of the ns-3 simulation script which is used to simulate our 3D FANET.
Include the header files Needed
The following lines include the necessary header files. The suitable 3D mobility model should be incorporated in mobility-module.h and the Netsimulyzer ns-3 module should be installed in the ns-3 directory tree.
#include “ns3/core-module.h”
#include “ns3/mobility-module.h”
#include “ns3/netanim-module.h”
#include “ns3/netsimulyzer-module.h”
The following two articles explain the way to set up the Netsimulyzer 3D visualization support.
Installing NetSimulyzer 3D Visualization Support Add-on Module in ns-3 under Debian/Ubuntu
Installing NetSimulyzer 3D Visualization Tool under Debian/Ubuntu
Simulate some 3D buildings on Ground and Set 3D model for FANET Nodes
The following are the three important things that will be done by this section of code:
- The 3D simulation output will be stored in the file “SimpleNS3Multi-TierFANETUsingGaussMarkovMobilityModel3D.json”.
- A Quadcopter Drone 3D model will be set to all the FANET nodes.
- The 3D buildings will be created using the previously configured buildings information
Create Some Drone Nodes and install ‘GaussMarkovMobilityModel’ in them and position them at different altitudes
//Create node container 5 tires/layers of Drones
NodeContainer tier[5];
MobilityHelper mobility;
char buffer[100];
// we will place these 50 nodes in 5 layers (10nodes per layer) that are at different altitudes
for(uint16_t altitude=1; altitude<6;altitude++) {
double minmax=altitude*100;
sprintf(buffer, “ns3::UniformRandomVariable[Min=%f|Max=%f]”, minmax,minmax);
tier[altitude-1].Create (10);
mobility.SetMobilityModel (“ns3::GaussMarkovMobilityModel”,
“Bounds”, BoxValue (Box (0, 500, 0, 500, 100, 600)),
“TimeStep”, TimeValue (Seconds (0.5)),
“Alpha”, DoubleValue (0.85),
“MeanVelocity”, StringValue (“ns3::UniformRandomVariable[Min=0|Max=20]”),
“MeanDirection”, StringValue (“ns3::UniformRandomVariable[Min=0|Max=6.283185307]”),
“MeanPitch”, StringValue (“ns3::UniformRandomVariable[Min=0.05|Max=0.05]”),
“NormalVelocity”, StringValue (“ns3::NormalRandomVariable[Mean=0.0|Variance=0.0|Bound=0.0]”),
“NormalDirection”, StringValue (“ns3::NormalRandomVariable[Mean=0.0|Variance=0.2|Bound=0.4]”),
“NormalPitch”, StringValue (“ns3::NormalRandomVariable[Mean=0.0|Variance=0.02|Bound=0.04]”));
mobility.Install ( tier[altitude-1]);
nodeHelper.Install(tier[altitude-1]);
}
Configure standard NetAnim file and end the simulation
For comparison purposes, we create a NetAnim simulation file, which will only be capable of showing 2D of this 3D scenario.
AnimationInterface anim (“SimpleNS3Multi-TierFANETUsingGaussMarkovMobilityModel3D.xml”);
Simulator::Stop (Seconds (simTimeSec));
Simulator::Run ();
Simulator::Destroy ();
return 0;
The 3D Visualization of Multi-Tier VANET using NetSimulyzer Tool
The following output shows the NetSimulyzer GUI after loading our FANET simulation. Please note that the groups of drones are flying at different altitudes because of the GaussMarkovMobilityModel and forming a multi-tier FANET.
The 3D Simulation output with NetSimulyzer
The following video shows the 3D output of the multi-tier FANET simulation on NetSimulyzer.
Note: While using Gauss-Markov 3D Mobility Model Under ns-3, a group of nodes will only fly in some fixed altitudes, and they will not move to other altitudes. We have to keep it in mind while designing our UAV/AANET/FANET.
In the following articles, we can see the implementation of our CircleMobilityModel for ns-3:
- Implementation of Spring Mobility Model for ns-3 and Visualizing it in 3D along with Circle Mobility
- An ns-3 Simulation to Plot Circle Mobility on Graph
References:
- https://sq.wikipedia.org/wiki/FANET
- https://www.researchgate.net/publication/228568810_Design_and_analysis_of_a_3-D_gauss-markov_mobility_model_for_highly-dynamic_airborne_networks
- https://www.nsnam.org/docs/models/html/mobility.html