Skip to content

Simulation of Multi-Tire UAV/AANET/FANET Topology Using Gauss-Markov 3D Mobility Model Under ns-3

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

Sorry!!!. Some sections are hidden; because, you are only having restricted access to this article.

While getting paid support/assistance for your research from Charles, you may get an access key/password to some articles. If you are having the access key/password to this particular article, then please enter it below to unlock the restricted section of this article.

If your research is related to this area, and you want to get paid support/assistance from Charles, then you may start a 'free' research discussion with Charles.

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]);




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:




For Assistance in Protocol Implementation, Simulations & Analysis of Industrial as well as Scholarly Research Works, you may Contact Us.

WhatsApp chatDiscuss Through WhatsApp

Call 91 9843779735

Send an e-Mail Message.

This site is protected by reCAPTCHA and the Google
Privacy Policy and
Terms of Service apply.

WhatsApp Discuss Through WhatsApp