Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NTN Module Integration #17

Merged
merged 54 commits into from
Jun 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
b94dc5c
sci: make staticNs3Config optional
GiovanniGrieco Apr 19, 2023
73df56b
sci: make world optional
GiovanniGrieco Apr 19, 2023
f51b1f8
Track unipd ns-3 NTN preview
GiovanniGrieco Apr 17, 2023
3b60545
Map integer to seconds
GiovanniGrieco Apr 26, 2023
f2e2f4a
Initial work on IoD Sim integration with ns-3-ntn
GiovanniGrieco Jun 1, 2023
e81deb7
Fix GCC missing includes on fixed-width integers
GiovanniGrieco Jun 1, 2023
6150b7e
tests: fix scenario list
GiovanniGrieco Jun 1, 2023
bbbd7e7
model-netdevice-configuration: adapt to new JSON specification
GiovanniGrieco Jun 1, 2023
4d712c9
ntn: fix time resolution disagreement with JSON schema
GiovanniGrieco Jun 24, 2023
20a715b
flight-plan: support to C++ iterator interface
GiovanniGrieco Jun 24, 2023
2b87f43
ns-3: track master branch
GiovanniGrieco Jun 24, 2023
b31831d
ns3: remove patch applied to upstream
GiovanniGrieco Jun 24, 2023
1fbf237
ns3: add UNIPD TR 38.811 NTN impl patch
GiovanniGrieco Jun 24, 2023
203663a
report: Fix ns-3 data structure compatibility
GiovanniGrieco Jun 24, 2023
7ca5cb3
tools: update and simplify build process
GiovanniGrieco Jun 24, 2023
913624d
sci: fix LOG_ALL usage as per ns-3 reference
GiovanniGrieco Jun 24, 2023
ae5c7e7
patch: revised 3GPP TR 38.811 implementation
GiovanniGrieco Jun 25, 2023
1550cf4
helper: extend attribute set of ConstantPositionMobility-derived models
GiovanniGrieco Jun 27, 2023
92afe17
3GPP: synchronize values on propagation and spectrum loss models
GiovanniGrieco Jun 27, 2023
b4d30d1
3GPP: optimize lambda value passing
GiovanniGrieco Jun 27, 2023
0d72991
scenario: ensure reproducibility of integrated_ntn
GiovanniGrieco Jun 27, 2023
3898f49
ConstantAccelerationDroneMobilityModel: follow geocentric interface
GiovanniGrieco Jul 5, 2023
8ae9a4d
patch: convert diffs in git patches
GiovanniGrieco Jul 5, 2023
3f3bb7f
patch: fix TR 38.811 alignment
GiovanniGrieco Jul 5, 2023
6ac6dea
prepare-ns3: apply ns3 patch as git commit
GiovanniGrieco Jul 5, 2023
98be74c
patch: add Mercator projection
GiovanniGrieco Jul 5, 2023
eda6f4e
patch: add code style fix to propagation and spectrum modules
GiovanniGrieco Jul 5, 2023
44721eb
prepare-ns3: fail if anything goes wrong
GiovanniGrieco Jul 5, 2023
3689886
ci: configure git for ns3 patching
GiovanniGrieco Jul 5, 2023
8d758f0
planner: Refactor loop iteration
GiovanniGrieco Jul 13, 2023
1af075e
constant-acceleration-drone-mobility-model: Safe default for useGeode…
GiovanniGrieco Jul 13, 2023
980a6fe
parametric-speed-drone-mobility-model: Extended to Geocentric
GiovanniGrieco Jul 13, 2023
1093790
patch: geocentric-mobility-model: Switch to WGS84 as default Earth Sp…
GiovanniGrieco Jul 13, 2023
6176f51
integrated_ntn: Use WGS82 Spheroid Type
GiovanniGrieco Jul 25, 2023
9bd8b4b
model-configuration-helper: Generalize Vector3D parsing
GiovanniGrieco Jul 25, 2023
d899242
ntn: sync tools and patches needed to reproduce NTN scenario
GiovanniGrieco Sep 8, 2023
35ab83a
mobility: Fix *DroneMobilityModel compatibility with non-geographic s…
aras42 Oct 27, 2023
a48f97e
Update scenario examples
GiovanniGrieco Feb 9, 2024
8fd0f7b
refactor: rely on env to execute bash scripts
GiovanniGrieco Feb 18, 2024
2f5cdad
ns3: bump to 3.41
GiovanniGrieco Feb 18, 2024
041c319
Add nix shell helper
GiovanniGrieco Feb 19, 2024
6d62d75
Update NTN pathloss model patch
GiovanniGrieco Feb 20, 2024
4d94ab3
patch: Deprecate small patches for ntn module
GiovanniGrieco Mar 3, 2024
77e50ad
ns3: upgrade to version 3.41
GiovanniGrieco Mar 23, 2024
32e8b23
General code style refactor
GiovanniGrieco Mar 23, 2024
6ba897a
sci: support all attribute values +TimeValue +staticNs3Config
GiovanniGrieco Mar 25, 2024
2a3a1ec
analysis: generalize and refactor geo2kml scripts
GiovanniGrieco Apr 23, 2024
7fdc258
cmake: Update list of scenarios
GiovanniGrieco May 7, 2024
1cb4d72
cmake: reference ns-3.41 instead of dev branch
GiovanniGrieco May 12, 2024
8d77274
ns3: upgrade to version 3.42
GiovanniGrieco May 30, 2024
4d134b5
patch: Fix ns-3 integration
GiovanniGrieco May 31, 2024
afa11b2
Fix style
GiovanniGrieco May 31, 2024
7e973e2
scenario: Fix antenna configuration keyword
GiovanniGrieco May 31, 2024
10822f0
Clarify setup and description of the simulator
GiovanniGrieco Jun 2, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,13 @@ jobs:
steps:
- name: Checkout repo
uses: actions/checkout@v3
- name: Configure git
uses: nodef/git-config.action@v1.0.0
with:
credentials: auto
entries: |-
user.name = Github Actions
user.email = email@example.com
- name: Install dependencies
run: sudo ./tools/install-dependencies.sh
- name: Integrate ns3 and IoD Sim
Expand Down
2 changes: 1 addition & 1 deletion .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"name": "IoD Sim",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/ns3/build/examples/ns3.38-iodsim-debug",
"program": "${workspaceFolder}/ns3/build/src/iodsim/ns3.42-iodsim-debug",
"args": [
"--config=${workspaceFolder}/scenario/simple_wifi.json"
],
Expand Down
4 changes: 2 additions & 2 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@
{
"label": "Profile IoD Sim",
"type": "shell",
"command": "valgrind --tool=callgrind ${workspaceFolder}/ns3/build/src/drone/examples/ns3.33-iod-sim-debug --config=${input:scenarioConfigurationFilepath}",
"command": "valgrind --tool=callgrind ${workspaceFolder}/ns3/build/src/drone/examples/ns3.42-iod-sim-debug --config=${input:scenarioConfigurationFilepath}",
"options": {
"cwd": "${workspaceFolder}/ns3",
"env": {
Expand Down Expand Up @@ -198,4 +198,4 @@
"default": "${workspaceFolder}/scenario/simple_wifi.json"
}
]
}
}
193 changes: 106 additions & 87 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,87 +1,106 @@
![IoD_Sim ](.github/logo_extended.svg)

[IoD_Sim](https://telematics.poliba.it/iod-sim) is an open source and
system-level simulator for the IoD ([Internet of
Drones](https://ieeexplore.ieee.org/document/7423671)).

Developed on top of the well-known [ns-3](https://www.nsnam.org/) (Network
Simulator 3), it implements the key networking elements (drones, network access
points, and Zone Service Provider), a standard-compliant communication stack
based on the IEEE 802.11 technology, and scenarios with various mobility
models.

The source code presents the implementation of models and examples scripts,
also known as _scenarios_, that use such models to simulate a variable number
of drones that:

- Move according to the mobility model associated to the reference scenario.
- Exchange messages with network access points deployed on a generic and flat
3D space.

The IoD_Sim repository is where this
software is developed and there are many ways in which you can participate in
the project, for example:

- [Submit bugs and feature requests](issues) and help us verify as they are
checked in.
- Review [source code changes](pulls).
- Review the [documentation](doc) and make pull requests for anything, from
typos to new content.

IoD_Sim is primarily compatible with **Linux**-based operating systems. You can
test it on macOS, altough we are not focused on providing first-class support
for it. For macOS, Windows, or any other operating system, you are encouraged
to use [Docker](https://www.docker.com/),
[WSL](https://docs.microsoft.com/en-us/windows/wsl/about) or any other
(pseudo)virtualization platform that can provide you a stable Linux-based work
environment. You are welcome to provide new compatibility solutions any time.

For more details, a dedicated publication that describes the entire simulation platform is available on [arXiv](https://arxiv.org/abs/2203.13710).

Want to build scenarios through a GUI? [Airflow](https://github.com/GiovanniGrieco/IoD_Sim-airflow) is a Visual Programming Editor ad-hoc for IoD_Sim! It relies on [splash](https://github.com/GiovanniGrieco/IoD_Sim-splash) to transpile C++ models in Python visual blocks.

## Getting Started

The following quick start has been tested on Ubuntu 22.04 LTS. Please note that this process may be similar in other distros as well. In case of any difficulties, you are welcome to raise a pull request and propose some adjustments.

First of all, clone this repository, then open the folder with VSCode and execute the following tasks:

1. Install dependencies,
2. Integrate IoD Sim with ns3
3. Configure IoD Sim
4. Build IoD Sim

Otherwise, run the following commands:

```
./tools/install-dependencies.sh
./tools/prepare-ns3.sh
cd ns3/
./ns3 configure --build-profile=debug --enable-examples --disable-mpi --disable-python --enable-modules=iodsim
./ns3 build
```

To run a JSON scenario configuration, execute the following command:

```
cd ns3/
./ns3 run "iodsim --config=../scenario/simple_wifi.json"
```

## License

Copyright (C) 2018-2023 [The IoD_Sim Authors](AUTHORS).

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
[GNU General Public License](LICENSE) for more details.

You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
![IoD_Sim ](.github/logo_extended.svg)

[IoD_Sim](https://telematics.poliba.it/iod-sim) is an open source and
system-level simulator for the IoD ([Internet of
Drones](https://ieeexplore.ieee.org/document/7423671)).

Developed on top of the well-known [ns-3](https://www.nsnam.org/) (Network
Simulator 3), it implements the key networking elements (drones, network access
points, and Zone Service Provider), a standard-compliant communication stack
based on the IEEE 802.11 and LTE technology, and scenarios with various mobility
models.

The source code presents the implementation of models and examples scripts,
also known as _scenarios_, that use such models to simulate a variable number
of drones that:

- Move according to the mobility model associated to the reference scenario.
- Exchange messages with network access points deployed on a generic and flat
3D space.

For more details on how IoD_Sim works and all its features, the following
research publications are highly recommended:

- [G. Grieco, G. Iacovelli, P. Boccadoro and L. A. Grieco, "Internet of Drones Simulator: Design, Implementation, and Performance Evaluation," in IEEE Internet of Things Journal, vol. 10, no. 2, pp. 1476-1498, 15 Jan.15, 2023, doi: 10.1109/JIOT.2022.3207324.](https://doi.org/10.1109/JIOT.2022.3207324)
- [G. Grieco, G. Iacovelli, M. Sandri, M. Giordani, M. Zorzi and L. A. Grieco, "Preliminary Performance Evaluation of a
Satellite-to-HAP Communication Link," European Wireless 2023; 28th European Wireless Conference, Rome, Italy, 2023,
pp. 340-345.](https://ieeexplore.ieee.org/abstract/document/10461435)
- [G. Grieco, G. Iacovelli, D. Pugliese, D. Striccoli and L. A. Grieco, "A System-Level Simulation Module for Multi-UAV IRS-Assisted Communications," in IEEE Transactions on Vehicular Technology, vol. 73, no. 5, pp. 6740-6751, May 2024, doi: 10.1109/TVT.2023.3342298.](https://dx.doi.org/10.1109/TVT.2023.3342298)

Older publications that might still be useful:

- [G. Grieco, R. Artuso, P. Boccadoro, G. Piro and L. A. Grieco, "An Open Source and System-Level Simulator for the Internet of Drones," 2019 IEEE 30th International Symposium on Personal, Indoor and Mobile Radio Communications (PIMRC Workshops), Istanbul, Turkey, 2019, pp. 1-6, doi: 10.1109/PIMRCW.2019.8880832.](https://ieeexplore.ieee.org/document/8880832)

You can head over to the [Releases](releases) section to download a copy of a
stable version of the software.

The IoD_Sim repository is where this software is developed and there are many
ways in which you can participate in the project, for example:

- [Submit bugs and feature requests](issues) and help us verify as they are
checked in.
- Review [source code changes](pulls).
- Review the [documentation](doc) and make pull requests for anything, from
typos to new content.

IoD_Sim is primarily compatible with **Linux**-based operating systems. You can
test it on macOS, altough we are not focused on providing first-class support
for it. For macOS, Windows, or any other operating system, you are encouraged
to use [Docker](https://www.docker.com/),
[WSL](https://docs.microsoft.com/en-us/windows/wsl/about) or any other
(pseudo)virtualization platform that can provide you a stable Linux-based work
environment. You are welcome to provide new compatibility solutions any time.

Want to build scenarios through a GUI? [Airflow](https://github.com/GiovanniGrieco/IoD_Sim-airflow)
is a Visual Programming Editor ad-hoc for IoD_Sim! It relies on
[splash](https://github.com/GiovanniGrieco/IoD_Sim-splash) to transpile C++
models in Python visual blocks.

## Getting Started

The following quick start has been tested on Ubuntu 22.04 LTS. Please note that
this process may be similar in other distros as well. In case of any difficulties,
you are welcome to raise a pull request and propose some adjustments.

First of all, clone this repository, then open the folder with VSCode and execute
the following tasks:

1. Install dependencies,
2. Integrate IoD Sim with ns3
3. Configure IoD Sim
4. Build IoD Sim

Otherwise, run the following commands:

```
./tools/install-dependencies.sh
./tools/prepare-ns3.sh
cd ns3/
./ns3 configure --enable-examples --disable-mpi --disable-python --enable-modules=iodsim
./ns3 build
```

To run a JSON scenario configuration, execute the following command:

```
cd ns3/
./ns3 run iodsim -- --config=../scenario/simple_wifi.json
```

## License

Copyright (C) 2018-2024 [The IoD_Sim Authors](AUTHORS).

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
[GNU General Public License](LICENSE) for more details.

You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
2 changes: 1 addition & 1 deletion analysis/drone_storage_memory.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash

# Parse storage memory from debug log file and output a CSV file per drone

Expand Down
Loading
Loading